Usar uma entidade de serviço do Azure com autenticação baseada em senha

Quando cria um principal de serviço, escolhe o tipo de autenticação de início de sessão que o mesmo utiliza. Há dois tipos de autenticação disponíveis para entidades de serviço do Azure: autenticação baseada em senha e autenticação baseada em certificado. A autenticação baseada em senha é boa para usar ao aprender sobre entidades de serviço, mas recomendamos o uso da autenticação baseada em certificado para aplicativos.

Esta etapa no tutorial explica como usar uma senha de entidade de serviço para acessar um recurso do Azure.

Criar uma entidade de serviço contendo uma senha

O comportamento padrão de az ad sp create-for-rbac é criar uma entidade de serviço com uma senha aleatória.

az ad sp create-for-rbac --name myServicePrincipalName \
                         --role reader \
                         --scopes /subscriptions/mySubscriptionId/resourceGroups/myResourceGroupName

Console de saída:

{
  "appId": "myServicePrincipalId",
  "displayName": "myServicePrincipalName",
  "password": "myServicePrincipalPassword",
  "tenant": "myOrganizationTenantId"
}

A saída para uma entidade de serviço com autenticação de senha inclui a password chave. Certifique-se de copiar esse valor - ele não pode ser recuperado. Se perder a palavra-passe, reponha as credenciais do principal de serviço.

Entrar usando uma entidade de serviço usando uma senha

Teste as credenciais e permissões do novo principal de serviço iniciando sessão. Para entrar com uma entidade de serviço, você precisa do appId (também conhecido como "ID da entidade de serviço", "nome de usuário" ou "cessionário"), tenante password. Eis um exemplo:

az login --service-principal \
         --username myServicePrincipalId \
         --password myServicePrincipalPassword \
         --tenant myOrganizationTenantID

Se você não souber o seu ou --tenant, recupere-o usando o appIdaz ad sp list comando.

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

Se você estiver testando em uma organização que requer autenticação de dois fatores, a mensagem de erro "... A autenticação interativa é necessária..." é exibido. Como alternativa, use um certificado ou identidades gerenciadas.

Importante

Se você quiser evitar exibir sua senha no console e estiver usando az login interativamente, use o read -s comando em bash.

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

No PowerShell, use o Get-Credential cmdlet.

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

Passos Seguintes

Agora que você aprendeu a trabalhar com entidades de serviço usando uma senha, prossiga para a próxima etapa para aprender a usar entidades de serviço com autenticação baseada em certificado.