ブラウザ認証をスキップし、CLIでAzureにログインする方法
2022-09-16
この記事は個人ブログにもマルチポストしています。
https://zenn.dev/r0227n/articles/azure_auto_login
新卒ぴよぴよインフラエンジニアの西村です。
今回は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は様々なコマンドを提供しているため、面白そうなコマンドを見つけたらまた紹介したいと思います。