はじめに
業務でカスタムロールを触わりました。
今後 Azure CLI を利用して管理にできたらと思いましたので、少し調べてみました。
環境
- macOS:
15.1.1
- Azure CLI:
2.62.0
カスタムロールの作成
まずは、カスタムロールを定義した Json を準備します。
下記の例は 仮想マシンの電源管理を行うためのカスタムロールです。
割り当て可能なスコープは「サブスクリプション」にしています。
({subscriptionId}
の値は適宜置き換えて下さい。)
vmPowerOperator@v1.json
{
"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 vmPowerOperator@v1.json
実行結果
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}
は適宜置き換えて下さい。)
vmPowerOperator@v2.json
{
"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 vmPowerOperator@v2.json
実行結果
Role "id" is missing. Look for the role in the current subscription...
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",
"/providers/Microsoft.Management/managementGroups/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
],
"createdBy": null,
"createdOn": "2024-11-24T12:18:48.819397+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-24T12:18:48.819397+00:00"
}
さいごに
Azure CLI を利用して、カスタムロールの作成と更新をやってみました。
単発だと Portal からポチポチやるのもいいのですが、繰り返しやるとなると面倒だったりするので、できるようになってよかったです。
最後までみていただきありがとうございました。
誰かの役に立てば幸いです。
参考