項目四 OpenStack身份管理

任務一? 理解身份服務

1.1??Keystone的基本概念

? 認證 Authentication —— 確認用戶身份的過程 ,又稱身份驗證
? 憑證 Credentials —— 稱憑據,是用于 確認用戶身份的數據
? 令牌 Token —— 訪問 OpenStack API 和各種資源需要提供的一種 特殊的文本字符串。
? 用戶 User —— 使用OpenStack云服務的個人、系統或服務的賬戶名稱。
? 項目 Project —— 分配 和隔離資源或身份對象的一個容器,也是一個權限組織形式 。域 Domain —— 項目 和用戶的集合,目的是為身份實體定義管理界限
? Group —— 表示 域所擁有的用戶集合的容器。
? 角色 Role —— 用于定義用戶權利和權限的集合。
? 端點 Endpoint —— OpenStack 組件能夠訪問的網絡地址,通常是一個 URL
? 服務 Service —— 提供 一個或多個端點,供用戶通過這些端點訪問資源和執行操作。
? 分區 Region —— OpenStack 部署的通用分區

1.2??Keystone的主要功能

? 身份 認證( Authentication —— 令牌的發放和校驗。
? 用戶 授權( Authorization —— 授予用戶在一個服務中所擁有的權限。
? 用戶 管理( Account —— 管理用戶賬戶。
? 服務 目錄( Service Catalog —— 為每個OpenStack服務對外提供一個可用的服務目錄和相應的API端點。

1.3???Keystone的管理層次結構

1.4??Keystone的認證流程

1.5?查看當前的Identity API版本

1.6??通過API請求認證令牌

? Keystone 默認支持的認證方法包括 external password token oauth1 mapped application_credential
? password token 分別表示 密碼認證和令牌認證 ,是常用的兩種認證方法。
? 密碼認證要求驗證兩條信息:資源( Resource )信息和身份( Identity
? 資源 由作用域( Scope )來確定,指定用戶要訪問的資源(域或項目)
? 作用域 決定獲取令牌的有效 范圍。對于 用戶、域和項目來說,作用域常常是指實體的所屬 域。

1.7??通過API請求認證令牌

? 密碼認證方式通過 API 獲取令牌
? 請求 一個 admin 項目作用域的令牌。

[root@node-a ~]# curl -i?? -H "Content-Type: application/json"?? -d '

{ "auth": {

??? "identity": {????????? #指定身份

????? "methods": ["password"],

????? "password": {????? #密碼認證

??????? "user": {

????????? "name": "admin",

????????? "domain": { "id": "default" },

????????? "password": "ABC123456"

??????? }

????? }

??? },

??? "scope": {???????????????????? #指定作用域

????? "project": {????????????????? #作用域的項目

??????? "name": "admin",

??????? "domain": { "id": "default" }

????? }

??? }

? }

}'?? "http://localhost:5000/v3/auth/tokens" ;

? 令牌認證方式請求另一個認證令牌

(1)導出環境變量OS_TOKEN,將其值設置為上述操作獲取的令牌ID

[root@node-a ~]# export OS_TOKEN="gAAAAABfUY7KPLJNvQqZp……64_R_a0IqxYw"

(2)令牌認證方式請求一個認證令牌。

[root@node-a ~]# curl -i \

? -H "Content-Type: application/json" \

? -d '

{ "auth": {

??? "identity": {

????? "methods": ["token"],??????????? #令牌認證

????? "token": {

??????? "id": "'$OS_TOKEN'"

????? }

??? }

? }

}' \

? "http://localhost:5000/v3/auth/tokens"

1.8??使用認證令牌通過API進行身份管理操作

? 獲取認證令牌后 ,根據 該令牌的權限進行身份管理操作
? 獲取 域列表。

curl -s \

? -H "X-Auth-Token: $OS_TOKEN" \

? "http://localhost:5000/v3/domains" | python -mjson.tool

? 獲取 項目列表。

curl -s \

?-H "X-Auth-Token: $OS_TOKEN" \

?"http://localhost:5000/v3/projects" | python -mjson.tool

? 創建 一個用戶。

curl -s \

?-H "X-Auth-Token: $OS_TOKEN" \

?-H "Content-Type: application/json" \

?-d '{"user": {"name": "newuser", "password": "changeme"}}' \

?"http://localhost:5000/v3/users" | python -mjson.tool

任務二? 管理項目、用戶和角色

2.1??進一步了解項目、用戶和角色

? 一個用戶必須至少屬于一個項目,也可以屬于多個項目。
?至少添加一個項目,再添加用戶。
? 在刪除用戶賬戶之前,必須從該用戶的主項目中刪除該用戶賬戶。
? OpenStack 中可以針對項目(而不是用戶)設置配額

2.2??進一步了解項目、用戶和角色

? 將用戶分配給多個項目,需要定義一個角色
? 通常將角色 分配給“用戶 項目”對 某個項目的指定用戶分配角色
?Keystone使用基于角色的訪問控制來保護其API。
? admin 角色具有最高權限
? 擁有 reader 角色的系統用戶可以列出所部署的所有 項目。
? 擁有 reader 角色的某個域用戶只能查看該域范圍的項目
? member 角色更適合于其他服務
? 創建 的所有角色都必須映射到每一個 Openstack 服務特定的 policy.json 配置文件中,默認的策略會將大多數服務的管理權限授予 admin 角色

2.3??命令行的身份管理用法

? openstack 命令的身份管理基本用法。

1項目管理

? 列出 所有項目的 ID 和名稱,包括禁用的項目。

openstack project list

? 查看項目詳細 信息。

openstack project show 項目名稱或ID

? 創建一個項目的 命令。

openstack project create --description 項目描述信息 項目名稱 --domain 域名

? 修改 項目 名稱。

openstack project set 項目名稱或ID --name 新的項目名稱

? 臨時禁用某 項目。

openstack project set 項目名稱或ID --disable

? 激活已禁用 項目。

openstack project set 項目名稱或ID --enable

? 刪除 項目。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?openstack project delete 項目名稱或ID

2)用戶管理

? 列出用戶 列表。

openstack user list

? 創建 用戶。

openstack user create --project 項目 --password 密碼 用戶名

? 改變 用戶賬戶的名稱和郵件 地址。

openstack user set 用戶名或ID --name 新的用戶名 --email 郵件地址

? 臨時禁用用戶賬戶(不能登錄 )。

openstack user set 用戶名或ID --disable

? 激活已禁用用戶 賬戶。

openstack user set 用戶名或ID --enable

? 刪除 用戶。

openstack user delete 用戶名或ID

3)角色管理

? 列出 可用的角色。

openstack role list

? 創建一個新的 角色。

openstack role create 角色名

? 查看角色詳細 信息。

openstack role show 角色名或ID

? 角色分配給“用戶 項目” 對。

openstack role add --user? 用戶名或ID? --project? 項目名或ID? 角色名或ID

? 查看某項目某用戶的角色分配 情況。

openstack role assignment list --user 用戶名? --project 項目名 --names

? 刪除分配給“用戶 項目”對的 角色。

openstack role remove --user 用戶名或ID --project 用戶名或ID? 角色名或ID

2.3??專用的服務用戶

? 其他 OpenStack 服務要通過 Keystone 進行集中統一認證,必須進行注冊,即在 Keystone 中創建相應的項目、用戶和角色并進行關聯,然后創建服務目錄
? Keystone 的服務目錄是每個服務的可訪問端點列表
? 所有 OpenStack 服務共用一個項目(通常命名為“ service” 或“ services” ),所用的角色都是 admin ,而服務之間的通信也要使用 admin 角色。

2.4??使用命令行進行身份管理操作

1)加載demo用戶的客戶端環境腳本。

[root@node-a ~]# source keystonerc_demo

2)查看當前的項目列表,該用戶可以訪問兩個項目。

[root@node-a ~(keystone_demo)]# openstack project list

3)查看用戶列表,可以發現demo用戶沒有被授權此項操作。

[root@node-a ~(keystone_demo)]# openstack user list

4)加載admin用戶的客戶端環境腳本。

[root@node-a ~(keystone_demo)]# source keystonerc_admin

5)查看當前的項目列表,云管理員可以查看所有的項目。

[root@node-a ~(keystone_admin)]# openstack project list

6)查看云平臺上所有的角色分配。

[root@node-a ~(keystone_admin)]# openstack role assignment list --name

7)進一步篩選出系統管理員的角色分配。

[root@node-a ~(keystone_admin)]# openstack role assignment list --names --system all

任務三? 通過oslo.policy庫實現權限管理

3.1??OpenStackoslo.policy

? OpenStack oslo.policy 庫用于實現基于角色的權限訪問控制 RBAC .
? 使用 策略控制某一個用戶權限,規定用戶能執行什么操作,不能執行什么操作
? 一個 API 調用某個 OpenStack 服務時,該服務的策略引擎使用合適的策略定義來決定是否接受該調用

3.2??policy.json文件的語法

? 條策略采用一行語句 定義。

"目標" : "規則"

? 策略中的目標,又稱操作( Action ),表示需要執行的 操作。
? 策略中的規則決定 API 調用在哪些情況或條件下可用,即是否被允許
? 規則
? 總是允許,可以使用空字符串("")、中括號([])或"@"來表示。
?總是拒絕,只能使用感嘆號("!")來表示。
? 特定 的檢查結果。
? 個值的比較。
? 基于 簡單規則的邏輯表達式。
? 特定的檢查 結果
? 角色 : 角色名稱 —— 測試 API 憑證是否包括該角色。
? 規則 : 規則名稱 —— 別名定義。
? http : 目標 URL—— 將檢查委托給遠程服務器,遠程服務器返回 True 則被 授權。
? 個值的比較采用以下語法格式。

"1: 2"

? 策略定義可以 采用別名,別名是復雜或難懂的規則的一個名稱

"別名名稱" : "<別名定義>"

? policy.json 文件的內容使用符號 {} 括起來,其中的多條策略之間由逗號分隔。

{

?????? "別名1" : "定義1",

?????? "別名2" : "定義2",

?????? ...

?????? "目標1" : "規則1",

?????? "目標2" : "規則2",

?????? ....

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}

3.3??編寫簡單的policy.json策略

? 允許 任何實體列出虛擬機實例的策略。

"compute:get_all" : ""

? 使用 感嘆號表示拒絕。以下這條策略表示不能擱置實例。

"compute:shelve": "!"

? 規定 只有云管理員才能在 Identity (身份管理)數據庫中創建新用戶。

"identity:create_user" : "role:admin"

? 編排 服務定義一個名為“ heat_stack_user 的角色,屬于該角色的用戶都不被允許創建堆棧。

"stacks:create": "not role:heat_stack_user"

? 只有實例的所有者能夠啟動 策略

"os_compute_api:servers:start" : "project_id:%(project_id)s"

3.4??解讀policy.json策略

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/35418.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/35418.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/35418.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

短視頻最佳時長:成都柏煜文化傳媒有限公司

探索時間與內容之間的完美平衡 成都柏煜文化傳媒有限公司 在數字媒體日益繁榮的今天&#xff0c;短視頻已成為人們獲取信息、娛樂休閑的重要形式。然而&#xff0c;關于短視頻的最佳時長&#xff0c;一直是一個備受爭議的話題。本文將探討短視頻時長的各種考量因素&#xff0…

MySQL報錯Duplicate entry ‘0‘ for key ‘PRIMARY‘

報錯現場 現象解釋 因為你在插入時沒有給 Customer.Id 賦值&#xff0c;MySQL 會傾向于賦值為 NULL。但是主鍵不能為 NULL&#xff0c;所以 MySQL 幫了你一個忙&#xff0c;將值轉換為 0。這樣&#xff0c;在第二次插入時就會出現沖突&#xff08;如果已經有一條記錄為 0&…

微服務——服務治理

目錄 1 什么是服務治理&#xff1f;2 為什么需要服務治理&#xff1f;3 服務治理的關鍵點3.1 服務注冊與發現3.2 負載均衡3.3 容錯與熔斷3.4 服務監控與告警3.5 服務配置管理 4 示例說明5 總結 1 什么是服務治理&#xff1f; 簡單來說&#xff0c;服務治理就是對微服務架構中的…

iptables(11)target(SNAT、DNAT、MASQUERADE、REDIRECT)

簡介 前面我們已經介紹了ACCEPT、DROP、REJECT、LOG,這篇文章我們介紹SNAT、DNAT、MASQUERADE、REDIRECT,這幾個參數的定義我們在上篇文章中都有介紹,我這里再列出回顧一下 DNAT(目標地址轉換)和 SNAT(源地址轉換) 原理:修改數據包的源或目標 IP 地址。通常用于 NAT(…

怎樣利用 MATLAB 進行實時系統的建模與仿真?

要利用MATLAB進行實時系統的建模與仿真&#xff0c;您可以按照以下步驟進行操作&#xff1a; 確定系統的建模方法&#xff1a;根據實際情況&#xff0c;選擇適合的建模方法&#xff0c;如&#xff1a;微分方程、狀態空間模型、傳遞函數模型等。 編寫系統模型的MATLAB代碼&…

小迪安全v2023筆記 1-18

小迪安全v2023筆記 1-18 棱角社區 文章目錄 1. 基礎入門1. 正向shell與反向shell2. web應用3. 抓包&#xff0c;封包&#xff0c;協議&#xff0c;app&#xff0c;小程序&#xff0c;pc應用&#xff0c;web應用 2. 信息打點1. 常見信息獲取2. 文件泄露3. 常見阻礙4. CDN繞過&a…

Java中線程的狀態轉換有什么(生命周期)

在Java中&#xff0c;線程的生命周期由六種主要狀態構成&#xff0c;每種狀態都有其特定的轉換條件。以下是Java線程的生命周期狀態及其轉換條件&#xff1a; 線程狀態 新建&#xff08;NEW&#xff09;&#xff1a; 線程對象已經創建&#xff0c;但尚未調用start()方法。 Thr…

Stable Diffusion——SDXL 1.0原理解析

1. SDXL 1.0 簡介 SDXL 1.0是Stability AI推出的新基礎模型&#xff0c;作為Stable Diffusion的大幅改進版本&#xff0c;它是一個用于文本到圖像合成的潛在擴散模型&#xff08;LDM&#xff09;。作為Stable Diffusion的最新進化&#xff0c;它正在超越其前身&#xff0c;并與…

錄制視頻怎么操作?手把手教會你!

在這個互聯網科技高速發展的時代&#xff0c;錄制視頻已經成為了人們生活中一個不可或缺的技能。無論是記錄游戲精彩瞬間、制作教程、分享生活趣事&#xff0c;還是進行在線教學&#xff0c;錄制視頻都是一種非常直觀有效的方式。可是錄制視頻怎么操作呢&#xff1f;本文將介紹…

駐馬店建筑工程設計資質變更操作要點

150資質變更操作要點&#xff1a; 3806變更原因&#xff1a;若因企業重組、合并、分立、跨省變更等原因導致企業名稱、法定代表人、注冊地址、經濟性質、注冊資本、經營范圍等發生變動&#xff0c;應及時申請資質變更。 1686 變更申請&#xff1a;提交資質變更申請書及…

算法學習筆記——單雙鏈表及其反轉—堆棧詮釋

單雙鏈表及其反轉——堆棧詮釋 按值傳遞 int、long、byte、short、char、float、double、boolean和String 都是按值傳遞 概念&#xff1a;在方法被調用時&#xff0c;實參通過形參把它的內容副本傳入方法內部&#xff0c;此時形參接收到的內容是實參值的一個拷貝&#xff0c;…

Makefile中eval函數的用法

Makefile中eval函數的用法 一&#xff0c;eval函數的使用方法&#xff1a;二&#xff0c;eval函數的優勢 一&#xff0c;eval函數的使用方法&#xff1a; 在Makefile中&#xff0c;eval 函數的作用是用來動態地執行Makefile中的命令或賦值操作。它的基本語法如下&#xff1a; …

Spring MVC數據綁定和響應——簡單數據綁定(三)POJO綁定

一、POJO數據綁定的使用場景 在使用簡單數據類型綁定時&#xff0c;可以很容易的根據具體需求來定義方法中的形參類型和個數&#xff0c;然而在實際應用中&#xff0c;客戶端請求可能會傳遞多個不同類型的參數數據&#xff0c;如果還使用簡單數據類型進行綁定&#xff0c;那么就…

adb shell執行定時2小時命令

在Android設備上使用adb shell來執行一個定時2小時后運行的命令并不直接支持&#xff0c;因為adb shell是即時執行shell命令的工具&#xff0c;不支持內置的定時任務功能。但是&#xff0c;你可以通過幾種方法來實現類似的功能&#xff1a; 方法一&#xff1a;使用sleep命令 …

dbeaver數據庫鏈接工具

1、下載dbeaver 一個綠色版一個安裝版&#xff0c;官網開源版 2、安裝 3、可以導入之前navicat的鏈接 導入 選擇navicat 反編譯密碼的&#xff1a;https://tool.lu/coderunner navicat 版本15的密碼解密&#xff1a;https://www.iatodo.com/navicatpw

css動畫自定義動畫間隔時間

function playAnimation(element) {var animationName rubberBand;var duration 2000; // 動畫持續時間&#xff0c;單位為毫秒element.style.animation ${animationName} 1s ease;element.addEventListener(animationend, function() {// 動畫結束后重置樣式&#xff0c;以…

服務運營 | MS文章精選:線上點單,當真免排隊?餐飲零售與醫療場景中的全渠道運營

編者按&#xff1a; 小A走進了一家奶茶店&#xff0c;準備向店員點單&#xff0c;但卻在屏幕上看到還有98杯奶茶待制作&#xff08;因為線上訂單突然暴增&#xff09;。因此&#xff0c;小A不滿地嘟囔著離開了奶茶店。這個例子展示了線上渠道可能會對線下渠道造成一些負面影響…

使用AES,前端加密,后端解密,spring工具類了

學習python的時候&#xff0c;看到很多會對參數進行加密&#xff0c;于是好奇心驅使下&#xff0c;讓我去了解了下AES加密如何在java中實現。 首先 npm install crypto-js 然后在你的方法中&#xff0c;給你們前端源碼看看&#xff0c;因為我用的ruoyi框架做的實驗&#xff…

四川音盛佳云電子商務有限公司抖音電商的先行者

在當今數字時代&#xff0c;電商行業風起云涌&#xff0c;各大平臺競相爭奪市場份額。而在這其中&#xff0c;四川音盛佳云電子商務有限公司以其獨特的抖音電商服務模式&#xff0c;悄然崛起&#xff0c;成為了行業中的一股不可忽視的力量。今天&#xff0c;就讓我們一起走進音…

【GD32F303紅楓派使用手冊】第二十六節 EXMC-液晶驅動實驗

26.1 實驗內容 通過本實驗主要學習以下內容&#xff1a; LCD顯示原理 EXMC NOR/SRAM模式時序和8080并口時序 LCD顯示控制 26.2 實驗原理 使用MCU的EXMC外設實現8080并口時序&#xff0c;和TFT-LCD控制器進行通信&#xff0c;控制LCD顯示圖片、字符、色塊等。 26.2.1 TFT…