版權:轉載請在文章明顯位置註明做者及出處。如發現錯誤,歡迎批評指正。
來個慣例,吹水!😅😅😅😅😅api
前一週由於考試,還有我的的私事,一會兒差點頹廢了。想了想,寫博客這種的東西仍是得堅持,再忙,也要檢查。要養成一種習慣,同時這也是自我約束的一種形式。雖說不能浪費大量時間在刷朋友圈,看自媒體的新聞,看一些營銷號的視頻等等,不喜勿噴啊,這是我我的的一些觀念,也沒有帶認識眼光啊!好了,廢話很少說,在此先立個Flag,bash
1,保證每週輸出一片文章。ssh
2,開始檢查每週4次的5千米跑步。curl
好了,開始今天的分析👇👇👇👇👇ide
------------------------------------我是分割線------------------------------------post
以前有個章節講到Azure AD的一些基礎概念,以及Azure AD究竟能夠用來作什麼?,還講了講如何在咱們的項目中集成Azure AD 保護咱們的API資源!講了這些,其實遠遠不夠,AD裏裏面還有好多概念性的知識,同時也是在其餘模塊中有使用到的,就好比什麼叫「託管標識」,託管標識又分爲「系統託管標識」和「用戶託管標識」;什麼叫「服務主體」,它又能幹什麼,和Azure又有什麼關係?好的,那麼今天就帶着這些問題,咱們來剖析,探個究竟!。url
下圖演示了託管服務標識如何與 Azure 虛擬機 (VM) 協同工做:spa
Azure 資源管理器收到請求,要求在 VM 上啓用系統分配託管標識。(圖1).net
Azure 資源管理器在 Azure AD 中建立與 VM 標識相對應的服務主體。 服務主體在此訂閱信任的 Azure AD 租戶中建立。3d
Azure 資源管理器經過使用服務主體客戶端 ID 和證書更新 Azure 實例元數據服務標識終結點來配置 VM 上的標識。
VM 有了標識之後,請根據服務主體信息向 VM 授予對 Azure 資源的訪問權限。 若要調用 Azure 資源管理器,請在 Azure AD 中使用基於角色的訪問控制 (RBAC) 向 VM 服務主體分配相應的角色。 若要調用 Key Vault,請授予代碼對 Key Vault 中特定機密或密鑰的訪問權限。
在 VM 上運行的代碼能夠從只能從 VM 中訪問的 Azure 實例元數據服務終結點請求令牌:http://169.254.169.254/metadata/identity/oauth2/token
resource=https://management.azure.com/
。調用了 Azure AD,以便使用在步驟 3 中配置的客戶端 ID 和證書請求訪問令牌(在步驟 5 中指定)。 Azure AD 返回 JSON Web 令牌 (JWT) 訪問令牌。
代碼在調用支持 Azure AD 身份驗證的服務時發送訪問令牌。
Azure 資源管理器收到請求,要求建立用戶分配託管標識。
Azure 資源管理器在 Azure AD 中建立與用戶分配託管標識相對應的服務主體。 服務主體在此訂閱信任的 Azure AD 租戶中建立。
Azure 資源管理器收到在 VM 上配置用戶分配的託管標識的請求,並使用用戶分配的託管標識服務主體客戶端 ID 和證書更新 Azure 實例元數據服務標識終結點。
建立用戶分配託管標識之後,請根據服務主體信息向標識授予對 Azure 資源的訪問權限。 若要調用 Azure 資源管理器,請在 Azure AD 中使用 RBAC 向用戶分配標識的服務主體分配相應的角色。 若要調用 Key Vault,請授予代碼對 Key Vault 中特定機密或密鑰的訪問權限。
備註
也可在步驟 3 以前執行此步驟。
在 VM 上運行的代碼能夠從只能從 VM 中訪問的 Azure 實例元數據服務標識終結點請求令牌:http://169.254.169.254/metadata/identity/oauth2/token
resource=https://management.azure.com/
。api-version=2018-02-01
或指定更高的版本。調用了 Azure AD,以便使用在步驟 3 中配置的客戶端 ID 和證書請求訪問令牌(在步驟 5 中指定)。 Azure AD 返回 JSON Web 令牌 (JWT) 訪問令牌。
代碼在調用支持 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
版權:轉載請在文章明顯位置註明做者及出處。如發現錯誤,歡迎批評指正。