Azure CLI でサービス プリンシパルを使用したサインイン

サービス プリンシパルは、特定のユーザーに関連付けられていないアカウントであり、定義済みのロールによってアクセス許可を割り当てることができます。 サービス プリンシパルを使用した認証は、セキュリティで保護されたスクリプトやプログラムを記述するのに最適な方法で、アクセス許可の制限と、ローカルに保存された静的な資格情報の両方を適用できます。 サービス プリンシパルの詳細については、Azure CLI を使用した Azure サービス プリンシパルの操作に関するページを参照してください。

サービス プリンシパルを使ってサインインするには、以下が必要です。

  • サービス プリンシパルに関連付けられている URL または名前
  • サービス プリンシパルのパスワード、またはサービス プリンシパルを PEM 形式で作成するために使用する X509 証明書
  • .onmicrosoft.com ドメインまたは Azure オブジェクト ID として、サービス プリンシパルに関連付けられているテナント

サービス プリンシパルと Azure CLI を使うときは、次の 2 つの重要な事実に注意してください。

  • PEM ファイル内で PRIVATE KEY (秘密キー) に CERTIFICATE (証明書) を追加する必要があります。 PEM ファイル形式の例については、「証明書ベースの認証」を参照してください。

  • お使いのサービス プリンシパルでは、Key Vault に格納されている証明書が使用されている場合、その証明書の秘密キーは Azure にサインインしなくても使用できる必要があります。 az login のための証明書を取得するには、「Key Vault から証明書を取得する」を参照してください。

az login --service-principal -u <app-id> -p <password-or-cert> --tenant <tenant>

重要

az login を対話形式で使用しているときに、コンソールにパスワードが表示されないようにするには、bash では read -s コマンドを使用します。

read -sp "Azure password: " AZ_PASS && echo && az login --service-principal -u <app-id> -p $AZ_PASS --tenant <tenant>

PowerShell では、Get-Credential コマンドレットを使用します。

$AzCred = Get-Credential -UserName <app-id>
az login --service-principal -u $AzCred.UserName -p $AzCred.GetNetworkCredential().Password --tenant <tenant>

関連項目