<aside> <img src="/icons/link_gray.svg" alt="/icons/link_gray.svg" width="40px" />

Qiita

【Azure】Azure CLI を利用してカスタムロールを作成・更新する - Qiita

</aside>

はじめに

業務でカスタムロールを触わりました。 今後 Azure CLI を利用して管理にできたらと思いましたので、少し調べてみました。

環境

カスタムロールの作成

まずは、カスタムロールを定義した Json を準備します。 下記の例は 仮想マシンの電源管理を行うためのカスタムロールです。 割り当て可能なスコープは「サブスクリプション」にしています。 ({subscriptionId}の値は適宜置き換えて下さい。)

{
  "Name": "Virtual Machine Power Operator",
  "IsCustom": true,
  "Description": "仮想マシンの電源操作ができる。(読み取り/起動/停止/再起動)",
  "Actions": [
    "Microsoft.Compute/virtualMachines/read",
    "Microsoft.Compute/virtualMachines/start/action",
    "Microsoft.Compute/virtualMachines/deallocate/action",
    "Microsoft.Compute/virtualMachines/restart/action"
  ],
  "NotActions": [

  ],
  "assignableScopes": [
    "/subscriptions/{subscriptionId}"
  ],
}

Json の準備ができたら、下記コマンドで作成します。

az role definition create --role-definition [email protected]

実行結果

Readonly attribute type will be ignored in class <class 'azure.mgmt.authorization.v2022_05_01_preview.models._models_py3.RoleDefinition'>
{
  "assignableScopes": [
    "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
  ],
  "createdBy": null,
  "createdOn": "2024-11-24T11:55:20.045506+00:00",
  "description": "仮想マシンの電源操作ができる。(読み取り/起動/停止/再起動)",
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/providers/Microsoft.Authorization/roleDefinitions/e5a74e86-67d2-442c-9b2f-8c7adaad96e1",
  "name": "e5a74e86-67d2-442c-9b2f-8c7adaad96e1",
  "permissions": [
    {
      "actions": [
        "Microsoft.Compute/virtualMachines/read",
        "Microsoft.Compute/virtualMachines/start/action",
        "Microsoft.Compute/virtualMachines/deallocate/action",
        "Microsoft.Compute/virtualMachines/restart/action"
      ],
      "condition": null,
      "conditionVersion": null,
      "dataActions": [],
      "notActions": [],
      "notDataActions": []
    }
  ],
  "roleName": "Virtual Machine Power Operator",
  "roleType": "CustomRole",
  "type": "Microsoft.Authorization/roleDefinitions",
  "updatedBy": "ac96884b-7519-437a-aadf-e1e0530145ea",
  "updatedOn": "2024-11-24T11:55:20.045506+00:00"
}

カスタムロールの更新

先ほど作成したカスタムロールの割り当て可能なスコープに「管理グループ」を追加してみたいと思います。 ({managementGroupId}は適宜置き換えて下さい。)

{
  "Name": "Virtual Machine Power Operator",
  "IsCustom": true,
  "Description": "仮想マシンの電源操作ができる。(読み取り/起動/停止/再起動)",
  "Actions": [
    "Microsoft.Compute/virtualMachines/read",
    "Microsoft.Compute/virtualMachines/start/action",
    "Microsoft.Compute/virtualMachines/deallocate/action",
    "Microsoft.Compute/virtualMachines/restart/action"
  ],
  "NotActions": [

  ],
  "assignableScopes": [
    "/subscriptions/{subscriptionId}",
    "/providers/Microsoft.Management/managementGroups/{managementGroupId}"
  ]
}

Json の更新ができたら、下記コマンドで反映させます。

az role definition update --role-definition [email protected]

実行結果