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