PowerShell e CLI do Azure: habilite o Transparent Data Encryption pela chave gerenciada pelo cliente do Azure Key Vault

Aplica-se a:Banco de Dados SQL do AzureInstância Gerenciada de SQL do Azure

Este artigo mostra como usar uma chave do Azure Key Vault para criptografia de dados transparente (TDE) no Banco de Dados SQL do Azure. Para saber mais sobre a integração da TDE com o Azure Key Vault - Suporte a Bring Your Own Key (BYOK), visite TDE com chaves gerenciadas pelo cliente no Azure Key Vault. Se você quiser instruções do portal Azure sobre como habilitar o TDE com uma chave gerenciada pelo cliente do Azure Key Vault, veja Criar servidor configurado com identidade gerenciada atribuída pelo usuário e TDE gerenciado pelo cliente.

Observação

Banco de Dados SQL do Azure suporta chaves assimétricas (RSA) e simétricas (AES) para Transparent Data Encryption gerenciada pelo cliente, dependendo da configuração. O suporte para chaves simétricas (AES) está atualmente em versão prévia pública e está limitado a Banco de Dados SQL do Azure. Você pode ver essa capacidade aparecer ao longo do tempo, dependendo da sua região e do status de implantação do serviço. Para detalhes, veja Transparent Data Encryption with customer-managed keys (BYOK).

Pré-requisitos do PowerShell

  • É necessário ter uma assinatura do Azure e ser um administrador nessa assinatura.
  • [Recomendado, mas opcional] Tenha um HSM (Módulo de Segurança de Hardware) ou armazenamento de chave local para criar uma cópia local do material da chave do Protetor de TDE.
  • É necessário ter o Azure PowerShell instalado e funcionando.
  • Crie um Azure Key Vault e Chave para usar na TDE.
  • A chave deve ter os seguintes atributos a serem usados 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 realizar operações get, codificar chave, decodificar chave
  • Para usar uma chave HSM gerenciada Azure Key Vault, siga as instruções para criar e ativar um HSM Gerenciado usando CLI do Azure

Para obter instruções de instalação do módulo Az do PowerShell, confira 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 reversível do Azure Key Vault com o PowerShell.

Atribuir uma identidade do Microsoft Entra ao seu servidor

Se você 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 você estiver criando 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 servidor

Use o cmdlet Set-AzureRmKeyVaultAccessPolicy 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 em um HSM Gerenciado, adicione o papel RBAC local de Managed HSM Crypto Service Encryption User ao servidor. Esse papel permite que o servidor execute get, wrap key, e unwrap key operações nas chaves do HSM Gerenciado. Para obter mais informações, consulte gerenciamento de funções do HSM gerenciado.

Adicionar a chave do Azure Key Vault ao servidor e definir o Protetor de TDE

Observação

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

Observação

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

Dica

Usando chaves versionadas e sem versão do Azure Key Vault para TDE

Ao definir o protetor TDE, você pode referenciar uma chave do Azure Key Vault usando uma versão específica da chave ou um identificador de chave sem versão.

Em ambos os casos, o Banco de Dados SQL do Azure sempre resolve e usa a versão mais recente habilitada da chave no Azure Key Vault ou no HSM Gerenciado do Azure Key Vault. Use identificadores de chave sem versão para evitar a inserção de uma versão de chave específica na configuração do protetor de TDE.

No momento, há suporte para identificadores de chave sem versão apenas para o Banco de Dados SQL do Azure.

Exemplos:

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

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

  • Identificador de chave sem versão

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

# 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 TDE

Use o cmdlet Set-AzureRMSqlDatabaseTransparentDataEncryption para ativar a TDE.

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

Agora o banco de dados tem o TDE ativado com uma chave de criptografia no Azure Key Vault.

Verificar o estado de criptografia e a atividade de criptografia

Use o cmdlet Get-AzSqlDatabaseTransparentDataEncryption para obter o estado de criptografia de um banco de dados.

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

Cmdlets úteis do PowerShell

  • Use o cmdlet Set-AzureRMSqlDatabaseTransparentDataEncryption para desativar a TDE.

    Set-AzSqlDatabaseTransparentDataEncryption -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName> `
        -DatabaseName <DatabaseName> -State "Disabled"
    
  • Use o cmdlet Get-AzSqlServerKeyVaultKey para retornar a lista de chaves do Azure Key Vault 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>
    

Solução de problemas

  • Se o cofre de chaves não for encontrado, certifique-se de estar na assinatura correta.

    Get-AzSubscription -SubscriptionId <SubscriptionId>
    

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

    • A chave de API não deveria ter data de validade.
    • A chave deve ter as operações get, codificar chave e decodificar chave habilitadas.

TDE BYOK Azure Synapse Analytics

Para a documentação TDE BYOK sobre Azure Synapse Analytics, consulte a documentação SQL do Azure Synapse Analytics. Para obter a documentação sobre o Transparent Data Encryption para pools de SQL dedicados nos workspaces do Azure Synapse, confira Criptografia do Azure Synapse Analytics.