使用 Azure CLI 建立或更新 Azure 自訂角色

如果 Azure 內建角色 不符合組織的特定需求,您可以建立自己的自訂角色。 本文說明如何使用 Azure CLI 列出、建立、更新或刪除自訂角色。

如需如何建立自訂角色的逐步教學課程,請參閱 教學課程:使用 Azure CLI 建立 Azure 自訂角色。

必要條件

若要建立自訂角色,您需要:

列出自訂角色

若要列出可用於指派的自訂角色,請使用 az role definition list 。 下列範例會列出目前訂用帳戶中的所有自訂角色。

az role definition list --custom-role-only true --output json --query '[].{roleName:roleName, roleType:roleType}'
[
  {
    "roleName": "My Management Contributor",
    "type": "CustomRole"
  },
  {
    "roleName": "My Service Reader Role",
    "type": "CustomRole"
  },
  {
    "roleName": "Virtual Machine Operator",
    "type": "CustomRole"
  }
]

列出自訂角色定義

若要列出自訂角色定義,請使用 az role definition list 。 此命令與您用於內建角色的命令相同。

az role definition list --name {roleName}

下列範例會列出 虛擬機器操作員 角色定義:

az role definition list --name "Virtual Machine Operator"
[
  {
    "assignableScopes": [
      "/subscriptions/{subscriptionId}"
    ],
    "description": "Can monitor and restart virtual machines.",
    "id": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/00000000-0000-0000-0000-000000000000",
    "name": "00000000-0000-0000-0000-000000000000",
    "permissions": [
      {
        "actions": [
          "Microsoft.Storage/*/read",
          "Microsoft.Network/*/read",
          "Microsoft.Compute/*/read",
          "Microsoft.Compute/virtualMachines/start/action",
          "Microsoft.Compute/virtualMachines/restart/action",
          "Microsoft.Authorization/*/read",
          "Microsoft.ResourceHealth/availabilityStatuses/read",
          "Microsoft.Resources/subscriptions/resourceGroups/read",
          "Microsoft.Insights/alertRules/*",
          "Microsoft.Insights/diagnosticSettings/*",
          "Microsoft.Support/*"
        ],
        "dataActions": [],
        "notActions": [],
        "notDataActions": []
      }
    ],
    "roleName": "Virtual Machine Operator",
    "roleType": "CustomRole",
    "type": "Microsoft.Authorization/roleDefinitions"
  }
]

下列範例只會列出虛擬機器操作員 角色的 動作:

az role definition list --name "Virtual Machine Operator" --output json --query '[].permissions[0].actions'
[
  [
    "Microsoft.Storage/*/read",
    "Microsoft.Network/*/read",
    "Microsoft.Compute/*/read",
    "Microsoft.Compute/virtualMachines/start/action",
    "Microsoft.Compute/virtualMachines/restart/action",
    "Microsoft.Authorization/*/read",
    "Microsoft.ResourceHealth/availabilityStatuses/read",
    "Microsoft.Resources/subscriptions/resourceGroups/read",
    "Microsoft.Insights/alertRules/*",
    "Microsoft.Insights/diagnosticSettings/*",
    "Microsoft.Support/*"
  ]
]

建立自訂角色

若要建立自訂角色,請使用 az role definition create 。 角色定義可以是 JSON 描述或包含 JSON 描述的檔案路徑。

az role definition create --role-definition {roleDefinition}

下列範例會建立名為 Virtual Machine Operator 的自訂角色。 此自訂角色會指派 Microsoft.Compute Microsoft.儲存體 Microsoft.Network 資源提供者之所有讀取動作的 存取權,並指派啟動、重新開機及監視虛擬機器的存取權。 此自訂角色可用於兩個訂用帳戶。 此範例會使用 JSON 檔案作為輸入。

vmoperator.json

{
  "Name": "Virtual Machine Operator",
  "IsCustom": true,
  "Description": "Can monitor and restart virtual machines.",
  "Actions": [
    "Microsoft.Storage/*/read",
    "Microsoft.Network/*/read",
    "Microsoft.Compute/*/read",
    "Microsoft.Compute/virtualMachines/start/action",
    "Microsoft.Compute/virtualMachines/restart/action",
    "Microsoft.Authorization/*/read",
    "Microsoft.ResourceHealth/availabilityStatuses/read",
    "Microsoft.Resources/subscriptions/resourceGroups/read",
    "Microsoft.Insights/alertRules/*",
    "Microsoft.Support/*"
  ],
  "NotActions": [

  ],
  "AssignableScopes": [
    "/subscriptions/{subscriptionId1}",
    "/subscriptions/{subscriptionId2}"
  ]
}
az role definition create --role-definition ~/roles/vmoperator.json

更新自訂角色

若要更新自訂角色,請先使用 az role definition list 來擷取角色定義。 其次,對角色定義進行所需的變更。 最後,使用 az role definition update 來儲存更新的角色定義。

az role definition update --role-definition {roleDefinition}

下列範例會將 Microsoft.Insights/diagnostic設定/ 動作新增至 , Actions 並將管理群組新增至 AssignableScopes 虛擬機器操作員 自訂角色。

vmoperator.json

{
  "Name": "Virtual Machine Operator",
  "IsCustom": true,
  "Description": "Can monitor and restart virtual machines.",
  "Actions": [
    "Microsoft.Storage/*/read",
    "Microsoft.Network/*/read",
    "Microsoft.Compute/*/read",
    "Microsoft.Compute/virtualMachines/start/action",
    "Microsoft.Compute/virtualMachines/restart/action",
    "Microsoft.Authorization/*/read",
    "Microsoft.ResourceHealth/availabilityStatuses/read",
    "Microsoft.Resources/subscriptions/resourceGroups/read",
    "Microsoft.Insights/alertRules/*",
    "Microsoft.Insights/diagnosticSettings/*",
    "Microsoft.Support/*"
  ],
  "NotActions": [

  ],
  "AssignableScopes": [
    "/subscriptions/{subscriptionId1}",
    "/subscriptions/{subscriptionId2}",
    "/providers/Microsoft.Management/managementGroups/marketing-group"
  ]
}
az role definition update --role-definition ~/roles/vmoperator.json

刪除自訂角色

  1. 移除任何使用自訂角色的角色指派。 如需詳細資訊,請參閱 尋找刪除自訂角色的角色 指派。

  2. 使用 az role definition delete 刪除自訂角色。 若要指定要刪除的角色,請使用角色名稱或角色識別碼。 若要判斷角色識別碼,請使用 az role definition list

    az role definition delete --name {roleNameOrId}
    

    下列範例會 刪除虛擬機器操作員 自訂角色。

    az role definition delete --name "Virtual Machine Operator"
    

下一步