Existe uma maneira rápida de encontrar todas as colunas no SQL Server 2008 R2 criptografadas / com dados criptografados?
Preciso anular os dados em todas as colunas criptografadas em um servidor de desenvolvimento (de acordo com nossas regras de negócios). Conheço a maioria das colunas porque as usamos regularmente, mas quero ser completo e também quero provar que as encontrei todas.
Eu pesquisei na web, procurei em INFORMATION_SCHEMA e verifiquei as DMVs que achei úteis e também sys.columns e sys.objects - mas até agora não tivemos sorte.
Respostas:
Supondo que você esteja falando de dados criptografados com chaves do SQL Server, existe uma maneira de encontrar essas colunas.
A
Key_name()
Função retornará o nome da chave usada para a criptografia para esse valor específico e retornará NULL se não houver nada criptografado com uma chave "conhecida" (de terceiros ou simples não criptografada).Com esse conhecimento, podemos testar todas as colunas para ver se elas contêm pelo menos uma linha que possui um valor varbinário que retorna um nome de chave
funcionalidade de key_name ()
resultados:
resultados:
Como implementá-lo para encontrar colunas criptografadas
resultados:
fonte
O problema com a criptografia no nível da célula é que a própria coluna não é realmente criptografada, são os dados contidos nessa coluna. As próprias colunas são apenas colunas varbinárias (porque é isso que é necessário) e podem conter dados completamente legíveis. É o uso das funções
ENCRYPTBY*
eDECRYPTBY*
que realmente tornam os dados criptografados.Você pode começar consultando a exibição sys.columns em busca de todas as colunas que são binárias:
Caso contrário, você precisará revisar seu código para identificar onde as funções de criptografia / descriptografia estão sendo usadas:
fonte
Execute a consulta abaixo em um banco de dados específico
Ligeiramente alterado de
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/ca9d8360-5d7e-4de1-abe6-ce1afda595a9/how-to-find-which-table-columns-are-encrypted?forum=sqlsecurity
fonte
Você pode encontrar as colunas criptografadas com chaves \ certificados pesquisando todas as colunas varbinárias e verificando uma chave de criptografia com a função KEY_NAME.
No entanto, esse processo é um pouco caro e demorado. Se você precisar encontrar essas colunas regularmente, sugiro "marcar" as colunas com propriedades estendidas. Podemos desenvolver a solução de Edward Dortland e "marcar" as colunas encontradas com propriedades estendidas como encrypted, encryptkey e encryptcert.
Em seguida, podemos encontrar facilmente as colunas criptografadas pesquisando as propriedades estendidas.
fonte