본문 바로가기
Database/Mysql

MariaDB Password 복잡도 설정

by 화곡공룡 2020. 12. 14.
반응형

MariaDB는 10.1.2 버전에서 기본적으로 simple_password_check Plugin이 패키지에 포함되어 있다.

simple_password_check Plugin은 암호에 최소 자리 수, 대문자, 숫자 특수 문자등의 복잡도를 설정할 수 있습니다. 처음 암호의 길이는 기본값이 8자리로 설정되어 있습니다.

1. Simple_password_check 설정 확인

플러그인은 MariaDB 용 모든 플러그인 라이브러리가 포함 된 플러그인 디렉토리에 있어야 한다.

a. Plugin이 디렉토리의 위치를 확인

MariaDB [(none)]> show global variables like 'plugin_dir%';
--------------
show global variables like 'plugin_dir%'
--------------

+---------------+--------------------------+
| Variable_name | Value                    |
+---------------+--------------------------+
| plugin_dir    | /usr/lib64/mysql/plugin/ |
+---------------+--------------------------+
1 row in set (0.00 sec)

MariaDB [(none)]>

b. simple_password_check.so 라이브러리파일이 해당 디렉토리에 있어야 하며

만약 없으면 상위 버전을 설치하거나 상위버전의 라이브러리에서 해당 파일을 copy해 온다.

$ ls /usr/lib64/mysql/plugin/simple_password*
/usr/lib64/mysql/plugin/simple_password_check.so

c. Plugin 리스트를 통해 simple_password_check Plugin이 설치되어 있는지 확인

MariaDB [(none)]> show plugins ;
--------------
show plugins
--------------

+-------------------------------+----------+--------------------+---------+---------+
| Name                          | Status   | Type               | Library | License |
+-------------------------------+----------+--------------------+---------+---------+
| binlog                        | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| mysql_native_password         | ACTIVE   | AUTHENTICATION     | NULL    | GPL     |
| mysql_old_password            | ACTIVE   | AUTHENTICATION     | NULL    | GPL     |
| wsrep                         | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| CSV                           | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| MEMORY                        | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| MyISAM                        | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| MRG_MyISAM                    | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| CLIENT_STATISTICS             | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INDEX_STATISTICS              | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| TABLE_STATISTICS              | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| USER_STATISTICS               | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| InnoDB                        | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| INNODB_TRX                    | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_LOCKS                  | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
… 생략
| INNODB_TABLESPACES_SCRUBBING  | ACTIVE   | INFORMATION SCHEMA | NULL    | BSD     |
| Aria                          | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| PERFORMANCE_SCHEMA            | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| SEQUENCE                      | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| FEEDBACK                      | DISABLED | INFORMATION SCHEMA | NULL    | GPL     |
| user_variables                | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| partition                     | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
+-------------------------------+----------+--------------------+---------+---------+
52 rows in set (0.00 sec)

d. simple_password_check 환경변수가 설정되어 있는지 확인

MariaDB [(none)]> show global variables like 'simple_password%';
--------------
show global variables like 'simple_password%'
--------------

Empty set (0.00 sec)

MariaDB [(none)]>

2. Simple_password_check 설치

라이브러리 파일을 확인 했다면 simple_password_check 설치는 매우 간단하게 할 수 있다.

a. Install plugin 명령으로 simple_password_check plugin 설치

MariaDB [(none)]> INSTALL SONAME 'simple_password_check';
Query OK, 0 rows affected (0.01 sec)

b. simple_password_check Plugin이 설치되어 있는지 확인

MariaDB [(none)]> show plugins ;
--------------
show plugins
--------------

+-------------------------------+----------+---------------------+--------------------------+---------+
| Name                          | Status   | Type                | Library                  | License |
+-------------------------------+----------+---------------------+--------------------------+---------+
| binlog                        | ACTIVE   | STORAGE ENGINE      | NULL                     | GPL     |
| mysql_native_password         | ACTIVE   | AUTHENTICATION      | NULL                     | GPL     |
| mysql_old_password            | ACTIVE   | AUTHENTICATION      | NULL                     | GPL     |
| wsrep                         | ACTIVE   | STORAGE ENGINE      | NULL                     | GPL     |
| CSV                           | ACTIVE   | STORAGE ENGINE      | NULL                     | GPL     |
| MEMORY                        | ACTIVE   | STORAGE ENGINE      | NULL                     | GPL     |
| MyISAM                        | ACTIVE   | STORAGE ENGINE      | NULL                     | GPL     |
| MRG_MyISAM                    | ACTIVE   | STORAGE ENGINE      | NULL                     | GPL     |
| CLIENT_STATISTICS             | ACTIVE   | INFORMATION SCHEMA  | NULL                     | GPL     |
| INDEX_STATISTICS              | ACTIVE   | INFORMATION SCHEMA  | NULL                     | GPL     |
| TABLE_STATISTICS              | ACTIVE   | INFORMATION SCHEMA  | NULL                     | GPL     |
| USER_STATISTICS               | ACTIVE   | INFORMATION SCHEMA  | NULL                     | GPL     |
| InnoDB                        | ACTIVE   | STORAGE ENGINE      | NULL                     | GPL     |
| INNODB_TRX                    | ACTIVE   | INFORMATION SCHEMA  | NULL                     | GPL     |
| INNODB_LOCKS                  | ACTIVE   | INFORMATION SCHEMA  | NULL                     | GPL     |
… 생략
| INNODB_TABLESPACES_SCRUBBING  | ACTIVE   | INFORMATION SCHEMA  | NULL                     | BSD     |
| Aria                          | ACTIVE   | STORAGE ENGINE      | NULL                     | GPL     |
| PERFORMANCE_SCHEMA            | ACTIVE   | STORAGE ENGINE      | NULL                     | GPL     |
| SEQUENCE                      | ACTIVE   | STORAGE ENGINE      | NULL                     | GPL     |
| FEEDBACK                      | DISABLED | INFORMATION SCHEMA  | NULL                     | GPL     |
| user_variables                | ACTIVE   | INFORMATION SCHEMA  | NULL                     | GPL     |
| partition                     | ACTIVE   | STORAGE ENGINE      | NULL                     | GPL     |
| SERVER_AUDIT                  | ACTIVE   | AUDIT               | server_audit.so          | GPL     |
| simple_password_check         | ACTIVE   | PASSWORD VALIDATION | simple_password_check.so | GPL     |
+-------------------------------+----------+---------------------+--------------------------+---------+
54 rows in set (0.00 sec)

c. simple_password_check 환경변수가 설정되어 있는지 확인한다.

기본적으로 최소 8자리, 숫자 1, 대문자 1, 특수문자 1 이상으로 설정되어 있다.

MariaDB [(none)]> show global variables like 'simple_password%' ;
+-----------------------------------------+-------+
| Variable_name                           | Value |
+-----------------------------------------+-------+
| simple_password_check_digits            | 1     |
| simple_password_check_letters_same_case | 1     |
| simple_password_check_minimal_length    | 8     |
| simple_password_check_other_characters  | 1     |
+-----------------------------------------+-------+
4 rows in set (0.00 sec)

MariaDB [(none)]>

d. 기본설정값에서 수정을 원한다면 DB에서 바로 설정이 가능하며 DB 재기동시 설정값이 기본값으로 변경되므로 my.cnf에 설정하도록 한다.

MariaDB [(none)]> set global simple_password_check_minimal_length = 10 ;
MariaDB [(none)]> set global simple_password_check_digits = 2 ;
MariaDB [(none)]> set global simple_password_check_letters_same_case = 2 ; 
MariaDB [(none)]> set global simple_password_check_other_characters = 2 ;

e. my.cnf 설정은 mysqld 밑에 설정을 해주면 된다.

simple_password_check = ON 으로 설정되어야 복잡도 정책이 설정이 되며

OFF로 설정하면 아래 설정값이 무효화 된다.

[mysqld]
simple_password_check_ = ON
simple_password_check_minimal_length = 10
simple_password_check_digits = 2
simple_password_check_letters_same_case = 2
simple_password_check_other_characters = 2

설정 옵션에 대한 상세한 사항은 아래 링크를 참조한다.

https://mariadb.com/kb/en/simple-password-check-plugin/

 

Simple Password Check Plugin

This plugin checks that passwords meet certain simple criteria.

mariadb.com

3. password 복잡도 확인

복잡도 설정이 끝났으면 유저 생성 테스트를 해본다.

a. 유저 생성 테스트

MariaDB [(none)]> show global variables like 'simple_password%' ;
+-----------------------------------------+-------+
| Variable_name                           | Value |
+-----------------------------------------+-------+
| simple_password_check_digits            | 1     |
| simple_password_check_letters_same_case | 1     |
| simple_password_check_minimal_length    | 8     |
| simple_password_check_other_characters  | 1     |
+-----------------------------------------+-------+
4 rows in set (0.00 sec)

-- 길이 8자리 미만
MariaDB [(none)]> create user test@'%' identified by 'Test!23' ;
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

-- 대문자 미포함
MariaDB [(none)]> create user test@'%' identified by 'test!234' ;
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

-- 숫자 미포함
MariaDB [(none)]> create user test@'%' identified by 'test!test' ;
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

-- 특수문자 미포함
MariaDB [(none)]> create user test@'%' identified by 'test1234' ;
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

-- 복잡도 만족
MariaDB [(none)]> create user test@'%' identified by 'Test!234' ;
Query OK, 0 rows affected (0.00 sec)

 

이상 MariaDB Password 복잡도 설정을 설명하였습니다.

 

반응형

댓글