본문 바로가기

데이터베이스/MSSQL

저장프로시저 암호화 및 뷰 암호화

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- =============================================

-- Author:          bjg

-- Create date: 2013-06-17

-- Edit date : 2013-06-28

-- Description:     분개전표작성(직원경비지출결의서)

-- 

-- EX) EXEC USP_ACCOUNTING 'testid','10'20130101,2,'25300','미지급금'

-- =============================================

ALTER PROCEDURE USP_ACCOUNTING (

       @p1 NVARCHAR(10),

       @p2 NVARCHAR(2),

       @p3 DECIMAL(8,0),

       @p4 DECIMAL(8,0),

       @p5 NVARCHAR(8),

       @p6 NVARCHAR(40)

) WITH ENCRYPTION

AS



WITH ENCRYPTION 으로 작성하게 되면 해당 프로시저는 암호화 되어 볼수가 없게 된다. 

이때 중요 한 것은 해당 프로시저 원본 파일이 없으면 안됀다는 일이다.


테스트 단에서는 해당 ENCRYPTION 구문을 삭제 하여 작성 한 후 실제 고객사 SQL 서버 배포시에만 사용 하면 될 것으로 보인다.




다음은 VIEW 의 암호화


퍼왔음 원본[http://laigo.kr/498]


SQL Server 2008 환경에서 VIEW 생성 시, Encryption(암호화) 옵션을 사용할 경우 볼 수 있는 여러가지 상황들을 정리하였습니다. 

USE LAIGO;
GO

-- 암호화 된 뷰를 생성합니다.
CREATE VIEW INFO_LAIGO WITH ENCRYPTION
AS
SELECT * FROM MyTempTable

-- 일반 뷰를 생성합니다. 
CREATE VIEW INFO_JOB
AS
SELECT * FROM MyTempTable

-- SSMS 개체 탐색기로 확인하면 아래와 같이 암호화 된 뷰에 자물쇠 아이콘을 볼 수 있습니다. 



-- 뷰의 정의 내역을 확인합니다. 
SP_HELPTEXT 'INFO_LAIGO'
개체 'INFO_LAIGO'의 텍스트가 암호화되었습니다.


-- 해당 view 의 정의된 내용을 확인해 보지만 encrypted 값이 1로 설정되어 있으며 내용이 보이지 않습니다. 
select * from sys.syscomments where object_id('INFO_LAIGO') = id



-- 종속된 테이블 이름은 확인이 가능합니다. 
sp_depends 'INFO_LAIGO'
현재 데이터베이스에서 지정한 개체가 다음 개체를 참조합니다.
name                type                         updated    selected    column
----------------------------------------------------------------------
dbo.MyTempTable     user table         no            yes          값필드


-- 혹시 SQL Server Profiler 를 통해서 쿼리를 확인해 보면? 
SELECT * FROM INFO_LAIGO
- 결과는 'SELECT * FROM INFO_LAIGO'


-- ALTER VIEW 를 통해 수정할 수 있을까요?
ALTER VIEW INFO_LAIGO 
AS 
SELECT * FROM TEST
네, 정상적으로 명령이 완료되었습니다. 기존 정보는 모두 사라지고 새로운 쿼리로 업데이트 되었습니다. 
Encrpytion 인자를 부여하지 않았으므로 암호화는 해제됩니다. 



[참고자료]
CREATE VIEW (Transact-SQL)
http://msdn.microsoft.com/en-us/library/ms187956.aspx

sp_depends (Transact-SQL)
http://msdn.microsoft.com/en-us/library/ms189487.aspx

sp_helptext (Transact-SQL)
http://msdn.microsoft.com/en-us/library/ms176112.aspx


작성자 : Lai Go / 작성일자 : 2010.03.22