MariaDB 보안 및 사용자 관리

MariaDB 보안 및 사용자 관리

1️⃣ MariaDB 사용자 및 권한 관리 (GRANT, REVOKE)

MariaDB에서 사용자 관리 및 권한 설정은 매우 중요합니다. 적절한 권한 설정을 통해 시스템의 보안을 강화할 수 있습니다.

사용자 생성 및 권한 부여 (GRANT)

사용자를 생성하고 특정 권한을 부여하려면 GRANT 명령어를 사용합니다. 예를 들어, 특정 사용자가 test_db 데이터베이스에 대해 SELECT 권한을 부여받도록 설정할 수 있습니다.

예시:

CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT ON test_db.* TO 'new_user'@'localhost';

이 쿼리는 new_user라는 사용자를 생성하고, 해당 사용자에게 test_db 데이터베이스에 대해 SELECT 권한만 부여합니다.

권한 철회 (REVOKE)

REVOKE 명령어를 사용하여 사용자가 가지고 있는 권한을 철회할 수 있습니다. 예를 들어, new_user에게 부여된 SELECT 권한을 철회하려면 다음과 같이 실행합니다.

예시:

REVOKE SELECT ON test_db.* FROM 'new_user'@'localhost';

이 쿼리는 new_usertest_db에서 SELECT 권한을 더 이상 갖지 않게 만듭니다.


2️⃣ mysql_native_password vs caching_sha2_password

MariaDB는 사용자의 비밀번호를 암호화할 때 두 가지 주요 방법을 제공합니다: mysql_native_passwordcaching_sha2_password입니다. 이 두 방식의 차이를 이해하고, 적절한 방식으로 설정하는 것이 중요합니다.

mysql_native_password

mysql_native_password는 이전 MariaDB 및 MySQL 버전에서 사용된 기본 비밀번호 암호화 방식입니다. 비교적 단순한 방식으로, 암호화 알고리즘이 빠르지만 보안 측면에서 상대적으로 취약할 수 있습니다.

예시:

ALTER USER 'new_user'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY 'new_password';

이 쿼리는 new_user의 비밀번호를 mysql_native_password 방식으로 설정합니다.

caching_sha2_password

caching_sha2_password는 더 강력한 보안 방식으로, SHA-256 해시 알고리즘을 사용하여 비밀번호를 암호화합니다. 최신 MariaDB 및 MySQL에서 기본적으로 사용되며, 더 안전한 방식으로 권장됩니다.

예시:

ALTER USER 'new_user'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY 'new_password';

이 쿼리는 new_user의 비밀번호를 caching_sha2_password 방식으로 설정합니다.


3️⃣ 데이터베이스 및 테이블 수준의 권한 관리

MariaDB에서는 특정 데이터베이스나 테이블에 대한 권한을 세밀하게 제어할 수 있습니다. 권한을 관리하여 사용자가 특정 작업만 수행하도록 제한할 수 있습니다.

데이터베이스 수준 권한 관리

데이터베이스에 대한 권한을 설정하면 해당 데이터베이스에 대한 전체적인 권한을 부여하거나 제한할 수 있습니다.

예시:

GRANT SELECT, INSERT ON test_db.* TO 'new_user'@'localhost';

이 쿼리는 new_user에게 test_db 데이터베이스에 대해 SELECTINSERT 권한을 부여합니다.

테이블 수준 권한 관리

특정 테이블에 대해서만 권한을 설정할 수도 있습니다.

예시:

GRANT SELECT, UPDATE ON test_db.users TO 'new_user'@'localhost';

이 쿼리는 new_user에게 test_db 데이터베이스의 users 테이블에 대해 SELECTUPDATE 권한을 부여합니다.


4️⃣ MariaDB 보안 설정 (skip-networking, bind-address)

MariaDB의 보안을 강화하기 위해 서버가 외부 네트워크와 연결되지 않도록 설정할 수 있습니다. 이는 보통 로컬 서버에서만 MariaDB를 사용할 때 유용합니다.

skip-networking 설정

skip-networking 옵션은 MariaDB가 네트워크 연결을 거부하도록 설정합니다. 이 설정을 활성화하면 MariaDB는 로컬 연결만 허용하고, 원격 접속은 차단됩니다.

예시:

[mysqld]
skip-networking

bind-address 설정

bind-address는 MariaDB 서버가 어떤 IP 주소에서 연결을 수락할지 설정합니다. 로컬호스트로만 연결을 허용하려면 127.0.0.1로 설정합니다.

예시:

[mysqld]
bind-address = 127.0.0.1

이 설정을 하면 MariaDB 서버는 127.0.0.1에서만 연결을 허용하고, 외부에서는 접속할 수 없습니다.


5️⃣ 데이터 암호화 (AES_ENCRYPT, AES_DECRYPT)

MariaDB는 데이터를 암호화하여 민감한 정보를 보호할 수 있는 기능을 제공합니다. AES_ENCRYPTAES_DECRYPT 함수를 사용하여 데이터를 암호화하고 복호화할 수 있습니다.

데이터 암호화 (AES_ENCRYPT)

AES_ENCRYPT 함수는 데이터를 암호화하는 데 사용됩니다. 이 함수는 대칭 키 암호화 방식인 AES(Advanced Encryption Standard)를 사용하여 데이터를 암호화합니다.

예시:

SELECT AES_ENCRYPT('Sensitive Data', 'encryption_key');

이 쿼리는 'Sensitive Data'라는 데이터를 'encryption_key'라는 키로 암호화합니다.

데이터 복호화 (AES_DECRYPT)

AES_DECRYPT 함수는 암호화된 데이터를 복호화하는 데 사용됩니다.

예시:

SELECT AES_DECRYPT(encrypted_data, 'encryption_key');

이 쿼리는 encrypted_data'encryption_key'로 복호화하여 원본 데이터를 반환합니다.


6️⃣ SSL/TLS를 이용한 MariaDB 보안 설정

MariaDB는 SSL/TLS를 사용하여 데이터베이스와 클라이언트 간의 통신을 암호화할 수 있습니다. 이를 통해 데이터 전송 중에 발생할 수 있는 중간자 공격(MITM)을 방지할 수 있습니다.

SSL/TLS 설정

MariaDB 서버와 클라이언트 간의 연결을 암호화하려면 SSL 인증서를 설정해야 합니다.

서버 측 설정

서버 측에서 SSL을 활성화하려면 my.cnf 파일에 다음과 같이 설정을 추가합니다.

[mysqld]
ssl-ca=/path/to/ca-cert.pem
ssl-cert=/path/to/server-cert.pem
ssl-key=/path/to/server-key.pem

클라이언트 측 설정

클라이언트는 서버와 연결할 때 SSL을 사용하도록 설정할 수 있습니다.

mysql -u user -p --ssl-ca=/path/to/ca-cert.pem --ssl-cert=/path/to/client-cert.pem --ssl-key=/path/to/client-key.pem

이 명령은 MariaDB 클라이언트가 SSL을 사용하여 MariaDB 서버에 연결하도록 설정합니다.


위와 같은 보안 설정을 통해 MariaDB 시스템을 안전하게 운영할 수 있습니다. 사용자의 권한 관리부터 데이터 암호화, 네트워크 보안 설정까지 다양한 방법으로 MariaDB의 보안을 강화할 수 있습니다.

RSS Feed
마지막 수정일자