Pide tu presupuesto ya!
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.
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.
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.
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`.
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.
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.
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.
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.
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.
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.
Leave a comment