您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關Openstack 中keystone組件的作用是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
User即用戶,他們代表可以通過keystone進行訪問的人或程序。Users通過認證信息(credentials,如密碼、API Keys等)進行驗證。
Tenant即租戶,它是各個服務中的一些可以訪問的資源集合。例如,在Nova中一個tenant可以是一些機器,在Swift和Glance中一個tenant可以是一些鏡像存儲,在Quantum中一個tenant可以是一些網絡資源。Users默認的總是綁定到某些tenant上。
Role即角色,Roles代表一組用戶可以訪問的資源權限,例如Nova中的虛擬機、Glance中的鏡像。Users可以被添加到任意一個全局的 或 租戶內的角色中。在全局的role中,用戶的role權限作用于所有的租戶,即可以對所有的租戶執行role規定的權限;在租戶內的role中,用戶僅能在當前租戶內執行role規定的權限。
Service即服務,如Nova、Glance、Swift。根據前三個概念(User,Tenant和Role)一個服務可以確認當前用戶是否具有訪問其資源的權限。但是當一個user嘗試著訪問其租戶內的service時,他必須知道這個service是否存在以及如何訪問這個service,這里通常使用一些不同的名稱表示不同的服務。在上文中談到的Role,實際上也是可以綁定到某個service的。例如,當swift需要一個管理員權限的訪問進行對象創建時,對于相同的role我們并不一定也需要對nova進行管理員權限的訪問。為了實現這個目標,我們應該創建兩個獨立的管理員role,一個綁定到swift,另一個綁定到nova,從而實現對swift進行管理員權限訪問不會影響到Nova或其他服務。
Endpoint,翻譯為“端點”,我們可以理解它是一個服務暴露出來的訪問點,如果需要訪問一個服務,則必須知道他的endpoint。因此,在keystone中包含一個endpoint模板(endpoint template,在安裝keystone的時候我們可以在conf文件夾下看到這個文件),這個模板提供了所有存在的服務endpoints信息。一個endpoint template包含一個URLs列表,列表中的每個URL都對應一個服務實例的訪問地址,并且具有public、private和admin這三種權限。
public url可以被全局訪問(如http://compute.example.com),端口 5000
private url只能被局域網訪問(如http://compute.example.local),端口 5000
admin url被從常規的訪問中分離 端口:35357
Credentials
用于確認用戶身份的憑證。說白了就是“信物”,可以是:
(1):用戶名和密碼
(2):用戶名跟API Kye(秘鑰) #(1)(2)用戶第一次確認身份的方法
(3):一個keystone分配的身份的token #(3)用戶已經確認身份后的方法 (token是有時間限制的)
Auhentication
(1):用戶身份驗證的過程。keystone服務通過檢查用戶的Credentials來確定用戶的身份
(2):第一次驗證身份是使用用戶名與密碼或者用戶名與API Key的形式。當用戶的Credentials被驗證后,keystone會給用戶分配一個Authentication token 供該用戶的后續請求操作(返回的token中就包含User的Role列表)
Token
(1):是一串數字字符串,當用戶訪問資源時需要使用的東西,在keystone中主要是引入令牌機制來保護用戶對資源的訪問,同時引入PKI、PKIZ、fernet、UUID其中一個隨機加密產生一串數字,對令牌加以保護
(2):token并不是長久有效的,是有時效性的,在有效的時間內可以訪問資源。
Policy
(1):對于keystone service 來說,Policy就是一個JSON文件,rpm安裝默認是在/etc/keyston/policy.json。通過配置這個文件,keystone實現了對User基于Role的權限管理(User <-- Role(ACL) <--Policy)
(2):Policy就是用來控制User對Project(tenant)中資源的操作權限
Project(Tenant)
(1):Project(Tenant)是一個人或服務所擁有的資源集合。不同的Project之間資源是隔離的,資源可以設置配額
(2):Project(Tenant)中可以有多個User,每一個User會根據權限的劃分來使用Project(Tenant)中的資源
(3):User在使用Project(Tenant)的資源前,必須要與這個Project關聯,并且制定User在Project下的Role,一個assignment(關聯) 即:Project-User-Role
Service
即服務,如Nova,Glace,等各個組件
在Openstack-M版本中就使用了Keystone-V3。V3在V2的基礎上引入了域和用戶組的概念,將 Tenant 改稱為 Project,V3將逐步替代V2。
V3的組織結構
V3的改進
問題1:在Keystone V2中,資源分配是以Tenant為單位的,這不太符合現實世界中的層級關系。如一個公司在 Openstack中擁有兩個不同的項目,他需要管理兩個Tenant來分別對應這兩個項目,并對這兩個Tenant中的用戶分別分配角色。由于在Tenant之上并不存在一個更高層的概念,無法對 Tenant 進行統一的管理,所以這給多 Tenant 的用戶帶來了不便。
解決:V3 利用 Domain 的概念實現真正的多租戶(multi-tenancy)架構,Domain 擔任 Project 的高層容器。云服務的客戶是 Domain 的所有者,他們可以在自己的 Domain 中創建多個 Projects、Users、Groups 和 Roles。通過引入 Domain,云服務客戶可以對其擁有的多個 Project 進行統一管理,而不必再向過去那樣對每一個 Project 進行單獨管理。
簡而言之,Domain的引入是為了將多個Project進行封裝,成為單一實體再交付給相應的一個客戶使用。
問題2:在 Keystone V2中,用戶的權限管理是以每一個用戶為單位,需要對每一個用戶進行角色分配,并不存在一種對一組用戶進行統一管理的方案,這給系統管理員帶來了額外的工作和不便。
解決:V3引入了Group的概念,Group 是一組 Users 的容器,可以向 Group 中添加用戶,并直接給 Group 分配角色,那么在這個 Group 中的所有用戶就都擁有了 Group 所擁有的角色權限。通過引入 Group 的概念,Keystone V3 實現了對用戶組的管理,達到了同時管理一組用戶權限的目的。這與 V2 中直接向 User/Project 指定 Role 不同,使得對云服務進行管理更加便捷。
類比操作系統中的用戶組,是批量便捷操作的體現。
Keystone 和其它 OpenStack service之間的交互和協同工作:首先User向Keystone提供自己的Credentials(憑證:用于確認用戶身份的數據,EG. username/password)。Keystone會從SQL Database中讀取數據對User提供的Credentials進行驗證,如驗證通過,會向User返回一個Token,該Token限定了可以在有效時間內被訪問的 OpenStack API Endpoint和資源 。此后User所有的Request都會使用該Token進行身份驗證。如用戶向Nova申請虛擬機服務,Nova會將User提供的Token發送給Keystone進行Verify驗證,Keystone會根據Token判斷User是否擁有執行申請虛擬機操作的權限,若驗證通過那么Nova會向其提供相對應的服務。其它Openstack和Keystone的交互也是如此。
看完上述內容,你們對Openstack 中keystone組件的作用是什么有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。