中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

openstack云計算keystone組件工作流程及服務關系是什么

發布時間:2022-04-20 15:17:06 來源:億速云 閱讀:274 作者:iii 欄目:開發技術

這篇文章主要介紹“openstack云計算keystone組件工作流程及服務關系是什么”,在日常操作中,相信很多人在openstack云計算keystone組件工作流程及服務關系是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”openstack云計算keystone組件工作流程及服務關系是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

    一 什么是keystone

    keystone是OpenStack的身份服務,暫且可以理解為一個'與權限有關'的組件。

    二 為何要有keystone

    Keystone項目的主要目的是為訪問openstack的各個組件(nova,cinder,glance...)提供一個統一的驗證方式,具體的:

    openstack是由眾多組件構成的一套系統,該系統的功能是對外提供服務,因而我們可以將其定義為一個‘龐大的軟件’,沒有軟件不考慮安全因素,Keystone對于通常的應用場景所不同的是他要解決分布式環境下的統一認證。

    三 keystone的功能

    openstack是一個SOA架構,理論上各子項目獨立提供相關服務,互不依賴,且是分布式的。如nova提供計算服務,glance提供鏡像服務等。

    實際上所有的組件都依賴keystone(單點的),它集成了三個功能:

    (1)管理身份驗證(managing authentication):驗證用戶身份

      (2) 授權(authorization):基于角色role的權限管理

    (3)服務目錄(catalog of services):提服務目錄(ServiceCatalog:包括service和endpoint)服務,類似于UDDI服務的概念,用戶(無論是Dashboard, APIClient)都需要訪問Keystone獲取服務列表,以及每個服務的地址(Openstack中稱為Endpoint)

    四 keystone概念詳解

    第一部分

    User:使用Openstack組件的客戶端可以是人、服務、系統,任何的客戶端來訪問openstack組件,都需要有一個用戶名。

    Credentials:是用于確認用戶身份的憑證,說白了就是‘信物’,具體可以是:

    • 用戶名和密碼

    • 用戶名和API key

    • 一個 Keystone 分配的身份token

    Authentication

    • 是驗證用戶身份的過程。Keystone 服務通過檢查用戶的 Credential 來確定用戶的身份。

    • 最開始,使用用戶名/密碼或者用戶名/API key作為credential。當用戶的credential被驗證后,Kestone 會給用戶分配一個 authentication token 供該用戶后續的請求使用。 

    • Keystone中通過Policy(訪問規則)來做到基于用戶角色(Role)的訪問控制。

    Token

    • 是一個數字字符串,訪問資源時需要"亮出"你的令牌。在keystone中主要是引入令牌機制來保護用戶對于資源的訪問,同時引入PKI(公鑰基礎實施)對令牌加以保護。

    • Token包含了在指定范圍和有效時間內可以被訪問的資源。EG. 在Nova中一個tenant可以是一些虛擬機,在Swift和Glance中一個tenant可以是一些鏡像存儲,在Network中一個tenant可以是一些網絡資源。

    Role

    • 本質就是一堆ACL的集合,用于劃分權限

    • 可以通過給User指定Role,使User獲得Role對應的操作權限。

    • Keystone返回給User的Token包含了Role列表,被訪問的Services會判斷訪問它的User和User提供的Token中所包含的Role,及每個role訪問資源或者進行操作的權限。

    • 系統默認使用管理Role admin和成員Role user(過去的普通用戶角色是:_member_) 。

    • user驗證時必須帶有Project(Tenant)

    Policy

    • 對于Keystone service來說,Policy就是一個JSON文件,默認是/etc/keystone/policy.json。通過配置這個文件,Keystone實現了對User基于Role的權限管理。

    • OpenStack對User的驗證除了OpenStack的身份驗證以外,還需要鑒別User對某個Service是否有訪問權限。Policy機制就是用來控制User對Project(Tenant)中資源的操作權限。

    Project(Tenant)

    • 是一個人、或服務所擁有的資源集合。不同的Project之間資源是隔離的,資源可以設置配額。

    • 在一個Project(Tenant)中可以包含多個User,每一個User都會根據權限的劃分來使用Project(Tenant)中的資源。比如通過Nova創建虛擬機時要指定到某個Project中,在Cinder創建卷也要指定到某個Project中。

    • User訪問Project的資源前,必須要與該Project關聯,并且指定User在Project下的Role,一個assignment(關聯)即:Project-User-Role

    Service:即Openstack中運行的各個組件服務。

    Endpoint

    是一個可以通過網絡來訪問和定位某個Openstack service的地址,通常是一個URL

    不同的region有不同的endpoint(我們可以通過endpoint的region屬性去定義多個region)。

    當Nova需要訪問Glance服務去獲取image 時,Nova通過訪問Keystone拿到Glance的endpoint,然后通過訪問該endpoint去獲取Glance服務。

    Endpoint 分為三類:

    • admin url –> 給admin用戶使用,Port:35357

    • internal url –> OpenStack內部服務使用來跟別的服務通信,Port:5000

    • public url –> 互聯網用戶可以訪問的地址,Port:5000

    Catalog

    用戶和服務可以使用使用keystone管理的catalog,定位到其他的服務,catalog一個openstack部署的相關服務的集合,每個服務都有一個或者多個endpoint(即可以訪問的url地址),即catalog=services+endpoint。每個endpoint可以分為三種類型:

    admin,internal,public,在生產環境中,不同endpoint類型位于不同的網絡來為不同的用戶使用(提高安全性),比如:

    public API:對整個互聯網可見,這樣客戶就可以方便的管理自己的云了。

    admin API:應該嚴格限定只有管理云基礎設施的組織內的運營商,才能使用該API

    internel API:應該被限定只有那些安裝有OpenStack服務的主機,才能使用該API

    Service與Endpoint關系介紹:

    • 在openstack中,每一個service都有三種endpoint. Admin, public, internal(創建完service后需要為其創建API EndPoint. )

    • Admin是用作管理用途的,如它能夠修改user/tenant(project)。

    • public 是讓客戶調用的,比如可以部署在外網上讓客戶可以管理自己的云。

    • internal是openstack內部調用的。

    • 三種endpoints 在網絡上開放的權限一般也不同。Admin通常只能對內網開放,public通常可以對外網開放,internal通常只能對安裝有openstack對服務的機器開放。

    endpoint舉例

    我們使用keystone為服務5d533c68-d234-11e6-a0d7-0088653ea1ec定制endpoint:

    $ keystone endpoint-create \
    --region RegionOne \
    --service-id=5d533c68-d234-11e6-a0d7-0088653ea1ec \
    --publicurl='https://public-ip:8776/v1/%(tenant_id)s' \
    --internalurl='https://management-ip:8776/v1/%(tenant_id)s' \
    --adminurl='https://management-ip:8776/v1/%(tenant_id)s'

    然后你可以配置 OpenStack service 使用另一個 service 的 endpoint 的 internalurl 去訪問另一個資源。

    Regions

    openstack支持多個可擴展的regions,OpenStack的支持可擴展的多個區域。為簡單起見,一般使用管理網絡ip地址作為所有endpoint類型(三種api)的ip,且所有的endpoint類型(三種api)都使用一個區域,即regionone區。

    每個你部署的openstack服務都需要綁定endpoint(存儲在keystone中)來提供服一個服務的入口,因而我們第一需要部署的組件就是keystone。

    V3新增的概念:
    • Tenant 重命名為 Project

    • 添加了 Domain 的概念

    • 添加了 Group 的概念

    第二部分

    keystone管理和保存了user信息,管理user相關的tenant,role,group和domain等;用戶credential的存放,驗證,token管理,下圖是各部分關系

    openstack云計算keystone組件工作流程及服務關系是什么

    第三部分

    User: has account credentials, is associated with one or more projects or domains

    Group: a collection of users, is associated with one or more projects or domains

    Project: unit of ownership in OpenStack, contains one or more users

    Domain: unit of ownership in OpenStack, contains users, groups and projects

    Role: a first-class piece of metadata associated with many user-project pairs.

    Token: identifying credential associated with a user or user and project

    Extras: bucket of key-value metadata associated with a user-project pair.

    Rule: describes a set of requirements for performing an action.

    openstack云計算keystone組件工作流程及服務關系是什么

    注意:user2,user3,user4的關系同user1一樣,也可以屬于一個或者多個group,此處為了圖示簡潔,省去了它們的連線

    openstack云計算keystone組件工作流程及服務關系是什么

    五 keystone內包含的組件

    keystone包含三類組件:

    1 Server

    使用RESTful接口(三種api)提供認證和授權服務的集中式server

    2 Drivers

    指的是被集成到server內的驅動或者服務后端,它們被用來在openstack組件之外的庫中訪問身份信息(言外之意:mysql并不屬于openstack的組件/服務),并可能已經存在于openstack部署的架構中(比如, SQL databases or LDAP servers).

    3 Modules

    中間件運行在正在使用認證服務的openstack組件的地址空間,這些模塊(中間件)攔截服務請求,提取用戶的credentials,并且把它們發送給server去認證授權,在openstack中間件與openstack組件直接的整合操作使用Python Web Server Gateway Interface,即wsgi。

    六 keystone與openstack其他服務的關系 

    openstack云計算keystone組件工作流程及服務關系是什么

    七 keystone與其他組件協同工作流程

    keystone是用戶與云平臺交互的第一個服務,一旦認證通過,用戶就會使用自己的身份來訪問其他的opnestack服務,同樣,被訪問的openstack服務會去跟keystone再次確認用戶(不能只能用戶的片面之詞)并且通過keystone可以發現其他服務(catalog的原因),keystone的還可以整合其他的用戶管理系統,比如LDAP

    openstack云計算keystone組件工作流程及服務關系是什么

    八 keystone工作流程詳解

    (1) User從Keystone獲取令牌以及服務列表;

    (2) User訪問服務時,亮出自己的令牌。

    (3)相關的服務向Keystone求證令牌的合法性。

    openstack云計算keystone組件工作流程及服務關系是什么

    用戶alice登錄keystone系統(password或者token的方式),獲取一個臨時的token和catalog服務目錄(v3版本登錄時,如果沒有指定scope,project或者domain,獲取的臨時token沒有任何權限,不能查詢project或者catalog)。

    alice通過臨時token獲取自己的所有的project列表。

    alice選定一個project,然后指定project重新登錄,獲取一個正式的token,同時獲得服務列表的endpoint,用戶選定一個endpoint,在HTTP消息頭中攜帶token,然后發送請求(如果用戶知道project name或者project id可以直接第3步登錄)。

    消息到達endpoint之后,由服務端(nova)的keystone中間件(pipeline中的filter:authtoken)向keystone發送一個驗證token的請求。(token類型:uuid需要在keystone驗證token,pki類型的token本身是包含用戶詳細信息的加密串,可以在服務端完成驗證)

    keystone驗證token成功之后,將token對應用戶的詳細信息,例如:role,username,userid等,返回給服務端(nova)。

    服務端(nova)完成請求,例如:創建虛擬機。

    服務端返回請求結果給alice。

    到此,關于“openstack云計算keystone組件工作流程及服務關系是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    文山县| 穆棱市| 天全县| 抚州市| 宣化县| 巴彦县| 东乡族自治县| 元阳县| 军事| 布尔津县| SHOW| 二连浩特市| 黎平县| 醴陵市| 涿鹿县| 乐东| 大余县| 融水| 乐陵市| 永济市| 墨竹工卡县| 谢通门县| 托克逊县| 东明县| 中超| 新疆| 云南省| 桐庐县| 浏阳市| 苍南县| 寿光市| 鹤峰县| 红安县| 清远市| 巫山县| 南丹县| 吉隆县| 韶关市| 宜城市| 华安县| 天祝|