Ao compilar uma aplicação construída em uma linguagem de programação usual, obtém-se um ou mais arquivos binários executáveis. Nesses arquivos, o código-fonte não é acessível, o que aumenta a proteção da lógica utilizada para escrever o programa.
O SQL Server permite fazer algo semelhante com as stored procedures e views armazenadas em seus bancos de dados. Em termos práticos, é possível criptografar os comandos SQL contidos em uma procedure ou view de forma que o comando sp_helptext não seja capaz de exibir o script do objeto em questão.
O uso da cláusula WITH ENCRYPTION permite que esta tarefa seja realizada.
Para exemplificar, utilizaremos a tabela Vendas.Clientes, definida abaixo:CREATE TABLE Vendas.Clientes
(
id INTEGER INDENTITY(1,1) PRIMARY KEY,
nome VARCHAR(50),
email VARCHAR(50),
rendaMensal MONEY
)
Criptografando uma Stored Procedure
Para criptografar uma Stored Procedure, deve-se incluir a opção WITH ENCRYPTION, ao criá-la , conforme o exemplo abaixo:
Para criptografar uma Stored Procedure, deve-se incluir a opção WITH ENCRYPTION, ao criá-la , conforme o exemplo abaixo:
CREATE PROCEDURE Vendas.proc_rendaCliente
@id int
WITH ENCRYPTION
AS
SELECT nome, rendaMensal FROM Vendas.Cliente
WHERE id = @id
GO
@id int
WITH ENCRYPTION
AS
SELECT nome, rendaMensal FROM Vendas.Cliente
WHERE id = @id
GO
Ao executar a procedure do sistema sp_helptext passando como parâmetro o nome da procedure criada, o SQL Server mostra uma mensagem informando que a procedure não pode ser exibida porque foi criptografada. Veja o resultado abaixo:
Criptografando uma Stored Procedure
A criptografia dos comandos de uma View é muito semelhante à de uma Stored Procedure. Para criptografar uma View, deve-se incluir a opção WITH ENCRYPTION, ao criá-la , conforme o exemplo abaixo:
Ao executar a procedure do sistema sp_helptext passando como parâmetro o nome da view criada, o SQL Server mostra uma mensagem informando que o código da view não pode ser exibido porque ela foi criptografada. Veja o resultado abaixo:
Conclusão
Criptografar os comandos de Stored Procedures e Views pode ser uma alternativa para aumentar a segurança de uma banco de dados, ocultando a lógica de processos implementados no banco e ocultando regras de negócio de uma solução.
Uma vez criptografado, não é possível recuperar o código que gerou o objeto. Portanto, é muito importante ter uma cópia do código-fonte em algum lugar seguro para fins de backup e manutenções futuras.
Referência
CREATE PROCEDURE (Transact-SQL) (MSDN)
Criptografando uma Stored Procedure
A criptografia dos comandos de uma View é muito semelhante à de uma Stored Procedure. Para criptografar uma View, deve-se incluir a opção WITH ENCRYPTION, ao criá-la , conforme o exemplo abaixo:
CREATE VIEW Vendas.vw_rendaClientes
WITH ENCRYPTION
AS
SELECT nome, rendaMensal FROM Vendas.Cliente
GO
WITH ENCRYPTION
AS
SELECT nome, rendaMensal FROM Vendas.Cliente
GO
Ao executar a procedure do sistema sp_helptext passando como parâmetro o nome da view criada, o SQL Server mostra uma mensagem informando que o código da view não pode ser exibido porque ela foi criptografada. Veja o resultado abaixo:
Conclusão
Criptografar os comandos de Stored Procedures e Views pode ser uma alternativa para aumentar a segurança de uma banco de dados, ocultando a lógica de processos implementados no banco e ocultando regras de negócio de uma solução.
Uma vez criptografado, não é possível recuperar o código que gerou o objeto. Portanto, é muito importante ter uma cópia do código-fonte em algum lugar seguro para fins de backup e manutenções futuras.
Referência
CREATE PROCEDURE (Transact-SQL) (MSDN)
2 comentários:
Acredito que essa opção existente nas versões do SQL Server 2000 seria muito pertinente, mas desde a versão SQL Server 2005, temos mais um tipo de permissão aplicado a procedure: View Definition. Sem essa permissão um usuário sem permissões administrativas não teria acesso ao conteúdo de uma procedure, assim temos um controle maior das permissões e uma redução na possibilidade da falta do fonte da proc para uma manutenção.
Muito bem lembrado! =)
Postar um comentário