DB

[MySQL] (권한관리7️⃣) 사용자 관리 실수 방지 체크리스트

인생아 2025. 7. 11. 16:35
반응형

MySQL 사용자 계정과 권한은 강력한 보안 수단이자 치명적인 리스크 요인이 될 수 있다.
실제 많은 장애와 보안 사고가 사용자 관리 실수에서 비롯되며, 예방만 잘 해도 문제의 80%는 사전에 차단할 수 있다.

🚫 1. 불필요한 사용자 계정 방치

  • 테스트 계정, 임시 계정, 기본 계정(root 이외) 삭제 여부 확인
  • 사용하지 않는 계정은 DROP USER로 제거하거나 RENAME 처리
DROP USER 'testuser'@'%';

또는

RENAME USER 'tester'@'%' TO 'tester_disabled'@'%';
반응형

🔐 2. 계정 비밀번호 정책 미적용

  • validate_password 플러그인 미사용 시 보안 위험 높음
  • 비밀번호 복잡도, 길이, 만료 주기 설정 필수
ALTER USER 'user1'@'%' PASSWORD EXPIRE INTERVAL 90 DAY;

💥 3. GRANT OPTION 무분별 사용

  • GRANT OPTION 부여 시 권한 전파됨
  • 관리 계정 외에는 절대 부여 금지
GRANT SELECT ON db.* TO 'user1'@'%' WITH GRANT OPTION;  -- ❌ 매우 위험

🔍 4. 권한 확인 없이 사용자 삭제

  • 프로시저, 이벤트, 트리거에 연결된 사용자 삭제 시 장애 발생
  • 삭제 전 SHOW GRANTS, INFORMATION_SCHEMA 점검 필수
SHOW GRANTS FOR 'user1'@'%';
SELECT * FROM information_schema.routines WHERE DEFINER = 'user1@%';

🚫 5. % 와일드카드 남용

  • %는 모든 IP 허용으로 보안 리스크 매우 높음
  • 가능한 경우 IP 범위 또는 고정 IP 지정
CREATE USER 'safeuser'@'192.168.10.%' IDENTIFIED BY 'pass';
반응형

⚙️ 6. 권한 삭제 없이 사용자만 삭제

  • 사용자 삭제 전 반드시 REVOKE 또는 SHOW GRANTS로 권한 확인
  • DROP USER는 권한도 함께 삭제되지만, 관련 객체 영향은 고려해야 함

💡 7. 권한 정기 점검 미실시

  • 분기마다 계정 점검 루틴 필요
  • 남용, 과도 권한, 미사용 계정, 만료 누락 점검

예시 점검 쿼리:

SELECT user, host, password_last_changed, password_expired
FROM mysql.user;

🧠 실무자가 꼭 기억해야 할 원칙

  • 권한은 부여보다 회수와 최소화가 중요
  • 모든 변경은 로그로 남기거나 문서화
  • 실제 운영권한은 역할기반으로 분리(RBAC)
  • 권한/계정 변경은 반드시 승인 프로세스를 거친다
  • ALL PRIVILEGES, GRANT OPTION은 절대 자동 배포 금지

✅ 정리

  • 사용자 관리는 단순한 기술이 아닌 보안과 운영의 핵심 절차다.
  • 단 한 번의 실수가 치명적인 문제로 이어질 수 있다.
  • 실수 방지를 위한 체크리스트를 주기적으로 실행하고, 권한은 최소한으로 유지해야 한다.
  • 예방이 최고의 보안이다.

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

 

반응형