openstack keystone整體架構與功能

關於keystone模塊,我將從整體架構與功能,用戶信息管理,認證服務3個模塊用3篇文章進行分析。


1. keystone的基本功能

keystone作爲openstack的Identity Service,提供了用戶信息管理和完成各個模塊認證服務。

           用戶信息管理:user/tenant基本信息,tenant管理

           認證服務:登錄認證,各個組件API的權限控制


2.keystone的架構

既然keystone爲各個模塊提供認證服務,所以各個模塊與keystone都有所交互。其中登錄認證體現在用戶訪問各個組件的API時,調用了WSGI框架的authtoken filter,該filter最調用keystoneclient ,最終通過keystone驗證token,完成對用戶的登錄認證。如果認證失敗,用戶將不能訪問該API。

以nova爲例,authtoken filter在/etc/paste.ini目錄中(如果不熟悉WSGI框架,暫且忽略之)



        keystone在openstack的位置如下:

   

3.  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 裏面的概念很多,其中最重要的是 User 和 Tenant 。其它的概念是由於安全和權限等因素引入。引用http://www.openstack.org.cn/bbs/forum.php?mod=viewthread&tid=534&extra=page%3D1該文的理解,通俗的說:

  如果把賓館比作爲Tenant,住宿的人就是User ,而賓館就是 Tenant,賓館可以提供多種諸如住宿、娛樂、飲食等多種服務(Service),具體來說,住宿是一種具體的服務(Endpoint)。就住宿而言,有普通間和總統套房,如果你的VIP等級(Role)高,你可以享受到豪華的總統套房。入住前,我們需要拿身份證開房(Credential),認證身份證不是冒牌貨後(Authenticaiton),會給你一個房卡(Token),然後你拿着房卡,就可以進入房間和享受各種服務。

User 住賓館的人
Credentials 身份證
Authentication 認證你的身份證
Token 房卡
Tenant 賓館
Service 賓館可以提供的服務類別,比如,飲食類,娛樂類
Endpoint 具體的一種服務,比如吃燒烤,打羽毛球
Role VIP 等級,VIP越高,享有越高的權限

4.  keystone 的訪問流程

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

         1)用戶Alice通過自己的戶名和密碼向keystone申請token,keystone認證用戶名和密碼後,返回token1

          2)Alice通過token1發送keystone查詢他所擁有的租戶,keystone驗證token1成功後,返回Alice的所有Tenant

         3)  Alice選擇一個租戶,通過用戶名和密碼申請token,keystone認證用戶名、密碼、tenant後,返回token2。(其實1、2步僅僅是爲了查詢tenant,如果已經知道tenant,可以忽略1、2步)

         4)Alice通過token2發送創建server的請求,keystone驗證token2(包括該token是否有效,是否有權限創建虛擬機等)成功後,然後再把請求下發到nova,最終創建虛擬機


參考資料:

1.《雲計算與openstack》

2. http://www.openstack.org.cn/bbs/forum.php?mod=viewthread&tid=534&extra=page%3D1


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