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": "amzn-s3-demo-bucket1", "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": "amzn-s3-demo-bucket2", "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": "amzn-s3-demo-bucket3", "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": "amzn-s3-demo-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 파라미터를 명령에 추가하여 해당 리전을 지정해야 합니다.

참고

ApiCallRateInsight에 대한 Insights 이벤트를 로깅하려면, 추적에서 write 관리 이벤트를 로깅해야 합니다. ApiErrorRateInsight에 대한 Insights 이벤트를 로깅하려면, 추적에서 read 또는 write 관리 이벤트를 로깅해야 합니다.

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" }

고급 이벤트 선택기 구성

고급 이벤트 선택기를 사용하여 관리 이벤트, 모든 리소스 유형에 대한 데이터 이벤트네트워크 활동 이벤트를 로깅할 수 있습니다. 반대로 기본 이벤트 선택기를 사용하여 AWS::DynamoDB::Table, AWS::Lambda::FunctionAWS::S3::Object 리소스 유형에 대한 관리 이벤트 및 데이터 이벤트를 로깅할 수 있습니다. 고급 이벤트 선택기 또는 기본 이벤트 선택기 중 하나를 사용할 수 있습니다(둘 다는 안 됨). 기본 이벤트 선택기를 사용하는 추적에 고급 이벤트 선택기를 적용하면 기본 이벤트 선택기를 덮어씁니다.

추적을 고급 이벤트 선택기로 변환하려면 get-event-selectors 명령을 실행하여 현재 이벤트 선택기를 확인하고, 이전 이벤트 선택기의 적용 범위와 일치하도록 고급 이벤트 선택기를 구성한 다음, 추가 선택기를 추가합니다.

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

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

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

다음 예제는 고급 이벤트 선택기를 사용하여 관리 이벤트를 로깅하는 추적의 설정을 보여줍니다. 기본적으로 추적은 모든 관리 이벤트를 로깅하고 데이터 이벤트 또는 네트워크 활동 이벤트는 로깅하지 않도록 구성됩니다.

{ "TrailARN": "arn:aws:cloudtrail:us-east-1:123456789012:trail/management-events-trail", "AdvancedEventSelectors": [ { "Name": "Management events selector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Management" ] } ] } ] }

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

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

다음 예제에서는 TrailName이라는 추적이 읽기 및 쓰기 관리 이벤트(readOnly 선택기 생략), amzn-s3-demo-bucket이라는 버킷을 제외한 모든 Amazon S3 버킷/접두사 조합의 PutObjectDeleteObject 데이터 이벤트, MyLambdaFunction이라는 AWS Lambda 함수의 데이터 이벤트, VPC 엔드포인트에서 AWS KMS 액세스 거부 이벤트에 대한 네트워크 활동 이벤트를 포함하도록 사용자 지정 고급 이벤트 선택기를 생성합니다. 이들은 사용자 지정 고급 이벤트 선택기이므로 각 선택기 세트에는 설명적인 이름이 있습니다. 후행 슬래시는 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", "NotStartsWith": ["arn:aws:s3:::amzn-s3-demo-bucket/"] } ] }, { "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"] } ] }, { "Name": "Audit AccessDenied AWS KMS events over a VPC endpoint", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["NetworkActivity"]}, { "Field": "eventSource", "Equals": ["kms.amazonaws.com"]}, { "Field": "errorCode", "Equals": ["VpceAccessDenied"]} ] } ]'

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

{ "AdvancedEventSelectors": [ { "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": "resources.ARN", "NotStartsWith": [ "arn:aws:s3:::amzn-s3-demo-bucket/" ] }, ] }, { "Name": "Log data plane actions on MyLambdaFunction", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::Lambda::Function" ] }, { "Field": "eventName", "Equals": [ "Invoke" ] }, { "Field": "resources.ARN", "Equals": [ "arn:aws:lambda:us-east-2:123456789012:function/MyLambdaFunction" ] } ] }, { "Name": "Audit AccessDenied AWS KMS events over a VPC endpoint", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["NetworkActivity"] }, { "Field": "eventSource", "Equals": ["kms.amazonaws.com"] }, { "Field": "errorCode", "Equals": ["VpceAccessDenied"] } ] } ], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName" }

사용자 지정 고급 이벤트 선택기를 사용하여 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 비용에 상당한 영향을 줄 수 있습니다.

관리 이벤트를 로그하지 않도록 선택하는 경우 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" ] }, { "Field": "eventSource", "NotEquals": [ "kms.amazonaws.com" ] } ] } ], "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 데이터 API 관리 이벤트를 제외하는 추적 예제

다음 예제에서는 TrailName이라는 추적이 읽기 전용 및 쓰기 전용 관리 이벤트를 포함하되(readOnly 선택기 생략) Amazon RDS 데이터 API 관리 이벤트는 제외하도록 고급 이벤트 선택기를 생성합니다. Amazon RDS 데이터 API 관리 이벤트를 제외하려면 eventSource 필드의 문자열 값에 Amazon RDS 데이터 API 이벤트 소스(rdsdata.amazonaws.com)를 지정합니다.

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

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

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

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

{ "AdvancedEventSelectors": [ { "Name": "Log all management events except Amazon RDS Data API management events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Management" ] }, { "Field": "eventSource", "NotEquals": [ "rdsdata.amazonaws.com" ] } ] } ], "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"] } ] } ]'

기본 이벤트 선택기 구성

기본 이벤트 선택기만 사용하여 AWS::DynamoDB::Table, AWS::Lambda::FunctionAWS::S3::Object 리소스 유형에 대한 관리 이벤트 및 데이터 이벤트를 로깅할 수 있습니다. 고급 이벤트 선택기를 사용하여 관리 이벤트, 모든 데이터 리소스 유형 및 네트워크 활동 이벤트를 로깅할 수 있습니다.

고급 이벤트 선택기 또는 기본 이벤트 선택기 중 하나를 사용할 수 있습니다(둘 다는 안 됨). 고급 이벤트 선택기를 사용하는 추적에 기본 이벤트 선택기를 적용하면 고급 이벤트 선택기를 덮어씁니다.

추적에 대한 이벤트 선택기 설정을 보려면 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 명령을 실행합니다. 추적에 Insights 이벤트를 로그하려면 이벤트 선택기에서 추적을 구성하려는 Insights 유형의 로깅을 활성화해야 합니다. Insights 이벤트에 대한 자세한 내용은 CloudTrail Insights를 사용한 작업 섹션을 참조하세요.

계정에서 이벤트가 발생하면 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:::amzn-s3-demo-bucket/prefix","arn:aws:s3:::amzn-s3-demo-bucket2/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:::amzn-s3-demo-bucket/prefix", "arn:aws:s3:::amzn-s3-demo-bucket2/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, Delete, ScheduleKey를 포함하지만 더 이상 Encrypt, Decrypt, GenerateDataKey 같은 대용량 작업을 포함하지 않는 AWS KMS 쓰기 이벤트를 포함하도록 선택했습니다(이제는 읽기 이벤트로 처리됨).

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 데이터 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 데이터 API 관리 이벤트 로깅을 다시 시작하려면 다음 명령과 같이 빈 배열을 ExcludeManagementEventSources의 값으로 전달합니다.

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

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

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

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

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

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

추적 삭제

Amazon Security Lake에서 CloudTrail 관리 이벤트를 활성화한 경우, 여러 지역이고 readwrite 관리 이벤트를 모두 로깅하는 조직 추적을 하나 이상 유지 관리해야 합니다. 추적이 이 요구 사항을 충족하는 유일한 추적이라면, Security Lake에서 CloudTrail 관리 이벤트를 비활성화하지 않는 한 추적을 삭제할 수 없습니다.

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

중요

CloudTrail 추적을 삭제하는 것은 되돌릴 수 없는 작업이지만 CloudTrail은 해당 추적에 대한 Amazon S3 버킷, Amazon S3 버킷 자체 또는 추적이 이벤트를 전달하는 CloudWatch 로그 그룹의 로그 파일을 삭제하지 않습니다. 다중 리전 추적을 삭제하면 AWS 계정에서 활성화된 모든 AWS 리전의 이벤트 로깅이 중지됩니다. 단일 리전 추적을 삭제하면 해당 리전의 이벤트 로깅만 중지됩니다. 다른 리전의 추적에 삭제된 추적과 동일한 이름이 있더라도 다른 리전의 이벤트 로깅은 중지되지 않습니다.

CloudTrail 추적의 계정 해지 및 삭제에 대한 자세한 내용은 AWS 계정 해지 및 추적 섹션을 참조하세요.

aws cloudtrail delete-trail --name awscloudtrail-example

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