パスワードベースの認証で Azure サービス プリンシパルを使う
サービス プリンシパルを作成する際に、サービス プリンシパルが使用するサインイン認証の種類を選択します。 Azure サービス プリンシパルで使用できる認証には、パスワードベースの認証と証明書ベースの認証の 2 種類があります。 パスワードベースの認証はサービス プリンシパルについて学習するときに使用がお勧めしますが、アプリケーションには証明書ベースの認証の使用をお勧めします。
チュートリアルのこの手順では、サービス プリンシパル パスワードを使用して Azure リソースにアクセスする方法について説明します。
パスワードが含まれるサービス プリンシパルの作成
az ad sp create-for-rbac の既定の動作では、ランダムのパスワードと共にサービス プリンシパルが作成されます。
az ad sp create-for-rbac --name myServicePrincipalName \
--role reader \
--scopes /subscriptions/mySubscriptionId/resourceGroups/myResourceGroupName
出力コンソール:
{
"appId": "myServicePrincipalId",
"displayName": "myServicePrincipalName",
"password": "myServicePrincipalPassword",
"tenant": "myOrganizationTenantId"
}
パスワード認証によるサービス プリンシパルの出力には、password
キーが含まれます。 この値は必ずコピーしてください。 取得することはできません。 パスワードを紛失した場合は、サービス プリンシパルの資格情報をリセットします。
パスワードを使用してサービス プリンシパルでサインインする
サインインして、新しいサービス プリンシパルの資格情報とアクセス許可をテストします。 サービス プリンシパルでサインインするには、appId
("サービス プリンシパル ID"、"ユーザー名" や "担当者" とも呼ばれます)、tenant
、password
が必要です。 次に例を示します。
az login --service-principal \
--username myServicePrincipalId \
--password myServicePrincipalPassword \
--tenant myOrganizationTenantID
appId
や --tenant
がわからない場合、az ad sp list
コマンドを使用して取得します。
spID=$(az ad sp list --display-name myServicePrincipalName --query "[].{spID:appId}" --output tsv)
tenantID=$(az ad sp list --display-name myServicePrincipalName --query "[].{tenant:appOwnerOrganizationId}" --output tsv)
echo "Using appId $spID in tenant $tenantID"
az login --service-principal \
--username $spID \
--password {paste your password here} \
--tenant $tenantID
2 要素認証を必要とする組織でテストしている場合、エラー メッセージ "...対話式の認証が必要です..." が表示されます。 代わりに、証明書またはマネージド ID を使用してください。
重要
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>
次のステップ
パスワードを使用してサービス プリンシパルを操作する方法がわかったので、次のステップに進み、証明書ベースの認証でサービス プリンシパルを使用する方法を理解してください。
Azure CLI