一 keystone簡介
- keystone(openstack identity service)是openstack框架中負責身份驗證、服務規則和服務令牌的功能, 它實現了openstack的Identity API。
- keystone類似一個服務總線,或者説是掙個openstack框架的註冊表, 其他服務通過keystone來註冊其服務的Endpoint(服務訪問的URL),任何服務之間的相互調用,需要經過keystone的身份驗證來獲得目標服務的Endpoint來找到目標服務。
二 keystone基本概念介紹
2.1 名詞解釋
- User
User就是用户,它代表可以通過keystone進行訪問的人或者程序。 User通過認證信息(credentials, 如用户名密碼、API Keys等)進行驗證。 - Tenant
Tenant就是租户。他是各個服務中一些可以訪問的資源集合。例如:Nova中一個tenant可以使一些機器, 在Swift和Glance中一個tenant可以是一些鏡像存儲。user默認的總是綁定到某些tenant上。 - Role
Role就是角色。Role代表一組用户可以訪問的資源權限。例如Nova中的虛擬機、Glance中的鏡像。Users可以被添加到任意一個全局的或者租户內的角色中。在全局的role中,用户的role權限作用於所有的租户,也就是説所有的租户都有角色role所規定的權限;在租户內的role中,用户僅擁有租户內橘色規定的權限。 - Policy
OpenStack對User的驗證除了OpenStack的身份驗證以外,還需要鑑別User對某個Service是否有訪問權限。Policy機制就是用來控制User對Tenant中資源(包括Services)的操作權限。對於Keystone service來説,Policy就是一個JSON文件,默認是/etc/keystone/policy.json。通過配置這個文件,Keystone Service實現了對User基於Role的權限管理 - Service
Service即服務,如Nova、Glance、Swift。根據前三個概念(User、Tenant、Role)一個服務可以確認當前用户是否具有訪問其資源的權限。但是當一個User嘗試着訪問其租户內的Service時,他必須知道這個Service是否存在以及如何訪問這個Service,這裏通常用一些不同的名稱表示不同的服務。在面提到的Role,實際上也是可以綁定到某個service。例如:當swift需要一個管理員權限的訪問進行對象創建時,對於相同的role我們不一定需要對nova進行管理權限的訪問。為了實現這個目標,我們應該創建兩個role,一個綁定到swift,一個綁定到nova,從而實現對swift進行管理權限的訪問但不會影響到nova或者其他服務。 - Endpoint
Endpoint,我們稱之為“端點”,可以將之理解為一個服務爆樓出來的訪問點,如果需要訪問一個服務,則必須知道他的Endpoint。因此,在keystone中包含一個endpoint模板(endpoint template, 在安裝keystone的時候我們可以再conf文件夾下看到這個文件),這個模板他拱了所有存在的服務endpoints信息。一個endpoint template包含一個URL列表,列表中的每個URL都對應一個服務實例的訪問地址,並且具有public、private、admin這三種權限。public url可以被全局訪問,private url只能被局域網訪問, admin url被從常規的訪問中分離。
2.2 概念含義舉例説明
keystone 裏面的概念很多,有:User,Credentials,Authentication,Token,Tenant,Service,Endpoint,Role。在這麼多概念中,其實最主要的就是 User 和 Tenant 。由於一些安全,服務問題,才引發了其它的概念。
那什麼叫做 User ,Tenant 呢?這裏我舉個比較好理解的例子。我們去賓館住的時候,我們自己就相當於 User ,而賓館就是 Tenant 。這是最簡單的情況,賓館值提供房間,我們只需要住房。
隨着後來生活物質等的提高,這種現象就變了。我們去賓館住的時候,很多東西都不一樣,比如,開房間要身份證,房間的鑰匙是一個可以當卡刷的牌子,我們進出賓館的時候需要用自己的鑰匙來開啓賓館的大門;還有就是,賓館不僅僅是用來住的了,它可以給我們提供飲食,娛樂,健身等各種服務;而且服務層次的不同,房間也不同,房間裏面的配置豪華程度也不一樣。在這種情況下,描述我們和賓館之間的關係就複雜一些了,這就引發了一些新的概念。
舉完這個例子, keystone 中的各種概念就可以和例子中的事物相掛鈎了。
|
概念
|
含義
|
|
OpenStack
|
賓館
|
|
Keystone
|
中英管理系統
|
|
User
|
住賓館的人
|
|
Credentials
|
旅客的身份證
|
|
Authentication
|
確定旅客身份的過程
|
|
Token
|
房卡(用身份證換臨時房卡)
|
|
Service
|
賓館可以提供的服務類別,比如大保健、洗浴等
|
|
Endpoint
|
服務提供場所的地址
|
|
Role
|
VIP等級, VIP等級越高,擁有的權限越大
|
### 2.3 keytone與其他服務的交互過程