▶️
Azureにて、特定のVMのみ起動停止できるカスタムロール
はじめに
VMを貸し出すという運用を行っていると、VMの起動停止だけできるユーザーを渡すということがあるかと思います。
それをAzureのVMで実現するポリシーを作ってみました。
概要
- 起動停止のポリシーを作り、ユーザに割り付けします
- スコープには対象VMのリソースIDを指定
- AWSとは異なり、タグなどで判別することはできない模様
参考
やってみた
VMのリソースID取得
カスタムロールのスコープに設定するため、VMのリソースIDを取得します。
カスタムロール作成
以下のBicepのテンプレートで、カスタムロールを作成します。
create_startstopvm.bicep
targetScope = 'resourceGroup'
@description('Array of Scope for the roleDefinition')
param assignableScopes array = [
'[先に取得したVMのリソースID]'
]
@description('Array of actions for the roleDefinition')
param actions array = [
'Microsoft.Compute/virtualMachines/read'
'Microsoft.Compute/virtualMachines/start/action'
'Microsoft.Compute/virtualMachines/deallocate/action'
]
@description('Friendly name of the role definition')
param roleName string = 'Custom Role - Start Stop 001'
@description('Detailed description of the role definition')
param roleDescription string = 'ResourceGroup Level Deployment of a Role Definition'
var roleDefName = guid(roleName)
resource roleDef 'Microsoft.Authorization/roleDefinitions@2022-04-01' = {
name: roleDefName
properties: {
roleName: roleName
description: roleDescription
type: 'customRole'
permissions: [
{
actions: actions
}
]
assignableScopes: assignableScopes
}
}
ロールをユーザに割り当て
作成したカスタムロールをユーザに割り当てます。ロールのスコープがVMなので、VMの設定画面から操作します。
カスタムロールでフィルタすると、作成したロールが確認できます
紐づけるユーザを指定します。
操作
ロールを割り当てたユーザでサインインし、VMの画面に遷移します。
開始/停止 でVMの起動停止ができることを確認します。
アクションの許可がされていない再起動を実行すると、エラーになります。
おわりに
今回は特定のVMのみ起動停止できるカスタムロールを作成しました。
AWSと異なり、特定のタグに一致するVMのみ操作、のような設定は出来なそうでした。
複数のVMを扱う場合は、一つずつスコープに定義するか、対象のVMのみ存在するリソースグループ作成してスコープにする、などになりそうです。
この記事がどなたかのお役に立てれば幸いです。
Discussion