Azure AD(三)知識補充-Azure資源的託管標識

一,引言

  來個慣例,吹水!😅😅😅😅😅api

  前一週由於考試,還有我的的私事,一會兒差點頹廢了。想了想,寫博客這種的東西仍是得堅持,再忙,也要檢查。要養成一種習慣,同時這也是自我約束的一種形式。雖說不能浪費大量時間在刷朋友圈,看自媒體的新聞,看一些營銷號的視頻等等,不喜勿噴啊,這是我我的的一些觀念,也沒有帶認識眼光啊!好了,廢話很少說,在此先立個Flag,bash

  1,保證每週輸出一片文章。ssh

  2,開始檢查每週4次的5千米跑步。curl

好了,開始今天的分析👇👇👇👇👇ide

------------------------------------我是分割線------------------------------------post

  以前有個章節講到Azure AD的一些基礎概念,以及Azure AD究竟能夠用來作什麼?,還講了講如何在咱們的項目中集成Azure AD 保護咱們的API資源!講了這些,其實遠遠不夠,AD裏裏面還有好多概念性的知識,同時也是在其餘模塊中有使用到的,就好比什麼叫「託管標識」,託管標識又分爲「系統託管標識」和「用戶託管標識」;什麼叫「服務主體」,它又能幹什麼,和Azure又有什麼關係?好的,那麼今天就帶着這些問題,咱們來剖析,探個究竟!。url

二,正文

1,「什麼是託管標識」

  • 客戶端ID:Azure AD 生成的惟一標識符,在其初始預配期間與應用程序和服務主體綁定。
  • 主體 ID - 託管標識的服務主體對象的對象 ID,用於授予對 Azure 資源的基於角色的訪問權限。
  • Azure 實例元數據服務 (IMDS) - 一個 REST 終結點(url連接),可供經過 Azure 資源管理器建立的全部 IaaS VM 使用。 

2,託管標識分爲兩種類型:

  • 系統分配託管標識:直接在 Azure 服務實例上啓用。 啓用標識後,Azure 將在實例的訂閱信任的 Azure AD 租戶中建立實例的標識。 建立標識後,系統會將憑據預配到實例。 系統分配標識的生命週期直接綁定到啓用它的 Azure 服務實例。 若是實例遭刪除,Azure 會自動清理 Azure AD 中的憑據和標識。
  • 用戶分配託管標識:是做爲獨立的 Azure 資源建立的。 在建立過程當中,Azure 會在由所用訂閱信任的 Azure AD 租戶中建立一個標識。 在建立標識後,能夠將標識分配到一個或多個 Azure 服務實例。 用戶分配標識的生命週期與它所分配到的 Azure 服務實例的生命週期是分開管理的。

下圖演示了託管服務標識如何與 Azure 虛擬機 (VM) 協同工做:spa

3,系統分配託管標識如何與 Azure VM 協同工做

  1. Azure 資源管理器收到請求,要求在 VM 上啓用系統分配託管標識。(圖1).net

  2. Azure 資源管理器在 Azure AD 中建立與 VM 標識相對應的服務主體。 服務主體在此訂閱信任的 Azure AD 租戶中建立。3d

  3. Azure 資源管理器經過使用服務主體客戶端 ID 和證書更新 Azure 實例元數據服務標識終結點來配置 VM 上的標識。

  4. VM 有了標識之後,請根據服務主體信息向 VM 授予對 Azure 資源的訪問權限。 若要調用 Azure 資源管理器,請在 Azure AD 中使用基於角色的訪問控制 (RBAC) 向 VM 服務主體分配相應的角色。 若要調用 Key Vault,請授予代碼對 Key Vault 中特定機密或密鑰的訪問權限。

  5. 在 VM 上運行的代碼能夠從只能從 VM 中訪問的 Azure 實例元數據服務終結點請求令牌:http://169.254.169.254/metadata/identity/oauth2/token

    • resource 參數指定了要向其發送令牌的服務。 若要向 Azure 資源管理器進行身份驗證,請使用 resource=https://management.azure.com/
    • API 版本參數指定 IMDS 版本,請使用 api-version=2018-02-01 或更高版本。
  6. 調用了 Azure AD,以便使用在步驟 3 中配置的客戶端 ID 和證書請求訪問令牌(在步驟 5 中指定)。 Azure AD 返回 JSON Web 令牌 (JWT) 訪問令牌。

  7. 代碼在調用支持 Azure AD 身份驗證的服務時發送訪問令牌。

4,用戶分配託管標識如何與 Azure VM 協同工做

  1. Azure 資源管理器收到請求,要求建立用戶分配託管標識。

  2. Azure 資源管理器在 Azure AD 中建立與用戶分配託管標識相對應的服務主體。 服務主體在此訂閱信任的 Azure AD 租戶中建立。

  3. Azure 資源管理器收到在 VM 上配置用戶分配的託管標識的請求,並使用用戶分配的託管標識服務主體客戶端 ID 和證書更新 Azure 實例元數據服務標識終結點。

  4. 建立用戶分配託管標識之後,請根據服務主體信息向標識授予對 Azure 資源的訪問權限。 若要調用 Azure 資源管理器,請在 Azure AD 中使用 RBAC 向用戶分配標識的服務主體分配相應的角色。 若要調用 Key Vault,請授予代碼對 Key Vault 中特定機密或密鑰的訪問權限。

     備註

    也可在步驟 3 以前執行此步驟。

  5. 在 VM 上運行的代碼能夠從只能從 VM 中訪問的 Azure 實例元數據服務標識終結點請求令牌:http://169.254.169.254/metadata/identity/oauth2/token

    • resource 參數指定了要向其發送令牌的服務。 若要向 Azure 資源管理器進行身份驗證,請使用 resource=https://management.azure.com/
    • 客戶端 ID 參數指定爲其請求令牌的標識。 當單臺 VM 上有多個用戶分配的標識時,此值是消除歧義所必需的。
    • API 版本參數指定 Azure 實例元數據服務版本。 請使用 api-version=2018-02-01 或指定更高的版本。
  6. 調用了 Azure AD,以便使用在步驟 3 中配置的客戶端 ID 和證書請求訪問令牌(在步驟 5 中指定)。 Azure AD 返回 JSON Web 令牌 (JWT) 訪問令牌。

  7. 代碼在調用支持 Azure AD 身份驗證的服務時發送訪問令牌。

 稍後會提示

 注意,此時在AD的應用註冊頁面是找不到剛剛註冊的應用的,只有在給Azure 資源分配託管標識訪問Azure資源管理器,我這裏是提早建立了是一個vm資源,也就是使用vm系統分配的託管標識訪問Azure Key Vault。簡而言之,Azure Key Vault做爲密鑰保管庫,Key Vault 隨後可以讓客戶端應用程序使用機密訪問未受 Azure Active Directory (AD) 保護的資源。 託管服務標識由 Azure 自動管理,可用於向支持 Azure AD 身份驗證的服務進行身份驗證,這樣就無需在代碼中插入憑據了。

可是Azure中資源和資源之間是相互隔離的,不可以相互訪問。

因此,咱們須要開啓vm的系統分配的託管標識,而後再key vault 中開啓 vm的訪問策略。以下所示

添加 「vm001」 對 「key vault」 的訪問策略

 

 

 建立 「機密」 信息

 

 

名稱輸入:conn;值輸入 123 ,點擊「建立」,

而後使用ssh 登錄剛剛建立好的vm001上,獲取訪問 「key vault」 的 「access_token」 

在終端窗口中,使用 CURL 向 Azure 資源終結點的本地託管標識發出請求,以獲取 Azure Key Vault 的訪問令牌

世紀互聯版
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.cn' -H Metadata:true
全球版
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -H Metadata:true  

 

 可使用此訪問令牌對 Azure Key Vault 進行身份驗證。  下一個 CURL 請求顯示如何使用 CURL 和 Key Vault REST API 從 Key Vault 讀取密鑰。  將須要 Key Vault 的 URL,該 URL 位於 Key Vault 的「概述」 頁的「軟件包」 部分。  另外,還須要在前面的調用中獲取的訪問令牌

curl https://<YOUR-KEY-VAULT-URL>/secrets/<secret-name>?api-version=2016-10-01 -H "Authorization: Bearer <ACCESS TOKEN>"

經過在請求頭添加Bearer認證,獲取key vault 中剛剛建立的機密信息  名稱 「conn」,值 「123」

bingo,成功的拿到密鑰。開啓系統分配的託管標識,其實就是授予例如 Azure VM資源的託管標識對另一個Azure 資源的訪問權限。

三,結尾

今天的文章大概介紹了 Azure系統的託管標識究竟是個什麼東西,能夠用來幹什麼,這裏不只僅能夠去 VM 訪問 "key Vault",還能夠訪問 「Azure 存儲」,「Azure Cosmos DB」等,都是一樣的道理。

下一偏開始講解一下關於用戶本身分配的託管標識,已經做一下演示,同時演示使用用戶分配的託管身份運行應用程序。

版權:轉載請在文章明顯位置註明做者及出處。如發現錯誤,歡迎批評指正。

做者:Allen 

版權:轉載請在文章明顯位置註明做者及出處。如發現錯誤,歡迎批評指正。

相關文章
相關標籤/搜索