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

Ao criar uma entidade de serviço, você pode escolher o tipo de autenticação de entrada usada. Há dois tipos de autenticação disponíveis para as entidades de serviço do Azure: a autenticação baseada em senha e a autenticação baseada em certificado. A autenticação baseada em senha é ideal para usar ao aprender sobre entidades de serviço, mas recomendamos usar a autenticação baseada em certificado para aplicativos.

Essa etapa do 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 do 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 a autenticação por senha inclui a chave password. Verifique se você copiou esse valor, ele não poderá ser recuperado. Se você perder a senha, redefina as credenciais da entidade de serviço.

Entrar com uma entidade de serviço usando uma senha

Teste as novas credenciais e permissões da entidade de serviço iniciando a sessão. Para entrar com uma entidade de serviço, você precisa da appId (também conhecida como "ID da entidade de serviço", "nome de usuário" ou "destinatário"), tenant e password. Veja um exemplo:

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

Se você não souber o seu appId ou --tenant, recupere-o usando o comando 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

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

Importante

Caso deseje evitar a exibição de sua senha no console e esteja usando az login interativamente, use o comando read -s 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 cmdlet Get-Credential.

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

Próximas etapas

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