이번 글에서는 SQL Server에서 컬럼 암호화를 하기 위해 테스트한 전체 쿼리입니다. 아래 내용 중 일부 내용을 수정하여 적용할 수 있습니다.
/*
마스터키
*/
-- 마스터키생성
USE TESTDB;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '암호1' -- ⓐ데이터베이스의마스터키를암호화하는데사용되는암호입니다
-- 마스터키백업
USE TESTDB;
OPEN MASTER KEY DECRYPTION BY PASSWORD = '암호1';
BACKUP MASTER KEY TO FILE = 'C:\ExportedMasterKey' -- 생성된파일을잘보관해두어야한다.
ENCRYPTION BY PASSWORD = '암호2' -- ⓑ파일의마스터키를암호화하는데사용되는암호입니다.
GO
-- 마스터키삭제
DROP MASTER KEY
-- 마스터키복원
RESTORE MASTER KEY FROM FILE = 'C:\ExportedMasterKey' -- 백업해두었던마스터키파일
DECRYPTION BY PASSWORD = '암호2' -- ⓑ
ENCRYPTION BY PASSWORD = '암호1' -- ⓐ
-- 마스터키조회
SELECT * FROM TESTDB.sys.symmetric_keys
/*
인증서
*/
-- 인증서초기생성
USE TESTDB;
CREATE CERTIFICATE Cert_HAN -- 인증서이름
ENCRYPTION BY PASSWORD = '암호3' -- ⓒ인증서비밀번호
WITH SUBJECT = '인증서_한', -- 인증서제목
EXPIRY_DATE = '20501231' -- 인증서유효기간('mm/dd/yyyy', 'yyyymmdd')
-- 인증서조회
SELECT * FROM TESTDB.sys.certificates
-- 인증서백업
BACKUP CERTIFICATE Cert_HAN TO FILE = 'C:\Cert_HAN' -- 인증서, 생성된파일을잘보관
GO
-- 인증서삭제 방법
DROP CERTIFICATE Cert_HAN
-- 인증서복구
CREATE CERTIFICATE Cert_HAN FROM FILE = 'C:\Cert_HAN'
GO
/*
대칭키
*/
-- 대칭키생성
USE TESTDB;
CREATE SYMMETRIC KEY SymKEY_HAN WITH ALGORITHM = AES_128
ENCRYPTION BY CERTIFICATE Cert_HAN; -- 대칭키를암호화하는데사용되는인증서이름을지정합니다
GO
-- 대칭키조회
SELECT * FROM sys.symmetric_keys
-- 대칭키오픈
IF EXISTS (SELECT * FROM TESTDB.sys.openkeys WHERE KEY_NAME = 'SymKEY_HAN')
BEGIN
PRINT 'ALREADY OPEN'
END
ELSE
BEGIN
OPEN SYMMETRIC KEY SymKEY_HAN -- 대칭키이름
DECRYPTION BY CERTIFICATE Cert_HAN -- 인증서이름
WITH PASSWORD = '암호3' -- ⓒ인증서비밀번호(대/소분자같아야함.)
PRINT 'OPEN'
END
CREATE TABLE customer(
ID INT IDENTITY PRIMARY KEY,
NAME VARCHAR(20) NOT NULL,
JUMIN_NUM VARBINARY(128) NOT NULL -- 대칭키가Open되어있지않으면NULL값으로대체된다.
)
GO
-- 암호화
INSERT INTO customer(NAME,JUMIN_NUM) VALUES('김한', EncryptByKey(Key_GUID('SymKEY_HAN'), '7005219925487'))
GO
--그냥조회
SELECT * FROM customer
GO
--복호화
SELECT *, CONVERT(VARCHAR, DecryptbyKey(JUMIN_NUM))as 복호화된주민번호 FROM customer
GO
IF EXISTS (SELECT * FROM TESTDB.sys.openkeys WHERE KEY_NAME = 'SymKEY_HAN')
BEGIN
CLOSE SYMMETRIC KEY SymKEY_HAN
PRINT 'CLOSE'
END
ELSE
BEGIN
PRINT 'ALREADY CLOSE'
END
-- 대칭키삭제
DROP SYMMETRIC KEY SymKEY_HAN
'Database > SQL Server' 카테고리의 다른 글
SQL Server netbackup 복원 가이드 (1) | 2024.04.12 |
---|---|
SQL Server 연결된서버 쿼리 오류 분석 방법 예시 (0) | 2024.04.12 |
SQL Server 프로시저 내 TEXT내용으로 검색 (0) | 2024.04.12 |
DBCC Shrinkfile (0) | 2024.04.12 |
SQL Server 기본 점검 쿼리 (0) | 2024.04.12 |