감사 추적 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

감사 추적

감사 추적(또는 감사 로그)은 AWS 계정에서 이벤트에 대한 보안 관련 시간순 레코드를 제공합니다. 여기에는 데이터베이스 또는 클라우드 환경에 영향을 주는 일련의 활동에 대한 증거 문서를 제공하는 Amazon RDS에 대한 이벤트가 포함됩니다. Amazon RDS for MySQL 또는 MariaDB에서 감사 추적을 사용하는 경우 다음이 포함됩니다.

  • DB 인스턴스 감사 로그 모니터링

  • AWS CloudTrail에서 Amazon RDS API 직접 호출 모니터링

Amazon RDS DB 인스턴스의 경우 감사 목표는 일반적으로 다음을 포함합니다.

  • 다음에 대한 책임 지원:

    • 파라미터 또는 보안 구성에 대해 수행된 수정

    • 데이터베이스 스키마, 테이블 또는 행에서 수행되는 작업이나 특정 콘텐츠에 영향을 주는 작업

  • 침입 감지 및 조사

  • 의심스러운 활동 감지 및 조사

  • 권한 부여 문제 감지(예: 일반 또는 권한 있는 사용자의 액세스 권한 남용 식별)

데이터베이스 감사 추적은 다음과 같은 일반적인 질문에 답하려고 합니다. 데이터베이스 내에서 민감한 데이터를 보거나 수정한 사람은 누구인가요? 언제 발생했나요? 특정 사용자가 어디에서 데이터에 액세스했나요? 권한 있는 사용자가 무제한 액세스 권한을 남용했나요?

MySQL 및 MariaDB 모두 MariaDB 감사 플러그인을 사용하여 DB 인스턴스 감사 추적 기능을 구현합니다. 이 플러그인은 사용자의 데이터베이스 로그온, 데이터베이스에서 실행되는 쿼리 등의 데이터베이스 활동을 기록합니다. 데이터베이스 활동 기록은 로그 파일에 저장됩니다. 감사 로그에 액세스하려면 DB 인스턴스가 MARIADB_AUDIT_PLUGIN 옵션과 함께 사용자 지정 옵션 그룹을 사용해야 합니다. 자세한 내용은 Amazon RDS 설명서의 MySQL에 대한 MariaDB 감사 플러그인 지원을 참조하세요. 감사 로그의 레코드는 플러그인에서 정의한 특정 형식으로 저장됩니다. MariaDB Server 설명서에서 감사 로그 형식에 대한 자세한 내용을 확인할 수 있습니다.

AWS 계정에 대한 AWS 클라우드 감사 추적은 AWS CloudTrail 서비스에서 제공됩니다. CloudTrail은 Amazon RDS에 대한 API 호출을 이벤트로 캡처합니다. 모든 Amazon RDS 작업은 로깅됩니다. CloudTrail은 Amazon RDS에서 사용자, 역할 또는 다른 AWS 서비스가 수행한 작업의 기록을 제공합니다. 이벤트에는 AWS Management Console, AWS CLI, AWS SDK 및 API에서 수행되는 작업이 포함됩니다.

예시

일반적인 감사 시나리오에서는 AWS CloudTrail 추적을 데이터베이스 감사 로그 및 Amazon RDS 이벤트 모니터링과 결합해야 할 수도 있습니다. 예를 들어 Amazon RDS DB 인스턴스(예: database-1)의 데이터베이스 파라미터가 수정되고 수정한 사람, 변경된 내용 및 변경 시점을 식별하는 태스크를 수행해야 하는 시나리오가 있을 수 있습니다.

태스크를 수행하려면 다음 단계를 따릅니다.

  1. 데이터베이스 인스턴스 database-1에서 수행된 Amazon RDS 이벤트를 나열하고 Finished updating DB parameter group 메시지가 있는 configuration change 범주의 이벤트가 있는지 확인하세요.

    $ aws rds describe-events --source-identifier database-1 --source-type db-instance { "Events": [ { "SourceIdentifier": "database-1", "SourceType": "db-instance", "Message": "Finished updating DB parameter group", "EventCategories": [ "configuration change" ], "Date": "2022-12-01T09:22:40.413000+00:00", "SourceArn": "arn:aws:rds:eu-west-3:111122223333:db:database-1" } ] }
  2. DB 인스턴스에서 사용하는 DB 파라미터 그룹을 식별하세요.

    $ aws rds describe-db-instances --db-instance-identifier database-1 --query 'DBInstances[*].[DBInstanceIdentifier,Engine,DBParameterGroups]' [ [ "database-1", "mariadb", [ { "DBParameterGroupName": "mariadb10-6-test", "ParameterApplyStatus": "pending-reboot" } ] ] ]
  3. 1단계에서 검색된 Amazon RDS 이벤트 기간 전후에 database-1이 배포된 리전에서 AWS CLI를 사용하여 CloudTrail 이벤트를 검색하세요(여기서는 EventName=ModifyDBParameterGroup임).

    $ aws cloudtrail --region eu-west-3 lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=ModifyDBParameterGroup --start-time "2022-12-01, 09:00 AM" --end-time "2022-12-01, 09:30 AM" { "eventVersion": "1.08", "userIdentity": { "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::111122223333:role/Role1", "accountId": "111122223333", "userName": "User1" } } }, "eventTime": "2022-12-01T09:18:19Z", "eventSource": "rds.amazonaws.com", "eventName": "ModifyDBParameterGroup", "awsRegion": "eu-west-3", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "parameters": [ { "isModifiable": false, "applyMethod": "pending-reboot", "parameterName": "innodb_log_buffer_size", "parameterValue": "8388612" }, { "isModifiable": false, "applyMethod": "pending-reboot", "parameterName": "innodb_write_io_threads", "parameterValue": "8" } ], "dBParameterGroupName": "mariadb10-6-test" }, "responseElements": { "dBParameterGroupName": "mariadb10-6-test" }, "requestID": "fdf19353-de72-4d3d-bf29-751f375b6378", "eventID": "0bba7484-0e46-4e71-93a8-bd01ca8386fe", "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management", "sessionCredentialFromConsole": "true" }

CloudTrail 이벤트에서는 AWS 계정 111122223333에서 Role1database-1 역할의 User12022-12-01 at 09:18:19 h에서 DB 인스턴스가 사용한 DB 파라미터 그룹 mariadb10-6-test를 수정했음을 보여줍니다. 두 개의 파라미터가 수정되었고 다음 값으로 설정되었습니다.

  • innodb_log_buffer_size = 8388612

  • innodb_write_io_threads = 8

추가 CloudTrail 및 CloudWatch Logs 기능

CloudTrail 콘솔에서 이벤트 기록을 확인하여 지난 90일 동안의 운영 및 보안 인시던트 문제를 해결할 수 있습니다. 보존 기간을 연장하고 추가 쿼리 기능을 활용하기 위해 AWS CloudTrail Lake를 사용할 수 있습니다. AWS CloudTrail Lake를 사용하면 최대 7년 동안 이벤트 데이터 저장소에 이벤트 데이터를 보관할 수 있습니다. 또한 이 서비스는 이베트 기록에서 간단한 키 값 조회로 제공하는 보기가 아닌 이벤트에 대한 더 심층적이고 사용자 지정 가능한 보기를 제공하는 복잡한 SQL 쿼리를 지원합니다.

감사 추적을 모니터링하고, 경보를 설정하며, 특정 활동이 발생할 때 알림을 받으려면 추적 레코드를 CloudWatch Logs로 보내도록 CloudTrail을 구성해야 합니다. 추적 레코드가 CloudWatch Logs로 저장된 후에 지표 필터를 정의하여 조건, 구문 또는 값과 일치하도록 로그 이벤트를 평가하고 지표 필터에 지표를 할당할 수 있습니다. 또한 사용자가 지정한 기간과 임계치에 따라 생성되는 CloudWatch 경보를 생성할 수 있습니다. 예를 들어 적절한 조치를 취할 수 있도록 담당 팀에 알림을 보내는 경보를 구성할 수 있습니다. 경보에 대한 응답으로 작업을 자동으로 수행하도록 CloudWatch를 구성할 수도 있습니다.