ブラウザ認証をスキップし、CLIでAzureにログインする方法

この記事は個人ブログにもマルチポストしています。
https://zenn.dev/r0227n/articles/azure_auto_login

新卒ぴよぴよインフラエンジニアの西村です。
今回はaz commandAzModuleでAzureにログインするときに必要なブラウザ認証をスキップし、自動でログインできる方法をご紹介したいと思います。

CLIでAzureにログインする時のブラウザ認証画面

ブラウザ認証はPipelineTerraformなどプログラムで実行するときに面倒のため、サービスプリンシパルやマネージド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は様々なコマンドを提供しているため、面白そうなコマンドを見つけたらまた紹介したいと思います。