OpenStack入門之核心組件梳理(1)——Keystone篇

OpenStack入門之核心組件梳理(1)——Keystone篇

前言

​ 先前的文章中筆者從總體上介紹了有關OpenStack相關內容,包括:概念、主要組件及項目、部署節點類型以及總體架構。那麼從本文開始咱們將介紹有關OpenStack核心項目的理論知識,逐一詳細介紹各個服務項目。json

​ 友情連接:下面的三篇文章對於初學者或多或少能夠幫你在宏觀上了解雲計算以及OpenStack。後端

雲計算淺談網絡

OpenStack概念以及核心組件概述架構

OpenStack部署節點類型和架構框架

​ 那麼,首先來說一下核心項目之一的Keystone相關的內容。本文將從概念做用、主要組成、模式架構、工做原理四個部分層層介紹,最後對Keystone這個項目作一個總結。ide

1、Keystone的概念做用

​ 經過前面的文章,應該對OpenStack的核心組件服務有了總體上的認知了。本文將針對OpenStack集羣服務中Keystone項目服務進行講解。本小節將詳述Keystone的概念。ui

​ Keystone是OpenStack組件之一——Identity Service(認證服務)成立的核心項目。該項目總體上相對於其餘項目並不複雜,其相似於一個服務總線,也能夠理解爲整個OpenStack服務框架的註冊表,OpenStack中其餘項目經過Keystone能夠註冊其服務而後得到該服務的Endpoint(服務的訪問端口,或者理解爲入口),這個Endpiont能夠是一個也能夠是多個。此外,任何服務之間的調用也須要經過Keystone的認證才能得到目標服務的Endpoint來訪問對應服務。雲計算

​ 固然,既然是認證服務,就有必定的認證機制,那麼思考一下在生活中能夠想到有什麼相似認證的例子?3d

​ 其實,這樣的例子不少,家家戶戶的鎖匙就是一種認證機制,再好比支付寶帳號密碼登陸也是認證機制的典型例子,再如,各類門票入場券均可以認爲是一種認證機制。code

​ 總而言之,Keystone項目就是經過相應的認證受權形式來向其餘服務或其餘服務之間提供服務支持,其主要功能就是對用戶和服務進行管理的。所以咱們要理解如何管理用戶以及服務,就須要對Keystone的主要模塊構成熟悉理解。

2、Keystone的主要組成

​ 本小節將介紹Keystone對用戶和服務進行管理層面上對應組成概念及做用的介紹,介紹過程當中涉及的術語都會在下文進行詳細介紹,能夠自行查閱理解。

2.1 User

​ 表示使用服務的用戶,能夠是人,服務或者系統,只要是使用了openstack服務的對象均可以稱爲用戶。當User對OpenStack進行訪問時,Keystone會對其身份進行驗證,驗證經過的用戶能夠登陸OpenStack雲平臺而且經過其頒發的Token(下面會講解)去訪問資源,用戶能夠被分配到一個或者多個tenant或project(下文給出介紹)中。

2.2 Tenant

​ 表示使用訪問的租戶,做用是對資源進行分組,或者說是爲了使提供的資源之間互相隔離,能夠理解爲一個一個容器,也稱爲Project。

​ 在一個租戶中能夠擁有不少個用戶,用戶也能夠隸屬於多個租戶,但必須至少屬於某個租戶。租戶中可以使用資源的限制稱做Tenant Quotas,聯想一下Linux系統磁盤管理的磁盤配額,這個Quotas的含義就是配額、限額。用戶能夠根據權限的劃分使用租戶中的資源。

2.3 Token

​ 表示提供進行驗證的令牌,是Keystone分配的用於訪問OpenStack API和資源服務的字符串文本。用戶的令牌可能在任什麼時候間被撤銷(revoke),就是說用戶的Token是具備時間限制的,而且在OpenStack中Token是和特定的Tenant(租戶)綁定的,也就是說若是用戶屬於多個租戶,那麼其就有多個具備時間限制的令牌。

2.4 Credential

​ 表示用戶憑據,用來證實用戶身份的數據,能夠是用戶名和密碼、用戶名和API Key,或者是Keystone認證分配的Token。

2.5 Authentication

​ 表示身份認證,是驗證用戶身份的過程。將上面的幾個結合起來簡單說明一下該過程。

首先,用戶申請訪問等請求,Keystone服務經過檢查用戶的Credential肯定用戶身份;而後,在第一次對用戶進行認證時,用戶使用用戶名和密碼或用戶名和API Key做爲Credential;其次,當用戶的Credential被驗證以後,Keystone會給用戶(用戶一定至少屬於一個租戶)分配一個Authentication Token來給該用戶以後去使用。

2.6 Service

​ 表示服務,有OpenStack提供,例如Nova、Swift或者Glance等等,每一個服務提供一個或多個Endpoint(服務的入口)來給不一樣角色的用戶進行資源訪問以及操做。

2.7 Endpoint

​ 表示服務的入口,是一個由Service監聽服務請求的網絡地址。客戶端要訪問某個service,就須要經過該service經過的Endpoint(一般是能夠訪問的一個URL地址)。在OpenStack服務架構中,各個服務之間的相互訪問也須要經過服務的Endpoint才能夠訪問對應的目標服務。

2.8 Role

​ 表示角色,相似一訪問控制列表——ACL的集合。主要是用於分配操做的權限。角色能夠被指定給用戶,使得該用戶得到角色對應的操做權限。其實在Keystone的認證機制中,分配給用戶的Token中包含了用戶的角色列表。

​ 換言之,Role扮演的做用能夠理解爲:當服務被用戶訪問時,該服務會去解析用戶角色列表中的角色的權限(例如能夠進行的操做權限、訪問哪些資源的權限)。

2.9 Policy

​ 表示策略,用於控制某一個Tenant中的某一個User是否具有某個操做的權限。也就是說,經過Policy機制,依據配置文件(默認是在/etc/keystone/目錄下的policy.json文件),能夠決定User能夠執行什麼操做,不能執行什麼操做。

​ 該文件內容格式以下(大體瞭解一下便可):

1 {
2 "admin_required": "role:admin or is_admin:1",
34 "identity:get_project": "rule:admin_required",
35 "identity:list_projects": "rule:admin_required",
......
45 "identity:delete_user": "rule:admin_required",
46 "identity:change_password": "rule:admin_or_owner",
47}

3、Keystone的架構理解

上篇文章介紹OpenStack的架構的時候給出過以下的一個架構圖,不知道是否有所印象或者以前在其餘的文章中看見過:

OpenStack入門之核心組件梳理(1)——Keystone篇

​ 經過該圖,咱們能夠直觀上了解Identity Service的Keystone服務是一個提供統一總體認證的項目,不只創建自身與用戶之間的關係,也是其餘服務之間進行資源訪問等操做的紐帶。

​ Keystone內部結構圖以下所示:

OpenStack入門之核心組件梳理(1)——Keystone篇

​ 該結構很是簡單,上面是Keystone的服務和管理的API,下面是對應的各個後端服務應用,例如:令牌、編目、策略以及身份等方面的服務集合。說到這裏,須要補充一點,Keystone能夠集成廣泛使用的目錄服務,如LDAP(輕量級目錄訪問協議)。

4、Keystone的工做原理

​ 經過以上內容,想必對Keystone概念主要做用、組成部分以及結構模型有了本身的理解了。那麼下面來理一下Keystone是如何進行工做的,或者說它的響應的流程是怎樣的。

​ 下面經過一個用戶建立實例的過程當中對於Keystone認證過程,結合示意圖來介紹整個Keystone服務的響應流程。在閱讀整個過程的同時體會理解上面的9個組成部分的做用,進行本身的思考加深理解。

OpenStack入門之核心組件梳理(1)——Keystone篇

​ 下面以該建立實例虛擬機爲例描述Keystone與其餘服務之間的響應流程:

一次創建:

一、用戶首先向Keystone發送如用戶密碼之類的身份信息(用戶名和密碼或者用戶名和API key),Keystone驗證成功後向用戶配發Token;

三次請求,三次確認:

二、以後用戶向Nova發出帶有Token的實例建立請求,Nova接收到請求後向Keystone驗證Token的有效性,肯定該Token是否有效;

三、上述的Token被證明有效後,由Nova向Glance服務發出帶有Token的鏡像傳輸請求,Glance一樣要到Keystone去驗證Token的有效性;

四、上述的Token被證明有效後Glance向Nova正式提供鏡像目錄查詢和傳遞服務,Nova獲取鏡像後繼續向Neutron發送帶有Token的網絡建立服務,再由Neutron向Keystone求證Token的有效性;

五、Token被證明有效後,Neutron容許Nova使用網絡服務;

一個最終結果:

六、Nova啓動虛擬機成功,同時向用戶返回建立實例成功的通知。

5、Keystone的理論總結

​ 本文旨在介紹Keystone的做用和工做原理,重點在於Keystone提供的認證服務,包含的9個主要部份內容,腦海裏有其與其餘組件以及用戶之間的關係,最爲重要的就是Keystone是如何工做的,要對整個響應的工做流程很是熟悉理解。

​ 筆者能力有限,若是有什麼疏漏之處還望指出,謝謝閱讀!

相關文章
相關標籤/搜索