1、Keystone介紹:
keystone 是OpenStack的組件之一,用於爲OpenStack家族中的其它組件成員提供統一的認證服務,包括身份驗證、令牌的發放和校驗、服務列表、用戶權限的定義等等。雲環境中全部的服務之間的受權和認證都須要通過 keystone. 所以 keystone 是雲平臺中第一個即須要安裝的服務。
做爲 OpenStack 的基礎支持服務,Keystone 作下面這幾件事情:
-
管理用戶及其權限
-
維護 OpenStack Services 的 Endpoint
-
Authentication(認證)和 Authorization(鑑權)
2、Keystone概念:apache
User 指代任何使用 OpenStack 的實體,能夠是真正的用戶,其餘系統或者服務。
當 User 請求訪問 OpenStack 時,Keystone 會對其進行驗證。Horizon 在 Identity->Users 管理 User
admin:openstack平臺的超級管理員,負責openstack服務的管理和訪問權限json
demo: 常規(非管理)任務應該使用無特權的項目和用戶,全部要建立 demo 項目和 demo 用戶
除了 admin 和 demo,OpenStack 也爲 nova、cinder、glance、neutron 服務建立了相應的 User。 admin 也能夠管理這些 User。安全
Credentials 是 User 用來證實本身身份的信息,能夠是:
1. 用戶名/密碼
2. Token
3. API Key
4. 其餘高級方式
Authentication 是 Keystone 驗證 User 身份的過程。User 訪問 OpenStack 時向 Keystone 提交用戶名和密碼形式的 Credentials,Keystone 驗證經過後會給 User 簽發一個 Token 做爲後續訪問的 Credential。
Token 是由數字和字母組成的字符串,User 成功 Authentication 後 Keystone 生成 Token 並分配給 User。
-
Token 用作訪問 Service 的 Credential
-
Service 會經過 Keystone 驗證 Token 的有效性
-
Token 的有效期默認是 24 小時
Project 用於將 OpenStack 的資源(計算、存儲和網絡)進行分組和隔離。
根據 OpenStack 服務的對象不一樣,Project 能夠是一個客戶(公有云,也叫租戶)、部門或者項目組(私有云)。
這裏請注意:
-
資源的全部權是屬於 Project 的,而不是 User。
-
在 OpenStack 的界面和文檔中,Tenant / Project / Account 這幾個術語是通用的,但長期看會傾向使用 Project
-
每一個 User(包括 admin)必須掛在 Project 裏才能訪問該 Project 的資源。 一個User能夠屬於多個 Project。
-
admin 至關於 root 用戶,具備最高權限
Horizon 在 Identity->Projects 中管理 Project
經過 Manage Members 將 User 添加到 Project
OpenStack 的 Service 包括 Compute (Nova)、Block Storage (Cinder)、Object Storage (Swift)、Image Service (Glance) 、Networking Service (Neutron) 等。每一個 Service 都會提供若干個 Endpoint,User 經過 Endpoint 訪問資源和執行操做。
Endpoint 是一個網絡上可訪問的地址,一般是一個 URL。Service 經過 Endpoint 暴露本身的 API。 Keystone 負責管理和維護每一個 Service 的 Endpoint。
可使用下面的命令來查看 Endpoint。
# source devstack/openrc admin admin
# openstack catalog list
安全包含兩部分:Authentication(認證)和 Authorization(鑑權)
Authentication 解決的是「你是誰?」的問題
Authorization 解決的是「你能幹什麼?」的問題
Keystone 藉助 Role 實現 Authorization:
-
-
能夠爲 User 分配一個或多個 Role,Horizon 的菜單爲:Identity->Project->ManageMembers
-
Service 決定每一個 Role 能作什麼事情 Service 經過各自的 policy.json 文件對 Role 進行訪問控制。 下面是 Nova 服務 /etc/nova/policy.json 中的示例:
上面配置的含義是:對於 create、attach_network 和 attach_volume 操做,任何Role的 User 均可以執行; 但只有 admin 這個 Role 的 User 才能執行 forced_host 操做。
2. OpenStack 默認配置只區分 admin 和非 admin Role。 若是須要對特定的 Role 進行受權,能夠修改 policy.json。
Openstack對User的驗證除了身份驗證,還須要鑑別 User 對某個Service是否有訪問權限。Policy用來定義什麼角色對應什麼權限。對Keystone來講,Policy實際上是一個JSON文件,默認是 /etc/keystone/policy.json 。經過Policy,Keystone實現了對User的權限管理。
3. openstack系統基本角色有兩個:
一個是管理員admin
一個是租戶_member_
3、Keystone基本架構:
•Token: 用來生成和管理token
•Catalog:用來存儲和管理service/endpoint
•Identity:用來管理tenant/user/role和驗證
•Policy:用來管理訪問權限
OpenStack 排查問題的方法主要是經過日誌。
每一個 Service 都有本身的日誌文件。
Keystone 主要有兩個日誌: keystone.log 和 keystone_access.log,保存在 /var/log/apache2/ 目錄裏。
若是須要獲得最詳細的日誌信息,能夠在 /etc/keystone/keystone.conf 中打開 debug 選項
在非 devstack 安裝中,日誌可能在 /var/log/keystone/ 目錄裏。