Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Uma identidade gerida no Azure oferece uma forma segura e fluida para que aplicações, serviços e ferramentas de automação acedam aos recursos do Azure sem armazenar credenciais em código ou configuração. Ao contrário das entidades de serviço, que requerem a gestão manual de credenciais, o Azure gerencia automaticamente identidades geridas e não expõe segredos sensíveis. O uso de uma identidade gerenciada é a prática recomendada para escrever scripts de automação seguros porque simplifica a autenticação e minimiza o risco de vazamentos de credenciais. As identidades gerenciadas também ajudam a automatizar tarefas de gerenciamento com segurança, sem depender das identidades dos usuários. As permissões para identidades geridas são geridas através da Microsoft Entra, garantindo que têm apenas o acesso necessário aos recursos, reforçando tanto a segurança como a manutenção.
Importante
A partir de setembro de 2025, o Azure PowerShell irá exigir autenticação multifator (MFA) ao iniciar sessão com uma identidade de utilizador do Microsoft Entra ID. Essa alteração aumenta a segurança, mas pode afetar fluxos de trabalho de automação que dependem da autenticação de nome de usuário e senha. Para mais informações, consulte O impacto da autenticação multifatorial na Azure PowerShell em cenários de automação.
Pré-requisitos
- Instale a versão mais recente do módulo Az PowerShell.
Login com uma identidade gerenciada
As identidades geridas são um tipo especial de principal de serviço que fornecem aos serviços Azure uma identidade gerida automaticamente. Usar este tipo de identidade não requer armazenar credenciais na configuração ou código para autenticar em qualquer serviço Azure que suporte identidades geridas.
Existem dois tipos de identidades gerenciadas:
- Identidade gerenciada atribuída pelo sistema
- Identidade gerenciada atribuída pelo usuário
As identidades geridas proporcionam uma forma segura de comunicar com outros serviços do Azure sem que os programadores precisem de gerir credenciais. Eles também ajudam a mitigar o risco de vazamentos de credenciais.
Veja como as identidades gerenciadas funcionam em cenários do mundo real:
- O Azure gere automaticamente a criação e eliminação das credenciais usadas pela identidade gerida.
- Um serviço Azure habilitado com uma identidade gerida pode aceder de forma segura a outros serviços, como Azure Key Vault, Azure SQL Database, Azure Blob Storage, etc., usando tokens Microsoft Entra.
- Esta identidade é gerida diretamente no Azure sem necessidade de provisionamento adicional.
As identidades gerenciadas simplificam o modelo de segurança, evitando a necessidade de armazenar e gerenciar credenciais, e desempenham um papel crucial nas operações seguras na nuvem, reduzindo o risco associado ao tratamento de segredos.
Identidade gerenciada atribuída pelo sistema
O Azure cria automaticamente uma identidade gerida atribuída pelo sistema para uma instância de serviço do Azure (como uma VM do Azure, App Service ou Azure Functions). Quando a instância do serviço é eliminada, o Azure limpa automaticamente as credenciais e a identidade associadas ao serviço.
O exemplo a seguir se conecta usando uma identidade gerenciada atribuída pelo sistema do ambiente host. Se executado em uma máquina virtual com uma identidade gerenciada atribuída, ele permite que o código entre usando a identidade atribuída.
Connect-AzAccount -Identity
Identidade gerenciada atribuída pelo usuário
Uma identidade gerida atribuída pelo utilizador é uma identidade que cria e gere no Microsoft Entra. Pode ser atribuído a uma ou mais instâncias de serviço do Azure. O ciclo de vida de uma identidade gerenciada atribuída pelo usuário é gerenciado separadamente das instâncias de serviço às quais é atribuída.
Ao usar uma identidade gerenciada atribuída pelo usuário, você deve especificar os parâmetros AccountId e Identity , conforme mostrado no exemplo a seguir.
Connect-AzAccount -Identity -AccountId <user-assigned-identity-clientId-or-resourceId>
Os comandos a seguir se conectam usando a identidade gerenciada do . Ele adiciona a identidade atribuída pelo usuário à máquina virtual e, em seguida, se conecta usando o ClientId da identidade atribuída pelo usuário.
$identity = Get-AzUserAssignedIdentity -ResourceGroupName myResourceGroup -Name myUserAssignedIdentity
Get-AzVM -ResourceGroupName contoso -Name testvm | Update-AzVM -IdentityType UserAssigned -IdentityId $identity.Id
Connect-AzAccount -Identity -AccountId $identity.ClientId # Run on the virtual machine
Account SubscriptionName TenantId Environment
------- ---------------- -------- -----------
00000000-0000-0000-0000-000000000000 My Subscription 00000000-0000-0000-0000-000000000000 AzureCloud
Para mais informações, veja Configurar identidades geridas para recursos do Azure em uma VM Azure.
Iniciar sessão com uma entidade de serviço
Para iniciar sessão com um service principal, utilize o parâmetro ServicePrincipal do cmdlet. Você também precisará das seguintes informações para o principal de serviço:
- AppId
- Credenciais de entrada ou acesso ao certificado usado para criar o principal de serviço
- ID do inquilino
A forma como você entra com uma entidade de serviço depende se ela está configurada para autenticação baseada em certificado ou em senha.
Autenticação baseada em certificado
Para aprender a criar um princípio de serviço para Azure PowerShell, consulte Crie um princípio de serviço Azure com Azure PowerShell.
A autenticação baseada em certificados exige que o Azure PowerShell recupere informações de uma loja local de certificados com base numa impressão digital do certificado.
Connect-AzAccount -ApplicationId $appId -Tenant $tenantId -CertificateThumbprint <thumbprint>
Ao usar uma entidade de serviço em vez de um aplicativo registrado, especifique o parâmetro ServicePrincipal e forneça o AppId da entidade de serviço como o valor para o parâmetro ApplicationId .
Connect-AzAccount -ServicePrincipal -ApplicationId $servicePrincipalId -Tenant $tenantId -CertificateThumbprint <thumbprint>
No Windows PowerShell 5.1, a loja de certificados pode ser gerida e inspecionada com o módulo PKI. Para o PowerShell 7.x e posterior, o processo é diferente. Os scripts a seguir demonstram como importar um certificado existente para o armazenamento de certificados acessível pelo PowerShell.
Importar um certificado no PowerShell 7.x e posterior
# Import a PFX
$storeName = [System.Security.Cryptography.X509Certificates.StoreName]::My
$storeLocation = [System.Security.Cryptography.X509Certificates.StoreLocation]::CurrentUser
$store = [System.Security.Cryptography.X509Certificates.X509Store]::new($storeName, $storeLocation)
$certPath = <path to certificate>
$credentials = Get-Credential -Message "Provide PFX private key password"
$flag = [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable
$certificate = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($certPath, $credentials.Password, $flag)
$store.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadWrite)
$store.Add($Certificate)
$store.Close()
Importar um certificado no Windows PowerShell 5.1
# Import a PFX
$credentials = Get-Credential -Message 'Provide PFX private key password'
Import-PfxCertificate -FilePath <path to certificate> -Password $credentials.Password -CertStoreLocation cert:\CurrentUser\My
Autenticação baseada em palavra-passe
Crie uma entidade de serviço para usar com os exemplos desta seção. Para mais informações sobre a criação de princípios de serviço, consulte Crie um princípio de serviço Azure com Azure PowerShell.
$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName
Atenção
O segredo principal do serviço fornecido é armazenado no ficheiro AzureRmContext.json no seu perfil de utilizador ($env:USERPROFILE\.Azure). Verifique se este diretório tem proteções apropriadas.
Para obter as credenciais da entidade de serviço na forma de um objeto, utilize o cmdlet. Este cmdlet solicita um nome de usuário e uma senha. Utilize o principal de serviço para o nome de utilizador e converta-o em texto simples para a palavra-passe.
# Retrieve the plain text password for use with Get-Credential in the next command.
$sp.PasswordCredentials.SecretText
$pscredential = Get-Credential -UserName $sp.AppId
Connect-AzAccount -ServicePrincipal -Credential $pscredential -Tenant $tenantId
Para cenários de automação, é necessário criar credenciais a partir de um principal de serviço e:
$SecureStringPwd = $sp.PasswordCredentials.SecretText | ConvertTo-SecureString -AsPlainText -Force
$pscredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $sp.AppId, $SecureStringPwd
Connect-AzAccount -ServicePrincipal -Credential $pscredential -Tenant $tenantId
Use práticas apropriadas de armazenamento de palavras-passe ao automatizar as conexões de principal de serviço.
Consulte também
- Crie um principal de serviço do Azure com o Azure PowerShell
- O que são identidades geridas para Azure recursos?
- Atribuir um acesso de identidade gerenciado a um recurso usando o PowerShell
- Exibir a entidade de serviço de uma identidade gerenciada usando o PowerShell
- Connect-AzAccount
- Novo-AzADServicePrincipal
- Get-Credential
Azure PowerShell