Cifrado de recursos seguros en Azure Automation

Azure Automation protege recursos como credenciales, certificados, conexiones y variables cifradas que usan varios niveles de cifrado. Esto ayuda a mejorar la seguridad de estos recursos. Además, para garantizar una mayor seguridad y privacidad para el código del cliente, los runbooks y los scripts de DSC también se cifran. El cifrado de Azure Automation sigue dos modelos, en función de la clave de nivel superior que se use para el cifrado:

  • Usando claves administradas por Microsoft
  • Uso de claves que administra

Claves administradas por Microsoft

De forma predeterminada, la cuenta de Azure Automation usa claves de cifrado administradas por Microsoft.

Cada recurso seguro se cifra y se almacena en Azure Automation con una clave única(clave de cifrado de datos) que se genera para cada cuenta de Automation. Estas claves se cifran y almacenan en Azure Automation con otra clave única que se genera para cada cuenta, denominada clave de cifrado de cuenta (AEK). Estas claves de cifrado de cuenta se cifran y almacenan en Azure Automation mediante claves administradas por Microsoft.

Claves que se administran con Key Vault

Puede administrar el cifrado de recursos seguros para su cuenta de Automation con sus propias claves. Cuando especifica una clave administrada por el cliente en el nivel de la cuenta de Automation, esa clave se usa para proteger y controlar el acceso a la clave de cifrado de cuenta para la cuenta de Automation. Esta, a su vez, se usa para cifrar y descifrar todos los recursos seguros. Las claves administradas por el cliente ofrecen más flexibilidad para crear, rotar, deshabilitar y revocar controles de acceso. También puede auditar las claves de cifrado que se usan para proteger los recursos seguros.

Use Azure Key Vault para almacenar las claves administradas por el cliente. Puede crear sus propias claves y almacenarlas en un almacén de claves, o puede usar las API de Azure Key Vault para generarlas.

La habilitación de Azure Firewall en Azure Key Vault bloquea el acceso desde runbooks de Azure Automation para ese servicio. El acceso se bloqueará incluso cuando la excepción de firewall para permitir servicios de Microsoft de confianza esté habilitada, ya que Automation no forma parte de la lista de servicios de confianza. Con un firewall habilitado, el acceso solo se puede realizar mediante una instancia de Hybrid Runbook Worker y un punto de conexión de servicio de red virtual. Sin embargo, cuando se habilita un vínculo privado de Key Vault, Azure Automation pierde el acceso a Key Vault. Incluso si habilita un vínculo privado para Hybrid Runbook Worker, solo permitirá el acceso al servicio Azure Automation, y no a Key Vault.

Para obtener más información sobre Azure Key Vault, consulte ¿Qué es Azure Key Vault?

Uso de las claves administradas por el cliente para una cuenta de Automation

Al usar el cifrado con claves administradas por el cliente para una cuenta de Automation, Azure Automation encapsula la clave de cifrado de la cuenta con la clave administrada por el cliente en el almacén de claves asociado. La habilitación de claves administradas por el cliente no afecta al rendimiento, y la cuenta se cifra con la nueva clave inmediatamente sin retraso alguno.

Las cuentas de Automation nuevas siempre se cifran mediante claves administradas por Microsoft. No es posible habilitar claves administradas por el cliente en el momento en que se crea la cuenta. Las claves administradas por el cliente se almacenan en Azure Key Vault, y el almacén de claves se debe aprovisionar con directivas de acceso que concedan permisos de clave a la identidad administrada que está asociada a la cuenta de Automation. La identidad administrada está disponible sólo después de la creación de la cuenta de automatización.

Al modificar la clave que se usa para el cifrado de recursos seguros de Azure Automation mediante la habilitación o deshabilitación de las claves administradas por el cliente, la actualización de la versión de la clave o la especificación de otra clave, el cifrado de la clave de cifrado de cuenta cambia, pero los recursos seguros de la cuenta de Azure Storage no tienen que volver a cifrarse.

Nota:

Para habilitar las claves administradas por el cliente con llamadas API REST de Azure Automation, tendrá que usar la versión de API 2020-01-13-preview.

Requisitos previos para el uso de claves administradas por el cliente en Azure Automation

Antes de habilitar las claves administradas por el cliente para una cuenta de Automation, debe asegurarse de que se cumplen los siguientes requisitos previos:

Generación y asignación de una nueva identidad asignada por el sistema para una cuenta de Automation

Para usar las claves administradas por el cliente con una cuenta de Automation, la cuenta de Automation debe autenticarse en el almacén de claves que contiene las claves administradas por el cliente. Azure Automation usa identidades administradas asignadas por el sistema para autenticar la cuenta con Azure Key Vault. Para más información sobre las identidades administradas, consulte el artículo sobre Qué son las identidades administradas para recursos de Azure.

Mediante PowerShell

Use el cmdlet Set-AzAutomationAccount de PowerShell para modificar una cuenta de Azure Automation existente. El parámetro -AssignSystemIdentity genera y asigna una nueva identidad asignada por el sistema para que la cuenta de Automation la use con otros servicios como Azure Key Vault. Para obtener más información, vea ¿Qué son las identidades administradas para recursos de Azure? y Acerca de Azure Key Vault. Ejecute el código siguiente:

# Revise variables with your actual values.
$resourceGroup = "ResourceGroupName"
$automationAccount = "AutomationAccountName"
$vaultName = "KeyVaultName"
$keyName = "KeyName"

Set-AzAutomationAccount `
    -ResourceGroupName $resourceGroup `
    -Name $automationAccount `
    -AssignSystemIdentity

La salida debe tener una apariencia similar a la siguiente:

Output from Set-AzAutomationAccount cmdlet.

Obtenga el valor PrincipalId para usarlo más adelante. Ejecute el código siguiente:

$principalID = (Get-AzAutomationAccount `
    -ResourceGroupName $resourceGroup `
    -Name $automationAccount).Identity.PrincipalId

$principalID

Uso de REST

Configure una identidad administrada asignada por el sistema para la cuenta de Automation mediante la siguiente llamada API REST:

PATCH https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-group-name/providers/Microsoft.Automation/automationAccounts/automation-account-name?api-version=2020-01-13-preview

Cuerpo de la solicitud:

{ 
 "identity": 
 { 
  "type": "SystemAssigned" 
  } 
}

La identidad asignada por el sistema para la cuenta de Automation se devuelve en una respuesta similar a la siguiente:

{
 "name": "automation-account-name",
 "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-group-name/providers/Microsoft.Automation/automationAccounts/automation-account-name",
 ..
 "identity": {
    "type": "SystemAssigned",
    "principalId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
    "tenantId": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"
 },
..
}

Configuración de la directiva de acceso de Key Vault

Una vez que se asigna una identidad administrada asignada por el sistema a la cuenta de Automation, se configura el acceso al almacén de claves que contiene las claves administradas por el cliente. Azure Automation necesita los permisos de operación Get, Recover, WrapKey y UnwrapKey para que la identidad acceda a las claves administradas por el cliente.

Mediante PowerShell

Use el cmdlet Set-AzKeyVaultAccessPolicy de PowerShell para conceder los permisos necesarios. Después, use Add-AzKeyVaultKey para crear una clave en el almacén de claves. Ejecute el código siguiente:

Set-AzKeyVaultAccessPolicy `
    -VaultName $vaultName `
    -ObjectId $principalID `
    -PermissionsToKeys Get, Recover, UnwrapKey, WrapKey

Add-AzKeyVaultKey `
    -VaultName $vaultName `
    -Name $keyName `
    -Destination 'Software'

La salida debe tener una apariencia similar a la siguiente:

Output from Add-AzKeyVaultKey cmdlet.

Uso de REST

La directiva de acceso se puede establecer mediante la siguiente llamada API REST:

PUT https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sample-group/providers/Microsoft.KeyVault/vaults/sample-vault/accessPolicies/add?api-version=2018-02-14

Cuerpo de la solicitud:

{
  "properties": {
    "accessPolicies": [
      {
        "tenantId": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
        "objectId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
        "permissions": {
          "keys": [
            "get",
            "recover",
            "wrapKey",
            "unwrapKey"
          ],
          "secrets": [],
          "certificates": []
        }
      }
    ]
  }
}

Nota:

Se deben proporcionar los campos tenantId y objectId con valores de identity.tenantId y identity.principalId respectivamente de la respuesta de la identidad administrada para la cuenta de Automation.

Nueva configuración de la cuenta de Automation para usar la clave administrada por el cliente

Si quiere cambiar la cuenta de Automation de claves administradas por Microsoft a claves administradas por el cliente, puede hacerlo mediante Azure PowerShell o con una plantilla de Azure Resource Manager.

Mediante PowerShell

Use el cmdlet Set-AzAutomationAccount de PowerShell para volver a configurar la cuenta de Automation para que use claves administradas por el cliente.

$vaultURI = (Get-AzKeyVault -VaultName $vaultName).VaultUri
$keyVersion = (Get-AzKeyVaultKey -VaultName $vaultName -KeyName $keyName).Version

Set-AzAutomationAccount `
    -ResourceGroupName $resourceGroup `
    -Name $automationAccount `
    -AssignSystemIdentity `
    -KeyName $keyName `
    -KeyVaultUri $vaultURI `
    -KeyVersion $keyVersion `
    -KeyVaultEncryption 

Puede comprobar el cambio si ejecuta el siguiente comando:

(Get-AzAutomationAccount `
    -ResourceGroupName $resourceGroup `
    -Name $automationAccount).Encryption `
    |  ConvertTo-Json 

La salida debe tener una apariencia similar a la siguiente:

Output from Get-AzAutomationAccount cmdlet.

Uso de REST

Use la siguiente llamada API REST:

PATCH https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-group-name/providers/Microsoft.Automation/automationAccounts/automation-account-name?api-version=2020-01-13-preview

Cuerpo de la solicitud:

{
	"identity": {
	"type": "SystemAssigned"
	},
	"properties": {
		"encryption": {
			"keySource": "Microsoft.Keyvault",
			"keyvaultProperties": {
				"keyName": "sample-vault-key",
				"keyvaultUri": "https://sample-vault-key12.vault.azure.net",
				"keyVersion": "7c73556c521340209371eaf623cc099d"
			}
		}
	}
}

Respuesta de muestra

{
  "name": "automation-account-name",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-group-name/providers/Microsoft.Automation/automationAccounts/automation-account-name",
  ..
  "properties": {
    ..
    "encryption": {
      "keyvaultProperties": {
         "keyName": "sample-vault-key",
          "keyvaultUri": "https://sample-vault-key12.vault.azure.net",
          "keyVersion": "7c73556c521340209371eaf623cc099d"
      },
      "keySource": "Microsoft.Keyvault"
    },
    ..
  }
}

Rotación de una clave administrada por el cliente

Las claves administradas por el cliente se pueden rotar en Azure Key Vault según las directivas de cumplimiento. Cuando la clave rota, hay que actualizar la cuenta de Automation para usar el nuevo identificador URI de la clave.

El giro de la clave no desencadena un nuevo cifrado de los recursos seguros en la cuenta de Automation. No se necesita ninguna acción adicional.

Revocación del acceso de una clave administrada por el cliente

Para revocar el acceso a las claves administradas por el cliente, use PowerShell o la CLI de Azure. Para más información, consulte la referencia de PowerShell para Azure Key Vault o la referencia de la CLI para Azure Key Vault. La revocación del acceso bloquea de manera eficaz el acceso a todos los recursos seguros de la cuenta de Automation, ya que Azure Automation no puede acceder a la clave de cifrado.

Pasos siguientes