데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

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/

 



강성욱 / jevida@naver.com

Microsoft SQL Server MVP

Blog : http://sqlmvp.kr

Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
1731 SQL Server 그래픽 실행 계획 및 텍스트 실행 계획 jevida(강성욱) 2016.09.14 3126
1730 SQL Server에서 Trigger 활성 / 비활성 감시 jevida(강성욱) 2016.09.14 1469
1729 DDL Trigger를 이용한 데이터베이스 변경 사항 추적 jevida(강성욱) 2016.09.14 1230
1728 Trigger를 이용한 SQL Server 커넥션 풀링 확인 jevida(강성욱) 2016.09.14 1088
1727 SQL Server Trigger jevida(강성욱) 2016.09.14 938
1726 인덱스에 대한 SORT_IN_TEMPDB 옵션 jevida(강성욱) 2016.09.14 846
1725 인덱스 DDL 작업의 디스크 공간 요구 사항 jevida(강성욱) 2016.09.14 912
1724 XML nodes() 함수를 이용한 OPENXML 교체 jevida(강성욱) 2016.09.14 945
1723 XQuery를 사용한 XML 데이터 업데이트 jevida(강성욱) 2016.09.14 1883
1722 BCP XML 파일 형식 jevida(강성욱) 2016.09.14 1255
1721 SQL Server로 데이터 가져오기 jevida(강성욱) 2016.09.14 1223
» SQL Server Stored Procedure 암호화 jevida(강성욱) 2016.09.14 2689
1719 SQL Server 대칭키 vs 비대칭키 암호화 jevida(강성욱) 2016.09.14 1687
1718 SQL Server 마스터 키 관리 jevida(강성욱) 2016.09.14 1750
1717 대칭키를 사용하여 SQL Server 암호화(열 수준) 하기 jevida(강성욱) 2016.09.13 5673
1716 DMV를 사용하여 누락된 인덱스 확인 jevida(강성욱) 2016.09.13 1343
1715 DMV를 이용한 SQL Server 대기 상태 확인 jevida(강성욱) 2016.09.13 3807
1714 DMV를 이용한 SQL Server 성능 카운터 확인 jevida(강성욱) 2016.09.13 1787
1713 DMV를 이용한 SQL Server IO 성능 모니터 스냅샷 만들기 jevida(강성욱) 2016.09.13 1244
1712 DMV를 활용한 SQL Server 모니터링 jevida(강성욱) 2016.09.13 1261





XE Login