Partilhar via


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 login que 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 um principal de serviço contendo uma senha

O comportamento padrão de az ad sp create-for-rbac é criar um principal do 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 por palavra-passe inclui a chave password. Certifique-se de copiar esse valor - ele não pode ser recuperado. Caso percas a palavra-passe, redefine as credenciais do principal de serviço.

Entrar com um serviço principal utilizando uma password

Teste as credenciais e permissões do novo principal de serviço ao iniciar sessão. Para iniciar sessão com uma entidade de serviço, precisa do appId (também conhecido como "ID da entidade de serviço", "nome de utilizador" ou "cessionário"), tenant e password. Aqui está um exemplo:

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

Se não souberes o teu appId ou --tenant, podes recuperá-lo 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 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, utilize 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, prossiga para a próxima etapa para saber como usar entidades de serviço com autenticação baseada em certificado.