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"), tenant
e 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 appId
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 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.