DB

[MySQL] (권한관리3️⃣) 사용자별 권한 제한: 최소 권한 원칙 실무 적용

인생아 2025. 7. 10. 13:51
반응형

MySQL에서 가장 중요한 보안 원칙 중 하나는 바로 최소 권한 원칙(Least Privilege Principle)이다.
불필요한 권한은 반드시 제거하고, 사용자에게는 자신의 역할 수행에 꼭 필요한 권한만 부여해야 한다.
이 원칙은 보안 사고 예방은 물론, 데이터 무결성 보호에도 결정적인 역할을 한다.

🔐 최소 권한 원칙이 중요한 이유

  • 실수로 인한 데이터 삭제 방지
  • 공격자 침입 시 피해 최소화
  • 내부 사용자 오용 가능성 차단
  • DB 운영의 책임 분산과 추적 가능성 확보

단 하나의 ALL PRIVILEGES가 시스템 전체를 위험에 빠뜨릴 수 있다.

🧑‍💻 실무 역할 기반 권한 구성 예시

사용자 유형 권한
분석가 SELECT (조회만 가능)
개발자 SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER (테스트 DB 한정)
운영자 SELECT, INSERT, UPDATE, DELETE (운영 DB에서 테이블 단위로 분리 적용)
관리자(DBA) ALL PRIVILEGES + GRANT OPTION (운영 전용, 제한된 계정만 사용)

역할에 따라 계정을 분리하고, 접속 가능 IP도 함께 제한하는 것이 필수다.

반응형

🧪 최소 권한 부여 실전 예제

✅ 1. 분석 전용 계정

CREATE USER 'analyst'@'%' IDENTIFIED BY 'readonly123';
GRANT SELECT ON salesdb.* TO 'analyst'@'%';
  • 데이터 분석만 가능, 실수로 수정할 위험 없음

✅ 2. 개발자 테스트 DB 전용 권한

CREATE USER 'dev'@'%' IDENTIFIED BY 'devpass';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER ON testdb.* TO 'dev'@'%';
  • 운영 DB 접근은 차단, 테스트 DB에서만 작업 가능

✅ 3. 운영 DB 테이블 제한 권한

CREATE USER 'ops'@'10.0.0.%' IDENTIFIED BY 'opspass';
GRANT SELECT, UPDATE ON prod.orders TO 'ops'@'10.0.0.%';
  • orders 테이블만 조회·수정 가능, DELETE 권한은 없음

🛡️ 권한 제한 시 보안 강화 팁

  • GRANT OPTION은 관리자 외 절대 부여 금지
  • ALL PRIVILEGES는 개발용 DB 외에 사용 금지
  • 접속 허용 호스트는 % 대신 정확한 IP 또는 VPN 대역 지정
  • 패스워드는 주기적으로 변경하고, 비밀번호 정책 적용 필수
반응형

🧪 실전 점검 체크리스트

1. 모든 사용자 계정의 권한 목록 확인

SELECT user, host FROM mysql.user;
SHOW GRANTS FOR '사용자명'@'호스트';

2. 필요 없는 권한은 REVOKE로 제거

REVOKE DELETE ON prod.orders FROM 'ops'@'10.0.0.%';

3. 불필요한 계정은 DROP USER로 삭제

DROP USER 'testuser'@'%';

4. 운영/테스트/개발 환경 별로 사용자 철저히 분리

5. 모든 권한 변경은 로그 또는 문서로 기록

✅ 정리

  • 최소 권한 원칙은 MySQL 보안의 핵심 전략이다.
  • 사용자별 업무 목적에 맞는 권한만 부여하고, 나머지는 철저히 제한한다.
  • GRANT 사용 시에도 대상 범위(DB, 테이블, 컬럼)를 명확히 지정해야 한다.
  • 정기적인 권한 점검과 관리 문서화가 필수다.
  • 권한 남용은 보안 사고로 직결된다. 예방이 최고의 방어다.

🔗 공식 문서 참고
MySQL 8.0 Reference Manual - Access Control and Account Management

 

반응형