DB 개인정보 컬럼 암호화 (with. KMS)
·
DB
DB에는 사용자의 개인정보들이 저장된다. 개인정보들 중 고유식별정보(주민등록번호, 운전면허번호, 여권번호 등)는 반드시 암호화를 해야 하며,일반적인 개인정보(이름, 이메일, 주소 등)도 암호화가 권고되는 경우가 있다. 이러한 개인정보들을 암호화하면서 공부한 개념들과 들었던 궁금증을 함께 끄적여본다. 0. 암호화 방식 선택글의 순서가 약간 엇갈릴 수 있지만,고려한 암호화 방식과 그 차이에 대해 앞 쪽에 미리 적어두는 것이 좋을 것 같아 지금과 같이 기록해두었다.(여기에서 언급되는 단어의 개념들은 다음 챕터들에 정리되었다.) 암호화 방식은 다음의 두 가지를 생각했다.암호화 키를 애플리케이션에서 직접 정의하는 방식과 AWS KMS에 숨기는 방식 두 방식에서 개념적인 차이와 DB 운영적인 차이, 비용적인 차이를..
데이터베이스 접근 시, SSL/TLS 암호화가 필요할까?
·
DB
문득 서버 보안과 관련해서 리서치하던 중 아래의 주제를 발견했다. 백엔드 서버와 DB 서버 간의 데이터를 주고받을 때, SSL/TLS 암호화가 필요할까? 지금까지의 경험 상 web 계층에서 HTTPS 암호화를 위해서의 개념으로만 생각했지, db 계층까지 생각해보지는 않았어서 고민을 하고 정리해보게 됐다. Q. 우선 SSL/TLS 암호화를 왜 사용할까??당연히 두 통신 대상 간에 주고받는 데이터를 암호화하여 누군가에게 노출하지 않고 안전하게 주고받기 위해서이다.암호화하지 않으면 네트워크 트래픽을 엿보는 스니핑, 스푸핑 공격으로 요청에 담겨진 모든 데이터가 노출되게 된다.- 스니핑: 네트워크 상에 오가는 트래픽 상의 데이터를 몰래 엿보는 공격- 스푸핑: 가짜 사이트로 속이고 접속을 유도해, 사용자의 데이..
MariaDB 백업 성능 비교하기 - mysqldump, mariabackup
·
DB
데이터베이스 백업은 예상치 못한 서버 장애를 대비하기 위해 반드시 수행해야 하는 작업 중 하나이다. 이번 포스팅에서는 데이터베이스의 대표적인 백업 방식인 '논리적 백업'과 '물리적 백업'에 대해 살펴보자또한 MariaDB 환경에서 두 방식을 직접 구현해보고 성능을 비교해보자 1. 백업 구성도백업을 진행하는 데 있어, 참여하는 각 주체와 그 역할을 간단한 구성도로 나타내었다.이 때 Amazon S3는 백업 파일을 보관하기 위한 하나의 방법일 뿐, 온프레미스의 파일 스토리지를 이용해도 무방하다. 2. 백업 방식MySQL, MariaDB에서의 백업 방식은 크게 '논리적 백업'과 '물리적 백업'으로 나뉜다. 논리적 백업은 데이터베이스의 구조와 데이터를 논리적 단위(ex. 테이블, 레코드)로 복사하는 방식이다..
[DB] 게시판 - 파일 테이블 설계
·
DB
게시판-파일 테이블을 설계하는 과정에 고민했던 부분이 많아 기록으로 남기게 되었다. 우선 설계를 하기 앞서, 요구사항에 대한 2개의 기본적인 전제를 세웠다. 1) 하나의 게시글에 여러 개의 파일을 등록할 수 있다.- 일반적으로 요구되는 사항으로, 만약 하나의 파일만 등록하는 요구사항이라고 하더라도 이후에 쉽게 확장될 수 있는 요구사항이다. 2) 하나의 파일 테이블로 파일들을 모두 관리한다.- '자유 게시판, 비밀 게시판, 홍보 게시판 ...' , '공지사항, 일대일 문의' 와 같이 여러 게시판이 있는 경우가 있다.각 게시판의 성격에 따라 스키마가 달라져 이를 각각의 게시판 테이블로 설계를 해야되는 경우가 있지만, 파일의 경우는 정의되는 스키마가 동일해 하나의 파일 테이블로 설계를 해도 충분하다. 이러..
[MySQL] View Processing Alogrighms (MERGE vs. TEMPTABLE)
·
DB
view 테이블을 활용한 업무 중 문득 아래와 같은 의문이 들었다. 가정. view 쿼리 결과가 1000만 건일 경우1) view 쿼리가 실행될 때 where 절도 함께 실행되어 단일 쿼리처럼 동작할까?2) 1000만 건을 모두 조회한 후 where 절이 추가로 실행될까? 1번처럼 동작한다면 문제가 없겠지만, 2번처럼 동작한다면 조회 시 바라생하는 비용이 클 것이고, view를 사용하기 위한 명확한 이유가 필요할 것이다. 그럼 아래에서 이 문제에 대해 "view는 어떤 식으로 동작하는지?"와 "view를 사용하는 것이 정말 효율적인지?"에 대한 답을 찾아보며, "나는 view를 올바르게 사용하고 있을까?"에 대해서 생각해보는 시간을 가져보자.  우선 MySQL에서 뷰를 생성할 때 사용할 수 있는 `ME..
[MySQL] Partition 3. DATE 기반 월별 파티션 구현
·
DB
파티셔닝을 적용할 때, 가장 중요한 점이 필요한 파티션만 적절히 접근할 수 있어야 한다.이를 위해서 파티션 표현식을 잘 세워야 한다. 이번 포스트에서는 DATE / DATETIME 필드를 사용해서 월별로 파티셔닝을 진행할 때, 쿼리 실행 계획을 분석하여 파티션 프루닝이 정상적으로 잘 동작하는지 테스트하고 가장 적합한 파티션 표현식이 무엇인지 찾아보는 과정을 담았다. 1. PARTITION BY RANGE (year(GATH_DTM) * 100 + month(GATH_DTM))파티션 프루닝 테스트단건 조회는 파티션 프루닝이 잘 동작하나, 범위 조회는 파티션 프루닝이 전혀 동작하지 않으며 모든 파티션을 스캔하고 있다. 왜 안 될까?위 표현식을 통해서 파티션 생성은 잘 되는 것은 확인했지만, 전체 파티션을 ..