C# 로 AES 알고리즘 함수 암.복호화 작성후
CLR 로 덮어 씌워 DB에서 실행.

데이터베이스 권한 수준 안전에서도 잘 돌아간다.

AES 알고리즘 부분은 구글에서 검색시 여러가지 방법으로 구현한 것들이 많고(ex: http://bullpeng.tistory.com/61)
.net framework 3.5 이상버전(VS2008이상)에서 System.Security.Cryptography 에 라이브러리가 잘 정의되어 있다.

CLR 사용해서 키를 정해두고 중요개인정보는 암호화해서 저장해두면 웹서버/디비서버 다 털지 않는한 DB만 가져가선 볼 수 없다.
by Tomoya 2011.12.08 17:00

참 오랜만에 글 쓰는듯..
7월엔 놀고 8월엔 공부하고,9월엔 공부하면서 "슬슬 결과물을 하나는 내보자." 생각하면서 추석뒤에 1차로 뽑아낸 결과물입니다.

아직 초기 테스트 버전이기에 정말 심플합니다.

기능중 일부만 소개 할 것 이기에 2가지만 넣었습니다.

*이 프로그램을 테스트하기 위해선 MS SQL SERVER 2005 EXPRESS 버전 이상이 필요합니다.
필자의 개발환경및 테스트 환경은 SQL SERVER 2008 R2 EXPRESS 32bit(winxp)/64bit(win7) 이었습니다.

먼저 이 부분은 CLR 설정 부분입니다.
*CLR을 활성화 하신분이면 넘어가셔도 됩니다.
*따로 적거나 하지 않으셔도 아래 첨부된 sql 파일에 주석까지 다 달려 있으니 그대로 해보시면 됩니다.

--CLR을 활성화 하는 설정입니다.
SP_CONFIGURE 'CLR ENABLED',1
RECONFIGURE WITH OVERRIDE
GO

--CLR을 활성화 합니다.
SP_CONFIGURE
GO

 아랫 부분은 프로그램 등록 및 테스트 입니다.
*편의상 C드라이브 루트 밑에 위치시켰고 편한쪽에 위치 시키시면 됩니다.

 --현재 DB에 어셈블리로 등록합니다.
CREATE ASSEMBLY ASM_GetDBSystemInfo FROM 'C:\GetDBSystemInfo.dll'
WITH PERMISSION_SET = UNSAFE
go

--등록된 어셈블리중 시스템정보표시 프로시저(현재하드디스크용량만 표시)를 등록합니다
CREATE PROC usp_clr_GetSysInfo
AS EXTERNAL NAME ASM_GetDBSystemInfo.StoredProcedures.usp_clr_GetSysInfo
GO

--등록된 시스템정보 표시 프로시저를 호출합니다.(테스트)
EXEC usp_clr_GetSysInfo
GO

--DB 시스템에 커맨드 명령을 날리고 결과를 반환하는 테이블 반환 함수를 지정합니다.
CREATE FUNCTION usp_command(@input NVARCHAR(512))
RETURNS TABLE
(cammand_Result NVARCHAR(512))
AS
EXTERNAL NAME ASM_GetDBSystemInfo.StoredProcedures.usp_command
GO

--DB 시스템에 커맨드 명령을 날려 IP정보를 확인 합니다.
SELECT * FROM usp_command('ipconfig /all');

간단하죠?
이제 usp_command('커맨드') 를 이용해서 간단히 DB시스템을 확인하고 제어 할수 있게 되었습니다.
작성 하실때 CREATE FUNCTION usp_command 부분에서 이름을 다르게 정하시면 그 이름으로도 사용 가능합니다.
또한 매니지먼트 스튜디오에서 DB->프로그래밍기능->어셈블리/함수 쪽에서 유저권한같은 세밀한 설정도 가능합니다.


* 이 프로그램은 프리웨어이며 상업적 이용도 가능합니다. 단 컨텐츠 무단 변경/재배포는 불가능 합니다.
또한 이 프로그램을 사용함으로서 발생 할 수 있는 문제에 대해서 책임지지 않습니다.

10.5일 추가사항.
현재 dll파일이 인증서 없이 제작 되어 있어 SYSADMIN 관리자 권한하에 TRUSTWORTHY ON 설정이
어셈블리 등록전에 필요합니다.
ALTER DATABASE ASNS SET TRUSTWORTHY ON;
를 사용하면 사용가능합니다.(인증서는 향후 추가 해보겠습니다)

by Tomoya 2011.09.23 13:45
| 1 |