本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「ブラウザ認証をスキップし、CLIでAzureにログインする方法」を再編集したものです。
新卒ぴよぴよインフラエンジニアの西村です。
今回はaz commandやAzModuleでAzureにログインするときに必要なブラウザ認証をスキップし、自動でログインできる方法をご紹介したいと思います。
ブラウザ認証はPipelineやTerraformなどプログラムで実行するときに面倒のため、サービスプリンシパルやマネージドIDの情報を活用しログインしたいと思います。
az login
az login --service-principal --username <sp_id> --password <sp_secret> --tenant <tenant_id>
引数として
・sp_id: サービスプリンシパルのアプリケーションID
・sp_secret: サービスプリンシパルのシークレット
・tenant_id: ログイン先のテナントID
上記3つの引数で実行することにより、サービスプリンシパルの情報をもとに対象のテナントにログインします。
Connect-AzAccount
$ApplicationId = <sp_id>
$SecuredPassword = ConvertTo-SecureString <sp_secret> -AsPlainText -Force
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $ApplicationId, $SecuredPassword
$TenantId = <tenant_id>
引数として
・sp_id: サービスプリンシパルのアプリケーションID
・sp_secret: サービスプリンシパルのシークレット
・tenant_id: ログイン先のテナントID
上記3つの引数で実行することにより、サービスプリンシパルの情報をもとに対象のテナントにログインします。
マネージドIDでログイン
マネージドIDは上記2つのログインとは異なり、VM(Automation, Functionsなど)内のみ対応しています。
az login --identity
Connect-AzAccount -Identity
引数として
・–identity
を指定し実行することにより、マネージドIDの情報をもとにAzureにアクセスします。
最後に
今回はCLIでAzureを操作するとき、一度は実行するログイン関連の小技を紹介しました。
Azureは様々なコマンドを提供しているため、面白そうなコマンドを見つけたらまた紹介したいと思います。
西村 凌/FIXER
インフラエンジニア1年生