Usar autenticação somente de aplicativo

Neste artigo, você aprenderá a autenticar aplicativos com segurança para automatizar tarefas usando o módulo Microsoft Entra PowerShell. Ele abrange autenticação baseada em certificado, credenciais de segredo do cliente e identidades gerenciadas.

Esse conhecimento permite acesso eficiente e seguro a recursos Microsoft Entra e Azure sem gerenciar manualmente credenciais confidenciais. É crucial para manter práticas de segurança robustas e simplificar o gerenciamento de acesso em ambientes de nuvem.

Importante

O acesso somente ao aplicativo concede permissões diretamente a um aplicativo e requer que um administrador consenta com os escopos de permissão necessários. Para obter mais informações sobre o acesso somente ao aplicativo, consulte plataforma de identidade da Microsoft e o fluxo de credenciais do cliente OAuth 2.0.

Pré-requisitos

Para usar o acesso somente ao aplicativo com o módulo Microsoft Entra PowerShell, você precisa:

Usar autenticação baseada em certificado

Você deve ter essas informações para autenticar usando um certificado.

  • A entidade do certificado ou a impressão digital do certificado carregadas no registro de aplicativo do Microsoft Entra.
  • ID do aplicativo para o registro do seu aplicativo. Se você ainda não tiver um registro de aplicativo, consulte Criar um aplicativo personalizado.
  • Seu ID de locatário.

Nesta seção, você aprenderá a usar um certificado para autenticar com o módulo Microsoft Entra PowerShell. Você 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, você precisa iniciar sessão com pelo menos a função Administrador de Funções com Privilégios.

Usar 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 do Microsoft Entra, navegue até Identidade>Registros de aplicativo>Certificados e segredos>Certificados. Selecione o certificado e copie sua impressão digital.

Como alternativa, você pode usar o seguinte comando do PowerShell para obter seu certificado autoassinado:

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

Você pode encontrar o assunto do certificado executando o comando:

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

Usar 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 no repositório de certificados do computador ou em outro local ao se conectar ao Microsoft Entra PowerShell, especifique o local do certificado.

Se a autenticação for bem-sucedida, você verá a mensagem Welcome To Microsoft Graph!. Execute o comando Get-EntraContext para verificar se você está autenticado com o método somente de aplicativo. A saída deve ser como a seguir.

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 de segredo do cliente

A concessão de credenciais do cliente é usada para autenticar e autorizar o aplicativo a acessar recursos em seu próprio nome. O suporte para credenciais de segredo do cliente é adicionado adicionando 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 do cliente, use o comando New-EntraServicePrincipalPasswordCredential ou veja: Adicionar um segredo do cliente em centro de administração do Microsoft Entra.

Observação

É recomendável usar o PowerShell 7 ou superior ao usar o método de autenticação de credenciais de segredo do cliente.

Usar identidade gerenciada

Um desafio comum ao escrever scripts de automação é o gerenciamento de segredos, credenciais, certificados e chaves usadas para proteger a comunicação entre os serviços. Elimine a necessidade de gerenciar credenciais permitindo que o módulo obtenha tokens de acesso para Azure recursos protegidos por Microsoft Entra ID. A plataforma Azure gerencia a identidade e não exige que você crie nem alterne segredos.

  • Identidade gerenciada atribuída pelo sistema – usa uma identidade gerenciada automaticamente em uma instância de serviço. A identidade está vinculada ao ciclo de vida de uma instância de serviço.

    Connect-Entra -Identity
    
  • Identidade gerenciada atribuída pelo usuário – usa uma identidade gerenciada criada pelo usuário como um recurso de Azure autônomo.

    Connect-Entra -Identity -ClientId 'User_Assigned_Managed_identity_Client_Id'