OpenStack的Keystone元件詳解

2022-07-09 12:36:12 字數 3316 閱讀 3524

一:簡介

一、作用

1. 使用者管理:驗證使用者身份資訊合法性

2. 認證服務:

提供了其餘所有元件的認證資訊/令牌的管理,建立,修改等等,使用mysql作為統一的資料庫。

3. keystone是openstack用來進行身份驗證(authn)及高階授權(authz)的身份識別服務,目前支援基於口令的authn和使用者服務授權。

二、概念

1. 租戶(project):個人或服務所擁有的資源集合。在乙個project(tenant)中可以包含多個user,每乙個user都會根據許可權的劃分來使用project(tenant)中的資源。

2. 使用者(user):訪問openstack的物件。使用者擁有證書(credentials),且可能分配給乙個或多個租戶。經過驗證後,會為每個單獨的租戶提供乙個特定的令牌。

3. 證書(credentials):確認使用者身份的憑證。可以是使用者名稱和密碼、使用者名稱和api key和token。

4. 令牌(token):乙個字串表示,作為訪問資源的令牌。token包含了在指定範圍和有效時間內可以被訪問的資源,具有時效性。

5. 角色(role):用於劃分許可權。可以通過給user指定role,使user獲得role對應的操作許可權。keystone返回給user的token包含了role列表,被訪問的services會判斷訪問它的user和user提供的token中所包含的role。

6. policy:用來控制user對project中資源(包括services)的操作許可權。對於keystone service來說,policy就是乙個json檔案,預設是/etc/keystone/policy.json。

7. authentication:確定使用者身份的過程

8. 服務(service):openstack中執行的元件服務

9. endpoint:通過網路來訪問和定位某個openstack service的位址,通常是乙個url。分為三類:

1. admin url —>管理員使用者使用 ,port:35357

2. internal url —>openstack內部元件間互相通訊(內部訪問), port:5000 (元件之間通訊基於restful api)

3. public url —> 其他使用者訪問位址(全域性訪問),port:5000

二:架構

一、工作原理

1. 首先user向keystone提供自己的credentials(憑證:用於確認使用者身份的資料,eg. username/password)。

2. keystone根據user提供的credentials從sql database中進行身份和許可權校驗,驗證通過返回user乙個token和endpoint 。

3. user得到授權(token)和endpoint後根據自身許可權操作openstack的資源

二、在各個元件中的作用

1. user通過命令列或者api的方式登入後,提供自己的credentials(憑證:用於確認使用者身份的資料,eg. username/password)。

2. keystone根據user提供的credentials從sql database中進行身份和許可權校驗,驗證通過返回user乙個token和endpoint。

3. 此後user所有的request都會使用該token進行身份驗證。

4. 從以上過程可以看出,使用者的角色管理在 keystone 中是很重要的工作。在keystone v3之前,使用者的許可權管理以每乙個使用者為單位,需要對每乙個使用者進行角色分配,並不存在一種對一組使用者進行統一管理的方案,這給系統管理員帶來了額外的工作和不便。此外,keystone v3之前的版本中,資源分配是以 tenant 為單位的,這不太符合現實世界中的層級關係。如乙個公司在 openstack 中擁有兩個不同的專案,他需要管理兩個tenant來分別對應這兩個專案,並對這兩個 tenant 中的使用者分別分配角色。由於在 tenant 之上並不存在乙個更高層的概念,無法對 tenant 進行統一的管理,所以這給多 tenant 的使用者帶來了不便。為了解決這些問題,keystone v3 提出了新的概念domain和group。

三、訪問流程

1. user/api 想建立乙個例項,首先會將自己的credentials發給keystone。認證成功後,keystone會頒給user/api乙個臨時的令牌(token)和乙個訪問服務的endpoint。

2. user/api 把臨時token提交給keystone,keystone返回乙個tenant(project)。

3. user/api 向keystone傳送帶有特定租戶的憑證(互動許可權),告訴keystone user/api在哪個專案中,keystone收到請求後,會傳送乙個專案的token到user/api (訪問許可權),user/api 拿著token和endpoint找到可訪問服務。

4. 服務向keystone進行認證,token是否合法,它允許訪問使用該服務(判斷使用者/api中role許可權)?

5. keystone向服務提供額外的資訊。user/api是允許方法服務,這個token匹配請求,這個token是user/api的

6. 服務執行user/api發起的請求,建立例項

7. 服務會將狀態報告給使用者/api。最後返回結果,例項已經建立

三:常用操作

Openstack 解除安裝

1 查詢以前是否裝有mysql 命令 rpm qa grep i mysql 可以看到mysql的兩個包 mysql 4.1.12 3.rhel4.1 mysqlclient10 3.23.58 4.rhel4.1 2 刪除mysql 刪除命令 rpm e nodeps 包名 rpm ev mysq...

OpenStack服務的啟動

通過源 安裝openstack,服務都是通過手動啟動的,特別是在控制節點,要啟動一大堆服務也挺麻煩的,並且我發現在用nova all啟動nova相關服務時nova compute有時會報timeout錯誤而無法啟動 該錯誤的修復見這裡 可能是nova compute對其它服務存在依賴,得等其它服務啟...

openstack清空網路

may 18th,2013 comments 清空 quantum 資料 for i in quantum floatingip list grep v grep v id awk do quantum floatingip delete i donefor i in quantum router ...