OpenStack Keystone的基本概念理解Keystone簡介 Keystone(OpenStack Identity Service)是OpenStack框架中,負(fù)責(zé)身份驗(yàn)證、服務(wù)規(guī)則和服務(wù)令牌的功能, 它實(shí)現(xiàn)了OpenStack的Identity API。Keystone類似一個服務(wù)總線, 或者說是整個Openstack框架的注冊表, 其他服務(wù)通過keystone來注冊其服務(wù)的Endpoint(服務(wù)訪問的URL),任何服務(wù)之間相互的調(diào)用, 需要經(jīng)過Keystone的身份驗(yàn)證, 來獲得目標(biāo)服務(wù)的Endpoint來找到目標(biāo)服務(wù)。 Keystone基本概念介紹 1. User User即用戶,他們代表可以通過keystone進(jìn)行訪問的人或程序。Users通過認(rèn)證信息(credentials,如密碼、API Keys等)進(jìn)行驗(yàn)證。 2. Tenant Tenant即租戶,它是各個服務(wù)中的一些可以訪問的資源集合。例如,在Nova中一個tenant可以是一些機(jī)器,在Swift和Glance中一 個tenant可以是一些鏡像存儲,在Quantum中一個tenant可以是一些網(wǎng)絡(luò)資源。Users默認(rèn)的總是綁定到某些tenant上。 3. Role Role即角色,Roles代表一組用戶可以訪問的資源權(quán)限,例如Nova中的虛擬機(jī)、Glance中的鏡像。Users可以被添加到任意一個全局的 或 租戶內(nèi)的角色中。在全局的role中,用戶的role權(quán)限作用于所有的租戶,即可以對所有的租戶執(zhí)行role規(guī)定的權(quán)限;在租戶內(nèi)的role中,用戶僅能 在當(dāng)前租戶內(nèi)執(zhí)行role規(guī)定的權(quán)限。 4. Service Service即服務(wù),如Nova、Glance、Swift。根據(jù)前三個概念(User,Tenant和Role)一個服務(wù)可以確認(rèn)當(dāng)前用戶是否具 有訪問其資源的權(quán)限。但是當(dāng)一個user嘗試著訪問其租戶內(nèi)的service時,他必須知道這個service是否存在以及如何訪問這個service, 這里通常使用一些不同的名稱表示不同的服務(wù)。在上文中談到的Role,實(shí)際上也是可以綁定到某個service的。例如,當(dāng)swift需要一個管理員權(quán)限 的訪問進(jìn)行對象創(chuàng)建時,對于相同的role我們并不一定也需要對nova進(jìn)行管理員權(quán)限的訪問。為了實(shí)現(xiàn)這個目標(biāo),我們應(yīng)該創(chuàng)建兩個獨(dú)立的管理員 role,一個綁定到swift,另一個綁定到nova,從而實(shí)現(xiàn)對swift進(jìn)行管理員權(quán)限訪問不會影響到Nova或其他服務(wù)。 5. Endpoint Endpoint,翻譯為“端點(diǎn)”,我們可以理解它是一個服務(wù)暴露出來的訪問點(diǎn),如果需要訪問一個服務(wù),則必須知道他的endpoint。因此,在 keystone中包含一個endpoint模板(endpoint template,在安裝keystone的時候我們可以在conf文件夾下看到這個文件),這個模板提供了所有存在的服務(wù)endpoints信息。一個 endpoint template包含一個URLs列表,列表中的每個URL都對應(yīng)一個服務(wù)實(shí)例的訪問地址,并且具有public、private和admin這三種權(quán) 限。public url可以被全局訪問(如http://compute.),private url只能被局域網(wǎng)訪問(如http://compute.example.local),admin url被從常規(guī)的訪問中分離。 =================== 引用 Aaron 的理解===================== keystone
里面的概念很多,
有:User,Credentials,Authentication,Token,Tenant,Service,Endpoint,Role。在這么
多概念中,其實(shí)最主要的就是 User 和 Tenant 。由于一些安全,服務(wù)問題,才引發(fā)了其它的概念。
Keystone在OpenStack中的訪問流程范例
如上圖所示,(這段不翻譯了,看圖也能看懂,反正我之前翻譯的也不好T^T)To access some service, users provide their credentials to Keystone and receive a token. The token is just a string that is connected to the user and tenant internally by Keystone. This token travels between services with every user request or requests generated by a service to another service to process the user’s request.The users find a URL of a service that they need. If the user, for example, wants to spawn a new VM instance in Nova, one can find an URL to Nova in the list of endpoints provided by Keystone and send an appropriate request.After that, Nova verifies the validity of the token in Keystone and should create an instance from some image by the provided image ID and plug it into some network. At first Nova passes this token to Glance to get the image stored somewhere in there. After that, it asks Quantum to plug this new instance into a network; Quantum verifies whether the user has access to the network in its own database and to the interface of VM by requesting info in Nova. All the way this token travels between services so that they can ask Keystone or each other for additional information or some actions. 參考內(nèi)容: http://mirantis./2011/09/what-is-this-keystone-anyway.html |
|