Utilize autenticação apenas por aplicação

Neste artigo, aprende como autenticar aplicações de forma segura para automatizar tarefas usando o módulo PowerShell da Microsoft Entra. Abrange autenticação baseada em certificados, credenciais secretas de clientes e identidades geridas.

Este conhecimento permite um acesso eficiente e seguro aos recursos do Microsoft Entra e Azure sem gerir manualmente credenciais sensíveis. É crucial para manter práticas de segurança robustas e simplificar a gestão de acessos em ambientes cloud.

Important

O acesso apenas por aplicação concede permissões diretamente a uma aplicação e exige que um administrador consinta com os escopos de permissões exigidos. Para mais informações sobre acesso apenas por aplicações, consulte plataforma de identidades da Microsoft e o fluxo de credenciais do cliente OAuth 2.0.

Pré-requisitos

Para usar o acesso apenas por aplicação com o módulo PowerShell Microsoft Entra, precisa de:

Utilizar autenticação baseada em certificado

Deve ter esta informação para autenticar usando um certificado.

  • Sujeito do certificado ou impressão digital do certificado carregado no registo da aplicação Microsoft Entra.
  • ID da aplicação para o registo da sua aplicação. Se ainda não tiver registo de uma aplicação, veja Criar uma aplicação personalizada.
  • O ID do inquilino.

Nesta secção, aprende a usar um certificado para autenticar com o módulo PowerShell da Microsoft Entra. Pode usar a impressão digital do certificado, o nome do certificado ou o próprio certificado para autenticar. Para se autenticar com os exemplos fornecidos, precisa de iniciar sessão com, pelo menos, a função Administrador de Funções Privilegiadas.

Usar a impressão digital do certificado

$params = @{
    ClientId = 'YOUR_APP_ID'
    TenantId = 'YOUR_TENANT_ID'
    CertificateThumbprint = 'YOUR_CERT_THUMBPRINT'
}

Connect-Entra @params

Para encontrar a impressão digital do certificado no centro de administração Microsoft Entra, navegue até Identity>Registos de aplicações>Certificates & secrets>Certificates. Selecione o certificado e copie a sua impressão digital.

Em alternativa, pode usar o seguinte comando PowerShell para obter o seu certificado auto-assinado:

Get-ChildItem Cert:\CurrentUser\My

Usar o nome do certificado

$params = @{
    ClientId = 'YOUR_APP_ID'
    TenantId = 'YOUR_TENANT_ID'
    CertificateName = 'YOUR_CERT_SUBJECT'
}

Connect-Entra @params

Pode encontrar o assunto do certificado executando o comando:

Get-ChildItem Cert:\CurrentUser\My\$CertThumbprint | Select Subject

Use um certificado

$cert = Get-ChildItem Cert:\CurrentUser\My\$CertThumbprint
Connect-Entra -ClientId 'YOUR_APP_ID' -TenantId 'YOUR_TENANT_ID' -Certificate $cert

Para usar um certificado armazenado na loja de certificados da sua máquina ou noutro local ao ligar-se ao Microsoft Entra PowerShell, especifique a localização do certificado.

Se a autenticação for bem-sucedida, verá a mensagem Welcome To Microsoft Graph!. Executa o Get-EntraContext para confirmar que estás autenticado apenas com o método da aplicação. A saída deve ser semelhante à seguinte.

ClientId              : YOUR_APP_ID
TenantId              : YOUR_TENANT_ID
CertificateThumbprint :
Scopes                : {Group.Read.All, User.Read.All}
AuthType              : AppOnly
CertificateName       : YOUR_CERT_SUBJECT
Account               :
AppName               : {Your Awesome Application Name Here}
ContextScope          : Process
Environment           : Global

Usar credenciais secretas de cliente

A concessão de credenciais do cliente é usada para autenticar e autorizar a aplicação a aceder a recursos em seu próprio nome. O suporte para credenciais secretas de cliente é adicionado ao adicionar o parâmetro -ClientSecretCredential ao Connect-Entra.

# Define the Application (Client) ID and Secret
$applicationClientId = '<application(client)ID>' # Application (Client) ID
$applicationClientSecret = '<secret.value>' # Application Secret Value
$tenantId = 'Tenant_Id' # Tenant ID

# Convert the Client Secret to a Secure String
$secureClientSecret = ConvertTo-SecureString -String $applicationClientSecret -AsPlainText -Force

# Create a PSCredential Object Using the Client ID and Secure Client Secret
$clientSecretCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $applicationClientId, $secureClientSecret

# Connect to Microsoft Graph Using the Tenant ID and Client Secret Credential
Connect-Entra -TenantId $tenantId -ClientSecretCredential $clientSecretCredential

Para criar ou adicionar um segredo cliente, utilize o comando New-EntraServicePrincipalPasswordCredential ou veja: Adicionar um segredo cliente no centro de administração Microsoft Entra.

Note

Recomenda-se usar o PowerShell 7 ou superior ao usar o método de autenticação de credenciais secretas do cliente.

Utilizar a identidade gerida

Um desafio comum ao escrever scripts de automação é a gestão de segredos, credenciais, certificados e chaves usados para garantir a comunicação entre serviços. Elimine a necessidade de gerir credenciais permitindo que o módulo obtenha tokens de acesso para recursos do Azure protegidos pelo Microsoft Entra ID. A plataforma Azure gere a identidade e não exige que cries ou rodes segredos.

  • Identidade gerida atribuída pelo sistema - Utiliza uma identidade gerida automaticamente numa instância de serviço. A identidade está ligada ao ciclo de vida de uma instância de serviço.

    Connect-Entra -Identity
    
  • Identidade gerida atribuída pelo utilizador - Utiliza uma identidade gerida criada pelo utilizador como recurso Azure autónomo.

    Connect-Entra -Identity -ClientId 'User_Assigned_Managed_identity_Client_Id'