Azure SQL Database – Transparent Data Encryption with bring your own key

Transparent Data Encryption (TDE) vem por padrão habilitado quando você cria um novo database no Azure SQL Database.  

TDE não é mais uma novidade porem eu tenho visto que é pouco explorada (minha percepção). Se predente usar TDE on-premise vale a pena a leitura no post anterior. 

Habilitar ou desabilitar TDE no Azure SQL Database é simplesmente um click para ON ou OFF e a Microsoft faz tudo para você! Simples né, porem algumas perguntas vinham em relação a esse gerenciamento, por exemplo, como é realizado o gerenciamento de chaves ou porque apenas certificado poderiam ser usados.   

Com isso em mente a Microsoft disponibilizou uma nova opção: Bring Your Own Key. Com certeza isso faz muita diferença uma vez que posso ter o controle maior sobre as minhas chaves e posso aplicar a política definida pela minha empresa. Sendo assim agora eu posso estar cumprindo as conformidades de órgãos regulamentadores com mais transparência.  

https://azure.microsoft.com/en-us/blog/transparent-data-encryption-with-customer-managed-keys-in-azure-sql-database-generally-available/

Bring Your Own Key 

A minha primeira tentativa foi utilizar o Azure Portal para criar todos os passos necessários desde a criação de um novo servidor, key vault e key. 

Key Vault 

Na blade para criar o key vault começaram meus problemas.  

Ao tentar adicionar um acesso para o meu “logical server” eu não pude encontra-lo. Mas a pergunta era, porque não?! 

Voltei a ler a documentação e tentei entender melhor como TDE suporta BYOK. 

https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/transparent-data-encryption-byok-azure-sql?view=azuresqldb-current 

O servidor logico precisa gerar e assinar uma identidade no Azure Active Directory, mas o Azure Portal não me dá essa opção quando estou criando o servidor.  

Não tem problema, vamos para o PowerShell. 

Set-AzureRmSqlServer `
-ResourceGroupName TDE `
-ServerName tdebalabuch `
-AssignIdentity

Eu não precisei apagar e criar novamente o servidor. 

Depois de executar o comando voltei ao Azure Portal e agora o meu servidor estava disponível para adicionar acesso.

Adicionei as permissões necessárias: GET, WRAP e UNWRAP.

Key 

Agora que a key vault está criado falta apenas a key.

3 importantes atributos que a Key deve ter: 

  • No expiration date 
  • Not disabled 
  • Permissão de get, wrap key, unwrap key  

Habilitar TDE com BYOK 

Agora seria a hora de apertar o botão salvar e tudo funcionar perfeito. Seria, mas não foi! 

Recebi o erro:  

Failed to save Transparent Data Encryption settings for server: {serverName}. Error message: The provided Key Vault uri ‘https://keyvaulttde.vault.azure.net/keys/KeyForTDE/633a6b1fad6941cb96449599df0382c0’ is not valid. Please ensure the vault has the right Recovery Level other than ‘Purgeable’. 

Ok. Fiz algo de erro, vou refazer tudo e vai dar certo! #sqn 

Boa notícia, refiz algumas vezes e pude perceber o que mesmo sem atribuir uma identidade para o servidor quando clico em salvar a etapa de atribuir uma identidade e conceder as permissões o Azure Portal está fazendo 🙂 

Mas ainda falta algo que ele não faz. Então nesse momento apenas é possível utilizar PowerShell e CLI.  

Quebrando os passos 

Aqui eu comecei a quebrar os passos da criação de todos os recursos envolvidos. 

Lendo a documentação novamente me deparo com essa informação 

https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/transparent-data-encryption-byok-azure-sql?view=azuresqldb-current 

Depois de ler mais documentação percebi que essa funcionalidade era o que estava me causando problema.  

https://docs.microsoft.com/en-us/azure/key-vault/key-vault-ovw-soft-delete 

https://docs.microsoft.com/en-us/azure/key-vault/key-vault-soft-delete-powershell 

Eu tive que executar um comando em PowerShell:

($resource = Get-AzureRmResource -ResourceId (Get-AzureRmKeyVault -VaultName "KeyVaultTDE").ResourceId).Properties | Add-Member -MemberType "NoteProperty" -Name "enableSoftDelete" -Value "true" 

Set-AzureRmResource -resourceid $resource.ResourceId -Properties $resource.Properties  

Get-AzureRmKeyVault -VaultName "KeyVaultTDE"

Voltei ao Azure Portal e pude finalizar o processo. 

Investigando um pouco mais, quando entrei na Key Vault me apareceu a seguinte mensagem! 

OK! Meu entendimento é que Soft Delete ainda está em “Preview” e minha pergunta é: Porque a Microsoft liberou um recurso (TDE com BYOK) que depende de outro recurso que ainda está em “Preview”? 

Enquanto o Azure Portal não tem todas as opções disponíveis o melhor jeito é utilizar o PowerShell.  

https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/transparent-data-encryption-byok-azure-sql 

https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/transparent-data-encryption-byok-azure-sql-configure

https://azure.microsoft.com/en-us/blog/transparent-data-encryption-with-customer-managed-keys-in-azure-sql-database-generally-available/ 

https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/transparent-data-encryption-azure-sql 

https://azure.microsoft.com/en-us/blog/preview-sql-transparent-data-encryption-tde-with-bring-your-own-key-support/ 

 

This is Tiago Balabuch's website, and this is a bit of copy about him. He is enthusiast, fascinated, passionate, fanatic by SQL Server and in the off-hours a Data Engineer who loves what he does and he is traveling in the cloud and surfing on the wave of the moment called Azure! Originally from Brazil and with encouragement from family and friends, Tiago moved to Europe in 2017 where lives in Ireland. In addition to being a data engineer, he is also active speaker in the SQL PASS events and keeps up to date on the key technologies and technical certifications. Tiago hold these certification MCT, MCSE - Data Management and Analystics, MCSA - SQL Server 2016/2014/2012. Simply psychedelic and manic he is just one more freak who likes SQL Server and its new features ...

Responda