[壹刊]Azure AD(四)知识补充-服务主体
一,引言
又到了新的一周了,也到了我新的分享的時間了,還記得上一周立得Flag,其中 “保證每周輸出一篇文章” ,讓我特別“在意”(這里用詞不太恰當)。主要是我的一個大學舍友,他突然問了我一個關(guān)于寫博的事情,自己也在上周開通了賬號,也想著堅持寫博客。在我看來,這確實是一件好事,寫博不僅僅是分享的過程;也是自己提煉寫博的一個過程,以及文章組織的能力,對自己還是很有好處的。這不僅僅要寫內(nèi)容要精煉,同時也要讓別人能看的懂。加油,默默的在這里給他打氣。(? ?_?)?
好了,開始今天的分析????????????????????
------------------------------------我是分割線------------------------------------
上一周有介紹到Azure AD資源托管標識的內(nèi)容,其實就包括如何去操作開啟系統(tǒng)分配的托管標識,以及通過開啟托管標識,VM如何去訪問Azure 中的一些資源,如 “Key Vault” 等。今天去分析一波關(guān)于“Service Principal”(服務(wù)主體)。
二,正文
1,服務(wù)主體對象
若要訪問受 Azure AD 租戶保護的資源,需要訪問的實體必須由安全主體來表示。?這同時適用于用戶(用戶主體)和應(yīng)用程序(服務(wù)主體)。安全主體定義 Azure AD 租戶中用戶/應(yīng)用程序的訪問策略和權(quán)限。?這樣便可實現(xiàn)核心功能,如在登錄時對用戶/應(yīng)用程序進行身份驗證,在訪問資源時進行授權(quán)。當應(yīng)用程序被授予了對租戶中資源的訪問權(quán)限時(根據(jù)注冊或許可),將創(chuàng)建一個服務(wù)主體對象。?Microsoft Graph ServicePrincipal 實體定義服務(wù)主體對象屬性的架構(gòu)。
2,應(yīng)用程序和服務(wù)主體的關(guān)系
可以將應(yīng)用程序?qū)ο笠暈閼?yīng)用程序的全局表示形式(供所有租戶使用),將服務(wù)主體視為本地表示形式(在特定租戶中使用)。
應(yīng)用程序?qū)ο笥米髂0?#xff0c;常見屬性和默認屬性從其中派生,以便在創(chuàng)建相應(yīng)服務(wù)主體對象時使用。?因此,應(yīng)用程序?qū)ο笈c軟件應(yīng)用程序存在 1 對 1 關(guān)系,而與其對應(yīng)的服務(wù)主體對象存在 1 對多關(guān)系。
必須在將使用應(yīng)用程序的每個租戶中創(chuàng)建服務(wù)主體,讓它能夠建立用于登錄和/或訪問受租戶保護的資源的標識。?單租戶應(yīng)用程序只有一個服務(wù)主體(在其宿主租戶中),在應(yīng)用程序注冊期間創(chuàng)建并被允許使用。?多租戶 Web 應(yīng)用程序/API 還會在租戶中的某個用戶已同意使用它的每個租戶中創(chuàng)建服務(wù)主體。
下圖演示了應(yīng)用程序的應(yīng)用程序?qū)ο蠛蛯?yīng)的服務(wù)主體對象之間的關(guān)系,其上下文是在名為 HR 應(yīng)用的示例多租戶應(yīng)用程序中。?此示例方案中有三個 Azure AD 租戶:
Adatum?-開發(fā)HR 應(yīng)用的公司使用的租戶
Contoso?-contoso 組織使用的租戶,即HR 應(yīng)用的使用者
Fabrikam?-fabrikam 組織使用的租戶,它也使用HR 應(yīng)用
在此示例方案中:
| 1 | 是在應(yīng)用程序的宿主租戶中創(chuàng)建應(yīng)用程序?qū)ο蠛头?wù)主體對象的過程。 |
| 2 | 當 Contoso 和 Fabrikam 的管理員完成同意并向應(yīng)用程序授予訪問權(quán)限時,會在其公司的 Azure AD 租戶中創(chuàng)建服務(wù)主體對象,并向其分配管理員所授予的權(quán)限。?另請注意,HR 應(yīng)用可能配置/設(shè)計為允許由用戶同意以供個人使用。 |
| 3 | HR 應(yīng)用程序的使用者租戶(例如 Contoso 和 Fabrikam)各有自己的服務(wù)主體對象。?每個對象代表其在運行時使用的應(yīng)用程序?qū)嵗?#xff0c;該實例受相關(guān)管理員同意的權(quán)限控制。 |
3,使用Azure CLI創(chuàng)建Azure服務(wù)主體(示例)
使用?az ad sp create-for-rbac?命令創(chuàng)建服務(wù)主體。創(chuàng)建服務(wù)主體時,請選擇其使用的登錄身份驗證的類型。
?注意
如果您的帳戶無權(quán)創(chuàng)建服務(wù)主體,將返回一條錯誤消息,其中包含“權(quán)限不足,無法完成操作”。請與您的Azure Active Directory管理員聯(lián)系以創(chuàng)建服務(wù)主體。
3.1,在 “azure portal” 中驗證當前的Azure訂閱
1 | az account show |
3.2,顯示訂閱名稱ID值的列表
1 | az account list --query?"[].{name:name, subscriptionId:id}" |
?
3.3,使用?az ad sp create-for-rbac?命令,將其替換<subscription_id>為要使用的訂閱帳戶的ID
1 | az ad sp create-for-rbac --role="Contributor"?--scopes="/subscriptions/<subscription_id>" |
注意:我們將創(chuàng)建一個具有 “Contributor” (貢獻者角色:默認角色)的服務(wù)主體。該 “Contributor” 角色具有完全的權(quán)限讀取和寫入到Azure的賬戶,
成功完成后,該命令將顯示幾個值,包括自動生成的密碼
?
同時,我們可以在 “azure portal” 中可以找到對應(yīng)的設(shè)置 選擇=》Azure Active Directory
?
點擊 “App registrations”
?
?同時,我們可以在當前訂閱下的 “IAM”中找到對應(yīng)的角色訪問權(quán)限信息。當然了,上面我創(chuàng)建服務(wù)主體的時候給的 scope 是整個訂閱,也就是我們可以通過這個服務(wù)主體去訪問azure的任何資源。
例如 "azure devops Pipeline" 在CD的過程,需要配置 "Service Principal"
?
?例如使用Terraform 構(gòu)建基礎(chǔ)架構(gòu)資源的時候,需要配置 Service Principal
三,總結(jié)
使用Azure服務(wù)的自動化工具應(yīng)始終具有受限權(quán)限。Azure提供服務(wù)主體,而不是讓應(yīng)用程序以完全特權(quán)用戶身份登錄。Azure服務(wù)主體是為與應(yīng)用程序,托管服務(wù)和自動化工具一起使用而創(chuàng)建的身份,以訪問Azure資源。這種訪問受到分配給服務(wù)主體的角色的限制,使您可以控制可以訪問哪些資源以及可以訪問哪個級別。出于安全原因,始終建議將服務(wù)主體與自動化工具一起使用,而不是允許他們使用用戶身份登錄。
服務(wù)主體的默認角色是Contributor。該角色具有讀取和寫入Azure帳戶的完整權(quán)限
參考資料:RBAC內(nèi)置角色:https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles
作者:Allen
版權(quán):轉(zhuǎn)載請在文章明顯位置注明作者及出處。如發(fā)現(xiàn)錯誤,歡迎批評指正。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的[壹刊]Azure AD(四)知识补充-服务主体的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [跨平台系列三Docker篇]:ASP.
- 下一篇: lin-cms-dotnetcore.是