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 ao Azure Synapse Analytics (pools de SQL dedicados, anteriormente conhecido como SQL DW). 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

SQL do Azure agora dá suporte ao uso de uma chave RSA armazenada em um HSM Gerenciado como Protetor de TDE. O HSM Gerenciado do Azure Key Vault é um serviço de nuvem em conformidade com os padrões de um único locatário, altamente disponível e totalmente gerenciado 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 anteriormente conhecido como Azure Active Directory (Azure AD).

Pré-requisitos para 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) precisa ser uma data e uma 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, confira Instalar o Azure PowerShell. Para cmdlets específicos, confira AzureRM.Sql.

Para obter informações específicas Key Vault, consulte as instruções do PowerShell a partir do Key Vault e Como usar a exclusão temporária do Key Vault com o PowerShell.

Importante

Ainda há suporte para o módulo do ARM (Azure Resource Manager) do PowerShell, mas todo o desenvolvimento futuro destina-se ao módulo Az.Sql. O módulo AzureRM continuará a receber as correções de bugs até pelo menos dezembro de 2020. Os argumentos para os comandos no módulo Az e nos módulos AzureRm são substancialmente idênticos. Para saber mais sobre a compatibilidade entre eles, confira Apresentação do novo módulo Az do Azure 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 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 permitirá que o servidor execute operações obter, encapsular e desencapsular chave, nas chaves no HSM gerenciado. Instruções para provisionar o acesso ao servidor no HSM Gerenciado

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

Observação

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

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 Key Vault: https://contosokeyvault.vault.azure.net/keys/Key1/1a1a2b2b3c3c4d4d5e5e6f6f7g7g8h8h

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

# add the key from 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 possui a TDE habilitada com uma chave de criptografia no 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-AzureRmSqlServerKeyVaultKey para retornar a lista de chaves do Key Vault adicionada ao servidor.

    # KeyId is an optional parameter, to return a specific key version
    Get-AzSqlServerKeyVaultKey -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    
  • Use o Remove-AzureRmSqlServerKeyVaultKey para remover uma chave do 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 um problema ocorrer, verifique o seguinte:

  • 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 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.

Próximas etapas