サービス プリンシパルは、特定のユーザーに関連付けられていないアカウントであり、定義済みのロールを使用してアクセス許可を割り当てることができます。 サービス プリンシパルを使用した認証は、セキュリティで保護されたスクリプトまたはプログラムを記述するための最良の方法です。 これにより、アクセス許可の制限とローカルに格納された静的資格情報の両方を適用できます。 サービス プリンシパルの詳細については、 Azure CLI を使用した Azure サービス プリンシパルの操作に関するページを参照してください。
サービス プリンシパルでサインインするには、次のものが必要です。
- サービス プリンシパルに関連付けられている URL または名前。
- サービス プリンシパル クライアント シークレット、または PEM 形式でサービス プリンシパルを作成するために使用される X509 証明書。
-
.onmicrosoft.com
ドメインまたは Microsoft Entra テナント ID として、サービス プリンシパルに関連付けられているテナント。
サービス プリンシパルと Azure CLI を使用する場合は、次の 2 つの重要な事実に注意してください。
PEM ファイル内の秘密キーに証明書を追加する必要があります。 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
Von Bedeutung
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