Openstack元件——Keystone解析

wuhaihong17發表於2020-12-14

一、Keystone簡介

Keystone(OpenStack Identity Service)是 OpenStack 框架中負責管理身份驗證、服務規則和服務令牌功能的模組。使用者訪問資源需要驗證使用者的身份與許可權,服務執行操作也需要進行許可權檢測,這些都需要通過 Keystone 來處理。Keystone類似一個服務匯流排, 或者說是整個Openstack框架的登錄檔, 其他服務通過keystone來註冊其服務的Endpoint(服務訪問的URL),任何服務之間相互的呼叫, 需要經過Keystone的身份驗證, 來獲得目標服務的Endpoint來找到目標服務。

二、Keystone主要功能

1、身份認證:負責令牌的發放和校驗

2、使用者授權:授權使用者有指定的可執行動作的範圍

3、使用者管理:管理使用者的賬戶

4、服務目錄:提供可用服務的API端點位置

三、Keystone基本概念

1). User

User可簡單的理解為使用者,使用者攜帶信物(token)能夠訪問openstack各個服務和資源。

2). Tenant

Tenant即租戶,早期版本又稱為project,它是各個服務中的一些可以訪問的資源集合。比如通過nova建立虛擬機器時要指定到某個租戶中,在cinder建立卷也要指定到某個租戶中。使用者訪問租戶的資源前,必須與該租戶關聯,並且指定該使用者在該租戶下的角色。

3). Role

Role即角色,可以理解為VIP等級,使用者的Role越高,在openstack中能訪問的服務和資源就更多。

4). Service

Service即服務,如Nova、Glance、Swift、heat、ceilometer等。Nova提供雲端計算的服務,Glance提供映象管理服務,Swift提供物件儲存服務,heat提供資源編排服務,ceilometer則是提供告警計費服務,cinder提供塊儲存服務。

5). Endpoint

Service的顯得太抽象籠統。Endpoint則具體化Service。Endpoint翻譯為“端點”,我們可以理解它是一個服務暴露出來的訪問點,如果需要訪問一個服務,則必須知道他的endpoint,而endpoint一般為url,我們知道了服務的url,我們就可以訪問它。Endpoint
的url具有public、private和admin這三種許可權。public url可以被全域性訪問,private
url只能被區域網訪問,admin url被從常規的訪問中分離。

6). Token

Token即是信物、令牌,使用者通過使用者名稱和密碼獲取在某個租戶下的token,通過token,可以實現單點登入。

7) Credentials

該術語可以簡單的理解為使用者和密碼。

三、Keystone訪問流程

以建立一個虛擬機器(server)為例,結合下圖簡述下keystone在openstack的訪問流程。

在這裡插入圖片描述

1、使用者通過命令列或者horizon控制皮膚的方式登入openstack,憑藉自己的證書(credentials)給keystone驗證。

2、Keystone對使用者的證書驗證,驗證通過則會釋出一個令牌(token)和使用者所需服務的位置點(endpoint)給使用者。
3、使用者得到了位置點(endpoint)之後,攜帶自己的令牌,向nova發起請求,請求建立虛擬機器。
nova會拿著使用者的token向keystone進行認證,看是否允許使用者執行這樣的操作。

4、keystone認證通過之後,返回給nova,nova即開始執行建立虛擬機器的請求。首先需要映象資源,nova帶著令牌(token)和所需要的映象名向glance提出映象資源的請求。

5、glance會拿著token去向keystone進行認證,看是否允許提供映象服務。keystone認證成功後,返回給glance。glance向nova提供映象服務。

6、建立虛擬機器還需要網路服務,nova攜帶token向neutron傳送網路服務的請求

7、neutron拿著nova給的token向keystone進行認證,看是否允許向其提供網路服務。keystone認證成功後,返回給nuetron。nuetron則給nova提供網路規劃服務。

8、nova獲取了映象和網路之後,開始建立虛擬機器,通過hypervisior可呼叫底層硬體資源進行建立。建立完成返回給使用者,成功執行了使用者的請求。

相關文章