반응형
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
반응형
'DB' 카테고리의 다른 글
| [MySQL] (백업/복구4️⃣) PITR(Point In Time Recovery) 원리와 설정 실습 (2) | 2025.07.12 |
|---|---|
| [MySQL] (백업/복구3️⃣) Binary Log 기반 백업 전략과 설정법 (2) | 2025.07.12 |
| [MySQL] (백업/복구2️⃣) mysqldump 백업과 복원 방법 완벽 가이드 (0) | 2025.07.12 |
| [MySQL] (백업/복구1️⃣) 백업의 모든 것: 개념, 필요성, 전략 총정리 (0) | 2025.07.12 |
| [MySQL] (권한관리6️⃣) 사용자 권한 확인 및 변경, 삭제 실무 명령어 정리 (2) | 2025.07.11 |
| [MySQL] (권한관리5️⃣) 비밀번호 관리와 인증 보안 강화 전략 (0) | 2025.07.11 |
| [MySQL] (권한관리4️⃣) 사용자별 리소스 제한 설정하기 (연결 수, 쿼리 수 등) (2) | 2025.07.10 |
| [MySQL] (권한관리3️⃣) 사용자별 권한 제한: 최소 권한 원칙 실무 적용 (0) | 2025.07.10 |