1. Keystone介紹
keystone 是OpenStack的組件之一,用於為OpenStack家族中的其它組件成員提供統一的認證服務,包括身份驗證、令牌的發放和校驗、服務列表、用戶權限的定義等等。雲環境中所有的服務之間的授權和認證都需要經過 keystone. 因此 keystone 是雲平台中第一個即需要安裝的服務。
作為 OpenStack 的基礎支持服務,Keystone 做下面這幾件事情:
a.管理用戶及其權限
b.維護 OpenStack Services 的 Endpoint(服務地址)
c.Authentication(認證)和 Authorization(鑒權)
學習 Keystone,得理解下面這些概念:
1.1 User
User 指代任何使用 OpenStack 的實體,可以是真正的用戶,其他系統或者服務。
當 User 請求訪問 OpenStack 時,Keystone 會對其進行驗證。Horizon 在 Identity->Users 管理 User
admin:openstack平台的超級管理員,負責openstack服務的管理和訪問權限
demo:常規(非管理)任務應該使用無特權的項目和用戶,所有要創建 demo 項目和 demo 用戶
除了 admin 和 demo,OpenStack 也為 nova、cinder、glance、neutron 服務創建了相應的 User。 admin 也可以管理這些 User。
1.2 Credentials
Credentials 是 User 用來證明自己身份的信息,可以是:
1. 用戶名/密碼
2. Token
3. API Key
4. 其他高級方式
1.3 Authentication
Authentication 是 Keystone 驗證 User 身份的過程。User 訪問 OpenStack 時向 Keystone 提交用戶名和密碼形式的 Credentials,Keystone 驗證通過后會給 User 簽發一個 Token 作為后續訪問的 Credential。
1.4 Token
Token 是由數字和字母組成的字符串,User 成功 Authentication 后 Keystone 生成 Token 並分配給 User。
Token 用做訪問 Service 的 Credential
Service 會通過 Keystone 驗證 Token 的有效性
Token 的有效期默認是 24 小時
1.5 Project
Project 用於將 OpenStack 的資源(計算、存儲和網絡)進行分組和隔離。
根據 OpenStack 服務的對象不同,Project 可以是一個客戶(公有雲,也叫租戶)、部門或者項目組(私有雲)。
這里請注意:
1.資源的所有權是屬於 Project 的,而不是 User。
2.在 OpenStack 的界面和文檔中,Tenant / Project / Account 這幾個術語是通用的,但長期看會傾向使用 Project
3.每個 User(包括 admin)必須掛在 Project 里才能訪問該 Project 的資源。 一個User可以屬於多個 Project。
4.admin 相當於 root 用戶,具有最高權限
1.6 Service
OpenStack 的 Service 包括 Compute (Nova)、Block Storage (Cinder)、Object Storage (Swift)、Image Service (Glance) 、Networking Service (Neutron) 等。每個 Service 都會提供若干個 Endpoint,User 通過 Endpoint 訪問資源和執行操作。
1.7 Endpoint
Endpoint 是一個網絡上可訪問的地址,通常是一個 URL。Service 通過 Endpoint 暴露自己的 API。 Keystone 負責管理和維護每個 Service 的 Endpoint。
可以使用下面的命令來查看 Endpoint。
# source devstack/openrc admin admin
# openstack catalog list
1.8 Role
安全包含兩部分:Authentication(認證)和 Authorization(鑒權)
Authentication 解決的是“你是誰?”的問題
Authorization 解決的是“你能干什么?”的問題
2. Keystone基本架構
•Token: 用來生成和管理token
•Catalog:用來存儲和管理service/endpoint
•Identity:用來管理tenant/user/role和驗證
•Policy:用來管理訪問權限