Audit Log 란?
audit log = 감사 로그는 기업 내에서 데이터베이스 규정 감사를 통해 보안 및 추적 상태를 개선하는데 사용합니다.
'누가 데이터에 엑세스하거나 수정했는지?', '수정하거나 엑세스 한 시기는 언젠지?', '권한 있는 사용자가 수퍼 유저 권한을 남용하고 있는지?' 등등 이러한 질문에 대답하기 위해서는 CloudWatch 와 같이 외부 시스템에서 사용할 수 있도록 모니터링 하고 확인할 수 있는 시스템이 필요합니다.
이러한 데이터베이스 감사를 위해 Aurora에 audit log 를 활성화 하여 여러 이벤트에 대한 감사를 활성화 하는 방법에 대해 알아보도록 하겠습니다.
Audit Log 파일은 어디에 위치 하나요?
Audit Log 가 수집되는 빈도는 어떻게 되나요?
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.MySQL.LogFileSize.html#USER_LogAccess.MySQL.Generallog
날짜 별로 Audit Log를 확인할 수 있나요?
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.Procedural.UploadtoCloudWatch.html
Aurora mysql에서 Audit log 활성화 하기
? Aurora 가 아닌 단일 RDS 인스턴스에서 Audit log를 활성화 하는 방법은 맨아래 링크를 참고하여 주시길 바랍니다.
기본적으로 Aurora를 생성하시면 Audit log는 비활성화 상태로 생성됩니다.
Audit log를 활성화 하기 위해서는 Aurora cluster parameter group의 매개 변수 값을 수정해주셔야 합니다.
-
Audit log가 비활성화 된 Aurora mysql 클러스터를 생성합니다.
기본 Cluster parameter group 을 사용하는 Aurora mysql 을 생성합니다.
-
Cluster parameter group의 매개 변수를 변경하기 위해 새로운 CPG 를 생성합니다.
"audit-test" 이름의 사용자 지정 cluster parameter group을 생성합니다.
-
방금 생성한 새로운 Cluster Parameter group으로 변경해줍니다.
[Modify] → [DB cluster parameter group]⛔ 기본 파라미터 그룹에서 사용자 지정 파라미터 그룹으로 변경한 후, 변경 사항을 저장하기 위해서는 반드시 재부팅 해주셔야 합니다.
-
Cluster Parameter group 에서 매개 변수 값을 변경합니다.
Audit log를 활성화 하기 위해서는 "server_audit_logging" 매개 변수 값을 1 로 변경 해야 합니다.
-
DB 인스턴스에서 audit log 가 생성되는 것을 확인 합니다.
로그가 생성되지만 0bytes로 제대로 수집 되지 않는 것을 확인할 수 있습니다.
로그를 제대로 수집하기 위해서는 어떤 이벤트의 로그를 수집할 것인지 지정해주어야 합니다.
따라서 "server_audit_events" 의 값에 감사하고자 하는 이벤트를 입력합니다.
⛔ 이벤트는 모두 대문자로 지정해야 하며 목록 사이에 공백이 없어야 합니다. -
변경 후 audit log 가 정상적으로 쌓이는 것을 확인합니다.
-
Cloudwatch 로그 그룹에서 audit log를 확인할 수 있습니다.
로그 구성 및 확인하기
데이터베이스 활동을 캡처하도록 감사 로그 구성
Amazon Aurora MySQL에 여러 이벤트를 기록하려면 server_audit_events
를 CONNECT
, QUERY
, TABLE
, QUERY_DDL
, QUERY_DML
및 QUERY_DCL
로 사용하여 파라미터 그룹을 수정 하실 수 있습니다.
감사 옵션 구성은 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에 대한 고급 감사에서만 지원됩니다.
로그 확인하기
Amazon Aurora MySQL에서 고급 감사에 대한 로그를 확인하려면 다음 단계를 완료하십시오.
- Amazon RDS 콘솔에서”Databases”를 선택합니다.
- DB 인스턴스를 선택합니다.
- “Logs”에서, 로그를 (
audit/audit.log
) 선택합니다. - “View”를 선택합니다.
주의할 점
audit log 와 관련된 모든 매개 변수는 클러스터 수중 매개 변수이며 DB 인스턴스 매개 변수 그룹에는 없습니다.
또한 매개 변수 "server_audit_logging" 은 dynamic 매개 변수로 재부팅 할 필요가 없습니다.
자세한 내용은 아래 AWS 블로그 게시물을 참고해주시길 바랍니다.
Amazon RDS MySQL 및 Amazon Aurora for MySQL에 대한 데이터베이스 활동에 대한 감사 로그 구성 | Amazon Web Services