728x90
1. 현재 비밀번호 정책 확인하기
MySQL의 현재 비밀번호 정책을 확인하려면 다음 명령어를 사용합니다:
SHOW VARIABLES LIKE 'validate_password%';
이 명령어를 실행하면 현재 설정된 비밀번호 관련 정책들을 모두 확인할 수 있습니다.
2. 비밀번호 정책 수준 변경하기
MySQL은 세 가지 수준의 비밀번호 정책을 제공합니다:
-- LOW 레벨로 설정
SET GLOBAL validate_password.policy = 0;
-- MEDIUM 레벨로 설정
SET GLOBAL validate_password.policy = 1;
-- STRONG 레벨로 설정
SET GLOBAL validate_password.policy = 2;
각 정책 레벨의 특징:
- LOW (0): 비밀번호 길이만 검사합니다.
- MEDIUM (1): 길이, 숫자, 대소문자, 특수문자 조합을 검사합니다.
- STRONG (2): MEDIUM 레벨의 검사에 더해 사전 단어 검사까지 수행합니다.
STRONG 정책이란?
STRONG 정책(validate_password.policy = 2)은 MySQL에서 제공하는 가장 강력한 비밀번호 검증 수준입니다. 이 정책은 MEDIUM 정책의 모든 요구사항을 포함하면서 추가적인 사전 검사를 수행합니다.
검사 항목 상세
기본 요구사항 (MEDIUM 정책 포함)
- 지정된 최소 길이 준수
- 대문자 포함
- 소문자 포함
- 숫자 포함
- 특수 문자 포함
사전 단어 검사
- MySQL은 일반적인 단어나 간단한 문자열이 비밀번호의 주요 부분으로 사용되는 것을 방지합니다
- 예를 들어, 다음과 같은 비밀번호는 거부될 수 있습니다:
password123!A (password가 사전 단어) welcome2024!B (welcome이 사전 단어) admin123!C (admin이 사전 단어)
사전 단어 검사의 작동 방식
-- 사전 파일 위치 확인
SHOW VARIABLES LIKE 'validate_password.dictionary_file';
MySQL의 사전 단어 검사는 다음과 같이 작동합니다:
기본 사전 검사
- MySQL은 기본적으로 내장된 사전을 사용하여 일반적인 단어들을 검사합니다
- 시스템 관리자는 추가적인 사전 파일을 구성할 수 있습니다
커스텀 사전 설정
-- 커스텀 사전 파일 설정 SET GLOBAL validate_password.dictionary_file = '/path/to/dictionary.txt'; -- 사전 파일 적용 SET GLOBAL validate_password.dictionary_file_last_parsed = NOW();
사전 검사 예시
다음과 같은 비밀번호는 STRONG 정책에서 거부될 수 있습니다:// 거부되는 예시 Password123! (Password가 사전 단어) Secret123! (Secret이 사전 단어) Qwerty123! (Qwerty가 키보드 패턴) // 승인되는 예시 P@ssw9rd#2024Xy (복잡한 조합) Kj#92mNp$q (랜덤한 문자열)
실제 구현 예시
-- STRONG 정책 설정
SET GLOBAL validate_password.policy = 2;
-- 최소 길이 설정 (예: 12자)
SET GLOBAL validate_password.length = 12;
-- 사용자 정의 사전 파일 설정 (선택사항)
SET GLOBAL validate_password.dictionary_file = '/etc/mysql/dictionary.txt';
-- 설정 확인
SHOW VARIABLES LIKE 'validate_password%';
주의사항
성능 고려사항
- STRONG 정책은 추가적인 검사로 인해 비밀번호 검증 시간이 약간 더 소요될 수 있습니다
- 대규모 시스템에서는 이 점을 고려해야 합니다
사용자 경험
- 사용자들에게 비밀번호 요구사항을 명확히 안내해야 합니다
- 비밀번호 생성 가이드라인을 제공하는 것이 좋습니다
유지보수
- 커스텀 사전을 사용하는 경우 정기적인 업데이트가 필요할 수 있습니다
- 시스템 업그레이드 시 설정이 초기화될 수 있으므로 백업이 필요합니다
3. 비밀번호 최소 길이 설정
비밀번호의 최소 길이를 변경하고 싶다면:
SET GLOBAL validate_password.length = 8; -- 원하는 길이로 설정
4. 사용자 비밀번호 변경 방법
비밀번호 정책을 변경한 후, 다음과 같이 사용자의 비밀번호를 변경할 수 있습니다:
-- 방법 1
ALTER USER 'username'@'hostname' IDENTIFIED BY 'new_password';
-- 방법 2
SET PASSWORD FOR 'username'@'hostname' = PASSWORD('new_password');
주의사항
권한 요구사항
- 비밀번호 정책을 변경하려면 SUPER 또는 SYSTEM_VARIABLES_ADMIN 권한이 필요합니다.
보안 고려사항
- 비밀번호 정책을 낮추는 것은 보안상 위험할 수 있으므로 신중하게 결정해야 합니다.
- 가능한 한 강력한 비밀번호를 사용하는 것이 좋습니다.
버전 차이
- MySQL 8.0 이상에서는 validate_password가 플러그인 형태로 제공됩니다.
- 이전 버전과 설정 방법이 약간 다를 수 있으니 버전을 확인해주세요.
정책 변경 실제 예시
다음은 비밀번호 정책을 MEDIUM 레벨로 설정하고, 최소 길이를 10자로 지정하는 예시입니다:
-- 정책 레벨을 MEDIUM으로 설정
SET GLOBAL validate_password.policy = 1;
-- 최소 길이를 10자로 설정
SET GLOBAL validate_password.length = 10;
-- 변경된 설정 확인
SHOW VARIABLES LIKE 'validate_password%';
이렇게 설정하면 비밀번호는 최소 10자 이상이어야 하며, 숫자, 대소문자, 특수문자를 포함해야 합니다.
마무리
MySQL의 비밀번호 정책은 보안과 직결되는 중요한 설정입니다. 시스템의 요구사항과 보안 수준을 고려하여 적절한 정책을 설정하시기 바랍니다. 정책을 변경할 때는 반드시 보안 영향을 검토하고, 필요한 경우 관련 팀과 협의 후 진행하시기를 권장드립니다.
728x90
'개발 > Database' 카테고리의 다른 글
[Database] MYSQL - VARCHAR vs TEXT (0) | 2023.06.30 |
---|