Desde hace días podemos ver en Azure un anuncio como este:
Viene a decir que antes del 30 de septiembre de 2023 debemos usar exclusivamente identidades administradas en nuestra cuenta de automatización. Hoy, 8 de marzo, quedan exactamente 206 días para esa fecha, por lo que ahora es el momento de hacer ese cambio.
Es por ello que os voy a explicar cómo se activa la identidad administrada en una cuenta de automatización y vamos a ver un ejemplo de uso con un script en PowerShell.
Lo primero que debemos hacer es activar la identidad administrada en la cuenta de automatización. Esto creará una identidad, UNA, con el nombre de la cuenta de automatización, y podremos asignarla al recurso que queramos que tenga acceso, con los permisos pertinentes (siempre los más acotados posibles).
Si creamos una cuenta de automatización nueva, podemos activarla en el proceso de creación:
En caso de que ya tengamos creada la cuenta de automatización y no tengamos activada la identidad administrada:
Con eso ya tenemos creada la identidad administrada.
Ahora debemos asignar la identidad al recurso al que queramos acceder desde la cuenta de automatización.
Para los ejemplos posteriores necesitamos otorgar permisos a la suscripción, entonces, otorgamos acceso de lectura a la identidad sobre la suscripción:
Con esto ya hemos asignado permiso de lectura a la identidad de la cuenta de automatización sobre la suscripción. O, dicho con otras palabras, los scripts que ejecutemos en esta cuenta de automatización tendrán permiso de lectura sobre la suscripción, sus recursos, etc.
Con esto, ya tendríamos la identidad creada y configurada.
Como “regalo” de bienvenida, al crear la cuenta de automatización, Azure nos crea un script en PowerShell para probar el acceso con la identidad.
<#
.DESCRIPTION
An example runbook which gets all the ARM resources using the Managed Identity
.NOTES
AUTHOR: Azure Automation Team
LASTEDIT: Oct 26, 2021
#>
"Please enable appropriate RBAC permissions to the system identity of this automation account. Otherwise, the runbook may fail..."
try
{
"Logging in to Azure..."
Connect-AzAccount -Identity
}
catch {
Write-Error -Message $_.Exception
throw $_.Exception
}
#Get all ARM resources from all resource groups
$ResourceGroups = Get-AzResourceGroup
foreach ($ResourceGroup in $ResourceGroups)
{
Write-Output ("Showing resources in resource group " + $ResourceGroup.ResourceGroupName)
$Resources = Get-AzResource -ResourceGroupName $ResourceGroup.ResourceGroupName
foreach ($Resource in $Resources)
{
Write-Output ($Resource.Name + " of type " + $Resource.ResourceType)
}
Write-Output ("")
}
Este script nos listará todos los recursos de la suscripción, por lo que requiere permiso sobre la suscripción para poder ejecutarse, como ya hemos hecho anteriormente.
Ahora, al ejecutar el script, obtenemos la siguiente salida:
Vemos que se ha ejecutado bien, listando todos los recursos en la suscripción.
Todo esto que hemos hecho a mano podemos escribirlo como código con Terraform.
resource "azurerm_automation_account" "automationaccount" {
name = "aatest"
location = "West Europe"
resource_group_name = "rgtest"
sku_name = "Basic"
identity {
type = "SystemAssigned"
}
}
data "azurerm_subscription" "current" {
}
resource "azurerm_role_assignment" "automationaccount" {
scope = data.azurerm_subscription.current.id
role_definition_name = "Reader"
principal_id = azurerm_automation_account.automationaccount.identity[0].principal_id
}
Vemos en destacado las líneas donde se indica que queremos que se active la identidad administrada. En las líneas posteriores vemos la obtención del ID de la suscripción y, para terminar, la asignación del rol “Reader” a la identidad de la cuenta de automatización sobre la suscripción.
Espero que os sea de utilidad, y ¡no dejéis pasar el tiempo! Que 206 días son… ¡mañana!
Si continúas navegando consideramos que aceptas la política del sitio. Más información X Cerrar