Amazon 데이터베이스 서비스의 audit logging 및 monitoring 방법을 설명합니다.
AWS 에서 기본적으로 감사 로깅은 Amazone CloudWatch 와 Amazon CloudTrail 서비스를 통해 이루어집니다.
여기서 데이터베이스 인스턴스 리소스에 발생하는 행위(CRUD) 감사에는 cloudWatch log groups 및 log streams 가 사용되고 AWS 계정 행위(권한부여, 보안 등) 감사에는 CloudTrail 추적(trail) (+ Amazon Athena) 사용된다고 이해하면 됩니다.
본 포스트에서는 데이터베이스 행위 관점에서 설명하겠습니다. 대상은 Amazon RDS 와 Amazon DocumentDB 입니다.
가볍게 두 서비스 간의 차이점을 짚고 넘어가겠습니다.
CloudWatch 는 어플리케이션 리소스의 운영상 데이터, 성능 메트릭(지표), 이벤트 등을 수집하여 뷰를 제공하고 이상 현상을 모니터링합니다. 대표적으로 CPU/MEM/Requests per sec or min 에 대한 정보가 있으며 커스터마이징을 통해 복합적인 뷰를 구성할 수도 있습니다. 이를 통해 시스템 위험 조기 발견, 긴급 대응 및 서비스 성능 최적화가 가능합니다.
Amazon Databases 모니터링과 관련해서 CloudWatch 는 DB 리소스 자체의 로그 데이터를 수집하여 뷰를 제공할 수 있는데, 이는 log groups 및 log streams 로 할 수 있습니다. (모니터링이 되는 다른 리소스에 대해서도 가능함)
CloudTrail 서비스는 AWS 계정의 거버넌스, 컴플라이언스(규정 준수), 운영 감사, 보안위험 감사를 위해 사용됩니다. 따라서 AWS Management Console, AWS SDKs, command-line tools 등을 통한 계정, 서비스 인프라 관련 행위 로그나 이벤트 뷰를 제공합니다.
Amazon Databases 서비스 관련해서 CloudTrail 은 DB 자체의 로그나 기록을 알 수는 없고 생성된 서비스 인스턴스 자원에 대한 특정 계정의 접근권한 변경, 타입 변경, 보안수준 변경 등에 대한 히스토리를 제공합니다. 당연히 이러한 것들은 AWS 콘솔, SDK, 커맨드 라인 통해 이루어진 행위입니다.
따라서 감사(Audit) 로깅 관점에서 CloudTrail 은 AWS 계정의 행위를, CloudWatch 는 AWS 인프라 자원 및 서비스 내 행위를 기록한다고 이해하면 좋습니다.
AWS 의 데이터베이스 행위 감사를 위해서 CLoudWatch log groups 생성해야 합니다. 로그 그룹을 직접 생성하기보다는 콘솔의 각 데이터베이스 인스턴스, 클러스터 설정에서 감사 로그를 전송하는 방식으로 진행합니다.
Written on October 14th, 2023 by namuLog streams 예시(행위, authenticate)
2023-10-06T13:37:46.773+09:00 {"atype":"authenticate","ts":16965***,...} { "atype": "authenticate", "ts": 1696567066773, "remote_ip": "10.**.**.**:51**", "user": "", "param": { "user": "**admin", "mechanism": "SCRAM-SHA-1", "success": true, "message": "", "error": 0 } }