1. 程式人生 > >OpenStack Keystone (1) : 基本概念及其組織結構關係與案例分析

OpenStack Keystone (1) : 基本概念及其組織結構關係與案例分析

Keystone是OpenStack中的身份驗證服務,同時它也同Nova, Cinder, Glance,Neutron一樣是OpenStack的核心元件。Keystone為其他元件提供統一的身份驗證以及服務授權。Keystone的API目前有v2.0和v3.0兩個版本,官方目前推薦使用v3.0的版本。由於Keystone中涉及很多的概念,例如 domain,project,user等等,本文旨在介紹相關的概念及其之間在組織結構上的關係。

域(Domains):域是Keystone中的一個全域性概念,域的名字在Keystone中必須是全域性唯一的,Keystone提供一個名為‘Default’的預設域。域可以包括多個Projects(專案/租戶),Users(使用者),Groups(組),Roles(角色)。

Projects(專案/租戶):Keystone在v3.0的版本開始將v2.0中的Tenant(租戶)改為了Project(專案),我認為這更符合我們在實際使用中的認知。專案必須屬於某個域,所以在域內的專案名稱必須是唯一的,但是不同的域內可以有相同名稱的專案名。如果專案沒有分配指定域,那麼會自動分配到預設域中。專案是資源的集合,也就是說可以對專案所能使用的資源進行限制,包括vCPU,Memory,vDisk,Floating IP等等。

使用者(Users):即最終Keystone的使用者,可以是人,服務或者系統,使用者必須屬於某個特定的域。

組(Groups):組是使用者的集合,可以把使用者歸類到某個組,這樣就可以方便的對整個組進行角色分配。同樣的組必須屬於特定的域。

角色(Roles):角色也是Keystone中的一個全域性的概念。角色可以分配給使用者以及組,不同角色的使用者擁有不同的API訪問許可權。

下圖表明瞭這些概念的結構關係:


圖中可以看到角色的分配可以基於單個使用者,也可以直接分配給一個組。同時我們也可以把某個使用者組分配給特定的專案。

現在公司開發部門的某個組要開發AnyRender這款產品,需要在公司的私有云建立相應的專案來進行軟體的開發,測試,釋出等等流程。

這裡我們可以在Default域中建立三個projects, 分別是anyrender-testing, anyrender-staging, anyrender-production.

$ openstack project create --domain default --description "AnyRender Testing Project" anyrender-testing
$ openstack project create --domain default --description "AnyRender Staging Project" anyrender-staging
$ openstack project create --domain default --description "AnyRender Production Project" anyrender-production
$ openstack project list
+----------------------------------+------------------------------------------------------------------+
| ID                               | Name                                                             |
+----------------------------------+------------------------------------------------------------------+
| 0b1781d22cc14d859d111d93ebadfb47 | admin                                                            |
| 31bc0459173345878993337f7545234f | anyrender-production                                             |
| 5025515db0af42729e7591ff50c1c8b3 | demo                                                             |
| 6b6a1344e56741dabec2714e935bd179 | anyrender-staging                                                |
| 97d3a4f8293b48b1bb219806ce1b3a14 | service                                                          |
| 994d02a6f492412289f496c1e08af9b4 | anyrender-testing                                                |
+----------------------------------+------------------------------------------------------------------+
$ 

接下來我們可以建立使用者:

$ openstack user create --password-prompt jinrui
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 91cde2f4ab944021991152cfed807c7b |
| name                | jinrui                           |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

雖然建立了使用者jinrui,但是因為沒有指定project,仍然無法通過Dashboard訪問OpenStack或者通過Keystone認證。我們需要建立role分配給此使用者並且新增到project中:

$ openstack role create engineer
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | None                             |
| id        | 1d2998c4c6a743a32d8ad2acf556eaa1 |
| name      | engineer                         |
+-----------+----------------------------------+
$ openstack role add --project anyrender-testing --user jinrui engineer
$ 

我們可以通過以下命令檢視結果:

$ openstack role assignment list --names --user jinrui
+----------+----------------+-------+---------------------------+--------+-----------+
| Role     | User           | Group | Project                   | Domain | Inherited |
+----------+----------------+-------+---------------------------+--------+-----------+
| engineer | [email protected] |       | [email protected] |        | False     |
+----------+----------------+-------+---------------------------+--------+-----------+
$ 

同時我們可以把jinrui新增到其他project中,例如anyrender-staging,並且在另外的project中jinrui可以是其他的角色例如developer。

一個使用者在不同的project中可以是不同的角色,同時一個使用者在一個project中也可以有多種角色。

參考引用

相關推薦

OpenStack Keystone (1) : 基本概念及其組織結構關係案例分析

Keystone是OpenStack中的身份驗證服務,同時它也同Nova, Cinder, Glance,Neutron一樣是OpenStack的核心元件。Keystone為其他元件提供統一的身份驗證以及服務授權。Keystone的API目前有v2.0和v3.0兩個版本,官方

資料結構(C語言版)讀書筆記1(基本概念和術語)

資料: 所有輸入到計算機中,並被計算機程式處理的符號的總稱。 資料元素: 資料的基本單位,在計算機程式中經常被當做一個整體進行考慮和處理 資料物件: 性質相同的資料元素的集合,是資料的一個子集。 資料結構: 相互之間存在一種或多種特定關係的資料元素的集合。這種資料元素之間

基本資料結構――堆的基本概念及其操作

     轉載自:https://www.cnblogs.com/JVxie/p/4859889.html,同時感謝大佬的分析       在我剛聽到堆這個名詞的時候,我認為它是一堆東西的集合       但其實吧它是利用

基本資料結構——堆(Heap)的基本概念及其操作

1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #define maxn 100010 //這部分可以自己定義堆記憶

javascript跳躍式前進(1) - 基本概念

else 依次 次循環 下一步 spl 減少 title bre args 前言 javascript 是弱類型語言,比較接近python和perl這類,不如java和c那樣嚴格.所以寫慣了強類型語言的小夥伴看到有些另類的寫法也相當正常; 有些東東不

TCP/IP詳解學習筆記(1)-基本概念【轉】

網絡號 最大的 net 容易 學習 ip地址 其他 title 編寫 轉自:http://blog.csdn.net/goodboy1881/article/details/665041 為什麽會有TCP/IP協議 在世界上各地,各種各樣的電腦運行著各自不同的操作系統為大家

Spring的基本概念及其核心

等等 template 應用 ejb 依賴註入 org 維護 基本 消息 一、Spring是什麽 Spring是一種多層的J2EE應用程序框架,其核心就是提供一種新的機制管理業務對象及其依賴關系。 二、為什麽要使用Spring 1. 降低組件

推薦系統的基本概念及其在各個領域的應用

目的 body area 聲音 文章 幫助 們的 當前 電影 初學推薦系統相關內容,寫寫自己讀《推薦系統實踐》的讀書筆記。 推薦系統: 對用戶來說推薦系統幫助用戶發現自己想要的商品,對於商品來說找到對其感興趣的用戶,前者例如電影,歌曲的推薦,後者例如廣告推送。 產生推薦系統

【C++復習】1.1基本概念

using arr 消息 開始 函數返回 執行函數 c++程序 不能 定義 1、C++對大小寫敏感; 2、查看運行結果 cin.get(); cin.get(); 使用兩行代碼使程序運行後暫停,而不是立即結束,出現閃退效果。 第一條cin.get()語句是在輸入並按En

Structured Streaming教程(1) —— 基本概念使用

repr 開放 let 結果 可靠 技術分享 lines ole sock 近年來,大數據的計算引擎越來越受到關註,spark作為最受歡迎的大數據計算框架,也在不斷的學習和完善中。在Spark2.x中,新開放了一個基於DataFrame的無下限的流式處理組件——Struc

無線通信學習筆記1---基本概念

設備 cap 比特流 獨立 擴大 多條 嵌入 解調 不同的 該篇將開始學習無線通信時遇到的一些基本概念羅列出來,避免混淆和忘記,算是為後續進階學習打基礎吧! 1、信道:信道可分為有線信道和無線信道兩大類。前者包括明線、對稱電纜、同軸電纜和光纜,後者包括地波傳播、短波電離層發

例項詳解js閉包(一)閉包基本概念及其作用推導

  在學習前端的過程中,不可避免的要學習到js閉包這個知識點,很多朋友感到對閉包很難理解,也不清楚它有什麼用。本文就詳細介紹一下閉包,並通過幾個小例子來說明下閉包的用處。  一、閉包的概念       閉包的英文單詞是Closure,我先給閉包可

[仁潤雲技術團隊]併發程式設計-(1)基本概念

程序:一個正在執行程式的例項,包括程式計數器,暫存器以及變數的當前值。在作業系統中,每一個程序都有其地址空間和控制執行緒。 地址空間:要保證多個應用程式同時處於記憶體中並且不互相影響,則需要解決兩個問題:保護和重定位。目前的辦法是創造一個新的記憶體抽象:地址空間。就像程序的概念創造了一類抽象的CPU以

JAVA基礎(61)---資料結構基本概念和邏輯結構以及儲存結構

資料結構                    本章的目的:對資料結構有一個大概的瞭解和認知 資料:能夠儲存

區塊鏈開發(1)基本概念

最近一直沒更新部落格了,一方面是在技術轉型,遊戲行業的不景氣,不再將重心放在遊戲開發了,一方面也是在積累與學習中(懶惰),缺乏動力。希望通過這次能堅持下去:)。言歸正傳,來記錄和總結下自己在區塊鏈開發方面的經驗。 區塊鏈的發展由第一代比特幣區塊鏈,到第二代以太坊智慧合約的區塊鏈技術,再到現在第三代基於石墨烯

【雙目測距】1 基本概念及術語

相機的標定 在影象測量過程以及機器視覺應用中, 為確定空間的物體表面上某個點的三維幾何位置與其在影象中對應點之間的相互關係,必須建立相機成像的幾何模型。這些幾何模型引數就是相機引數。在大多數條件下,這些引數必須通過實驗與計算才能獲得,求解這些引數的過程稱為“相機標定”(或攝像機標定)。

Atitit lucence 使用總結 目錄 1. 基本概念 1 1.1. Index:索引庫,文件的集合組成索引。 1 2. 建立索引 2 2.1. Api查詢 2 2.2. Dsl查詢 3

Atitit lucence 使用總結   目錄 1. 基本概念 1 1.1.   Index:索引庫,文件的集合組成索引。 1 2. 建立索引 2 2.1. Api查詢 2 2.2. Dsl查詢 3     Merge

二叉樹系列(1)——基本概念和遍歷

二叉樹是一種非常重要的資料結構,其在查詢、排序等領域有著非常重要的應用。本文簡單介紹一些關於二叉樹的基本概念,並給出幾種二叉樹的基本遍歷方法。全文程式碼為Java語言實現。 二叉樹的基本概念 1. 二叉樹的定義 定義: 二叉樹是n(n >= 0)個節

AVL樹、B樹、B+樹(1-基本概念

AVL樹(平衡二叉樹) 定義: (1) 左子樹與右子樹的高度差只能是-1,0,1。 (2) 樹中的每個左子樹和右子樹都是AVL樹 B樹(多路平衡查詢樹): B樹中所有結點的孩子結點數的最大值稱為B樹的階,通常用m表示。一棵m階B樹或者空樹,或為滿足如下

機器學習筆記1-基本概念

機器學習筆記1-基本概念 機器學習主要包括監督學習、非監督學習、半監督學習和強化學習等。實現方法包括模型、策略、演算法三個要素。 模型。在監督學習中,模型就是所要學習的條件概率分佈或決策函式。 策略。策略考慮的是按照什麼樣的準則學習或選擇最優的模型,即選擇損失函式。為了