Usar autenticación solo para aplicaciones

En este artículo, aprenderá a autenticar aplicaciones de forma segura para automatizar tareas mediante el módulo de PowerShell de Microsoft Entra. Abarca la autenticación basada en certificados, las credenciales de secreto de cliente y las identidades administradas.

Este conocimiento permite un acceso eficaz y seguro a los recursos de Microsoft Entra y Azure sin administrar manualmente las credenciales confidenciales. Es fundamental para mantener prácticas de seguridad sólidas y optimizar la administración del acceso en entornos en la nube.

Importante

El acceso de solo aplicación concede permisos directamente a una aplicación y requiere que un administrador dé su consentimiento a los ámbitos de permisos necesarios. Para obtener más información sobre el acceso solo a la aplicación, consulte Plataforma de identidad de Microsoft y el flujo de credenciales de cliente de OAuth 2.0.

Prerequisites

Para usar el acceso de solo aplicación con el módulo de PowerShell de Microsoft Entra, necesita lo siguiente:

Uso de la autenticación basada en certificados

Debe tener esta información para autenticarse mediante un certificado.

  • Sujeto del certificado o huella digital del certificado cargado en el registro de tu aplicación de Microsoft Entra.
  • Id. de aplicación para el registro de la aplicación. Si aún no tiene un registro de aplicación, consulte Creación de una aplicación personalizada.
  • El identificador de inquilino.

En esta sección, aprenderá a usar un certificado para autenticarse con el módulo de PowerShell de Microsoft Entra. Puede usar la huella digital del certificado, el nombre del certificado o el propio certificado para autenticarse. Para autenticarse con los ejemplos especificados, debe iniciar sesión con al menos un rol de administrador de roles con privilegios .

Usar huella digital del certificado

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

Connect-Entra @params

Para buscar la huella digital del certificado en el Centro de administración Microsoft Entra, vaya a Identidad>Registros de aplicaciones>Certificates y secretos>Certificados. Seleccione el certificado y copie su huella digital.

Como alternativa, puede usar el siguiente comando de PowerShell para obtener el certificado autofirmado:

Get-ChildItem Cert:\CurrentUser\My

Usar nombre del certificado

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

Connect-Entra @params

Para encontrar el firmante del certificado, ejecute el comando :

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

Uso de un certificado

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

Para usar un certificado almacenado en el almacén de certificados de la máquina u otra ubicación al conectarse a Microsoft Entra PowerShell, especifique la ubicación del certificado.

Si la autenticación se realiza correctamente, verá el mensaje Welcome To Microsoft Graph!. Ejecute Get-EntraContext para verificar que está autenticado con el método de autenticación de solo aplicación. La salida debe tener un aspecto similar al siguiente.

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

Uso de credenciales de secreto de cliente

La concesión de credenciales de cliente se usa para autenticar y autorizar a la aplicación a acceder a los recursos en su propio nombre. Se agrega compatibilidad con las credenciales de secreto de cliente agregando el parámetro -ClientSecretCredential a 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 crear o agregar un secreto de cliente, use el comando New-EntraServicePrincipalPasswordCredential o vea: Agregar un secreto de cliente en Centro de administración Microsoft Entra.

Note

Se recomienda usar PowerShell 7 o superior al usar el método de autenticación de credenciales de secreto de cliente.

Uso de identidad administrada

Un desafío común al escribir scripts de automatización es la administración de secretos, credenciales, certificados y claves que se usan para proteger la comunicación entre servicios. Elimine la necesidad de administrar credenciales al permitir que el módulo obtenga tokens de acceso para Azure recursos protegidos por Microsoft Entra ID. La plataforma Azure administra la identidad y no requiere que cree ni rote secretos.

  • Identidad administrada asignada por el sistema : usa una identidad administrada automáticamente en una instancia de servicio. La identidad está vinculada al ciclo de vida de una instancia de servicio.

    Connect-Entra -Identity
    
  • Identidad administrada asignada por el usuario: usa una identidad administrada creada por el usuario como un recurso de Azure independiente.

    Connect-Entra -Identity -ClientId 'User_Assigned_Managed_identity_Client_Id'