了解 Azure 角色指派。

角色指派可讓您授與主體 (例如使用者、群組、受控識別或服務主體) 對於特定 Azure 資源的存取權。 本文說明角色指派的詳細資料。

角色指派

建立角色指派可授與 Azure 資源存取權,而移除角色指派則可撤銷存取權。

角色指派有數個元件,包括:

  • 「主體」,或者獲指派角色的「人員」
  • 指派的「角色」
  • 指派角色的「範圍」
  • 角色指派的「名稱」,以及可協助您說明角色指派原因的「描述」

例如,您可以使用 Azure RBAC 來指派角色:

  • 使用者 Sally 具有擁有者存取權,可存取資源群組「ContosoStorage」中的儲存體帳戶「contoso123」
  • Microsoft Entra ID 雲端系統管理員群組中的每個人都具有讀者存取權,可存取資源群組「ContosoStorage」中的所有資源。
  • 允許與應用程式相關聯的受控識別,在 Contoso 的訂用帳戶內重新啟動虛擬機器。

下列範例為使用 Azure PowerShell 時,所顯示的角色指派屬性:

{
  "RoleAssignmentName": "00000000-0000-0000-0000-000000000000",
  "RoleAssignmentId": "/subscriptions/11111111-1111-1111-1111-111111111111/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000",
  "Scope": "/subscriptions/11111111-1111-1111-1111-111111111111",
  "DisplayName": "User Name",
  "SignInName": "user@contoso.com",
  "RoleDefinitionName": "Contributor",
  "RoleDefinitionId": "b24988ac-6180-42a0-ab88-20f7382dd24c",
  "ObjectId": "22222222-2222-2222-2222-222222222222",
  "ObjectType": "User",
  "CanDelegate": false,
  "Description": null,
  "ConditionVersion": null,
  "Condition": null
}

下列範例為使用 Azure CLIREST API 時,所顯示的角色指派屬性:

{
  "canDelegate": null,
  "condition": null,
  "conditionVersion": null,
  "description": null,
  "id": "/subscriptions/11111111-1111-1111-1111-111111111111/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000",
  "name": "00000000-0000-0000-0000-000000000000",
  "principalId": "22222222-2222-2222-2222-222222222222",
  "principalName": "user@contoso.com",
  "principalType": "User",
  "roleDefinitionId": "/subscriptions/11111111-1111-1111-1111-111111111111/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c",
  "roleDefinitionName": "Contributor",
  "scope": "/subscriptions/11111111-1111-1111-1111-111111111111",
  "type": "Microsoft.Authorization/roleAssignments"
}

下表描述角色指派屬性的意義。

屬性 說明
RoleAssignmentName
name
角色指派的名稱,這是全域唯一識別碼 (GUID)。
RoleAssignmentId
id
角色指派的唯一識別碼,其中包含名稱。
Scope
scope
代表角色指派範圍的 Azure 資源識別碼。
RoleDefinitionId
roleDefinitionId
角色的唯一識別碼。
RoleDefinitionName
roleDefinitionName
角色的名稱。
ObjectId
principalId
角色所指派主體的 Microsoft Entra 物件識別碼。
ObjectType
principalType
主體所代表的 Microsoft Entra 物件類型。 有效值包括 UserGroupServicePrincipal
DisplayName 針對使用者的角色指派,使用者的顯示名稱。
SignInName
principalName
使用者的唯一主體名稱 (UPN),或與服務主體相關聯的應用程式名稱。
Description
description
角色指派的描述。
Condition
condition
從角色定義和屬性使用一或多個動作所建置的條件陳述式。
ConditionVersion
conditionVersion
條件版本號碼。 預設為 2.0,且是唯一支援的版本。
CanDelegate
canDelegate
未實作。

範圍

當您建立角色指派時,必須指定其套用的範圍。 範圍代表允許主體存取的資源或資源集。 您可以將角色指派的範圍限定為單一資源、資源群組、訂用帳戶或管理群組。

提示

使用符合您需求所需的最小範圍。

例如,如果您需要授與受控識別存取權給單一儲存體帳戶,好的安全性作法是在儲存體帳戶範圍建立角色指派,而不是資源群組或訂用帳戶範圍。

如需範圍的詳細資訊,請參閱了解範圍

要指派的角色

角色指派與角色定義相關聯。 角色定義會指定主體在角色指派範圍內應具有的權限。

您可以指派內建角色定義或自訂角色定義。 建立角色指派時,某些工具會要求您使用角色定義識別碼,而其他工具則可讓您提供角色的名稱。

如需角色定義的詳細資訊,請參閱瞭解角色定義

主體

主體包括使用者、安全性群組、受控識別、工作負載識別和服務主體。 主體會在您的 Microsoft Entra 租用戶中建立和管理。 您可以將角色指派給任何主體。 使用 Microsoft Entra ID 「物件識別碼」,來識別您要指派角色的主體。

當您使用 Azure PowerShell、Azure CLI、Bicep 或其他基礎結構作為程式碼 (IaC) 技術來建立角色指派時,您可以指定「主體類型」。 主體類型包括「使用者」、「群組」和「服務主體」。 請務必指定正確的主體類型。 否則您可能會收到間歇性的部署錯誤,尤其是當您使用服務主體和受控身分識別時。

名稱

角色指派的資源名稱必須是全域唯一識別碼 (GUID)。

Microsoft Entra 租用戶內的角色指派資源名稱不可重複,即使角色指派的範圍較狹窄也一樣。

提示

當您使用 Azure 入口網站、Azure PowerShell 或 Azure CLI 建立角色指派時,建立程序會自動為您提供角色指派的唯一名稱。

如果您使用 Bicep 或其他基礎結構作為程式碼 (IaC) 技術來建立角色指派,則必須仔細規劃角色指派的命名方式。 如需詳細資訊,請參閱使用 Bicep 來建立 Azure RBAC 資源

刪除資源行為

當您從 Microsoft Entra ID 刪除使用者、群組、服務主體或受控識別時,刪除任何角色指派是個良好的習慣做法。 角色指派不會自動刪除。 任何參考已刪除主體識別碼的角色指派都會失效。

如果您嘗試將角色指派的名稱重複用於另一個角色指派,部署將會失敗。 當您使用 Bicep 或 Azure Resource Manager 範本 (ARM) 範本部署角色指派時,較可能發生此問題,因為當您使用這些工具時,必須明確設定角色指派名稱。 若要因應這個行為,您應該先移除舊的角色指派再重新建立,或確定您在部署新的角色指派時使用唯一名稱。

描述

您可以將文字描述新增至角色指派。 雖然您可以選擇是否新增描述,但仍建議您將其新增至角色指派。 提供簡短原因,說明主體為何需要指派的角色。 當人員稽核角色指派時,描述可協助其瞭解角色建立的原因,並判斷角色是否仍然適用。

條件

某些角色會根據特定動作內容中的屬性來支援「角色指派條件」。 角色指派條件是額外的檢查,您可以選擇性地將其新增至您的角色指派,以提供更精細的存取控制。

例如,您可以新增「物件需具有特定標記,才能讓使用者讀取物件」的條件。

您通常會使用視覺條件編輯器來建置條件,但以下是範例條件在程式碼中的外觀:

((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})) OR (@resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>] StringEqualsIgnoreCase 'Cascade'))

前置條件可讓使用者讀取 Blob,其 Blob 索引標記索引鍵為「Project」且值為「Cascade」

如需條件的詳細資訊,請參閱什麼是 Azure 屬性型存取控制 (Azure ABAC)?

整合 Privileged Identity Management (預覽)

重要

Azure 角色指派與 Privileged Identity Management 的整合目前處於預覽狀態。 請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。

如果您有 Microsoft Entra ID P2 或 Microsoft Entra ID Governance 授權,Microsoft Entra Privileged Identity Management (PIM) 會整合至角色指派步驟。 例如,您可以將角色指派給使用者一段有限的時間。 您也可以讓使用者符合角色指派的資格,他們必須啟用才能使用角色,例如要求核准。 符合資格的角色指派會在限定時間內提供角色的 Just-In-Time 存取權。 您無法為應用程式、服務主體或受控識別建立符合資格的角色指派,因為這些項目無法執行啟用步驟。 您可以在管理群組、訂用帳戶和資源群組範圍建立符合資格的角色指派,但無法在資源範圍建立。 這項功能會分階段進行部署,因此您的租用戶中可能尚未提供此功能,或是介面可能有所不同。

您可用的指派類型選項具體取決於 PIM 原則。 例如,PIM 原則會定義是否可以建立永久指派、時間限制指派的最大持續時間、角色啟用需求 (核准、多重要素驗證或條件式存取驗證內容),以及其他設定。 如需更多資訊,請參閱在 Privileged Identity Management 中設定 Azure 資源角色設定

如果您不想使用 PIM 功能,請選取 [作用中指派類型] 和 [永久] 指派持續時間選項。 這些設定會建立角色指派,其中主體一律具有角色的權限。

[新增角色指派] 的螢幕擷取畫面,其中顯示 [指派類型] 選項。

若要進一步了解 PIM,您應該檢閱下列詞彙。

詞彙或概念 角色指派類別 描述
合格 類型 需要使用者執行一或多個動作才能使用角色的角色指派。 如果使用者已獲得角色的資格,即表示他們可以在需要執行特殊權限工作時啟用該角色。 使用者不論是具有永久角色指派還是合格角色指派,獲得的存取權並無差異。 唯一的差異在於有些使用者並不一直需要該存取權。
作用中 類型 不要求使用者執行任何動作即可使用角色的角色指派。 指派為有效的使用者具有指派給角色的權限。
啟用 此程序會執行一或多個動作,讓使用者使用有資格使用的角色。 動作可能包括執行多重要素驗證 (MFA) 檢查、提供業務理由,或向指定的核准者要求核准。
永久合格 期間 使用者一律有資格啟用角色的角色指派。
永久有效 期間 使用者一律可以使用角色而不需執行任何動作的角色指派。
有時限的合格 期間 使用者只能在開始和結束日期內有資格啟動角色的角色指派。
有時限的作用中 期間 使用者只能在開始和結束日期內使用角色的角色指派。
Just-In-Time (JIT) 存取 一種模型,使用者會在其中獲得臨時權限以執行特殊權限的工作,這可防止惡意或未經授權的使用者在權限過期後取得存取權。 只有當使用者需要時才會獲得存取權。
最低權限存取的原則 建議的安全性做法,只授與每位使用者獲授權執行的工作所需的最低權限。 這種做法會將全域管理員的數目降到最低,並改為針對特定案例使用特定的系統管理員角色。

如需詳細資訊,請參閱什麼是 Microsoft Entra Privileged Identity Management?

下一步