PowerShell e CLI do Azure: Habilitar a criptografia de dados transparente com chave gerenciada pelo cliente do Cofre de Chaves do Azure

Aplica-se a: Pools SQL dedicados do Azure Synapse Analytics (anteriormente SQL DW)

Dica

Microsoft Fabric Data Warehouse é um armazém relacional de escala empresarial baseado numa base de data lake, com uma arquitetura pronta para o futuro, IA incorporada e novas funcionalidades. Se és novo no data warehousing, começa pelo Fabric Data Warehouse. As cargas de trabalho existentes de pool SQL dedicado podem atualizar para o Fabric para acessar novas capacidades em ciência de dados, análise em tempo real e relatórios.

Este artigo explica como usar uma chave do Azure Key Vault para encriptação de dados transparente (TDE) no Azure Synapse Analytics. Para saber mais sobre a integração TDE com o Azure Key Vault - Bring Your Own Key (BYOK) Support, visite TDE com chaves gerenciadas pelo cliente no Azure Key Vault.

Note

Este artigo aborda pools SQL dedicados independentes (anteriormente SQL DW).

  • Para pools SQL dedicados do Azure Synapse Analytics (anteriormente SQL DW), defina o protetor TDE ao nível do servidor. Todas as bases de dados encriptadas associadas a esse servidor herdam o protetor TDE.
  • Encripte os dados em pools SQL dedicados e pools SQL serverless num espaço de trabalho Synapse usando a chave gerida pelo cliente configurada ao nível do workspace. Para obter mais informações sobre criptografia de dados transparente para pools SQL dedicados dentro de espaços de trabalho Synapse, consulte Criptografia do Azure Synapse Analytics.

Pré-requisitos para o PowerShell

  • Você deve ter uma assinatura do Azure e ser um administrador nessa assinatura.
  • [Recomendado, mas opcional] Tenha um módulo de segurança de hardware (HSM) ou armazenamento de chaves local para criar uma cópia local do material da chave TDE Protetor.
  • Você deve ter o Azure PowerShell instalado e em execução.
  • Crie um Cofre de Chaves do Azure e uma Chave para usar no TDE.
  • A chave deve ter os seguintes atributos para ser usada para TDE:
    • A data de ativação (se definida) deve ser uma data e hora no passado
    • A data de expiração (se definida) deve ser uma data e hora futuras
    • A chave deve estar no estado Habilitado
    • Capaz de executar operações de obter, encapsular chave, desencapsular chave
  • Para usar uma chave HSM gerida Azure Key Vault, siga instruções para criar e ativar um HSM gerido usando CLI do Azure

Para obter instruções de instalação do módulo Az PowerShell, consulte Instalar o Azure PowerShell.

Para obter detalhes sobre o Azure Key Vault, consulte as instruções do PowerShell do Azure Key Vault e Como usar a exclusão suave do Azure Key Vault com o PowerShell.

Atribuir uma identidade do Microsoft Entra ao seu servidor

Se já tem um servidor, use as seguintes instruções para adicionar uma identidade Microsoft Entra ao seu servidor:

$server = Set-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -AssignIdentity

Se estiver a criar um servidor, use o cmdlet New-AzSqlServer com a -Identity tag para adicionar uma identidade Microsoft Entra durante a criação do servidor:

$server = New-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -Location <RegionName> `
    -ServerName <LogicalServerName> -ServerVersion "12.0" -SqlAdministratorCredentials <PSCredential> -AssignIdentity

Conceder permissões do Azure Key Vault ao seu servidor

Use o cmdlet Set-AzKeyVaultAccessPolicy para conceder ao servidor acesso ao cofre de chaves antes de usar uma chave dele para TDE.

Set-AzKeyVaultAccessPolicy -VaultName <KeyVaultName> `
    -ObjectId $server.Identity.PrincipalId -PermissionsToKeys get, wrapKey, unwrapKey

Para adicionar permissões ao seu servidor num HSM Gerido, adicione a função RBAC local Managed HSM Crypto Service Encryption User ao servidor. Esta função permite ao servidor realizar get, wrap key, e unwrap key operações nas chaves do HSM Gerido. Para mais informações, consulte gestão de funções do Managed HSM.

Adicione a chave do Azure Key Vault ao servidor e defina o TDE Protetor

Note

Para chaves HSM gerenciadas, use a versão Az.Sql 2.11.1 do PowerShell ou superior.

Note

O comprimento combinado do nome do cofre de chave e do nome da chave não pode exceder 94 caracteres.

Dica

Utilizar chaves com versão do Azure Key Vault para TDE

Ao definir o protetor TDE, faça referência a uma chave do Azure Key Vault usando uma versão específica da chave.

Example:

  • Identificador de chave que inclui uma versão específica

    https://<key-vault-name>.vault.azure.net/keys/<key-name>/<key-version>

# add the key from Azure Key Vault to the server
Add-AzSqlServerKeyVaultKey -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -KeyId <KeyVaultKeyId>

# set the key as the TDE protector for all resources under the server
Set-AzSqlServerTransparentDataEncryptionProtector -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> `
   -Type AzureKeyVault -KeyId <KeyVaultKeyId>

# confirm the TDE protector was configured as intended
Get-AzSqlServerTransparentDataEncryptionProtector -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName>

Ativar o TDE

Utilize o cmdlet Set-AzSqlDatabaseTransparentDataEncryption para ativar o TDE.

Set-AzSqlDatabaseTransparentDataEncryption -ResourceGroupName <SQLDatabaseResourceGroupName> `
   -ServerName <LogicalServerName> -DatabaseName <DatabaseName> -State "Enabled"

Agora, o banco de dados ou data warehouse tem TDE habilitado com uma chave de criptografia no Cofre de Chaves do Azure.

Verificar o estado de encriptação e a atividade de encriptação

Use o Get-AzSqlDatabaseTransparentDataEncryption para obter o estado de criptografia de um banco de dados ou data warehouse.

# get the encryption state of the database
Get-AzSqlDatabaseTransparentDataEncryption -ResourceGroupName <SQLDatabaseResourceGroupName> `
   -ServerName <LogicalServerName> -DatabaseName <DatabaseName> `

Cmdlets úteis do PowerShell

  • Utilize o cmdlet Set-AzSqlDatabaseTransparentDataEncryption para desativar o TDE.

    Set-AzSqlDatabaseTransparentDataEncryption -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName> `
        -DatabaseName <DatabaseName> -State "Disabled"
    
  • Use o cmdlet Get-AzSqlServerKeyVaultKey para retornar a lista de chaves do Cofre de Chaves do Azure adicionadas ao servidor.

    # KeyId is an optional parameter, to return a specific key version
    Get-AzSqlServerKeyVaultKey -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    
  • Use o Remove-AzSqlServerKeyVaultKey para remover uma chave do Azure Key Vault do servidor.

    # the key set as the TDE Protector cannot be removed
    Remove-AzSqlServerKeyVaultKey -KeyId <KeyVaultKeyId> -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    

Troubleshooting

  • Se o cofre das chaves não for encontrado, certifique-se de que está na subscrição correta.

    Get-AzSubscription -SubscriptionId <SubscriptionId>
    

  • Se não conseguir adicionar a nova chave ao servidor, ou se não conseguir atualizar a nova chave como Protetor TDE, verifique as seguintes condições:

    • A chave não deveria ter data de validade.
    • A chave deve ter as operações obter, encapsular chave, e desempacotar chave habilitadas.