Pide tu presupuesto ya!

Cómo crear una entidad de servicio de Azure con certificados (PowerShell)

Cuando se trabaja con Azure, es esencial autenticar las entidades de servicio de forma segura. Si bien los secretos del cliente se utilizan habitualmente, los certificados ofrecen una opción más segura. En esta guía, explicaremos cómo crear y usar un certificado autofirmado para autenticar una entidad de servicio en Azure.

Paso 1: cambiar a la cuenta de administrador

Antes de comenzar, asegúrese de haber iniciado sesión con las credenciales de administrador adecuadas:

Disconnect-AzAccount
Connect-AzAccount

Esto garantiza que esté operando como administrador global en Entra ID.

Paso 2: crear un certificado autofirmado

A continuación, en lugar de utilizar un secreto de cliente, crearemos un certificado autofirmado. En PowerShell, use el comando `New-SelfSignedCertificate` para generarlo:

$cert = New-SelfSignedCertificate -DnsName AzureVMManagement -CertStoreLocation cert:\CurrentUser\My

Este comando crea un certificado denominado “AzureVMManagement” y lo almacena en el almacén de certificados del usuario.

Paso 3: Exportar la clave privada

Para vincular el certificado a la aplicación de Azure, debe exportar la clave privada:

$secPassword = ConvertTo-SecureString -String "P@ss0word!" -Force -AsPlainText
Export-PfxCertificate -Cert $cert -FilePath C:\VMManagementAppPrivateKey.pfx -Password $secPassword

Aquí, la clave privada se protege con una contraseña y se exporta a un archivo `.pfx`.

Paso 4: Importar el certificado

Ahora que se exporta el certificado, es necesario volver a importarlo como una matriz binaria codificada en base 64 para Azure:

$PfxCertificate = Get-PfxCertificate -FilePath C:\VMManagementAppPrivateKey.pfx -Password $secPassword
$keyValue = [System.Convert]::ToBase64String($PfxCertificate.GetRawCertData())

Esto convierte los datos del certificado a un formato adecuado para los requisitos de Azure.

Paso 5: Agregar el certificado a la solicitud

Busque su aplicación por nombre y agregue el certificado:

$app = Get-AzADApplication -DisplayName VMManagement
New-AzADAppCredential -ApplicationId $app.AppId -CertValue $keyValue -StartDate $PfxCertificate.NotBefore -EndDate $PfxCertificate.NotAfter

Este comando adjunta el certificado base 64 a la aplicación de Azure con fechas de inicio y finalización válidas.

Paso 6: eliminar certificados antiguos

Si hay certificados antiguos en la aplicación, límpielos:

$oldCerts = (Get-AzADApplication -DisplayName VMManagement).KeyCredentials | sort enddatetime | select -SkipLast 1
$oldCerts | foreach { remove-AzADAppCredential -ApplicationId $app.AppId -KeyId $_.KeyId }

Esto elimina todos los certificados excepto el más reciente, lo que garantiza que solo quede el activo.

Paso 7: Autenticar con el nuevo certificado

Finalmente, pruebe la autenticación utilizando el certificado recién creado:

Connect-AzAccount -ServicePrincipal -CertificateThumbprint $PfxCertificate.Thumbprint -ApplicationId $app.AppId -TenantId (Get-AzContext).Tenant.TenantId

Si todo está configurado correctamente, esto le permitirá autenticarse en Azure utilizando la entidad de servicio y el nuevo certificado.

Paso 8: Probar los permisos

Pruebe si los permisos de la entidad de servicio están intactos:

Debería poder administrar máquinas virtuales. Para realizar más pruebas, intente una acción no permitida:

Esto debería bloquearse si los permisos están configurados correctamente.

Paso 9: Eliminar el certificado

Para ver qué sucede si se elimina el certificado:

$cert | Remove-Item
Connect-AzAccount -ServicePrincipal -CertificateThumbprint $PfxCertificate.Thumbprint -ApplicationId $app.AppId -TenantId (Get-AzContext).Tenant.TenantId

Sin el certificado, la autenticación fallará, ya que Azure requiere el certificado para establecer confianza.

Asegúrese siempre de que los certificados se almacenen de forma segura para evitar problemas de autenticación.

Written by

Leave a comment