New Function #546
closed[INFRA] DB 암호화
Description
코레일유통 DB암호화 DAMO DA-MYQ 사용자 설명서 전달드립니다
설치된 DA 제품은 DBMS에 암호화,복호화 함수를 생성하여 쿼리에 함수로 데이터를 직접 암호화하는 기능을 제공합니다
Scp database를 생성하여 함수를 만들어 두었습니다
암호화, 복호화 함수는 총 2개의 인자값을 가지며 첫번째는 암호화 정책명으로 KEY1 으로 설정해두었습니다
두번째 값은 암호화,복호화 대상 데이터입니다
암호화 함수 예시는 아래와 같습니다.
사용 예시)
암호화 : select scp.enc_b64('KEY1','test');
복호화 : select scp.dec_b64('KEY1',scp.enc_b64('KEY1','test'));
또한 암호화 후 데이터 길이가 길어지므로 암호화 적용 전에 미리 컬럼 길이를 변경해두어야 합니다
암호화 후 변경되는 컬럼 길이 확인은 아래 내용과 첨부파일을 참고 바랍니다
n 암호화 후 컬럼 길이 확인 방법
*사진 첨부
n 암호화/복호화 상세 방법
D'Amo_DA-MYQ_v5.0.52_사용자_설명서(SL4) (1).pdf 의 77~80p
n DB 암호화 대상
1) 주문 정보(st_order)
: 주문자연락처(orderer_phone), 수령자명(receiver_name), 수령자연락처(receiver_phone), 배송지우편번호(delivery_zipcode), 배송지주소(delivery_address), 배송지보조주소(delivery_sub_address)
2) 결제 정보(st_order_payment)
: 예금주명(holder_name), 환불계좌번호(refund_account_number), 환불예금주명(refund_holder_name)
3) 사용자(st_user)
: 이름(username), 휴대전화번호(hp), 이메일(email), 우편번호(zipcode), 주소(address), 보조주소(subaddress), 사내메일(company_email)
4) 탈퇴회원 정보(st_withdraw_user)
: 이름(username), 휴대전화번호(hp), 이메일(email), 우편번호(zipcode), 주소(address), 보조주소(subaddress), 사내메일(company_email)
Files
Updated by Jisoo Choi 5 months ago
기존에 korail_store 계정이 mysql Database에 권한이 없어 쿼리 조회가 불가했는데(root로만 가능),
현재 select 권한을 부여하여 암호화 함수 조회 가능하도록 수정되었다고 합니다.
Updated by Jisoo Choi 5 months ago
DB 암호화 테스트를 위해서 운영 DB의 scp에 koral_store의 데이터 이전을 부탁드립니다.
*scp의 데이터로 테스트해서 확인 진행하려고 합니다.
Updated by Deca Park 5 months ago
- Assignee changed from Deca Park to Toby Pham
[ADMIN] / [API]
1.config.properties
1) dev
#db encryption flag
db.encrypt.proc=N
2) prod
#db encryption flag
db.encrypt.proc=Y
2.Target DB (table/column)
- apply DB encrypt/decrypt into target DB
1) st_order (6 colmns)
- orderer_phone / receiver_name / receiver_phone / delivery_zipcode / delivery_address / delivery_sub_address
2) st_order_payment (3 colmns)
- holder_name / refund_account_number / refund_holder_name
3) st_user (7 colmns)
- username / hp / email / zipcode / address / sub_address / company_email
4) st_withdraw_user (7 colmns)
- username / hp / email / zipcode / address / sub_address / company_email
3.TO-DO : apply logic (Mapper.xml)
1) INSERT / UPDATE Target DB (table/column)
- when INSERT INTO VALUES
a) if db.encrypt.proc is 'Y'
- scp.enc_b64('KEY1',{value})
b) else
- same as current
2) SELECT Target DB (table/column)
- when SELECT
a) if db.encrypt.proc is 'Y'
- scp.dec_b64('KEY1',{encryptValue})
b) else
- same as current
Updated by Deca Park 5 months ago
- Status changed from Resolved to Feedback
- Assignee changed from Deca Park to Toby Pham
[Review Source]
1.properties
- apply with "KEY1"
db.encrypt.key=KEY1
2.DB function
- scp is applied ??
scp.enc_b64
scp.dec_b64
3.EncryptSQLInterceptor
- apply into just target Mapper (or Mapper > sql) to avoid unnecessary process
1) logic (my idea)
- define target Mapper (or Mapper > sql) as constant
- check it
[Test Issue]
EncryptSQLInterceptor
1) as-is: INSERT/UPDATE/SELECT SQL: you checked if all target SQL has encryptField (findEncryptFields())
2) to-be: add target mapper check logic to avoid non-related SQL execution
Updated by Toby Pham 5 months ago
Simple scp functions
CREATE DATABASE scp; USE scp; CREATE FUNCTION dec_b64(key_value varchar(4000), i_value varchar(4000)) returns varchar(4000) BEGIN return i_value; END; CREATE FUNCTION enc_b64(key_value varchar(4000), i_value varchar(4000)) returns varchar(4000) BEGIN return i_value; USE;
Updated by Jisoo Choi 5 months ago
DB 암호화 테스트를 위한 서버 접속 정보 전달 드립니다.
코레일 테스트 서버
- server ip : 211.188.68.209
- id : stone
- pw : Stone1!
Updated by Jisoo Choi 4 months ago
(기록)
■ 스토리 오더 주문 상태
- (작업 전) 결제대기중 1,568건 / 주문확정 116건 / 수령대기중 3건 / 수령완료 5,785건 / 주문자취소(주문취소) 252건 / 자동확정 9,739건 / 매장취소(주문취소) 5,014건 / 매장취소(환불) 434건
- (작업 전) 결제대기중 1,568건 / 주문확정 116건 / 수령대기중 3건 / 수령완료 5,785건 / 주문자취소(주문취소) 252건 / 자동확정 9,739건 / 매장취소(주문취소) 5,014건 / 매장취소(환불) 434건
■ 스토리 오더 주문 건수
- (작업 전) 22,911건
- (작업 후) 22,911건
■ st_user
- (작업 전) 회원 수(탈퇴 회원 포함): 8,639건
- (작업 후) 회원 수(탈퇴 회원 포함): 8,639건
■ st_withdraw_user
- (작업 전) 탈퇴 회원 수: 171건
- (작업 전) 탈퇴 회원 수: 171건
■ 테스트 데이터 (회원 정보)
(작업 전/후)
- 이름: 최지수 / ZDauDZg4IHSh2Id5S0h+Pw==
- 휴대전화번호: 01091485641 / 3TFAam6domwh2zG+PA4prA==
- 이메일: t@daum.net / eXl4PcvJ2G6XLnMmyEMJGQ==
*수정했을 경우 McxjFginG0A6r2R4InAiDg==
- 우편번호: 13536 / fDyNbfEyMrQfa39YmLJAdQ==
- 주소: 경기 성남시 분당구 판교역로10번길 3 / wZKWbuyPU7kHxEVmLM65sq//hH5VwgBcccXA2uHh/09KRkFOV1PPfUGKHnF8IISOtn824cbvv6zqgkr3UO6/XQ==
■ 테스트 데이터 (주문 정보)
정상 확인 완료