Azure CLI を使用してサービス プリンシパルを使用して Azure にサインインする
サービス プリンシパルは、特定のユーザーに関連付けられていないアカウントであり、定義済みのロールを使用してアクセス許可を割り当てることができます。 サービス プリンシパルを使用した認証は、セキュリティで保護されたスクリプトまたはプログラムを記述するための最良の方法です。 これにより、アクセス許可の制限とローカルに格納された静的資格情報の両方を適用できます。 サービス プリンシパルの詳細については、Azure CLI を使用した Azure サービス プリンシパルの操作に関するページを参照してください。
サービス プリンシパルを使ってサインインするには、以下が必要です。
- サービス プリンシパルに関連付けられている URL または名前。
- サービス プリンシパル クライアント シークレット、または PEM 形式でサービス プリンシパルを作成するために使用される X509 証明書。
-
.onmicrosoft.com
ドメインまたは Microsoft Entra テナント ID として、サービス プリンシパルに関連付けられているテナント。
サービス プリンシパルと Azure CLI を使うときは、次の 2 つの重要な事実に注意してください。
PEM ファイル内で PRIVATE KEY (秘密キー) に CERTIFICATE (証明書) を追加する必要があります。 PEM ファイル形式の例については、「証明書ベースの認証」を参照してください。
お使いのサービス プリンシパルでは、Key Vault に格納されている証明書が使用されている場合、その証明書の秘密キーは Azure にサインインしなくても使用できる必要があります。
az login
のための証明書を取得するには、「Key Vault から証明書を取得する」を参照してください。
クライアント シークレットでログインするには、次のコマンドを使用します。
az login --service-principal --username APP_ID --password CLIENT_SECRET --tenant TENANT_ID
証明書を使用してログインするには、次のコマンドを使用します。
az login --service-principal --username APP_ID --certificate /path/to/cert.pem --tenant TENANT_ID
重要
az login
を対話形式で使用するときに本体にパスワードが表示されないようにするには、bash
の下にある read -s
コマンドを使用します。
read -sp "Azure password: " AZ_PASS && echo && az login --service-principal --username <app-id> --password $AZ_PASS --tenant <tenant>
PowerShell では、Get-Credential
コマンドレットを使用します。
$AzCred = Get-Credential -UserName <app-id>
az login --service-principal --username $AzCred.UserName --password $AzCred.GetNetworkCredential().Password --tenant <tenant>
関連項目
Azure CLI