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}

次の例では、"仮想マシン オペレーター" というカスタム ロールが作成されます。 このカスタム ロールは、Microsoft.ComputeMicrosoft.StorageMicrosoft.Network リソース プロバイダーのすべての読み取りアクションに対するアクセス許可を割り当てて、仮想マシンの起動、再起動、監視を行うためのアクセス許可を割り当てます。 このカスタム ロールは、2 つのサブスクリプションで使うことができます。 この例では、入力として 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/diagnosticSettings/ アクションが 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 を使用します。 削除するロールを指定するには、ロール名またはロール ID を使用します。 ロール ID を決定するには、az role definition list を使用します。

    az role definition delete --name {roleNameOrId}
    

    次の例では、仮想マシン オペレーター カスタム ロールが削除されます。

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

次のステップ