AWS CLI를 사용하여 추적 관리 - AWS CloudTrail

AWS CLI를 사용하여 추적 관리

AWS CLI에는 추적을 관리하는 데 도움이 되는 몇 가지 다른 명령이 포함되어 있습니다. 이러한 명령은 태그를 추적에 추가하고, 추적 상태를 가져오고, 추적에 대한 로깅을 시작 및 중지하고, 추적을 삭제합니다. 추적이 생성된 동일한 AWS 리전(홈 리전)에서 이러한 명령을 실행해야 합니다. AWS CLI를 사용할 때는 프로필에 구성된 AWS 리전에서 명령이 실행된다는 점을 기억해야 합니다. 다른 리전에서 명령을 실행하려는 경우 프로필의 기본 리전을 변경하거나 명령에 --region 파라미터를 사용합니다.

추적에 태그를 한 개 이상 추가합니다.

기존 추적에 하나 이상의 태그를 추가하려면 add-tags 명령을 실행합니다.

다음 예제에서는 미국 동부(오하이오) 리전에서 이름이 Owner이고 값이 Mary인 태그를 ARN이 arn:aws:cloudtrail:us-east-2:123456789012:trail/my-trail인 추적에 추가합니다.

aws cloudtrail add-tags --resource-id arn:aws:cloudtrail:us-east-2:123456789012:trail/my-trail --tags-list Key=Owner,Value=Mary --region us-east-2

성공한 경우 이 명령은 아무 것도 반환하지 않습니다.

하나 이상의 추적에 대한 태그를 나열합니다.

하나 이상의 기존 추적과 연결된 태그를 보려면 list-tags 명령을 사용합니다.

다음 예제에서는 Trail1Trail2에 대한 태그를 나열합니다.

aws cloudtrail list-tags --resource-id-list arn:aws:cloudtrail:us-east-2:123456789012:trail/Trail1 arn:aws:cloudtrail:us-east-2:123456789012:trail/Trail2

이 명령이 성공하면 다음과 비슷한 출력이 반환됩니다.

{ "ResourceTagList": [ { "ResourceId": "arn:aws:cloudtrail:us-east-2:123456789012:trail/Trail1", "TagsList": [ { "Value": "Alice", "Key": "Name" }, { "Value": "Ohio", "Key": "Location" } ] }, { "ResourceId": "arn:aws:cloudtrail:us-east-2:123456789012:trail/Trail2", "TagsList": [ { "Value": "Bob", "Key": "Name" } ] } ] }

추적에서 하나 이상의 태그를 제거합니다.

기존 추적에서 하나 이상의 태그를 제거하려면 remove-tags 명령을 실행합니다.

다음 예제에서는 미국 동부(오하이오) 리전에서 ARN이 arn:aws:cloudtrail:us-east-2:123456789012:trail/Trail1인 추적에서 이름이 LocationName인 태그를 제거합니다.

aws cloudtrail remove-tags --resource-id arn:aws:cloudtrail:us-east-2:123456789012:trail/Trail1 --tags-list Key=Name Key=Location --region us-east-2

성공한 경우 이 명령은 아무 것도 반환하지 않습니다.

추적 설정 및 추적 상태 검색

describe-trails 명령을 실행하여 AWS 리전에서 추적에 대한 정보를 검색합니다. 다음 예는 미국 동부(오하이오) 리전에서 구성된 추적에 대한 정보를 반환합니다.

aws cloudtrail describe-trails --region us-east-2

이 명령이 성공하면 다음과 비슷한 출력이 표시됩니다.

{ "trailList": [ { "Name": "my-trail", "S3BucketName": "my-bucket", "S3KeyPrefix": "my-prefix", "IncludeGlobalServiceEvents": true, "IsMultiRegionTrail": true, "HomeRegion": "us-east-2" "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/my-trail", "LogFileValidationEnabled": false, "HasCustomEventSelectors": false, "SnsTopicName": "my-topic", "IsOrganizationTrail": false, }, { "Name": "my-special-trail", "S3BucketName": "another-bucket", "S3KeyPrefix": "example-prefix", "IncludeGlobalServiceEvents": false, "IsMultiRegionTrail": false, "HomeRegion": "us-east-2", "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/my-special-trail", "LogFileValidationEnabled": false, "HasCustomEventSelectors": true, "IsOrganizationTrail": false }, { "Name": "my-org-trail", "S3BucketName": "my-bucket", "S3KeyPrefix": "my-prefix", "IncludeGlobalServiceEvents": true, "IsMultiRegionTrail": true, "HomeRegion": "us-east-1" "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/my-org-trail", "LogFileValidationEnabled": false, "HasCustomEventSelectors": false, "SnsTopicName": "my-topic", "IsOrganizationTrail": true } ] }

get-trail 명령을 실행하여 특정 추적에 대한 설정 정보를 검색합니다. 다음 예에서는 이름이 my-rail인 추적에 대한 설정 정보를 반환합니다.

aws cloudtrail get-trail - -name my-trail

이 명령이 성공하면 다음과 비슷한 출력이 반환됩니다.

{ "Trail": { "Name": "my-trail", "S3BucketName": "my-bucket", "S3KeyPrefix": "my-prefix", "IncludeGlobalServiceEvents": true, "IsMultiRegionTrail": true, "HomeRegion": "us-east-2" "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/my-trail", "LogFileValidationEnabled": false, "HasCustomEventSelectors": false, "SnsTopicName": "my-topic", "IsOrganizationTrail": false, } }

get-trail-status 명령을 실행하여 추적의 상태를 검색합니다. 추적이 생성된 AWS 리전(홈 리전)에서 이 명령을 실행하거나, --region 파라미터를 추가하여 해당 리전을 지정해야 합니다.

참고

추적이 조직 추적이고 AWS Organizations에서 조직의 멤버 계정인 경우, 이름이 아니라 해당 추적의 전체 ARN을 제공해야 합니다.

aws cloudtrail get-trail-status --name my-trail

이 명령이 성공하면 다음과 비슷한 출력이 표시됩니다.

{ "LatestDeliveryTime": 1441139757.497, "LatestDeliveryAttemptTime": "2015-09-01T20:35:57Z", "LatestNotificationAttemptSucceeded": "2015-09-01T20:35:57Z", "LatestDeliveryAttemptSucceeded": "2015-09-01T20:35:57Z", "IsLogging": true, "TimeLoggingStarted": "2015-09-01T00:54:02Z", "StartLoggingTime": 1441068842.76, "LatestDigestDeliveryTime": 1441140723.629, "LatestNotificationAttemptTime": "2015-09-01T20:35:57Z", "TimeLoggingStopped": "" }

위의 JSON 코드에 표시된 필드 외에도 Amazon SNS 또는 Amazon S3 오류가 있는 경우 상태에 다음 필드가 포함됩니다.

  • LatestNotificationError. 주제 구독에 실패할 경우 Amazon SNS에서 내보낸 오류를 포함합니다.

  • LatestDeliveryError. CloudTrail이 로그 파일을 버킷에 전달할 수 없다면 Amazon S3에서 내보낸 오류를 포함합니다.

CloudTrail Insights 이벤트 선택기 구성

put-insight-selectors를 실행하고 ApiCallRateInsight, ApiErrorRateInsight 또는 둘 다를 InsightType 속성의 값으로 지정하여 추적에서 Insights 이벤트를 활성화합니다. 트레일에 대한 인사이트 선택기 설정을 보려면 get-insight-selectors 명령을 실행합니다. 트레일이 생성된 AWS 리전(홈 리전)에서 이 명령을 실행하거나, --region 파라미터를 명령에 추가하여 해당 리전을 지정해야 합니다.

Insights 이벤트를 로그하는 추적 예

다음 예제에서는 put-insight-selectors을 사용하여 TrailName3이라는 트레일에 대한 인사이트 이벤트 선택기를 생성합니다. 이렇게 하면 TrailName3 트레일에 대한 인사이트 이벤트 모음을 활성화할 수 있습니다. Insights 이벤트 선택기가 ApiErrorRateInsightApiCallRateInsight Insights 이벤트 유형을 모두 로그합니다.

aws cloudtrail put-insight-selectors --trail-name TrailName3 --insight-selectors '[{"InsightType": "ApiCallRateInsight"},{"InsightType": "ApiErrorRateInsight"}]'

이 예제에서는 트레일에 대해 구성된 인사이트 이벤트 선택기를 반환합니다.

{ "InsightSelectors": [ { "InsightType": "ApiErrorRateInsight" }, { "InsightType": "ApiCallRateInsight" } ], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName3" }

예: Insights 이벤트 수집 비활성화

다음 예제에서는 put-insight-selectors을 사용하여 TrailName3이라는 트레일에 대한 인사이트 이벤트 선택기를 제거합니다. 인사이트 선택기의 JSON 문자열을 지우면 TrailName3 트레일에 대한 인사이트 이벤트 모음이 비활성화됩니다.

aws cloudtrail put-insight-selectors --trail-name TrailName3 --insight-selectors '[]'

이 예제에서는 트레일에 대해 구성된 현재 비어 있는 인사이트 이벤트 선택기를 반환합니다.

{ "InsightSelectors": [ ], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName3" }

이벤트 선택기 구성

추적에 대한 이벤트 선택기 설정을 보려면 get-event-selectors 명령을 실행합니다. 추적이 생성된 AWS 리전(홈 리전)에서 이 명령을 실행하거나, --region 파라미터를 사용하여 해당 리전을 지정해야 합니다.

aws cloudtrail get-event-selectors --trail-name TrailName
참고

추적이 조직 추적이고 AWS Organizations에서 조직의 멤버 계정인 경우, 이름이 아니라 해당 추적의 전체 ARN을 제공해야 합니다.

다음 예에서는 추적에 대한 이벤트 선택기의 기본 설정을 반환합니다.

{ "EventSelectors": [ { "ExcludeManagementEventSources": [], "IncludeManagementEvents": true, "DataResources": [], "ReadWriteType": "All" } ], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName" }

이벤트 선택기를 생성하려면 put-event-selectors 명령을 실행합니다. 계정에서 이벤트가 발생하면 CloudTrail은 추적 구성을 평가합니다. 이벤트가 추적에 대한 이벤트 선택기와 일치하는 경우 추적은 이벤트를 처리하고 로깅합니다. 최대 5개의 이벤트 선택기와 최대 250개의 데이터 리소스를 추적 대상으로 구성할 수 있습니다. 자세한 내용은 추적에 대한 데이터 이벤트 로깅 단원을 참조하세요.

특정 이벤트 선택기가 있는 추적 예

다음 예에서는 읽기 전용 및 쓰기 전용 관리 이벤트, 두 개의 Amazon S3 버킷/접두사 조합에 대한 데이터 이벤트, hello-world-python-function이라는 단일 AWS Lambda 함수에 대한 데이터 이벤트를 포함하도록 TrailName이라는 추적의 이벤트 선택기를 생성합니다.

aws cloudtrail put-event-selectors --trail-name TrailName --event-selectors '[{"ReadWriteType": "All","IncludeManagementEvents": true,"DataResources": [{"Type":"AWS::S3::Object", "Values": ["arn:aws:s3:::mybucket/prefix","arn:aws:s3:::mybucket2/prefix2"]},{"Type": "AWS::Lambda::Function","Values": ["arn:aws:lambda:us-west-2:999999999999:function:hello-world-python-function"]}]}]'

다음 예제에서는 추적에 대해 구성된 이벤트 선택기를 반환합니다.

{ "EventSelectors": [ { "ExcludeManagementEventSources": [], "IncludeManagementEvents": true, "DataResources": [ { "Values": [ "arn:aws:s3:::mybucket/prefix", "arn:aws:s3:::mybucket2/prefix2" ], "Type": "AWS::S3::Object" }, { "Values": [ "arn:aws:lambda:us-west-2:123456789012:function:hello-world-python-function" ], "Type": "AWS::Lambda::Function" }, ], "ReadWriteType": "All" } ], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName" }

모든 관리 및 데이터 이벤트를 로그하는 추적 예

다음 예에서는 읽기 전용 및 쓰기 전용 관리 이벤트를 비롯한 모든 이벤트와 AWS 계정의 모든 Amazon S3 버킷, AWS Lambda 함수 및 Amazon DynamoDB 테이블에 대한 모든 데이터 이벤트를 포함하는 TrailName2라는 추적의 이벤트 선택기를 생성합니다. 이 예에서는 기본 이벤트 선택기를 사용하기 때문에 AWS Outposts의 S3 이벤트 또는 Ethereum 노드의 Amazon Managed Blockchain JSON-RPC 호출 또는 다른 고급 이벤트 선택기 유형에 대한 로깅을 구성할 수 없습니다. 해당 리소스에 대한 데이터 이벤트를 로그하려면 고급 이벤트 선택기를 사용해야 합니다. 자세한 내용은 고급 이벤트 선택기 구성 단원을 참조하세요.

참고

추적이 하나의 리전에만 적용되는 경우 이벤트 선택기 파라미터를 사용하여 모든 Amazon S3 버킷과 Lambda 함수를 지정하더라도 해당 리전의 이벤트만 로그됩니다. 이벤트 선택기는 추적이 생성된 리전에만 적용됩니다.

aws cloudtrail put-event-selectors --trail-name TrailName2 --event-selectors '[{"ReadWriteType": "All","IncludeManagementEvents": true,"DataResources": [{"Type":"AWS::S3::Object", "Values": ["arn:aws:s3:::"]},{"Type": "AWS::Lambda::Function","Values": ["arn:aws:lambda"]},{"Type": "AWS::DynamoDB::Table","Values": ["arn:aws:dynamodb"]}]}]'

다음 예제에서는 추적에 대해 구성된 이벤트 선택기를 반환합니다.

{ "EventSelectors": [ { "ExcludeManagementEventSources": [], "IncludeManagementEvents": true, "DataResources": [ { "Values": [ "arn:aws:s3:::" ], "Type": "AWS::S3::Object" }, { "Values": [ "arn:aws:lambda" ], "Type": "AWS::Lambda::Function" }, { "Values": [ "arn:aws:dynamodb" ], "Type": "AWS::DynamoDB::Table" } ], "ReadWriteType": "All" } ], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName2" }

AWS Key Management Service 이벤트를 로그하지 않는 추적 예

다음 예제에서는 TrailName이라는 트레일이 읽기 전용 및 쓰기 전용 관리 이벤트를 포함하되 AWS Key Management Service(AWS KMS) 이벤트는 제외하도록 이벤트 선택기를 생성합니다. AWS KMS 이벤트는 관리 이벤트로 취급되며 대량의 이벤트가 발생할 수 있으므로 관리 이벤트를 캡처하는 추적이 두 개 이상 있는 경우 CloudTrail 비용에 상당한 영향을 줄 수 있습니다. 이 예제의 사용자는 하나를 제외한 모든 트레일에서 AWS KMS 이벤트를 제외하도록 선택했습니다. 이벤트 소스를 제외하려면 이벤트 선택기에 ExcludeManagementEventSources을 추가하고 문자열 값에 이벤트 소스를 지정합니다.

관리 이벤트를 로그하지 않도록 선택하는 경우 AWS KMS 이벤트가 로그되지 않으며, AWS KMS 이벤트 로깅 설정을 변경할 수 없습니다.

추적에 AWS KMS 이벤트 로깅을 다시 시작하려면 빈 배열을 ExcludeManagementEventSources의 값으로 전달합니다.

aws cloudtrail put-event-selectors --trail-name TrailName --event-selectors '[{"ReadWriteType": "All","ExcludeManagementEventSources": ["kms.amazonaws.com"],"IncludeManagementEvents": true]}]'

다음 예제에서는 트레일에 대해 구성된 이벤트 선택기를 반환합니다.

{ "EventSelectors": [ { "ExcludeManagementEventSources": [ "kms.amazonaws.com" ], "IncludeManagementEvents": true, "DataResources": [], "ReadWriteType": "All" } ], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName" }

추적에 AWS KMS 이벤트 로깅을 다시 시작하려면 다음 명령과 같이 빈 배열을 ExcludeManagementEventSources의 값으로 전달합니다.

aws cloudtrail put-event-selectors --trail-name TrailName --event-selectors '[{"ReadWriteType": "All","ExcludeManagementEventSources": [],"IncludeManagementEvents": true]}]'

소량의 관련 AWS Key Management Service 이벤트를 로그하는 추적 예

다음 예에서는 TrailName이라는 추적이 쓰기 전용 관리 이벤트 및 AWS KMS 이벤트를 포함하도록 이벤트 선택기를 생성합니다. AWS KMS 이벤트는 관리 이벤트로 취급되며 대량의 이벤트가 발생할 수 있으므로 관리 이벤트를 캡처하는 추적이 두 개 이상 있는 경우 CloudTrail 비용에 상당한 영향을 줄 수 있습니다. 이 예제의 사용자는 Disable, DeleteScheduleKey를 포함하지만 더 이상 Encrypt, Decrypt, 및 GenerateDataKey와 같은 대용량 작업을 포함하지 않는 AWS KMS 쓰기(Write) 이벤트를 포함하도록 선택했습니다(이제는 읽기(Read) 이벤트로 처리됨).

aws cloudtrail put-event-selectors --trail-name TrailName --event-selectors '[{"ReadWriteType": "WriteOnly","ExcludeManagementEventSources": [],"IncludeManagementEvents": true]}]'

다음 예제에서는 트레일에 대해 구성된 이벤트 선택기를 반환합니다. 이벤트를 포함한 AWS KMS 쓰기 전용 관리 이벤트를 로깅합니다.

{ "EventSelectors": [ { "ExcludeManagementEventSources": [], "IncludeManagementEvents": true, "DataResources": [], "ReadWriteType": "WriteOnly" } ], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName" }

Amazon RDS Data API 이벤트를 로그하지 않는 추적 예

다음 예에서는 TrailName이라는 추적이 읽기 전용 및 쓰기 전용 관리 이벤트를 포함하되 Amazon RDS Data API 이벤트는 제외하도록 이벤트 선택기를 생성합니다. Amazon RDS Data API 이벤트는 관리 이벤트로 취급되며 대량의 이벤트가 발생할 수 있으므로 관리 이벤트를 캡처하는 추적이 두 개 이상 있는 경우 CloudTrail 비용에 상당한 영향을 줄 수 있습니다. 이 예의 사용자는 하나를 제외한 모든 추적에서 Amazon RDS Data API 이벤트를 제외하도록 선택했습니다. 이벤트 소스를 제외하려면 이벤트 선택기에 ExcludeManagementEventSources를 추가하고 문자열 값에 Amazon RDS Data API 이벤트 소스(rdsdata.amazonaws.com)를 지정합니다.

관리 이벤트를 로그하지 않도록 선택하는 경우 Amazon RDS Data API 이벤트가 로그되지 않으며, 이벤트 로깅 설정을 변경할 수 없습니다.

추적에 Amazon RDS Data API 이벤트 로깅을 다시 시작하려면 빈 배열을 ExcludeManagementEventSources의 값으로 전달합니다.

aws cloudtrail put-event-selectors --trail-name TrailName --event-selectors '[{"ReadWriteType": "All","ExcludeManagementEventSources": ["rdsdata.amazonaws.com"],"IncludeManagementEvents": true]}]'

다음 예제에서는 트레일에 대해 구성된 이벤트 선택기를 반환합니다.

{ "EventSelectors": [ { "ExcludeManagementEventSources": [ "rdsdata.amazonaws.com" ], "IncludeManagementEvents": true, "DataResources": [], "ReadWriteType": "All" } ], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName" }

추적에 Amazon RDS Data API 이벤트 로깅을 다시 시작하려면 다음 명령과 같이 빈 배열을 ExcludeManagementEventSources의 값으로 전달합니다.

aws cloudtrail put-event-selectors --trail-name TrailName --event-selectors '[{"ReadWriteType": "All","ExcludeManagementEventSources": [],"IncludeManagementEvents": true]}]'

고급 이벤트 선택기 구성

기본 이벤트 선택기 대신 고급 이벤트 선택기를 사용하여 데이터 이벤트를 포함하거나 제외하려면 추적의 세부 정보 페이지에서 고급 이벤트 선택기를 사용합니다. 고급 이벤트 선택기를 사용하면 기본 이벤트 선택기보다 더 많은 리소스 유형에 데이터 이벤트를 로그할 수 있습니다. 기본 선택기는 S3 객체 활동, AWS Lambda 함수 실행 활동 및 DynamoDB 테이블을 로그합니다. 고급 이벤트 선택기는 기본 선택기뿐만 아니라 Outposts의 Amazon S3에서의 API 활동, Ethereum 노드에서의 Amazon Managed Blockchain JSON-RPC 호출, S3 객체 Lambda 액세스 포인트, EBS 스냅샷에서의 Amazon EBS direct API, S3 액세스 포인트, DynamoDB 스트림, Lake Formation에서 생성한 AWS Glue 테이블, Amazon FinSpace 환경, Amazon SageMaker 지표 실험 평가 구성 요소, Amazon SageMaker 특성 저장소를 로그합니다. 고급 이벤트 선택기에 대한 자세한 내용은 고급 이벤트 선택기 구성 단원을 참조하세요.

추적에 대한 고급 이벤트 선택기 설정을 보려면 다음의 get-event-selectors 명령을 실행합니다. 추적이 생성된 AWS 리전(홈 리전)에서 이 명령을 실행하거나, --region 파라미터를 추가하여 해당 리전을 지정해야 합니다.

aws cloudtrail get-event-selectors --trail-name TrailName
참고

추적이 조직 추적이고 AWS Organizations에서 조직의 멤버 계정으로 로그인한 경우 이름뿐만 아니라 추적의 전체 ARN을 제공해야 합니다.

다음 예에서는 추적에 대한 고급 이벤트 선택기의 기본 설정을 반환합니다. 기본적으로 추적에 대해 고급 이벤트 선택기가 구성되지 않습니다.

{ "AdvancedEventSelectors": [], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName" }

고급 이벤트 선택기를 생성하려면 put-event-selectors 명령을 실행합니다. 계정에서 데이터 이벤트가 발생하면 CloudTrail이 추적 구성을 평가합니다. 이벤트가 추적에 대한 고급 이벤트 선택기와 일치하는 경우 추적은 이벤트를 처리하고 로그합니다. 추적의 모든 고급 이벤트 선택기에 대해 지정된 모든 값을 포함하여 추적에서 조건을 최대 500개까지 구성할 수 있습니다. 자세한 내용은 추적에 대한 데이터 이벤트 로깅 단원을 참조하세요.

특정 고급 이벤트 선택기가 있는 추적 예

다음 예에서는 TrailName이라는 추적이 읽기 및 쓰기 관리 이벤트(readOnly 선택기를 생략하여), sample_bucket_name이라는 버킷을 제외한 모든 Amazon S3 버킷/접두사 조합의 PutObjectDeleteObject 데이터 이벤트, MyLambdaFunction이라는 AWS Lambda 함수의 데이터 이벤트를 포함하도록 사용자 지정 고급 이벤트 선택기를 생성합니다. 이들은 사용자 지정 고급 이벤트 선택기이므로 각 선택기 세트에는 설명적인 이름이 있습니다. 후행 슬래시는 S3 버킷에 대한 ARN 값의 일부라는 점에 유의합니다.

aws cloudtrail put-event-selectors --trail-name TrailName --advanced-event-selectors '[ { "Name": "Log readOnly and writeOnly management events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Management"] } ] }, { "Name": "Log PutObject and DeleteObject events for all but one bucket", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::Object"] }, { "Field": "eventName", "Equals": ["PutObject","DeleteObject"] }, { "Field": "resources.ARN", "NotEquals": ["arn:aws:s3:::sample_bucket_name/"] } ] }, { "Name": "Log data plane actions on MyLambdaFunction", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::Lambda::Function"] }, { "Field": "resources.ARN", "Equals": ["arn:aws:lambda:us-east-2:111122223333:function/MyLambdaFunction"] } ] } ]'

이 예에서는 추적에 대해 구성된 고급 이벤트 선택기를 반환합니다.

{ "AdvancedEventSelectors": [ { "Name": "Log readOnly and writeOnly management events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Management" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] } ] }, { "Name": "Log PutObject and DeleteObject events for all but one bucket", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "resources.type", "Equals": [ "AWS::S3::Object" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "resources.ARN", "Equals": [], "StartsWith": [], "EndsWith": [], "NotEquals": [ "arn:aws:s3:::sample_bucket_name/" ], "NotStartsWith": [], "NotEndsWith": [] }, ] }, { "Name": "Log data plane actions on MyLambdaFunction", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "resources.type", "Equals": [ "AWS::Lambda::Function" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "eventName", "Equals": [ "Invoke" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "resources.ARN", "Equals": [ "arn:aws:lambda:us-east-2:111122223333:function/MyLambdaFunction" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] } ] } ], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName" }

사용자 지정 고급 이벤트 선택기를 사용하여 모든 관리 및 데이터 이벤트를 로그하는 추적 예

다음 예에서는 읽기 전용 및 쓰기 전용 관리 이벤트, 모든 S3 버킷, Lambda 함수, DynamoDB 테이블, AWS Outposts에서의 S3 객체 수준 API 활동, Ethereum 노드에서의 Amazon Managed Blockchain JSON-RPC 호출, S3 객체 Lambda 액세스 포인트에서의 API 활동, AWS 계정의 Amazon EBS 스냅샷에서의 Amazon EBS direct API 활동, S3 액세스 포인트, DynamoDB 스트림, Lake Formation에서 생성한 AWS Glue 테이블, Amazon FinSpace 환경, Amazon SageMaker 지표 실험 평가 구성 요소, Amazon SageMaker 특성 저장소의 모든 데이터 이벤트를 포함하는 TrailName2라는 추적에 대한 고급 이벤트 선택기를 생성합니다.

참고

추적이 하나의 리전에만 적용되는 경우 이벤트 선택기 파라미터를 사용하여 모든 Amazon S3 버킷과 Lambda 함수를 지정하더라도 해당 리전의 이벤트만 로그됩니다. 단일 리전 추적에서 이벤트 선택기는 추적이 생성된 리전에만 적용됩니다.

aws cloudtrail put-event-selectors --trail-name TrailName2 \ --advanced-event-selectors ' [ { "Name": "Log readOnly and writeOnly management events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Management"] } ] }, { "Name": "Log all events for all buckets", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::Object"] } ] }, { "Name": "Log all events for Lambda functions", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::Lambda::Function"] } ] }, { "Name": "Log all events for DynamoDB tables", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::DynamoDB::Table"] } ] }, { "Name": "Log all events for S3 on Outposts", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3Outposts::Object"] } ] }, { "Name": "Log all JSON-RPC calls for Ethereum nodes in Amazon Managed Blockchain", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::ManagedBlockchain::Node"] } ] }, { "Name": "Log all events for Amazon S3 Object Lambda access points", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3ObjectLambda::AccessPoint"] } ] }, { "Name": "Log all Amazon EBS direct API calls on snapshots", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::EC2::Snapshot"] } ] }, { "Name": "Log all events for S3 access points", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::AccessPoint"] } ] }, { "Name": "Log all events for DynamoDB streams", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::DynamoDB::Stream"] } ] }, { "Name": "Log all events for AWS Glue tables created by Lake Formation", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::Glue::Table"] } ] }, { "Name": "Log all events for FinSpace environments", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::FinSpace::Environment"] } ] }, { "Name": "Log all events for SageMaker metrics experiment trial components", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::SageMaker::ExperimentTrialComponent"] } ] }, { "Name": "Log all events for SageMaker feature stores", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::SageMaker::AWS::SageMaker::FeatureGroup"] } ] } ]'

이 예에서는 추적에 대해 구성된 고급 이벤트 선택기를 반환합니다.

{ "AdvancedEventSelectors": [ { "Name": "Log readOnly and writeOnly management events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Management" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] } ] }, { "Name": "Log all events for all buckets", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "resources.type", "Equals": [ "AWS::S3::Object" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] } ] }, { "Name": "Log all events for Lambda functions", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "resources.type", "Equals": [ "AWS::Lambda::Function" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] } ] }, { "Name": "Log all events for DynamoDB tables", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "resources.type", "Equals": [ "AWS::DynamoDB::Table" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] } ] }, { "Name": "Log all events for S3 on Outposts", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "resources.type", "Equals": [ "AWS::S3Outposts::Object" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] } ] }, { "Name": "Log all JSON-RPC call events for Ethereum on Managed Blockchain nodes", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "resources.type", "Equals": [ "AWS::ManagedBlockchain::Node" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] } ] }, { "Name": "Log all events for Amazon S3 Object Lambda access points", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "resources.type", "Equals": [ "AWS::S3ObjectLambda::AccessPoint" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] } ] }, { "Name": "Log all Amazon EBS direct API calls on snapshots", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "resources.type", "Equals": [ "AWS::EC2::Snapshot" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] } ] }, { "Name": "Log all events for S3 access points", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "resources.type", "Equals": [ "AWS::S3::AccessPoint" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] } ] }, { "Name": "Log all events for DynamoDB streams", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "resources.type", "Equals": [ "AWS::DynamoDB::Stream" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] } ] }, { "Name": "Log all events for AWS Glue tables created by Lake Formation", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "resources.type", "Equals": [ "AWS::Glue::Table" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] } ] }, { "Name": "Log all events for FinSpace environments", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "resources.type", "Equals": [ "AWS::FinSpace::Environment" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] } ] }, { "Name": "Log all events for SageMaker metrics experiment trial components", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "resources.type", "Equals": [ "AWS::SageMaker::ExperimentTrialComponent" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] } ] }, { "Name": "Log all events for SageMaker feature stores", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "resources.type", "Equals": [ "AWS::SageMaker::FeatureGroup" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] } ] } ], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName2" }

사용자 지정 고급 이벤트 선택기를 사용하여 Amazon S3 on AWS Outposts 데이터 이벤트를 로그하는 추적 예

다음 예에서는 Outpost의 모든 Amazon S3 on AWS Outposts 객체에 대한 모든 데이터 이벤트를 포함하도록 추적을 구성하는 방법을 보여 줍니다. 이 릴리스에서 resources.type 필드의 S3 on AWS Outposts 이벤트에 대해 지원되는 값은 AWS::S3Outposts::Object입니다.

aws cloudtrail put-event-selectors --trail-name TrailName --region region \ --advanced-event-selectors \ '[ { "Name": "OutpostsEventSelector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3Outposts::Object"] } ] } ]'

이 명령은 다음 출력 예를 반환합니다.

{ "AdvancedEventSelectors": [ { "Name": "OutpostsEventSelector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3Outposts::Object" ] } ] } ], "TrailARN": "arn:aws:cloudtrail:region:123456789012:trail/TrailName" }

고급 이벤트 선택기를 사용하여 AWS Key Management Service 이벤트를 제외하는 추적 예

다음 예에서는 TrailName이라는 추적이 읽기 전용 및 쓰기 전용 관리 이벤트를 포함하되(readOnly 선택기를 생략하여) AWS Key Management Service(AWS KMS) 이벤트는 제외하도록 고급 이벤트 선택기를 생성합니다. AWS KMS 이벤트는 관리 이벤트로 취급되며 대량의 이벤트가 발생할 수 있으므로 관리 이벤트를 캡처하는 추적이 두 개 이상 있는 경우 CloudTrail 비용에 상당한 영향을 줄 수 있습니다. 이 릴리스에서는 kms.amazonaws.com에서 이벤트를 제외할 수 있습니다.

관리 이벤트를 로그하지 않도록 선택하는 경우 AWS KMS 이벤트가 로그되지 않으며, AWS KMS 이벤트 로깅 설정을 변경할 수 없습니다.

AWS KMS 이벤트를 추적에 다시 로그하려면 eventSource 선택기를 제거하고 명령을 다시 실행합니다.

aws cloudtrail put-event-selectors --trail-name TrailName \ --advanced-event-selectors ' [ { "Name": "Log all management events except KMS events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Management"] }, { "Field": "eventSource", "NotEquals": ["kms.amazonaws.com"] } ] } ]'

이 예에서는 추적에 대해 구성된 고급 이벤트 선택기를 반환합니다.

{ "AdvancedEventSelectors": [ { "Name": "Log all management events except KMS events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Management" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "eventSource", "Equals": [], "StartsWith": [], "EndsWith": [], "NotEquals": [ "kms.amazonaws.com" ], "NotStartsWith": [], "NotEndsWith": [] } ] } ], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName" }

제외된 이벤트를 추적에 다시 로그하려면 다음 명령과 같이 eventSource 선택기를 제거합니다.

aws cloudtrail put-event-selectors --trail-name TrailName \ --advanced-event-selectors ' [ { "Name": "Log all management events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Management"] } ] } ]'

고급 이벤트 선택기를 사용하여 Amazon RDS Data API 이벤트를 제외하는 추적 예

다음 예에서는 TrailName이라는 추적이 읽기 전용 및 쓰기 전용 관리 이벤트를 포함하되(readOnly 선택기를 생략하여) Amazon RDS Data API 이벤트는 제외하도록 고급 이벤트 선택기를 생성합니다. Amazon RDS Data API 이벤트는 관리 이벤트로 취급되며 대량의 이벤트가 발생할 수 있으므로 관리 이벤트를 캡처하는 추적이 두 개 이상 있는 경우 CloudTrail 비용에 상당한 영향을 줄 수 있습니다. Amazon RDS Data API 이벤트를 제외하려면 eventSource 필드의 문자열 값에 Amazon RDS Data API 이벤트 소스(rdsdata.amazonaws.com)를 지정합니다.

관리 이벤트를 로그하지 않도록 선택하는 경우 Amazon RDS Data API 이벤트가 로그되지 않으며, Amazon RDS Data API 이벤트 로깅 설정을 변경할 수 없습니다.

Amazon RDS Data API 이벤트를 추적에 다시 로그하려면 eventSource 선택기를 제거하고 명령을 다시 실행합니다.

aws cloudtrail put-event-selectors --trail-name TrailName \ --advanced-event-selectors ' [ { "Name": "Log all management events except Amazon RDS data events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Management"] }, { "Field": "eventSource", "NotEquals": ["rdsdata.amazonaws.com"] } ] } ]'

이 예에서는 추적에 대해 구성된 고급 이벤트 선택기를 반환합니다.

{ "AdvancedEventSelectors": [ { "Name": "Log all management events except Amazon RDS data events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Management" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "eventSource", "Equals": [], "StartsWith": [], "EndsWith": [], "NotEquals": [ "rdsdata.amazonaws.com" ], "NotStartsWith": [], "NotEndsWith": [] } ] } ], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName" }

제외된 이벤트를 추적에 다시 로그하려면 다음 명령과 같이 eventSource 선택기를 제거합니다.

aws cloudtrail put-event-selectors --trail-name TrailName \ --advanced-event-selectors ' [ { "Name": "Log all management events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Management"] } ] } ]'

추적에 대한 로깅 중단 및 시작

다음 명령은 CloudTrail 로깅을 시작 및 중지합니다.

aws cloudtrail start-logging --name awscloudtrail-example
aws cloudtrail stop-logging --name awscloudtrail-example
참고

버킷을 삭제하기 전에 stop-logging 명령을 실행하여 이벤트가 버킷으로 전송되는 것을 중지합니다. 로깅을 중지하지 않았다면 CloudTrail은 제한된 기간 동안 동일한 이름의 버킷에 로그 파일을 전달하려고 합니다.

추적 로깅을 중지하거나 추적을 삭제하면 해당 추적에서 CloudTrail Insights가 사용 중지됩니다.

추적 삭제

다음 명령을 사용하여 추적을 삭제할 수 있습니다. 추적이 생성된 리전(홈 리전)에서만 추적을 삭제할 수 있습니다.

aws cloudtrail delete-trail --name awscloudtrail-example

추적을 삭제할 때 추적과 연결된 Amazon S3 버킷이나 Amazon SNS 주제는 삭제하지 않아야 합니다. AWS Management Console, AWS CLI 또는 서비스 API를 사용하여 이러한 리소스를 개별적으로 삭제하십시오.