Preciso fazer o backup da senha de criptografia e da chave simétrica do SQL Server?

3

Estou tentando configurar o SQL Server para usar a criptografia no nível de célula em alguns dados confidenciais. Parece simples por este exemplo no MSDN :

  1. Crie a chave mestra com uma senha strong.
  2. Crie um certificado.
  3. Crie uma chave simétrica com o certificado.
  4. Criptografe dados conforme necessário usando a função EncryptByKey da seguinte forma: EncryptByKey(Key_GUID('SensitiveData_Key_01'), MySensitiveDataColumn)
  5. Descriptografar dados, conforme necessário, usando a função DecryptByKey da seguinte forma: CONVERT(varchar, DecryptByKeyAutoCert(cert_ID('MyCertName'), NULL, MySensitiveDataColumn))

Então, considerando o uso acima, digamos que meu servidor morra. Eu preciso reinstalar o SQL Server em uma máquina Windows (ou VM) completamente nova e restaurar meu banco de dados a partir do backup. Se eu restaurar o backup do banco de dados, a criptografia / descriptografia continuará a funcionar corretamente?

Se não, quais dados eu preciso salvar / backup para que eu possa recuperar meus dados no caso de uma falha catastrófica?

A julgar pelos diagramas em este outro artigo do MSDN sobre a hierarquia de criptografia , meu palpite é que preciso fazer backup de alguns ou de todos os itens a seguir:

  1. Senha para a chave mestra
  2. Chave mestra?
  3. Certificado?
  4. Chave Simétrica?
por John Bubriski 02.02.2012 / 17:30

2 respostas

0

Depois de fazer mais algumas pesquisas, encontrei este artigo em "Cloning" Chaves simétricas .

Você pode instruir a função CREATE SYMMETRIC KEY para gerar a chave simétrica usando KEY_SOURCE e IDENTITY_VALUE . Você pode gerar novamente a mesma chave mais adiante, transmitindo os mesmos valores para KEY_SOURCE e IDENTITY_VALUE .

Aqui está um exemplo rápido:

CREATE CERTIFICATE CreditCards
   WITH SUBJECT = 'Customer Credit Card Numbers';
GO

CREATE SYMMETRIC KEY CreditCards_Key_01
WITH KEY_SOURCE = 'A pass phrase from which to derive the key.',
    IDENTITY_VALUE = 'An identity phrase from which to generate a GUID for tagging data that is encrypted with a temporary key',
    ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE CreditCards;
GO

OPEN SYMMETRIC KEY CreditCards_Key_01
   DECRYPTION BY CERTIFICATE CreditCards

UPDATE MyTable
SET EncryptedCreditCardNumber = EncryptByKey(Key_GUID('CreditCards_Key_01'), CreditCardNumber);
GO

Para citar Michael Coles de seu artigo

"For my tastes, it would make more sense to require IDENTITY_VALUE and KEY_SOURCE options by default."

Não sei por que eles não fizeram isso dessa forma, ou pelo menos destaque isso no exemplo que eles têm no MSDN!

    
por 02.02.2012 / 21:06
0

Você deve simular seu desastre proposto e confirmar que pode se recuperar em uma máquina de teste. Tudo o que você precisar ficará bem rápido durante o processo de restauração.

    
por 15.02.2012 / 20:58