Criptografia de ativos seguros na Automação do Azure

A Automação do Azure protege ativos como credenciais, certificados, conexões e variáveis criptografadas usando vários níveis de criptografia. Isso ajuda a aprimorar a segurança desses ativos. Além disso, para garantir maior segurança e privacidade para o código do cliente, os runbooks e os scripts DSC também são criptografados. A criptografia na Automação do Azure segue dois modelos, dependendo da chave de nível superior usada para criptografia:

  • Os que usam chaves gerenciadas pela Microsoft
  • Os que usam chaves que você gerencia

Chaves gerenciadas pela Microsoft

Por padrão, sua conta de automação do Azure usa chaves gerenciadas pela Microsoft.

Cada ativo protegido é criptografado e armazenado na Automação do Azure usando uma chave exclusiva (chave de Criptografia de Dados) gerada para cada conta de automação. Essas chaves são criptografadas e armazenadas na Automação do Azure usando ainda outra chave exclusiva gerada para cada conta chamada de AEK (Chave de Criptografia de Conta). Essas chaves de criptografia de conta são criptografadas e armazenadas na Automação do Azure usando chaves gerenciadas pela Microsoft.

Chaves que você gerencia com o Key Vault

Você pode gerenciar a criptografia de ativos seguros para sua conta de automação com suas chaves. Quando você especifica uma chave gerenciada pelo cliente no nível da conta da automação, essa chave é usada para proteger e controlar o acesso à chave de criptografia da conta para a conta de automação. Ela, por sua vez, é usada para criptografar e descriptografar todos os ativos seguros. Chaves gerenciadas pelo cliente oferecem maior flexibilidade para criar, desabilitar e revogar controles de acesso, assim como fazer a rotação deles. Você também pode auditar as chaves de criptografia usadas para proteger seus ativos seguros.

Use o Azure Key Vault para armazenar as chaves gerenciadas pelo cliente. Você pode criar suas próprias chaves e armazená-las em um cofre de chaves ou pode usar as APIs do Azure Key Vault para gerar chaves.

Habilitar o Firewall do Azure no Azure Key Vault bloqueia o acesso de runbooks de Automação do Azure para esse serviço. O acesso será bloqueado mesmo quando a exceção de firewall para permitir que serviços Microsoft confiáveis estiver habilitada, pois a Automação não faz parte da lista de serviços confiáveis. Com um firewall habilitado, o acesso só pode ser feito usando um Hybrid Runbook Worker e um ponto de extremidade de serviço de rede virtual. No entanto, ao habilitar o link Privado para Key Vault, a Automação do Azure perde o acesso ao Key Vault. Mesmo que habilite um link privado para o Hybrid Runbook Worker, ele permitirá o acesso apenas ao serviço de Automação do Azure e não ao Key Vault.

Para obter mais informações sobre o Cofre da Chave do Azure, consulte O que é o Cofre da Chave do Azure?

Uso de chaves gerenciadas pelo cliente para uma conta de automação

Quando você usa a criptografia com chaves gerenciadas pelo cliente para uma conta de automação, a Automação do Azure encapsula a chave de criptografia da conta com a chave gerenciada pelo cliente no cofre de chaves associado. Habilitar chaves gerenciadas pelo cliente não afeta o desempenho, e a conta é criptografada com a nova chave imediatamente, sem nenhum atraso.

Uma nova conta de automação é Always Encrypted usando chaves gerenciadas pela Microsoft. Não é possível habilitar chaves gerenciadas pelo cliente no momento em que a conta é criada. As chaves gerenciadas pelo cliente são armazenadas no Azure Key Vault e o cofre de chaves deve ser provisionado com políticas de acesso que concedem permissões de chave para a identidade gerenciada associada à conta de automação. A identidade gerenciada estará disponível somente depois que a conta de automação for criada.

Quando você muda a chave que está sendo usada para a criptografia de ativo seguro da Automação do Azure, habilitando ou desabilitando chaves gerenciadas pelo cliente, atualizando a versão da chave ou especificando uma chave diferente, a criptografia da chave de criptografia da conta é alterada, mas os ativos seguros em sua conta de automação do Azure não precisam ser criptografados novamente.

Observação

Para habilitar a chave gerenciada pelo cliente usando as chamadas da API REST da Automação do Azure, você precisa usar a versão de API 2020-01-13-preview.

Pré-requisitos para usar chaves gerenciadas pelo cliente na Automação do Azure

Antes de habilitar chaves gerenciadas pelo cliente para uma conta de automação, você deve verificar se os seguintes pré-requisitos são atendidos:

Gerar e atribuir uma nova identidade atribuída pelo sistema para uma conta de Automação

Para usar chaves gerenciadas pelo cliente com uma conta de automação, sua conta de automação precisa se autenticar no cofre de chaves que armazena chaves gerenciadas pelo cliente. A Automação do Azure usa identidades gerenciadas atribuídas ao sistema para autenticar a conta com o Azure Key Vault. Para obter mais informações sobre identidades gerenciadas, confira O que são identidades gerenciadas para recursos do Azure?

Usando o PowerShell

Use o cmdlet do PowerShell Set-AzAutomationAccount para mudar uma conta de Automação do Azure existente. O parâmetro -AssignSystemIdentity gera e atribui uma nova identidade atribuída pelo sistema para a conta de Automação a ser usada com outros serviços, como Azure Key Vault. Para obter mais informações, confira O que são as identidades gerenciadas para recursos do Azure? e Sobre Azure Key Vault. Execute o seguinte código:

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

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

O resultado deve ser semelhante ao seguinte:

Output from Set-AzAutomationAccount cmdlet.

Obtenha o PrincipalId para uso posterior. Execute o seguinte código:

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

$principalID

Usar o REST

Configure uma identidade gerenciada atribuída ao sistema à conta de Automação do Azure usando a seguinte chamada à 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

Corpo da solicitação:

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

a identidade atribuída ao sistema para a conta de automação é retornada em uma resposta semelhante à seguinte:

{
 "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"
 },
..
}

Configuração da política de acesso do Key Vault

Depois que uma identidade gerenciada atribuída pelo sistema é atribuída à conta de Automação do Azure, você configura o acesso ao cofre de chaves que armazena chaves gerenciadas pelo cliente. A Automação do Azure requer as permissões de operação Get, Recover, WrapKeye UnwrapKey para que a identidade acesse as chaves gerenciadas pelo cliente.

Usando o PowerShell

Use o cmdlet do PowerShell Set-AzKeyVaultAccessPolicy para conceder as permissões necessárias. Em seguida, use Add-AzKeyVaultKey para criar uma chave no cofre de chaves. Execute o seguinte código:

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

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

O resultado deve ser semelhante ao seguinte:

Output from Add-AzKeyVaultKey cmdlet.

Usar o REST

A política de acesso pode ser definida usando a seguinte chamada à 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

Corpo da solicitação:

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

Observação

os campos tenantId e objectId devem ser fornecidos com valores de identity.tenantId e identity.principalId, respectivamente, da resposta da identidade gerenciada para a conta de automação.

Reconfigurar a conta de Automação do Azure para usar a chave gerenciada pelo cliente

Se você quiser mudar sua conta de automação de chaves gerenciadas pela Microsoft para chaves gerenciadas pelo cliente, poderá executar essa alteração usando o Azure PowerShell ou com um modelo de Azure Resource Manager.

Usando o PowerShell

Use o cmdlet do PowerShell Set-AzAutomationAccount para reconfigurar a conta de Automação do Azure para usar chaves gerenciadas pelo 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 

Verifique a alteração ao executar o seguinte comando:

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

O resultado deve ser semelhante ao seguinte:

Output from Get-AzAutomationAccount cmdlet.

Usar o REST

Use a seguinte chamada à 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

Corpo da solicitação:

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

Resposta de exemplo

{
  "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"
    },
    ..
  }
}

Rotação de uma chave gerenciada pelo cliente

Você pode fazer a rotação de uma chave gerenciada pelo cliente no Azure Key Vault de acordo com suas políticas de conformidade. Quando ocorre a rotação da chave, você deve atualizar a conta de automação para usar o novo URI da chave.

A rotação da chave não dispara a nova criptografia de ativos seguros na conta de Automação. Nenhuma ação adicional é necessária.

Revogação de acesso a uma chave gerenciada pelo cliente

Para revogar o acesso às chaves gerenciadas pelo cliente, use o PowerShell ou a CLI do Azure. Para obter mais informações, confira PowerShell do Azure Key Vault ou CLI do Azure Key Vault. Revogar o acesso bloqueia efetivamente o acesso a todos os ativos seguros na conta de automação, pois a chave de criptografia não é acessível pelo Automação do Azure.

Próximas etapas