Quão segura é a criptografia dos procedimentos armazenados do SQL Server?

4

Antecedentes

Estou usando o SQL Server 2008 Enterprise no Windows Server 2003 Enterprise. Desenvolvi alguns procedimentos armazenados para o SQL Server e a máquina instalada com o SQL Server pode não estar totalmente sob meu controle (pode ser usada por terceiros não confiáveis).

Pergunta

Desejo proteger meus procedimentos armazenados do código-fonte T-SQL (isto é, não visível por terceiros) usando a função de procedimento armazenado criptografada fornecida pelo SQL Server. Não tenho certeza se criptografar o procedimento armazenado é seguro e se o administrador da máquina (instalado com o SQL Server) terá maneiras de exibir o código-fonte do procedimento armazenado?

    
por George2 14.12.2009 / 18:18

3 respostas

3

É possível descriptografar e exibir a origem de procedimentos armazenados SQL criptografados, uma pesquisa rápida por "procedimento armazenado Decrypt sql" mostra um número razoável de ocorrências, por exemplo:

http://www.mssqltips.com/tip.asp?tip=1046

No entanto, criptografar seu procedimento armazenado, pelo menos, dificulta a visualização da fonte - também não tenho certeza se algum dos métodos atuais de descriptografar procedimentos armazenados é realmente viável em uma instalação de um servidor SQL ao vivo - da última vez que olhei muitos métodos exigiam acesso exclusivo à instância do servidor SQL e impediam que outros usuários acessassem o servidor (embora isso ainda não seja verdade).

Também vale notar que a criptografia do procedimento armazenado pode aumentar as dores de cabeça de suporte - porque você não consegue mais ver os planos de execução dos procedimentos armazenados criptografados, pode ter problemas ao tentar diagnosticar problemas de desempenho.

Não conheço nenhum outro método para proteger sua fonte.

    
por 14.12.2009 / 18:23
2

Para esclarecer a resposta do marc_s (excluída agora)

Para o SQL Server 2005 e superior, o limite para chegar ao "texto simples" é maior do que antes. Basicamente, sysadmin sobre DAC. Nesse ponto, você já está em pânico mesmo assim.

Para o SQL Server 2000 e antes, foi muito mais fácil. Um olhar duro, francamente, fez o trabalho.

Portanto, é seguro o suficiente para usuários finais e desenvolvedores (sem sysadmin), mas não se quiser usá-lo para proteger o IP no site de um cliente.

    
por 14.12.2009 / 18:48
0

"I would like to package my database application in a form that would allow a customer to use it, but without him ever being capable to access the actual data stored in it. I think encrypting the database should help".

a resposta é sempre a mesma: o que você pede é chamado de Digital Rights Management e o SQL Server não suporta DRM. Essa resposta se aplica se você se referir a dados, ao design do esquema ou à lógica de procedimentos armazenados. Veja Quem precisa de criptografia? para uma discussão mais detalhada.

    
por 15.12.2009 / 02:00