Compartilhar via


Usar uma credencial 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 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 usar a 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 do az ad sp create-for-rbac é criar um service principal 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 de um principal de serviço com autenticação de senha inclui a chave password. Certifique-se de copiar esse valor – ele não pode ser recuperado. Se você perder a senha, redefina as credenciais da entidade de serviço.

Faça login com um principal de serviço usando uma senha

Teste as novas credenciais e permissões da entidade de serviço iniciando a sessão. Para fazer login 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 "atribuídor"), 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 az 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 exija autenticação de dois fatores, a 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 Get-Credential cmdlet.

$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.