Amazon Web Services 한국 블로그

Amazon RDS MySQL 및 Amazon Aurora for MySQL에 대한 데이터베이스 활동에 대한 감사 로그 구성

기업 내에서 Well-Architected 프레임워크를 따르고 프로비저닝하는지 확인하기위해 데이터베이스 규정 감사를 통해 보안 및 추적 상태를 개선합니다. 보안 팀과 데이터베이스 관리자는 종종 데이터베이스의 데이터 또는 메타 데이터에 대한 액세스 및 수정 패턴에 대한 심도있는 분석을 수행합니다.

규정 감사를 위해 다음 질문을 제기 할 수 있습니다:

  • 누가 데이터에 액세스하거나 수정 했습니까?
  • 데이터에 액세스하거나 수정 한시기는 언제입니까?
  • 특정 사용자가 데이터에 액세스하는 방법은 무엇입니까?
  • 변경이 이루어지기 전에 데이터베이스 테이블에 대한 변경이 승인 되었습니까?
  • 권한있는 사용자가 수퍼 유저 권한을 남용하고 있습니까?

규정 감사 중에 이러한 종류의 질문에 답하려면 조직에 Amazon CloudWatch와 같이 외부 시스템에서 사용할 수있는 형식으로 충분한 데이터 로깅이 있는지 모니터링하고 확인하는 시스템이 있어야합니다. 데이터베이스 감사를 위해 Amazon RDS MySQLMariaDB 감사 플러그인을 지원하고 Amazon Aurora MySQL고급 감사를 지원합니다:

  • QUERY_DML과 같은 단일 이벤트에 대한 감사 활성화
  • CONNECT, QUERY 등과 같은 여러 이벤트에 대한 감사 활성화.

전제 조건

시작하기 전에 다음 전제 조건을 완료했는지 확인하십시오:

  1. 다음 AWS CloudFormation 템플릿 중 하나를 사용하여 데이터베이스 인스턴스를 생성합니다:
  2. Amazon RDS MySQL를 사용하는 경우 사용자 지정 옵션 그룹을 생성하여 MARIADB_AUDIT_PLUGIN을 선택하거나 Amazon Aurora MySQL을 사용하는 경우 사용자 지정 파라미터 그룹을 생성합니다.
  3. MySQL 클라이언트를 사용하여 DB 인스턴스에 연결합니다.

Amazon RDS MySQL 대한 MariaDB 감사 플러그인 켜기

Amazon RDS MySQL의 경우 기본 옵션 그룹에 감사 구성이 활성화되어 있지 않습니다. 기본 설정은 변경할 수 없습니다; 인스턴스를 변경하려면, 사용자 지정 옵션 그룹을 생성하고 옵션을 추가 해야 합니다..

  1. Amazon RDS 콘솔에서, “Option groups”을 선택합니다.
  2. Create option group”을 선택합니다.
  3. Name에 이름을 입력합니다 (예 : custom-option-group-mysql).
  4. Description에 설명을 입력합니다.
  5. Engine에서 mysql을 선택합니다.
  6. Major Engine Version에 대해서, 원하는 엔진 버전을 선택합니다 (이 문서에서는, 5.7).
  7. Create을 선택합니다.
    Choose Create.
  8. “Option groups” 페이지에서 옵션 그룹을 선택하고 “Add option” 선택합니다.
    On the Option groups page, select your option group and choose Add option.
  9. Option name”에서 , MARIADB_AUDIT_PLUGIN 선택합니다.
    For Option name, choose MARIADB_AUDIT_PLUGIN.
  10. Option settings” 섹션에서 원하는 옵션의 매개 변수 값을 수정합니다.
  11. Apply Immediately”에서 Yes를 선택합니다.
    설정을 즉시 적용하도록 선택하면 다운 타임이 필요하지 않습니다.
  12. Add option” 선택합니다.
    Choose Add option.
    이제 이 옵션 그룹을 기존 Amazon RDS for MySQL 인스턴스와 연결합니다.
  13. Amazon RDS 콘솔에서 인스턴스를 선택합니다.
  14. Actions” 메뉴에서 “Modify” 선택합니다.
  15. Database options” 섹션의 “Option group”에서 위에서 생성한 그룹을 선택합니다.
    In the Database options section, for Option group, choose your group.
  16. 수정 사항 적용에 대해 “Apply immediately” 즉시 적용을 선택하여 예기치 않은 다운 타임을 방지합니다.
  17. Modify DB instance” 선택합니다.
    Choose Modify DB instance.
    인스턴스가 다시 시작되면 MariaDB 감사 플러그인을 성공적으로 켠 것입니다.
  18. 감사 플러그인 상태를 확인하려면 MySQL 명령 줄에서 다음 쿼리를 실행합니다
    mysql> show global variables like '%server_audit_logging%';
    +----------------------+-------+
    | Variable_name        | Value |
    +----------------------+-------+
    | server_audit_logging | ON    |
    +----------------------+-------+

전역 변수에 대한 자세한 내용은 SHOW VARIABLES Statement를 참조바랍니다.

Amazon Aurora MySQL에서 고급 감사 켜기

Amazon Aurora MySQL에서 고급 감사를 활성화하려면, 사용자DB 클러스터 파라미터 그룹이 없는 경우 먼저 생성해야합니다.

  1. Amazon RDS 콘솔에서 “Parameter groups”를 선택합니다.
  2. Create parameter group”을 선택합니다.
  3. Parameter group family”에서 aurora-mysql5.7을 선택합니다.
  4. Group name”에 이름을 입력합니다 (예 : aurora-db-cluster-57).
  5. Create”를 선택합니다.
    Choose Create.
    이제 DB 클러스터 파라미터 그룹을 기존 Amazon RDS MySQL 인스턴스와 연결합니다.
  6. Amazon RDS 콘솔에서, 인스턴스를 선택합니다.
  7. Action” 메뉴에서 “Modify”를 선택합니다.
  8. Additional configuration”의 “DB cluster parameter group” 항목에 이전에 생성 한 파라미터 그룹을 선택합니다.
    Under Additional configuration, for DB cluster parameter group, choose the parameter group you created.
  9. “When to apply modifications”에서 “Immediately”를 선택하여, 다음 유지 관리 기간까지 기다리지 않도록합니다.
    변경 사항을 적용하면 즉시 데이터베이스가 다시 시작됩니다.
  10. “Modify cluster”를 선택합니다.
    Choose Modify cluster.
  11. Parameter groups” 페이지에서 파라미터 그룹을 선택합니다.
  12. Values”에 대해서,  매개 변수를 수정하여 고급 감사를 활성화하거나 비활성화합니다.
  13. Save changes”를 선택합니다.
    Choose Save changes.
    고급 감사를 성공적으로 설정했습니다.
  14. 상태를 확인하려면 MySQL 콘솔에서 다음 SQL 명령을 실행합니다:
    mysql> show variables like '%server_audit_logging%';
    +----------------------+-------+
    | Variable_name        | Value |
    +----------------------+-------+
    | server_audit_logging | ON    |
    +----------------------+-------+

데이터베이스 활동을 캡처하도록 감사 로그 구성

감사 옵션 구성은 Amazon RDS MySQL와 Amazon Aurora MySQL 모두에서 비슷합니다. 이 섹션에서는 다양한 데이터베이스 활동에 대한 감사 옵션을 구성하는 방법에 대해 설명합니다. 데이터베이스 활동은 기록 할 이벤트의 쉼표로 구분 된 목록을 포함하는 server_audit_events로 정의됩니다. 목록 요소 사이에는 공백이 없어야합니다. 다음 이벤트의 조합을 기록 할 수 있습니다:

  • CONNECT – Connection 성공, Connection 실패, 그리고 disconnections에 대한 로그. 이 값에는 사용자 정보가 포함됩니다.
  • QUERY – 구문 또는 권한 오류로 인해 실패한 쿼리를 포함하여 모든 쿼리 텍스트 및 쿼리 결과를 일반 텍스트로 기록합니다.
  • QUERY_DCL – QUERY와 유사하지만 DCL 타입 쿼리 (GRANT, REVOKE 등) 만 반환합니다.
  • QUERY_DDL – Query와 유사하지만 DDL 타입 쿼리 (CREATE, ALTER 등) 만 반환합니다.
  • QUERY_DML – Query와 유사하지만 DML 타입 쿼리 (INSERT, UPDATE 등) 만 반환합니다.
  • TABLE – 쿼리 실행의 영향을받은 테이블을 기록합니다. 이 옵션은 Amazon Aurora MySQL에 대한 고급 감사에서만 지원됩니다.

server_audit_excl_usersserver_audit_incl_users 매개 변수를 사용하여 감사하거나 감사에서 제외 할 수있는 DB 사용자를 지정합니다. 다음은 가능한 조합입니다:

  • server_audit_excl_usersserver_audit_incl_users가 비어있는 경우 (기본값) 모든 사용자가 감사됩니다.
  • server_audit_incl_users에 사용자를 추가하고 server_audit_excl_users를 비워두면 server_audit_incl_users에 추가 된 사용자 만 감사됩니다.
  • server_audit_excl_users에 사용자를 추가하고 server_audit_incl_users를 비워두면 server_audit_excl_users에 추가 된 사용자 만 감사되지 않으며 다른 모든 사용자는 감사
  • server_audit_excl_usersserver_audit_incl_users 모두에 사용자를 추가하면 server_audit_excl_users보다 우선하는 server_audit_incl_users에 지정된대로 사용자가 감사됩니다.

지정된 사용자가 server_audit_excl_users 또는 server_audit_incl_users 목록에 있더라도 모든 사용자에 대해 CONNECT 이벤트가 기록됩니다.

단일 이벤트에 대한 감사 활성화

이 사용 사례에서는 단일 감사 이벤트 QUERY_DML에 대해 감사 옵션을 활성화합니다. DML 타입  쿼리들을 감사하려면 MariaDB 감사 플러그인 (Amazon RDS MySQL)에 대한 “Option group” 또는QUERY_DML (Amazon Aurora MySQL)에 대해 server_audit_events로 고급 감사를위한 “Parameter group”을 수정합니다.

Amazon RDS for MySQL

MySQL 용 Amazon RDS를 사용하여 단일 이벤트에 대한 감사를 활성화하려면 다음 단계를 완료하십시오:

  1. Amazon RDS 콘솔에서 “Option groups”을 선택합니다.
  2. 원하는 옵션 그룹을 선택합니다.
  3. Option settings”의 값으로 QUERY_DML을 선택합니다.
  4. Apply Immediately”에서 Yes를 선택합니다.
  5. Modify option”을 선택합니다.
    Choose Modify option.

Amazon Aurora MySQL

Amazon Aurora MySQL을 사용하여 단일 이벤트에 대한 감사를 활성화하려면 다음 단계를 완료하십시오:

  1. Amazon RDS 콘솔에서 “Parameter groups”을 선택합니다.
  2. 원하는 파라미터 그룹을 선택합니다.
  3. Parameters”에서 값으로 QUERY_DML을 선택합니다.
  4. Save changes”를 선택해 변경 사항 저장합니다.
    Choose Save changes.

이벤트 상태 확인 이벤트 로깅

이벤트 상태를 확인하려면 MySQL 명령 줄에서 다음 쿼리를 실행하십시오:

mysql> SHOW VARIABLES LIKE '%server_audit_events%';
+---------------------+-----------+
| Variable_name       | Value     |
+---------------------+-----------+
| server_audit_events | QUERY_DML |
+---------------------+-----------+

다음 코드는 DML 감사 이벤트의 로그입니다:

$ mysql -h <endpoint> -u <user name> -p
Enter password: 
mysql>CREATE database audit_log;
mysql>USE audit_log;
mysql> CREATE TABLE IF NOT EXISTS auditlogtab (id varchar(32),name varchar(100));
mysql> ALTER TABLE auditlogtab CHANGE name name VARCHAR(128);
mysql> SELECT COUNT(*) FROM auditlogtab;
mysql> TRUNCATE TABLE auditlogtab;
mysql> INSERT INTO auditlogtab (id,name) VALUES('I12', 'AUDIT TRAIL');
mysql> UPDATE auditlogtab SET name ='AUDIT TRAIL TEST' WHERE id='I12';
mysql> CREATE USER auditloguser IDENTIFIED BY 'Audit_Pwd@187';
mysql> DROP USER auditloguser;
mysql> DROP TABLE auditlogtab;
mysql> DROP DATABASE audit_log;
mysql> \q

Amazon RDS MySQL에서 로그 확인

Amazon RDS MySQL에 대한 로그를 확인하려면 다음 단계를 완료하십시오:

  1. Amazon RDS 콘솔에서 “Database”를 선택합니다.
  2. DB 인스턴스를 선택합니다.
  3. Logs”에서 로그 (audit/server_audit.log)를 선택합니다.
  4. View”를 선택합니다.
    Choose View.

다음 스크린 샷은 감사 로그 파일의 보기를 보여줍니다.

The following screenshot shows the view of your audit log file.

Amazon Aurora MySQL에서 로그 확인

Amazon Aurora MySQL에서 고급 감사에 대한 로그를 확인하려면 다음 단계를 완료하십시오.:

  1. Amazon RDS 콘솔에서”Databases” 선택합니다.
  2. DB 인스턴스를 선택합니다.
  3. Logs”에서, 로그를 (audit/audit.log) 선택합니다.
  4. View” 선택합니다.

다음 스크린 샷은 감사 로그 파일 중 하나의보기를 보여줍니다.

Choose View.

여러 이벤트에 대한 감사 활성화

이 사용 사례에서는 여러 감사 이벤트에 대해 감사 옵션을 활성화합니다.

Amazon RDS for MySQL

Amazon RDS MySQL에서 여러 이벤트를 기록하려면 MariaDB 감사 플러그인에 대한 옵션 그룹을 수정하십시오. 지침은 이전 섹션을 참조하십시오..

Amazon Aurora MySQL

Amazon Aurora MySQL에 여러 이벤트를 기록하려면 server_audit_eventsCONNECT, QUERY, TABLE, QUERY_DDL, QUERY_DMLQUERY_DCL로 사용하여 파라미터 그룹을 수정하십시오. 이러한 값을 구성하는 방법은 이전 섹션을 참조하십시오.

이벤트 상태 확인 여러 이벤트 로깅

이벤트 상태를 확인하려면 MySQL 명령 줄에서 다음 쿼리를 실행하십시오:

mysql> show variables like '%server_audit_events%';
+---------------------+---------------------------------------------------
| Variable_name | Value
+---------------------+---------------------------------------------------
| server_audit_events | CONNECT,QUERY,TABLE,QUERY_DDL,QUERY_DML,QUERY_DCL
+---------------------+--------------------------------------------------+

다음 코드를 사용하여 여러 감사 이벤트를 기록합니다:

$ mysql -h <endpoint> -u <user name> -p
Enter password: 
mysql>CREATE database audit_log;
mysql>USE audit_log;
mysql> CREATE TABLE IF NOT EXISTS auditlogtab (id varchar(32),name varchar(100));
mysql> SELECT count(*) from auditlogtab;
mysql> create view v_auditlogtab as SELECT count(*) from auditlogtab;
mysql> select * from v_auditlogtab;
mysql> TRUNCATE TABLE auditlogtab;
mysql> INSERT INTO auditlogtab (id,name) VALUES('I12', 'AUDIT TRAIL');
mysql> UPDATE auditlogtab SET name ='AUDIT TRAIL TEST' WHERE id='I12';
mysql> CREATE USER auditloguser IDENTIFIED BY 'Audit_Pwd@187';
mysql> DROP USER auditloguser;
mysql> DROP TABLE auditlogtab;
mysql> DROP DATABASE audit_log;
mysql> \q

Amazon RDS for MySQL에서 로그 확인하기

Amazon RDS MySQL에서 MariaDB 감사에 대한 로그를 확인하려면 다음 단계를 완료하십시오.:

  1. Amazon RDS 콘솔에서, “Databases” 선택합니다.
  2. DB 인스턴스를 선택합니다.
  3. Logs” 항목에서, 원하는 로그를 선택합니다 (audit/server_audit.log).
  4. View” 선택합니다.

Choose View.

다음 스크린 샷은 로그 파일보기를 보여줍니다.

The following screenshot shows a view of your log file.

Amazon Aurora MySQL 로그 확인

Amazon Aurora MySQL에서 고급 감사에 대한 로그를 확인하려면 다음 단계를 완료하십시오:

  1. Amazon RDS 콘솔에서, “Databases” 선택합니다.
  2. DB 인스턴스를 선택합니다.
  3. Logs” 항목에서 원하는 로그 (audit/audit.log)를 선택합니다.
  4. View” 선택합니다.

Choose View.

다음 스크린 샷은 감사 로그 파일 중 하나의보기를 보여줍니다.

The following screenshot shows the view of one of your audit log files.

마무리

이 글에서는 Amazon RDS MySQL 인스턴스에서 데이터베이스 활동을 기록하기 위해 사용 가능한 다양한 옵션과 함께 MariaDB 감사 플러그인을 사용하는 방법을 설명했습니다. Amazon Aurora 데이터베이스의 경우 파라미터 그룹을 사용하여 데이터베이스 활동을 기록하는 데 사용할 수있는 다양한 옵션으로 감사 기능을 활성화했습니다. 이는 검증 되고 테스트 된 단계입니다. 또한 이 게시물이 감사를 활성화하고 보안 및 추적 상태를 개선하기 위한 기본 지침을 제공하기를 바랍니다. 한번 시도해보고이 게시물에 대한 의견을 통해 의견을 보내주십시오. 평소 AWS 지원 연락처를 통해 또는 Amazon RDS 용 AWS 포럼을 통해 항상 여러분의 피드백을 기다리고 있습니다.

– Shailesh K Mishra, AWS Enterprise Solutions Architect
– Babaiah Valluru, AWS Associate Consultant with the Professional Services

이 글은 AWS Database 블로그 Configuring an audit log to capture database activities for Amazon RDS for MySQL and Amazon Aurora with MySQL compatibility의 한국어 번역으로 강민석 AWS 솔루션스 아키텍트가 번역 및 검토해 주셨습니다.