共用方式為


使用 Bicep 建立或更新 Azure 自定義角色

如果 Azure 內建角色不符合組織的特定需求,您可以建立自己的自定義角色。 本文說明如何使用 Bicep 建立或更新自定義角色。

Bicep 是使用宣告式語法來部署 Azure 資源的特定領域語言 (DSL)。 其提供簡潔的語法、可靠的類型安全,並支援程式碼重複使用。 Bicep 能夠為您在 Azure 中的基礎結構即程式碼解決方案,提供最佳的製作體驗。

若要建立自定義角色,您可以指定角色名稱、角色許可權,以及可以使用角色的位置。 在本文中,您會建立名為 自定義角色 - RG 讀取器 的角色,其資源許可權可在訂用帳戶範圍或更低層級指派。

必要條件

若要建立自定義角色,您必須擁有建立自定義角色的許可權,例如 使用者存取系統管理員

您也必須有作用中的 Azure 訂用帳戶。 如果您沒有帳戶,則可以在開始之前建立免費帳戶

檢閱 Bicep 檔案

本文中使用的 Bicep 檔案來自 Azure 快速入門範本。 Bicep 檔案有四個參數和資源區段。 四個參數為:

  • 預設值為 ["Microsoft.Resources/subscriptions/resourceGroups/read"]的動作陣列。
  • 具有空白預設值的 notActions 陣列。
  • 具有預設值的角色 Custom Role - RG Reader名稱。
  • 具有預設值的角色 Subscription Level Deployment of a Role Definition描述。

可指派此自定義角色的範圍會設定為目前的訂用帳戶。

自定義角色需要唯一標識碼。 標識碼可以使用 guid() 函式產生。 由於自定義角色也需要租使用者的唯一 顯示名稱 ,因此您可以使用角色名稱做為函式的參數 guid() 來建立 具決定性的 GUID。 如果您稍後需要使用相同的 Bicep 檔案來更新自定義角色,決定性 GUID 會很有用。

targetScope = 'subscription'

@description('Array of actions for the roleDefinition')
param actions array = [
  'Microsoft.Resources/subscriptions/resourceGroups/read'
]

@description('Array of notActions for the roleDefinition')
param notActions array = []

@description('Friendly name of the role definition')
param roleName string = 'Custom Role - RG Reader'

@description('Detailed description of the role definition')
param roleDescription string = 'Subscription Level Deployment of a Role Definition'

var roleDefName = guid(roleName)

resource roleDef 'Microsoft.Authorization/roleDefinitions@2022-04-01' = {
  name: roleDefName
  properties: {
    roleName: roleName
    description: roleDescription
    type: 'customRole'
    permissions: [
      {
        actions: actions
        notActions: notActions
      }
    ]
    assignableScopes: [
      subscription().id
    ]
  }
}

Bicep 檔案中定義的資源為:

部署 Bicep 檔案

  1. 將 Bicep 檔案以 main.bicep 儲存至本機電腦。

  2. 使用 roleDefinition 的動作建立名為 myActions 的變數。

    $myActions='["Microsoft.Resources/subscriptions/resourceGroups/read"]'
    
  3. 使用 Azure CLI 或 Azure PowerShell 部署 Bicep 檔案。

    az deployment sub create --location eastus --name customRole --template-file ./main.bicep --parameters actions=$myActions
    

當部署完成時,您應該會看到指出部署成功的訊息。

檢閱已部署的資源

使用 Azure 入口網站、Azure CLI 或 Azure PowerShell 來確認已建立自定義角色。

az role definition list --name "Custom Role - RG Reader"

更新自訂角色

類似於建立自定義角色,您可以使用 Bicep 來更新現有的自定義角色。 若要更新自定義角色,您必須指定您要更新的角色。 如果您先前在 Bicep 中建立了具有確定性的唯一角色識別碼的自定義角色,您可以使用相同的 Bicep 檔案,並只使用顯示名稱來指定自定義角色。

  1. 指定更新的動作。

    $myActions='["Microsoft.Resources/resources/read","Microsoft.Resources/subscriptions/resourceGroups/read"]'
    
  2. 使用 Azure CLI 或 Azure PowerShell 來更新自定義角色。

    az deployment sub create --location eastus --name customrole --template-file ./main.bicep --parameters actions=$myActions roleName="Custom Role - RG Reader"
    

    注意

    更新的自定義角色可能需要幾分鐘的時間才能傳播。

清除資源

不再需要時,請使用 Azure 入口網站、Azure CLI 或 Azure PowerShell 來移除自定義角色。

az role definition delete --name "Custom Role - RG Reader"

下一步