1. 程式人生 > >理解 Keystone 核心概念

理解 Keystone 核心概念

作為 OpenStack 的基礎支援服務,Keystone 做下面這幾件事情:

  1. 管理使用者及其許可權
  2. 維護 OpenStack Services 的 Endpoint
  3. Authentication(認證)和 Authorization(鑑權)

學習 Keystone,得理解下面這些概念:

User

User 指代任何使用 OpenStack 的實體,可以是真正的使用者,其他系統或者服務。

當 User 請求訪問 OpenStack 時,Keystone 會對其進行驗證。

Horizon 在 Identity->Users 管理 User

除了 admin 和 demo,OpenStack 也為 nova、cinder、glance、neutron 服務建立了相應的 User。
admin 也可以管理這些 User。

Credentials

Credentials 是 User 用來證明自己身份的資訊,可以是:
1. 使用者名稱/密碼
2. Token
3. API Key
4. 其他高階方式

Authentication

Authentication 是 Keystone 驗證 User 身份的過程。

User 訪問 OpenStack 時向 Keystone 提交使用者名稱和密碼形式的 Credentials,Keystone 驗證通過後會給 User 簽發一個 Token 作為後續訪問的 Credential。

Token

Token 是由數字和字母組成的字串,User 成功 Authentication 後由 Keystone 分配給 User。

  1. Token 用做訪問 Service 的 Credential
  2. Service 會通過 Keystone 驗證 Token 的有效性
  3. Token 的有效期預設是 24 小時

Project

Project 用於將 OpenStack 的資源(計算、儲存和網路)進行分組和隔離。
根據 OpenStack 服務的物件不同,Project 可以是一個客戶(公有云,也叫租戶)、部門或者專案組(私有云)。

這裡請注意:

  1. 資源的所有權是屬於 Project 的,而不是 User。
  2. 在 OpenStack 的介面和文件中,Tenant / Project / Account 這幾個術語是通用的,但長期看會傾向使用 Project
  3. 每個 User(包括 admin)必須掛在 Project 裡才能訪問該 Project 的資源。
    一個User可以屬於多個 Project。
  4. admin 相當於 root 使用者,具有最高許可權

Horizon 在 Identity->Projects 中管理 Project

通過 Manage Members 將 User 新增到 Project 中

Service

OpenStack 的 Service 包括 Compute (Nova)、Block Storage (Cinder)、Object Storage (Swift)、Image Service (Glance) 、Networking Service (Neutron) 等。

每個 Service 都會提供若干個 Endpoint,User 通過 Endpoint 訪問資源和執行操作。

Endpoint

Endpoint 是一個網路上可訪問的地址,通常是一個 URL。
Service 通過 Endpoint 暴露自己的 API。
Keystone 負責管理和維護每個 Service 的 Endpoint。

可以使用下面的命令來檢視 Endpoint。

[email protected]:~# source devstack/openrc admin admin
[email protected]:~# openstack catalog list

Role

安全包含兩部分:Authentication(認證)和 Authorization(鑑權)
Authentication 解決的是“你是誰?”的問題
Authorization 解決的是“你能幹什麼?”的問題

Keystone 是藉助 Role 來實現 Authorization 的:

  1. Keystone定義Role

  2. 可以為 User 分配一個或多個 Role
    Horizon 的選單為 Identity->Project->Manage Members

  3. Service 決定每個 Role 能做什麼事情
    Service 通過各自的 policy.json 檔案對 Role 進行訪問控制。
    下面是 Nova 服務 /etc/nova/policy.json 中的示例

上面配置的含義是:對於 create、attach_network 和 attach_volume 操作,任何Role的 User 都可以執行;
但只有 admin 這個 Role 的 User 才能執行 forced_host 操作。

OpenStack 預設配置只區分 admin 和非 admin Role。
如果需要對特定的 Role 進行授權,可以修改 policy.json。

下一節我們將通過例子加深對這些概念的理解。

相關推薦

理解 Keystone 核心概念

作為 OpenStack 的基礎支援服務,Keystone 做下面這幾件事情: 管理使用者及其許可權 維護 OpenStack Services 的 Endpoint Authentication(認證)和 Authorization(鑑權) 學習

十分鐘帶你理解Kubernetes核心概念

rtu 虛擬 請求分發 問題: int ref spa virtual ogl 本文將會簡單介紹Kubernetes的核心概念。因為這些定義可以在Kubernetes的文檔中找到,所以文章也會避免用大段的枯燥的文字介紹。相反,我們會使用一些圖表(其中一些是動畫)和示例來解釋

訊息中介軟體——RabbitMQ(三)理解RabbitMQ核心概念和AMQP協議!

前言 本章學習,我們可以瞭解到以下知識點: 網際網路大廠為什麼選擇RabbitMQ? RabbiMQ的高效能之道是如何做到的? 什麼是AMQP高階協議? AMQP核心概念是什麼? RabbitMQ整體架構模型是什麼樣子的? RabbitMQ訊息是如何流轉的? 1. 初識RabbitMQ Rabbi

Spark核心概念理解

固定 tex 入口 HA 持久 其它 ota amd 適合 本文主要內容來自於《Hadoop權威指南》英文版中的Spark章節,能夠說是個人的翻譯版本號,涵蓋了基本的

理解自動化運維之Ansible的核心概念,安裝配置Ansible並學會使用其常見模組。

自動化運維概述: 現如今隨著網際網路的高速發展,傳統運維方式效率太過低下,部署自動化運維可以安全高效的完成維護工作,成為當下運維的主要方式。 一般會把自動化運維工具劃分為兩類:一類是需要使用代理工具的,也就是基於專用的Agent程式來完成管理功能,如:Puppet、Func、Zabbix等;另外一

如何一步一步用DDD設計一個電商網站(一)—— 先理解核心概念

文章內容 一、前言 DDD(領域驅動設計)的一些介紹網上資料很多,這裡就不繼續描述了。自己使用領域驅動設計摸滾打爬也有2年多的時間,出於對知識的總結和分享,也是對自我理解的一個公開檢驗,介於部落格園這個平臺也算是對DDD的推廣盡了一份綿薄之力。一開始接觸這個東西是在2014年,真的覺得像

領域驅動設計(DDD)部分核心概念的個人理解

領域驅動設計(DDD)是一種基於模型驅動的軟體設計方式。它以領域為核心,分析領域中的問題,通過建立一個領域模型來有效的解決領域中的核心的複雜問題。Eric Ivans為領域驅動設計提出了大量的最佳實踐和經驗技巧。只有對領域的不斷深入認識,才能得到一個解決領域核心問題的領域模型。如果一個應用的複雜性不是在技

區塊鏈技術核心概念與原理理解

區塊鏈的前世今生 說到區塊鏈,就不得不提及密碼朋克。 密碼朋克萌芽於1970年代、正式發起於1993年。 認為保護個人隱私是自由社會的重要基石,反對政府、公司對個人隱私的侵害。政權的基礎經常建立在控制資料上,通過此類控制可以害人,壓迫人,或讓人閉嘴 以程式碼和密碼學為

理解maven的核心概念

Maven中定義的工程週期和階段只是抽象的概念,不涉及具體的功能。 具體的功能由外掛(Plugin)實現。一個外掛可以實現多個目標(Goal)。 為了解耦外掛的功能和工程階段,實現高度的可配置性,maven規定外掛只是實現目標的功能, 通過配置來決定在哪個階段執行(Execution)哪些目標操作。 甚至

DDD戰略設計相關核心概念理解

前言 本文想再討論一下關於領域、業務、業務模型、解決方案、BC、領域模型、微服務這些概念的含義和關係。初衷是我發現現在DDD領域建模以及解決方案落地過程中,常常對這些概念理解不清楚或者有歧義,導致我們不知道如何運用這些概念來落地我們的軟體。 領域、業務、業務模型 領域,即問題域、問題空間,領域是一種

DDD核心概念理解

寫在前面 對於領域,業務,業務模型,解決方案,BC,領域模型,微服務這些概念經常分不清,但是這些知識在進行領域建模及DDD落地過程

訊息中介軟體——RabbitMQ(六)理解Exchange交換機核心概念

前言 來了解RabbitMQ一個重要的概念:Exchange交換機 1. Exchange概念 Exchange:接收訊息,並根據路由鍵轉發訊息所繫結的佇列。 藍色框:客戶端傳送訊息至交換機,通過路由鍵路由至指定的佇列。 黃色框:交換機和佇列通過路由鍵有一個繫結的關係。 綠色框:消費端通過監聽

Docker入門——理解Docker的核心概念

# 1 前言 相信不少人聽過這麼一句話: > 人類的本質是復讀機。 在軟體開發領域也一樣,我們總是想尋找更好地方式複製優秀的邏輯或系統。最核心的方法是抽取通用邏輯和元件,把差異化的東西介面化或配置化,達到複用的效果。如`Java`的`Build Once, Run Everywhere`,還有`S

ios多線程操作(四)—— GCD核心概念

indent img 操作 fort 16px 2.0 b2c 有一種 read GCD全稱Grand Central Dispatch。可譯為“大派發中樞調度器”,以純C語言寫成,提供了很多很強大的函數。GCD是蘋果公司為多核的並行運算提出的解決方式,它能夠自己主

vuex所有核心概念完整解析State Getters Mutations Actions

function 鉤子 action 元素事件 getter 參數 pst isp 文件中 vuex是解決vue組件和組件間相互通信而存在的,vuex理解起來稍微復雜,但一旦看懂則即為好用: 安裝: npm install --save vuex 引入 import

spark 教程一 RDD和核心概念

coalesce reg ntb red gre 保存 所有 lec 會有 1.RDD 的介紹   RDD 是spark的核心概念,可以將RDD是做數據庫中的一張表,RDD可以保存任何類型的數據,可以用API來處理RDD及RDD中的數據,類似於Mapreduce, RDD

Docker 學習筆記之 核心概念

api rest api 核心概念 log 筆記 try nbsp .com ont Docker核心概念: Docker Daemon Docker Container Docker Registry Docker Client 通過rest API 和Docker

Maven學習(四)-- Maven的核心概念

pue nlj 人員 gbk provided spi vts 源代碼 -s 摘自:http://www.cnblogs.com/xdp-gacl/p/4051819.html 一、Maven坐標 1.1、什麽是坐標?   在平面幾何中坐標(x,y)可以標識平面中唯一的一

WCF分布式服務1-核心概念

參考 mod operation 解密 rar 重新 tran 意義 傳遞 參考msdn library for WCFWindows Communication Foundation (WCF) 是用於構建面向服務的應用程序的框架。 借助 WCF,可以將數據作為異步消息從

小白也能看懂的 Laravel 核心概念講解

bin php 依賴註入 keyword set 即將 函數 routes nds 自動依賴註入 什麽是依賴註入,用大白話將通過類型提示的方式向函數傳遞參數。 實例 1 首先,定義一個類: /routes/web.php class Bar {} 假如我們在其他地方要使用到