Azure Automation Identities

Usa identidades administradas desde ya

Adrian Ramos
Publicado el 8 de marzo de 2023

Desde hace días podemos ver en Azure un anuncio como este:

Anuncio en Azure que indica lo siguiente: Azure Automation Run As Account will retire on September 30, 2023 and will be replaced with Managed Identities. Before September 30, 2023, you need to start migrating your runbooks to use managed identities. For more information, see migrating from an existing Run As accounts to managed identity.

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.

Activación de la identidad administrada

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:

Captura de pantalla de la creación de la cuenta de automatización

En caso de que ya tengamos creada la cuenta de automatización y no tengamos activada la identidad administrada:

Captura de pantalla de la cuenta de automatización, en el menú de identidades administradas

Con eso ya tenemos creada la identidad administrada.

Asignación de 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:

Captura donde vemos la suscripción y el menú de control de acceso

Captura donde vemos el resumen de la asignación del permiso

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.

Script en PowerShell

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:

Captura donde vemos la ejecución del script

Vemos que se ha ejecutado bien, listando todos los recursos en la suscripción.

Terraform

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