DB

[MySQL] (보안설정1️⃣) 데이터 암호화가 필요한 이유와 기본 개념 정리

인생아 2025. 7. 16. 15:43
반응형

데이터베이스를 운영하다 보면 성능만큼 중요한 것이 바로 보안이다.
특히 개인정보, 결제 정보, 계정 정보처럼 민감한 데이터를 다루는 서비스라면 암호화는 선택이 아니라 필수다.
MySQL에서도 암호화를 통해 저장된 데이터와 전송 중인 데이터를 안전하게 보호할 수 있다.

✅ 왜 데이터 암호화가 중요한가?

  • 데이터 유출 사고가 발생했을 때 암호화되어 있으면 유출되더라도 쉽게 해독되지 않음
  • 보안 감사, 개인정보보호법, ISO 27001 등 보안 기준을 충족하기 위한 필수 조건
  • 클라우드 환경, 원격 접속 환경이 많아지면서 전송 중 데이터 노출 위험 증가
  • 내부자에 의한 악의적 접근(내부 공격)도 암호화를 통해 차단 가능

많은 기업이 방화벽, 접근 제어만으로는 부족하다는 것을 깨닫고
저장 및 전송 구간 암호화를 함께 적용하고 있다.

반응형

🔐 암호화는 크게 두 가지로 나뉜다

1️⃣ 데이터 at rest 암호화

→ 저장된 데이터 자체를 암호화하는 방식

  • 디스크 자체를 암호화하거나
  • 특정 테이블, 컬럼 단위로 암호화
  • 서버가 물리적으로 탈취당해도 데이터 내용은 보호됨

예: AES_ENCRYPT() 함수로 민감한 값을 암호화하여 저장

INSERT INTO user (email, password)
VALUES ('test@domain.com', AES_ENCRYPT('myPassword', 'secret_key'));

2️⃣ 데이터 in transit 암호화

→ 네트워크를 통해 전송되는 데이터를 암호화하는 방식

  • 클라이언트와 MySQL 서버 간의 통신을 SSL/TLS로 보호
  • 중간자 공격(Man-in-the-middle)을 막을 수 있음
  • 데이터가 도청당하더라도 해독 불가능

실무에서는 두 방식 중 하나만 적용하는 것은 보안상 매우 위험하다.
두 가지 암호화를 함께 적용하는 것이 기본 전략이다.

🔍 MySQL 암호화에 사용되는 주요 기술

  • AES (Advanced Encryption Standard): 가장 널리 사용되는 대칭키 암호화 알고리즘
  • SSL/TLS: 네트워크 통신을 안전하게 암호화
  • InnoDB 테이블스페이스 암호화: 디스크 레벨 암호화를 MySQL 내부에서 지원
  • 암호화 함수: AES_ENCRYPT(), AES_DECRYPT(), SHA2(), MD5() 등

이 중 AES 기반의 함수는 컬럼 암호화 용도,
SSL은 전송 중 데이터 보호,
InnoDB 테이블스페이스 암호화는 전체 저장소 수준 보호에 사용된다.

반응형

🧠 암호화와 해싱의 차이도 알아두자

  • 암호화: 데이터를 암호화한 뒤 복호화 가능
  • 해싱: 단방향 처리로, 복호화 불가
  • 비밀번호 저장 시에는 일반적으로 해싱(SHA2, bcrypt 등)을 사용하고
    주민번호나 계좌번호처럼 조회가 필요한 항목은 암호화를 사용한다

💡 실무 적용 예시

항목 처리 방식
비밀번호 SHA2 해싱
주민번호 AES 암호화 저장
로그 기록 전송 중 SSL로 암호화
DB 디스크 InnoDB 테이블 암호화 또는 OS 암호화 사용

보안 정책에 따라 다르지만, 위와 같은 방식이 일반적인 구성이다.

✅ 정리하자면

  • MySQL에서 데이터 암호화는 데이터 at rest, in transit 모두 적용해야 한다
  • 민감한 정보는 반드시 암호화 저장하거나 해싱 처리
  • 통신 중 데이터는 SSL을 통해 보호해야 한다
  • 앞으로 이어질 글에서는 각 방식별 실제 설정 방법과 주의점을 자세히 다룰 예정

📘 공식 문서 참고

https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html

 

반응형