▶️
特定のリソースグループ内のVMのみ起動停止できるカスタムロール
はじめに
以前、VMの起動停止権限のロールを作成する記事を作成しました。
上記記事ではVM単位で指定していましたが、今回はリソースグループを指定して、その内部のVMを起動停止できるようなカスタムロールを作りました。
概要
- 起動停止のポリシーを作り、ユーザに割り付けします
- スコープにはリソースグループ(RG)のリソースIDを指定
- 今回の例は、RGは一つ
- スコープにはリソースグループ(RG)のリソースIDを指定
やってみた
構成
構成は以下のように作りました。同じサブネット内に4台のVMを作り、2つのRGに分けました。
片方のRGのみ、起動停止権限を持つロールを作ります。
作ったVMは大体以下の内容です。
コード
コードは以下になります。
create_startstoprg.bicep
targetScope = 'subscription'
param targetRg string
@description('Array of Scope for the roleDefinition')
var assignableScopes = split(targetRg,'')
@description('extract RG name')
var rgName = last(split(targetRg,'/'))
@description('Friendly name of the role definition')
var roleName = 'Custom Role - Start Stop ${rgName}'
@description('Detailed description of the role definition')
var roleDescription = 'Role for starting resources in Resource Group ${rgName}'
var roleDefName = guid(roleName)
param actions array = [
'Microsoft.Compute/virtualMachines/read'
'Microsoft.Compute/virtualMachines/start/action'
'Microsoft.Compute/virtualMachines/deallocate/action'
]
resource roleDef 'Microsoft.Authorization/roleDefinitions@2022-04-01' = {
name: roleDefName
properties: {
roleName: roleName
description: roleDescription
type: 'customRole'
permissions: [
{
actions: actions
}
]
assignableScopes: assignableScopes
}
}
上記ファイルを引数に、az deployment
コマンドで作成します。
az deployment sub create \
--name SampleSubDeployment \
--location japaneast \
--template-file create_startstoprg.bicep \
--parameters targetRg='【RGのリソースID】'
RGのリソースIDは、コンソールからプロパティで確認できます。
ユーザへの割り当て方は、以前の記事を参考にしてください。
操作
Administratorで見ると、4つのVMが確認できます。
権限を割り当てたユーザで見ると、2つのVMが確認できます。
目的であった起動も終了も可能です。
おわりに
今回は、RG内のVMを起動停止できるカスタムロールを作ってみました。
RGは、プロジェクトや管理部署など、意味のあるグループで作ることが多いかと思います。以前のようにVM単位より、RG単位で権限付与の方が使い勝手が良いと思います。
この記事がどなたかのお役に立ちましたら幸いです。
Discussion