Compartilhar via


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 AzureAzure Synapse Analytics

Este artigo explica como usar uma chave do Azure Key Vault para a TDE (Transparent Data Encryption) no banco de dados SQL do Azure ou no Azure Synapse Analytics. 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ê estiver procurando por instruções no portal do Azure sobre como habilitar a TDE com uma chave gerenciada pelo cliente do Azure Key Vault, confira Criar servidor configurado com identidade gerenciada atribuída pelo usuário e TDE gerenciada pelo cliente.

Este artigo se aplica ao Banco de Dados SQL do Azure, à Instância Gerenciada de SQL do Azure e aos pools de SQL dedicados 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.

Observação

O SQL do Azure também dá suporte ao uso de uma chave RSA armazenada em um HSM Gerenciado como Protetor de TDE. O HSM Gerenciado do Azure é um serviço de nuvem totalmente gerenciado, altamente disponível, de locatário único e compatível com padrões que permite proteger chaves criptográficas para seus aplicativos de nuvem, usando HSMs validados fips 140-2 nível 3. Saiba mais sobre o HSMs Gerenciado.

Observação

O Microsoft Entra ID era conhecido anteriormente como Azure Active Directory (Azure AD).

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 gerenciada por HSM, siga as instruções para criar e ativar um HSM Gerenciado usando a 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ê tiver um servidor existente, use o seguinte para adicionar uma identidade do Microsoft Entra ao seu servidor:

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

Se estiver criando um servidor, use o cmdlet New-AzSqlServer com a tag -Identidade para adicionar uma identidade do 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 a função de RBAC local 'Usuário de criptografia do serviço de criptografia de HSM gerenciado' ao servidor. Isso permite que o servidor execute operações obter, encapsular e desencapsular chave, nas chaves no 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 para o nome do cofre de chaves e o nome da chave não pode exceder 94 caracteres.

Dica

Um exemplo de KeyId do Azure Key Vault: https://contosokeyvault.vault.azure.net/keys/Key1/<key-id>

Um exemplo de KeyId do HSM gerenciado:
https://contosoMHSM.managedhsm.azure.net/keys/myrsakey

# 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 ou data warehouse tem o TDE habilitado com uma chave de criptografia no Azure Key Vault.

Verificar o estado de criptografia e a atividade de criptografia

Use o Get-AzSqlDatabaseTransparentDataEncryption para obter o estado de criptografia para 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

  • 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 puder ser encontrado, verifique se você está na assinatura correta.

    Get-AzSubscription -SubscriptionId <SubscriptionId>
    

  • Se a nova chave não puder ser adicionada ao servidor ou se a nova chave não puder ser atualizada como o Protetor de TDE, verifique o seguinte:

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