Pide tu presupuesto ya!
En esta publicación de blog, aprenderá cómo crear una entidad de servicio de Azure mediante PowerShell, que es esencial para automatizar tareas y administrar recursos de forma segura en Azure. Recorreremos el proceso de creación de una aplicación Azure Active Directory (AD), generando un secreto de cliente y asignando los permisos necesarios para administrar máquinas virtuales (VM). Este método permite que las aplicaciones se autentiquen e interactúen de forma segura con los recursos de Azure.
Comience instalando el módulo necesario, `Az.Resources`, que contiene los cmdlets necesarios para administrar los recursos de Azure, incluida la creación y administración de aplicaciones y entidades de servicio de Azure AD.
Install-Module -Name Az.Resources
Ahora, cree una aplicación de Azure AD, que actúa como identidad para administrar los recursos de Azure. Aquí, creamos una aplicación llamada “VMManagement” que se utilizará para administrar máquinas virtuales.
$vmManagementApp = New-AzADApplication -DisplayName VMManagement
Después de crear la aplicación de Azure AD, genere una entidad de servicio. Esta principal nos permite administrar recursos en Azure usando la identidad de la aplicación.
$sp = New-AzADServicePrincipal -ApplicationId $vmManagementApp.AppId
Ahora necesitamos crear un secreto de cliente que la entidad de servicio utilizará para la autenticación. Este secreto se genera y almacena de forma segura.
$clientSecret = New-AzADAppCredential -ObjectId $vmManagementApp.Id
$clientSecret.SecretText | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File -FilePath C:\AzureAppPassword.txt
Este comando crea un secreto de cliente para la aplicación y lo guarda en un formato cifrado en un archivo. Este archivo se utilizará más adelante para autenticar la aplicación.
El siguiente paso es asignar las funciones necesarias a la entidad de servicio. En este caso, otorgamos el rol de “Colaborador de máquina virtual”, lo que permite que la entidad de servicio administre las máquinas virtuales.
$subscriptionId = (Get-AzSubscription).Id
New-AzRoleAssignment -ObjectId $sp.Id -RoleDefinitionName "Virtual Machine Contributor" -Scope "/subscriptions/$subscriptionId"
Esto otorga a la entidad de servicio permisos para administrar máquinas virtuales en la suscripción especificada.
Para probar la autenticación, utilice el secreto del cliente almacenado anteriormente para iniciar sesión con la entidad de servicio.
$pass = (Get-Content -Path 'C:\AzureAppPassword.txt' | ConvertTo-SecureString)
$azureAppCred = New-Object System.Management.Automation.PSCredential($vmManagementApp.AppId, $pass)
$subscription = Get-AzSubscription
Connect-AzAccount -ServicePrincipal -SubscriptionId $subscription.Id -TenantId $subscription.TenantId -Credential $azureAppCred
Este comando autentica la entidad de servicio mediante el ID de la aplicación y la contraseña segura.
Ahora que se ha autenticado, pruebe la autenticación recuperando una lista de máquinas virtuales en la suscripción.
Si tiene éxito, el comando devolverá una lista de máquinas virtuales, confirmando que la entidad de servicio está funcionando como se esperaba.
Por seguridad, es esencial rotar periódicamente los secretos de los clientes. El siguiente script automatiza este proceso, generando un nuevo secreto de cliente y eliminando el antiguo.
[CmdletBinding()]
param(
[Parameter(Mandatory)]
[string]$AdApplicationName,
[Parameter()]
[string]$OutputFilePath = "C:\NewAzureAppPassword.txt"
)
$adApp = Get-AzADApplication -DisplayName $AdApplicationName
$sp = Get-AzADServicePrincipal -ApplicationId $adApp.AppId
$newClientSecret = New-AzADAppCredential -ObjectId $adApp.Id
$newClientSecret.SecretText | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File -FilePath $OutputFilePath
$oldClientSecret = (Get-AzADApplication -DisplayName $AdApplicationName).PasswordCredentials | Sort-Object StartDateTime | select -First 1
Remove-AzADAppCredential -ApplicationId $adApp.AppId -KeyId $oldClientSecret.KeyId
Este script rota el secreto del cliente, genera uno nuevo y lo guarda de forma segura en un archivo.
Al seguir estos pasos, creó correctamente una entidad de servicio, le otorgó los permisos necesarios, se autenticó mediante el secreto del cliente y la probó. Además, implementó un proceso para rotar los secretos del cliente periódicamente, mejorando la seguridad de sus aplicaciones de Azure. Esta configuración garantiza que sus scripts de automatización puedan acceder y administrar de forma segura los recursos de Azure sin intervención manual.
Leave a comment