Bom, nesta terceira parte do estudo vamos falar sobre criptografia de arquivos de banco de dados (data e log de transações) a nível de página.
Peguei a seguinte questão como base para o estudo:
You administer a Microsoft SQL Server 2012 instance that contains a database of confidential data.
You need to encrypt the database files at the page level.
You also need to encrypt the transaction log files.
Which four actions should you perform in sequence?
O enunciado diz que você tem que criptografar no BD os dados e o log transacional a nível de página.
Bem, primeiro precisamos criar a base de dados master key e o server certificate
Isso é feito na base “Master”
Use Master
Go
Create master key encryption by
password = ‘$enhaguiaDba2015′
Go
Não podemos criar a master key com a senha “1234”, por exemplo,pois se fizer isso você ganhará a mensagem:
Msg 15116, Level 16, State 1, Line 18
Password validation failed. The password does not meet Windows policy requirements because it is too short.
Ou
Msg 15118, Level 16, State 1, Line 18
Password validation failed. The password does not meet Windows policy requirements because it is not complex enough.
Use master
Go
Create certificate CertDba with subject =’Certificado 01’;
go
Para verificar a base e o certificado criados, vamos executar as seguintes queries:
Select enc.crypt_type,sym.name ,enc.crypt_type_desc
From sys.key_encryptions enc
Inner Join sys.symmetric_keys sym
On sym.symmetric_key_id = enc.key_id
Where sym.name = ‘##MS_DatabaseMasterKey##’
Go
Select name,pvt_key_encryption_type_desc,issuer_name
From sys.certificates
Where name = ‘CertDba’
Go
Agora podemos criar a base criptografada protegida pelo certificada (DEK).
Use GuiaDBA
Go
Create Database encryption key with algorithm = AES_256
Encryption by server certificate CertDba
Go
Este recurso está disponível apenas nas versões Enterprise, então se você tentar fazer isso na Standard, por exemplo,
receberá a seguinte mensagem:
Msg 33117, Level 16, State 1, Line 42
Transparent Data Encryption is not available in the edition of this SQL Server instance. See books online for more details on feature support in different SQL Server editions.
Usamos o algoritmo de criptografia AES_256, porém existem outros tipos que você encontra no link
https://msdn.microsoft.com/en-us/library/ms345262 se quiser saber mais sobre o assunto.
Depois de criar a DEK, temos que habilitar a criptografia.
Alter Database GuiaDBA
Set encryption On;
Go
Se alguma base da instância for criptografada, a base tempdb também ficará criptografada.
Quando criptografamos a base, ela é total, ou seja, não posso criptografar só a nível de tabelas ou colunas.
Resolvemos então a questão que pede para você quatro ações para a criptografia e são elas:
1 – Na base master, criar a master key protegida por senha.
2 – Na base master, criar o certificado.
3 – Na base do usuário, criar a DEK (database encryption key) protegida pelo certificado.
4 – Na base do usuário, habilitar a criptografia.