본문 바로가기
DATABASE/MariaDB

[MariaDB] Password 복잡도 설정 - simple_password_check Plugin

by DANEW 2023. 12. 6.

Password 복잡도

MariaDB의 계정의 패스워드에 대한 복잡도를 설정 할 수 있다.

 

계정의 패스워드에 최소 자리수, 대소문자, 특수문자, 숫자 등의 제한 값을 설정 할 수 있다.

이와 같은 내용을 설정 하는 플러그인 simple_password_check는 아래와 같이 적용 할 수 있다.

 

1. Plugin 확인

패스워드 복잡도를 설정하기위해 사용 할 simple_password_check 플러그인은 MariaDB와 함께 배포가 되지만,

기본적으로 설치되지는 않기에 확인 후 설치가 필요하다.

 

Plugin Directory 경로 확인

-- 플러그인 경로 확인
mysql
> show variables like 'plugin_dir%';

 

MariaDB의 플러그인이 모여있는 경로를 확인한다.

 

simple_password_check.so 파일을 확인

해당 경로로 가서 simple_password_check.so 파일을 확인한다.

/usr/lib64/mysql/plugin/

플러그인 설치를 위해서는 해당 경로에 simple_password_check.so파일이 위치하고 있어야 한다.

 

Plugin 설치 목록 확인

-- Plugin List
mysql
> show plugins;

설치되어있는 플러그인 리스트를 확인해본다.

플러그인 목록에 simple_password_check가 없는 것을 확인하였으면 이어서 설치를 진행한다.

 

2. Plugin 설치

simple_password_check.so 파일이 정확한 경로에 위치하고 있다면, 설치는 간단하다.

 

Install

mysql
> install soname 'simple_password_check';

 

install 명령어를 통해 simple_password_check 설치한다.

 

Plugin 설치 목록 확인

mysql
> show plugins;

플러그인 리스트를 다시한번 확인해보면, simple_password_check가 설치되었음을 확인 할 수 있다.

 

simple_password_check 옵션 확인

mysql
> show global variables like 'simple_password%';

 

simple_password_check를 설치하고나면 기본 옵션으로 설정이 된다.

 

패스워드 복잡도의 옵션은 아래와 같은 내용을 뜻한다.

  • simple_password_check_digits : value 값 이상의 숫자 포함    
  • simple_password_check_letters_same_case : value 값 이상의 대문자 포함  
  • simple_password_check_minimal_length : value 값 이상의 패스워드 길이    
  • simple_password_check_other_characters  : value 값 이상의 특수문자 포함

simple_password_check 플러그인을 설치하면 기본적으로 

비밀번호 8자리, 숫자1, 대문자1, 특수문자1의 패스워드 복잡도가 설정된다.

 

위 옵션에 맞지않는 패스워드를 사용시 아래와 같이 user를 생성 할 수 없다.

 

3. 옵션 변경 및 계정 생성

simple_password_check 의 옵션은 글로벌 동적 변수로 명령어를 통해 임시로 바로 반영 할 수 있다.

 

SET GLOBAL 임시 반영

 

글로벌 변수 반영은 아래와 같은 명령어로 임시로 반영 할 수 있다

MariaDB를 재시작 할 경우 기본값으로 돌아가므로 해당 변수들의 값을 유지하고 싶을 경우 my.cnf 파일을 수정해야 한다.

 

패스워드에 숫자가 2개 이상 포함되도록 수정

mysql
> set global simple_password_check_digits = 2;

 

패스워드에 대문자가 3개이상 포함되도록 수정

mysql
> set global simple_password_check_letters_same_case = 3;

 

패스워드에 특수문자가 4개이상 포함되도록 수정

mysql
> set global simple_password_check_other_characters = 4;

 

패스워드의 길이가 15자 이상이 되도록 수정

mysql
> set global simple_password_check_minimal_length = 15;

 

이렇게 패스워드의 옵션을 변경 후 옵션값을 확인하면 아래와같이 변경되어있음을 알 수 있다.

mysql
> show global variables like 'simple%';

my.cnf 시스템 파일 수정

위와 같은 명령어를 통해 임시로 패스워드옵션을 변경 할 경우 MariaDB 재기동시 초기화가 되어 기본값으로 돌아온다.

이를 방지하고자 원하는 값을 시스템 파일에 수정하여, 재기동시 MariaDB 시스템에 적용 될 수 있도록 한다.

vi /etc/my.cnf.d/server.cnf

> 문서 내용 수정
-----------------------------
[mysqld]
simple_password_check = ON
simple_password_check_minimal_length = 15
simple_password_check_digits = 2
simple_password_check_letters_same_case = 3
simple_password_check_other_characters = 4

 

  • simple_password_check 값을 ON으로 정의할 경우 패스워드 복잡도를 사용하며, OFF 일 경우 사용하지 않는다.
  • simple_password_check_minimal_length : value 값 이상의 패스워드 길이    
  • simple_password_check_digits : value 값 이상의 숫자 포함   
  • simple_password_check_letters_same_case : value 값 이상의 대문자 포함  
  • simple_password_check_other_characters  : value 값 이상의 특수문자 포함

위 옵션을 적용 하기 위해서는 MariaDB 시스템을 재시작 하여야 한다.

 

User Create

패스워드 복잡도가 설정 된 후 User 생성을 할 경우, 복잡도와 맞지않는 패스워드를 설정하면 오류가 발생한다.

mysql
> create user TEST_USER@'%' identified by 'a1234';

 

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements (simple_password_check)

위와 같은 에러메시지와 함께 유저가 생성되지 않는다.

 

mysql
> create user TEST_USER@'%' identified by '12ABC@@@@password';

 

설정한 패스워드 복잡도에 맞게 패스워드를 설정 할 경우 문제없이 생성이 완료된다.

 

반응형