Keystone, Openstack之魂

Openstack,不做過多解釋,讓我們直入主題---Keystone。Openstack是一個SOA的架構,理論上各個子項目獨立提供相關的服務,互不依賴。例如Nova提供計算服務,Swift提供對象存儲服務,Glance提供鏡像服務等。但是實際上(至少從Openstack目前開源實現上來看),所有組件都依賴於Keystone提供3A(Account, Authentication, Authorization)服務。除了3A之外,Keystone還對外提供服務目錄(Service Catalog)服務,類似於UDDI服務的概念,用戶(無論是Dashboard, API Client)都需要訪問Keystone獲取服務列表,以及每個服務的地址(Openstack中稱爲Endpoint)。所以,學習Openstack第一個必須搞定的組件必然是Keystone。

  首先我們先看一下Keystone的幾個基本概念,灰常重要!!!

  User: 直譯過來就是用戶,如果意譯的話就是馬甲 :) 也就是一個人的賬號,當然一個人可以有多個馬甲,你懂得。

  Crenditial: 用來證明用戶身份的證據,大白話就是“信物”,這是一個邏輯概念。具體可以是密碼,駕照、身份證等。

  Authentication: 鑑權,也即對用戶身份鑑別的一個過程。

  Token: 令牌。對用戶鑑權完畢之後,Keystone會爲用戶頒發一個令牌,這樣用戶在請求其他服務的時候,只需要亮出自己的令牌即可,而不需要發送自己的密鑰。當然以防仿冒令牌,令牌是有時限的。

  Service:服務。之前提到過,Keystone提供了系統能夠提供的服務目錄,例如Nova, Glance, Swift等。

  Endpoint:直譯爲端點,其實指的是訪問服務的地址。如果細分的話,又可以進一步分爲對外提供服務的地址,管理地址等。

  Role: 權限。這就是3A中的Authorization,也即賦予該用戶的權限。我們知道Openstack提供的是一個多租戶環境,在Openstack中租戶對應到項目(Project)。一個用戶可以同時屬於多個不同的項目,當然在不同的項目中可以充當不同的角色,也即擁有不同的權限。

 

  在瞭解以上概念之後,從很高很高的高度來看一下Keystone的流程:

  Keystone, <wbr>Openstack之魂

  關鍵的兩點:1) User從Keystone獲取令牌以及服務列表;2) User訪問服務時,亮出自己的令牌。相關的服務向Keystone求證令牌的合法性。

 

  大致瞭解了這個流程之後,我們再來理解keystone的配置就不難了:

  1) 從用戶的角度來看,它歸屬於一個或多個Project,並且在每個項目中充當一個角色。所以我們需要創建Project,創建User,創建Role,並將User和Project、Role關聯起來;

  2) Keystone本質是提供Identity服務的,所以它的實現或者提供的機制也是基於用戶來設計的。爲了提供服務目錄,配置Keystone的時候創建了一個特殊的Service Project,爲每個服務創建對應的用戶(Nova, Swift, Quantum...),並且都歸屬於Service Project。然後配置、設置相應的Endpoint。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章