SQL Server/SQL Server Tip

SQL Server Stored Procedure 암호화

SungWookKang 2015. 7. 20. 11:16
반응형

SQL Server Stored Procedure 암호화

 

  • Version : SQL Server 2000, 2005, 2008, 2008R2, 2012

 

웹 서버나 기타 응용 프로그램에서 SQL Server에 데이터를 입력하거나 조회, 삭제 등의 작업을 할 때 실제 코드를 알 수 없도록 Stored Procedure(SP)를 만들어서 사용한다.

SP의 장점은 캡슐화가 되어 있어 외부 사용자가 코드를 확인 할 수 없으며 성능상에서도 많은 이점이 있기에 거의 대부분이 사용한다. 하지만 관리자나 개발자는 SP의 코드를 볼 수가 있다.

중요한 로직의 경우 SP 자체를 암호화 하는 방법을 없을까?

 

방법은 간단하다. 프로시저 생성시 암호화 옵션을 추가 하면 된다. 암호화 옵션은 WITH ENCRYPTION 을 사용한다.

 

아래 스크립트를 실행 하면 SP를 암호화 하여 SP의 내용을 확인 할 수 없다고 나타난다.

CREATE PROCEDURE USP_ENCRYPT

WITH ENCRYPTION

 

AS

 

SELECT 1

 

GO

 

 

EXEC SP_HELPTEXT 'USP_ENCRYPT'

 

 

 

SSMS의 개체 탐색기에서도 암호화된 SP의 경우에는 자물쇠 모양의 아이콘이 표시되며 마우스 오른쪽을 클릭하였을 때에도 [수정]의 메뉴가 비활성화 되어 있다.

 

 

카탈로그 뷰 에서 직접 쿼리를 호출 하여 확인 해 보자. 암호화되지 않은 SP의 경우 조회가 되지만 암호화된 SP의 경우 NULL로 나타나는 것을 확인 할 수 있다.

-- Not Encryption

SELECT DEFINITION FROM SYS.SQL_MODULES

WHERE OBJECT_ID = OBJECT_ID('DBO.USP_CHECKDB_JEVIDA')

 

-- Encryption

SELECT DEFINITION FROM SYS.SQL_MODULES

WHERE OBJECT_ID = OBJECT_ID('DBO.USP_ENCRYPT')

 

 

 

중요한 것은 암호화된 SP는 얼마든지 해독이 가능하다. 이미 많은 소프트웨어 업체들이 SP의 해독 프로그램을 서드파티로 제공하고 있다.

SP의 암호화 옵션을 안전을 위한 유일한 방법이라는 생각을 버리자.

 

[복호화 툴]

http://www.devlib.net/decryptsql.htm

http://www.sql-shield.com/support/decrypt-stored-procedure

 

 

[참고 자료]

http://msdn.microsoft.com/ko-kr/library/ms187926.aspx

http://www.mssqltips.com/sqlservertip/1046/decrypting-sql-server-database-objects/

 

2013-01-30 / 강성욱 / http://sqlmvp.kr

 

 

 

반응형