マネージドIDはAzureADの機能で、AzureAD認証をサポートするリソースへのアクセス許可を付与するのに使用することができるIDです。
サービスプリンシパルのように認証情報を管理する必要が無いため、今後利用される機会が増えそうです。現在まだ全てのAzureサービスが対応しておらず、Automationでもプレビューとなっていますが、今回はこれを使用したVMの起動処理を試しに実行してみました。
1.マネージドIDの作成
Automatioアカウントのメニュー「ID」から作成します。状態を"オン"にし、保存します。
確認のダイアログで「はい」を選択します。
少し待って作成完了すると表示が変わるので、「Azureロールの割り当て」を選択します。
必要なロールを付与します。今回はVMの起動処理を実行するので、仮想マシン共同作成者を選択しました。
以上でIDの作成は完了です。作成したIDは、AzureADでは「エンタープライズアプリケーション」に表示されていました。アプリケーションの種類から「マネージドID」を選択すると表示されます。ここにアプリを登録する権限が無いと作成エラーになってしまうと思われます。
2.Automation設定
続いてAutomationの設定を行います。マネージドIDではAzモジュールを使用する必要がありますが、デフォルトではインポートされていないので追加します。Automationアカウントの「モジュール」→「ギャラリーを参照」を選択します。
"Az.Accounts"
モジュールを検索して選択します。
「インポート」を選択します。
インポートが完了しないと依存関係で先に進めないので、少し待って状態が「使用可能」になったことを確認します。
続いて、"Az.Compute"
モジュールを検索してインストールします(他にも操作するAzureリソースによって必要なモジュールをインポートしてください)。
インポートが完了し、状態が「使用可能」になったことを確認します。
Automationアカウントの設定は以上です。
3.Runbook作成
後はRunbookの作成です。手順はこれまでと特に変わりません。以下が今回試したRunbookです。
# マネージドIDによる接続
Connect-AzAccount -Identity
$ResourceGroupName = 'resource-group-name'
$VmName = 'vm-name'
# VMの起動
Write-Output ("Start VM:" + $VmName)
try {
$result = Start-AzVM -ResourceGroupName $ResourceGroupName -Name $VmName
}
catch {
$ErrorMessage = $_.Exception.message
Write-Error ("Error occurred when starting vm:" + $ErrorMessage)
Break
}
ポイントは最初の Connect-AzAccount -Identity
で、これにより設定したマネージドIDの権限を使用することができます。その後の処理はAzモジュールを使用して必要な処理を記載するだけです。
実行してみると、VMが起動されることが確認できます。
以上で、マネージドIDを使用したVMの起動処理が可能なことが確認できました。