溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Openstack 中keystone組件的作用是什么

發(fā)布時(shí)間:2021-08-12 14:05:39 來源:億速云 閱讀:1498 作者:Leah 欄目:云計(jì)算

今天就跟大家聊聊有關(guān)Openstack 中keystone組件的作用是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

User

User即用戶,他們代表可以通過keystone進(jìn)行訪問的人或程序。Users通過認(rèn)證信息(credentials,如密碼、API Keys等)進(jìn)行驗(yàn)證。

Tenant

Tenant即租戶,它是各個(gè)服務(wù)中的一些可以訪問的資源集合。例如,在Nova中一個(gè)tenant可以是一些機(jī)器,在Swift和Glance中一個(gè)tenant可以是一些鏡像存儲(chǔ),在Quantum中一個(gè)tenant可以是一些網(wǎng)絡(luò)資源。Users默認(rèn)的總是綁定到某些tenant上。

Role

Role即角色,Roles代表一組用戶可以訪問的資源權(quán)限,例如Nova中的虛擬機(jī)、Glance中的鏡像。Users可以被添加到任意一個(gè)全局的 或 租戶內(nèi)的角色中。在全局的role中,用戶的role權(quán)限作用于所有的租戶,即可以對所有的租戶執(zhí)行role規(guī)定的權(quán)限;在租戶內(nèi)的role中,用戶僅能在當(dāng)前租戶內(nèi)執(zhí)行role規(guī)定的權(quán)限。

Service

Service即服務(wù),如Nova、Glance、Swift。根據(jù)前三個(gè)概念(User,Tenant和Role)一個(gè)服務(wù)可以確認(rèn)當(dāng)前用戶是否具有訪問其資源的權(quán)限。但是當(dāng)一個(gè)user嘗試著訪問其租戶內(nèi)的service時(shí),他必須知道這個(gè)service是否存在以及如何訪問這個(gè)service,這里通常使用一些不同的名稱表示不同的服務(wù)。在上文中談到的Role,實(shí)際上也是可以綁定到某個(gè)service的。例如,當(dāng)swift需要一個(gè)管理員權(quán)限的訪問進(jìn)行對象創(chuàng)建時(shí),對于相同的role我們并不一定也需要對nova進(jìn)行管理員權(quán)限的訪問。為了實(shí)現(xiàn)這個(gè)目標(biāo),我們應(yīng)該創(chuàng)建兩個(gè)獨(dú)立的管理員role,一個(gè)綁定到swift,另一個(gè)綁定到nova,從而實(shí)現(xiàn)對swift進(jìn)行管理員權(quán)限訪問不會(huì)影響到Nova或其他服務(wù)。

Endpoint

Endpoint,翻譯為“端點(diǎn)”,我們可以理解它是一個(gè)服務(wù)暴露出來的訪問點(diǎn),如果需要訪問一個(gè)服務(wù),則必須知道他的endpoint。因此,在keystone中包含一個(gè)endpoint模板(endpoint template,在安裝keystone的時(shí)候我們可以在conf文件夾下看到這個(gè)文件),這個(gè)模板提供了所有存在的服務(wù)endpoints信息。一個(gè)endpoint template包含一個(gè)URLs列表,列表中的每個(gè)URL都對應(yīng)一個(gè)服務(wù)實(shí)例的訪問地址,并且具有public、private和admin這三種權(quán)限。

public url可以被全局訪問(如http://compute.example.com),端口 5000

private url只能被局域網(wǎng)訪問(如http://compute.example.local),端口 5000

admin url被從常規(guī)的訪問中分離  端口:35357

Credentials

用于確認(rèn)用戶身份的憑證。說白了就是“信物”,可以是:

   ?。?):用戶名和密碼

    (2):用戶名跟API Kye(秘鑰)              #(1)(2)用戶第一次確認(rèn)身份的方法

   ?。?):一個(gè)keystone分配的身份的token            #(3)用戶已經(jīng)確認(rèn)身份后的方法 (token是有時(shí)間限制的)

Auhentication

   ?。?):用戶身份驗(yàn)證的過程。keystone服務(wù)通過檢查用戶的Credentials來確定用戶的身份

    (2):第一次驗(yàn)證身份是使用用戶名與密碼或者用戶名與API Key的形式。當(dāng)用戶的Credentials被驗(yàn)證后,keystone會(huì)給用戶分配一個(gè)Authentication token 供該用戶的后續(xù)請求操作(返回的token中就包含User的Role列表)

Token

    (1):是一串?dāng)?shù)字字符串,當(dāng)用戶訪問資源時(shí)需要使用的東西,在keystone中主要是引入令牌機(jī)制來保護(hù)用戶對資源的訪問,同時(shí)引入PKI、PKIZ、fernet、UUID其中一個(gè)隨機(jī)加密產(chǎn)生一串?dāng)?shù)字,對令牌加以保護(hù)

   ?。?):token并不是長久有效的,是有時(shí)效性的,在有效的時(shí)間內(nèi)可以訪問資源。

Policy

    (1):對于keystone service 來說,Policy就是一個(gè)JSON文件,rpm安裝默認(rèn)是在/etc/keyston/policy.json。通過配置這個(gè)文件,keystone實(shí)現(xiàn)了對User基于Role的權(quán)限管理(User <-- Role(ACL) <--Policy)

    (2):Policy就是用來控制User對Project(tenant)中資源的操作權(quán)限

Project(Tenant)

   ?。?):Project(Tenant)是一個(gè)人或服務(wù)所擁有的資源集合。不同的Project之間資源是隔離的,資源可以設(shè)置配額

   ?。?):Project(Tenant)中可以有多個(gè)User,每一個(gè)User會(huì)根據(jù)權(quán)限的劃分來使用Project(Tenant)中的資源

   ?。?):User在使用Project(Tenant)的資源前,必須要與這個(gè)Project關(guān)聯(lián),并且制定User在Project下的Role,一個(gè)assignment(關(guān)聯(lián)) 即:Project-User-Role

Service 

    即服務(wù),如Nova,Glace,等各個(gè)組件

Keystone管理對象之間的關(guān)系

Openstack 中keystone組件的作用是什么

在Openstack-M版本中就使用了Keystone-V3。V3在V2的基礎(chǔ)上引入了域和用戶組的概念,將 Tenant 改稱為 Project,V3將逐步替代V2。

V3的組織結(jié)構(gòu)

Openstack 中keystone組件的作用是什么

V3的改進(jìn)

問題1:在Keystone V2中,資源分配是以Tenant為單位的,這不太符合現(xiàn)實(shí)世界中的層級關(guān)系。如一個(gè)公司在 Openstack中擁有兩個(gè)不同的項(xiàng)目,他需要管理兩個(gè)Tenant來分別對應(yīng)這兩個(gè)項(xiàng)目,并對這兩個(gè)Tenant中的用戶分別分配角色。由于在Tenant之上并不存在一個(gè)更高層的概念,無法對 Tenant 進(jìn)行統(tǒng)一的管理,所以這給多 Tenant 的用戶帶來了不便。
解決:V3 利用 Domain 的概念實(shí)現(xiàn)真正的多租戶(multi-tenancy)架構(gòu),Domain 擔(dān)任 Project 的高層容器。云服務(wù)的客戶是 Domain 的所有者,他們可以在自己的 Domain 中創(chuàng)建多個(gè) Projects、Users、Groups 和 Roles。通過引入 Domain,云服務(wù)客戶可以對其擁有的多個(gè) Project 進(jìn)行統(tǒng)一管理,而不必再向過去那樣對每一個(gè) Project 進(jìn)行單獨(dú)管理。
簡而言之,Domain的引入是為了將多個(gè)Project進(jìn)行封裝,成為單一實(shí)體再交付給相應(yīng)的一個(gè)客戶使用。

問題2:在 Keystone V2中,用戶的權(quán)限管理是以每一個(gè)用戶為單位,需要對每一個(gè)用戶進(jìn)行角色分配,并不存在一種對一組用戶進(jìn)行統(tǒng)一管理的方案,這給系統(tǒng)管理員帶來了額外的工作和不便。
解決:V3引入了Group的概念,Group 是一組 Users 的容器,可以向 Group 中添加用戶,并直接給 Group 分配角色,那么在這個(gè) Group 中的所有用戶就都擁有了 Group 所擁有的角色權(quán)限。通過引入 Group 的概念,Keystone V3 實(shí)現(xiàn)了對用戶組的管理,達(dá)到了同時(shí)管理一組用戶權(quán)限的目的。這與 V2 中直接向 User/Project 指定 Role 不同,使得對云服務(wù)進(jìn)行管理更加便捷。
類比操作系統(tǒng)中的用戶組,是批量便捷操作的體現(xiàn)。

Keystone 和其它 OpenStack service之間的交互和協(xié)同工作:首先User向Keystone提供自己的Credentials(憑證:用于確認(rèn)用戶身份的數(shù)據(jù),EG. username/password)。Keystone會(huì)從SQL Database中讀取數(shù)據(jù)對User提供的Credentials進(jìn)行驗(yàn)證,如驗(yàn)證通過,會(huì)向User返回一個(gè)Token,該Token限定了可以在有效時(shí)間內(nèi)被訪問的 OpenStack API Endpoint和資源 。此后User所有的Request都會(huì)使用該Token進(jìn)行身份驗(yàn)證。如用戶向Nova申請?zhí)摂M機(jī)服務(wù),Nova會(huì)將User提供的Token發(fā)送給Keystone進(jìn)行Verify驗(yàn)證,Keystone會(huì)根據(jù)Token判斷User是否擁有執(zhí)行申請?zhí)摂M機(jī)操作的權(quán)限,若驗(yàn)證通過那么Nova會(huì)向其提供相對應(yīng)的服務(wù)。其它Openstack和Keystone的交互也是如此。

Openstack 中keystone組件的作用是什么

看完上述內(nèi)容,你們對Openstack 中keystone組件的作用是什么有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI