본문 바로가기

DATABASE/MYSQL

[MariaDB] ActiveDirectory 와 연동하기 [2] - sssd+pam+mariadb pam plugin으로 로그인 해보기

반응형

시작하기 전에..


지난 편의 ad-client에 sssd 설정에 이어 mariadb에 pam plugin을 설치하고 PAM과 sssd를 연동 함으로써 최종적으로 AD의 사용자로 MariaDB에 로그인할 수 있는 설정을 하려고 한다.

 

 

환경


OS(ad-client) : CentOS Stream release 8

MariaDB ver : 10.3.28

sssd ver : 2.9.4

AD Domain : test.com

AD DC : dc01.test.com(172.16.10.100), dc02.test.com(172.16.10.101)

 

 

PAM 설정


auth, account에 대한 pam 설정을 한다. 이 설정은 mariadb에 사용자를 생성할 때 사용되게 된다.

  • auth는 로그인 성공여부에 대한 인증을 수행한다.
  • account는 auth 인증이 성공 후에 접근에 대한 권한이 있는지를 검사한다.
    • pam_permit.so 으로 설정하면 접근 권한 없이 접근이 가능하게 된다.

경로 : /etc/pam.d/mariadb

auth 	required pam_sss.so	domains=bside.com
account required pam_sss.so	domains=bside.com
#account required pam_permit.so

 

 

MariaDB 설정


MariaDB 설치

yum install mariadb-server mariadb-devel

root 패스워드 설정

systemctl restart mariadb
mysql_secure_installation

 

 

PAM plugin 설치

MariaDB [(none)]> INSTALL SONAME 'auth_pam';

혹은 my.cnf에 시스템 변수를 추가 할 수도 있다.

경로 : /etc/my.cnf.d/mariadb-server.cnf

[mariadb]
plugin_load_add = auth_pam

 

PAM plugin 설치 확인

show plugins;
+-------------------------------+----------+--------------------+-------------+---------+
| Name                          | Status   | Type               | Library     | License |
+-------------------------------+----------+--------------------+-------------+---------+
...
| pam                           | ACTIVE   | AUTHENTICATION     | auth_pam.so | GPL     |
+-------------------------------+----------+--------------------+-------------+---------+

 

 

사용자 생성 및 권한 설정

AD의 계정을 사용하고 인증도 AD 에서 하지만 mariadb에서도 AD에서 사용할 계정을 생성해 주어야한다.

# 계정 생성 mariadb pam 인증을 사용한다.
MariaDB [(none)]> CREATE USER test2@'%' IDENTIFIED VIA pam USING 'mariadb';
Query OK, 0 rows affected (0.002 sec)

# 권한은 테스트를 위하여 모든 권한을 준다.
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'test2'@'%';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)

 

 

 

AD 사용자로 로그인해보기


mysql -u test2 -p
...

MariaDB [(none)]> select user();
+-----------------+
| user()          |
+-----------------+
| test2@localhost |
+-----------------+
1 row in set (0.001 sec)

MariaDB [(none)]> show grants for test2;
+-------------------------------------------------------------------------------+
| Grants for test2@%                                                            |
+-------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO `test2`@`%` IDENTIFIED VIA pam USING 'mariadb' |
+-------------------------------------------------------------------------------+

 

 

로그 확인해보기

접근 권한이 없는 사용자 즉, test-group 그룹에 속하지 않은 사용자로 mariadb에 사용자를 추가하고 로그인을 시도했을때 secure 로그를 확인해 보면 authentication success로 인증을 통과했지만 Access denied로 접근 권한 획득에 실패한다.

Aug 13 18:20:00 test-AD02 mysqld[42784]: pam_sss(mariadb:auth): authentication success; logname= uid=27 euid=27 tty= ruser= rhost= user=test2
Aug 13 18:20:00 test-AD02 mysqld[42784]: pam_sss(mariadb:account): Access denied for user test2: 6 (Permission denied)

 

반응형