OpenStack Identity(Keystone)身份服務-體系結構與中間件

OpenStack Identity(Keystone)服務爲運行OpenStack Compute上的OpenStack雲提供了認證和管理用戶、賬號和角色信息服務,併爲OpenStack Object Storage提供受權服務。 數據庫

 

Keystone體系結構
Keystone 有兩個主要部件:驗證和服務目錄 swift


驗證:提供了一個基於令牌的驗證服務,主要有如下幾個概念:
租戶(Tenant)
使用OpenStack相關服務的一個組織。一個租戶映射到一個Nova的「project-id」,在對象存儲中,一個租戶能夠有多個容器。根據不一樣的安裝方式,一個租戶能夠表明一個客戶、賬號、組織或項目。
用戶(User)
表明一個個體,OpenStack以用戶的形式來受權服務給它們。用戶擁有證書(credentials),且可能分配給一個或多個租戶。通過驗證後,會爲每一個單獨的租戶提供一個特定的令牌。
證書(credentials)
爲了給用戶提供一個令牌,須要用證書來惟一標識一個Keystone用戶的密碼或其它信息
令牌(token)
一個令牌是一個任意比特的文本,用於與其它OpenStack服務來共享信息,Keystone以此來提供一個central location,以驗證訪問OpenStack服務的用戶。一個令牌能夠是「scoped」或「unscoped」。一個scoped令牌表明爲某個租戶驗證過的用戶,而unscoped令牌則僅表明一個用戶。令牌的有效期是有限的,能夠隨時被撤回。
角色(Role)
一個角色是應用於某個租戶的使用權限集合,以容許某個指定用戶訪問或使用特定操做。角色是使用權限的邏輯分組,它使得通用的權限能夠簡單地分組並綁定到與某個指定租戶相關的用戶。 網絡


服務目錄(Service Catalog)
Keystone爲OpenStack安裝提供了一個REST API端點列表並以此做爲決策參考。主要的概念包括:
服務(Service)
一個OpenStack服務,例如nova、swift、glance或keystone。一個服務能夠擁有一個或多個端點,經過它用戶能夠與OpenStack的服務或資源交互。
端點(Endpoint)
一個能夠經過網絡訪問的地址(典型地,一個URL),表明了OpenStack服務的API接口。端點也能夠分組爲模板,每一個模板表明一組可用的OpenStack服務,這些服務是跨區域(regions)可用的。
模板(Template)
一個端點集合,表明一組可用的OpenStack服務端點。 url

 

Keystone的組件
Keystone包含一個命令行接口,能夠與Keystone API交互以管理keystone和相關服務。
keystone - 運行keystone-admin和keystone-service
keystone-admin - 操做keystone的管理API
keystone-service - 用於驗證的,面向用戶的AP
keystone-manage - 管理keystone的命令行接口
Keystone還包括WSGI中間件覺得Nova和Swift提供驗證服務。
Keystone使用一個內置的SQLite數據庫 - 爲驗證用戶,未來也可能使用一個外部LDAP服務來代替存儲證書 命令行

 

中間件(Middleware)
Keystone中間件位於OpenStack服務前面,處理進來的請求驗證。中間件的設計遵循以下的規範。
中間件的源代碼位於Keystone/middleware。
中間件支持兩個接口:WSGI和REST/HTTP。 設計


REST & HTTP API
若是進來一個未經認證的調用,中間件將響應一個401 Unautorized錯誤。根據每HTTP的標準,它也會返回一個WWW-Authenticate包頭以通知調用者支持哪一個協議。對於Keystone驗證,響應的語法格式以下:
WWW-Authenticate: Keystone uri="url to Keystone server"The client can then make the necessary calls to the Keystone server, obtain a token, and retry the call with the token.
令牌使用 X-Auth-Toke包頭傳遞。 server

 

WSGI API(包頭)
當成功驗證後中間件經爲下行的WSGI應用發送以下包頭:
X-Identity-Status
提供請求是否被驗證的信息。
X-Tenant
提供了租戶ID(在Keystone中以URL的形式出現)。在Keysotne轉爲採用ID/Name模式以前,它爲租戶提供了對任意遺留實現的支持。
X-Tenant-Id
惟一不變的租戶ID。
X-Tenant-Name
惟一但可變的租戶名字。
X-User
用於登陸的用戶名。
X-Roles
分配給用戶的角色。 中間件

相關文章
相關標籤/搜索