CloudWatch Logs로 이벤트 전송 - AWS CloudTrail

CloudWatch Logs로 이벤트 전송

CloudWatch Logs로 이벤트를 전송하도록 추적을 구성하면 CloudTrail은 추적 설정과 일치하는 이벤트만 전송합니다. 예를 들어, 데이터 이벤트만 로깅하도록 트레일을 구성하면 해당 트레일은 CloudWatch Logs 로그 그룹으로만 데이터 이벤트를 전송합니다. CloudTrail는 데이터, 인사이트 및 관리 이벤트를 CloudWatch Logs로 전송할 수 있도록 지원합니다. 자세한 내용은 CloudTrail 로그 파일 작업 단원을 참조하십시오.

CloudWatch Logs 로그 그룹으로 이벤트를 전송하려면

콘솔을 사용하여 CloudWatch Logs 모니터링 구성

AWS Management 콘솔을 사용하여 CloudWatch Logs로 이벤트를 전송하도록 추적을 구성하여 이벤트를 모니터링할 수 있습니다.

로그 그룹 생성 또는 기존 로그 그룹 지정

CloudTrail은 로그 이벤트에 대한 전송 종단점으로 CloudWatch Logs 로그 그룹을 사용합니다. 로그 그룹을 생성하거나 기존 로그 그룹을 지정할 수 있습니다.

로그 그룹을 생성하거나 지정하려면

  1. CloudWatch Logs 통합을 구성할 수 있는 충분한 권한이 있는 관리 IAM 사용자 또는 역할로 로그인해야 합니다. 자세한 내용은 Amazon CloudWatch Logs 콘솔에서 CloudTrail 정보를 보고 구성할 수 있는 권한 부여 단원을 참조하십시오.

  2. https://console.aws.amazon.com/cloudtrail/에서 CloudTrail 콘솔을 엽니다.

  3. 추적 이름을 선택합니다. 모든 리전에 적용되는 추적을 선택하는 경우 추적이 생성된 리전으로 리디렉션됩니다. 로그 그룹을 생성하거나 추적과 동일한 리전에서 기존의 로그 그룹을 선택할 수 있습니다.

    참고

    모든 리전에 적용되는 추적은 모든 리전의 로그 파일을 지정한 CloudWatch Logs 로그 그룹으로 전송합니다.

  4. CloudWatch Logs의 경우 Configure를 선택합니다.

  5. [New or existing log group]의 경우 로그 그룹 이름을 입력한 다음 [Continue]를 선택합니다. 자세한 내용은 에 대한 로그 그룹 및 로그 스트림 이름 지정를 참조하십시오.

  6. IAM 역할의 경우 기존 역할을 선택하거나 새 역할을 생성합니다. IAM 역할을 생성하는 경우 역할 이름을 입력합니다.

  7. Allow를 선택하여 CloudTrail에 CloudWatch Logs 로그 스트림을 생성하고 이벤트를 전송할 수 있는 권한을 부여합니다.

IAM 역할 지정

로그 스트림으로 이벤트를 전송하기 위해 CloudTrail이 수임할 역할을 지정할 수 있습니다.

역할을 지정하려면

  1. 기본적으로 CloudTrail_CloudWatchLogs_Role이 지정됩니다. 기본 역할 정책에는 지정한 로그 그룹에 CloudWatch Logs 로그 스트림을 생성하고 이 로그 스트림으로 CloudTrail 이벤트를 전송하는 데 필요한 권한이 있습니다.

    참고

    조직 추적에 대한 로그 그룹에 이 역할을 사용하려면, 역할을 만든 후 정책을 수동으로 수정해야 합니다. 자세한 내용은 이 정책 예제조직에 대한 추적 생성을 참조하십시오.

    1. 역할을 확인하려면 https://console.aws.amazon.com/iam/의 AWS Identity and Access Management 콘솔로 이동합니다.

    2. [Roles]를 선택한 다음 [CloudTrail_CloudWatchLogs_Role]을 선택합니다.

    3. 역할 정책의 콘텐츠를 보려면 [View Policy Document]를 선택합니다.

  2. 다른 역할을 지정할 수 있지만 기존 역할을 사용하여 이벤트를 CloudWatch Logs로 전송하려면 기존 역할에 필요한 역할 정책을 연결해야 합니다. 자세한 내용은 모니터링을 위해 CloudWatch Logs를 사용하는 CloudTrail의 역할 정책 문서 섹션을 참조하십시오.

CloudWatch 콘솔에서 이벤트 보기

CloudWatch Logs 로그 그룹으로 이벤트를 전송하도록 추적을 구성하면 CloudWatch 콘솔에서 이벤트를 볼 수 있습니다. CloudTrail은 일반적으로 API 호출 후 몇 분 이내에 로그 그룹으로 이벤트를 전송합니다.

CloudWatch 콘솔에서 이벤트를 보려면

  1. https://console.aws.amazon.com/cloudwatch/에서 CloudWatch 콘솔을 엽니다.

  2. [Logs]를 선택합니다.

  3. 추적에 대해 지정한 로그 그룹을 선택합니다.

  4. 로그 스트림 이름을 선택합니다.

  5. 추적이 로깅한 이벤트의 세부 정보를 보려면 이벤트를 선택합니다.

참고

CloudWatch 콘솔의 Time(UTC) 열에는 로그 그룹으로 이벤트가 전송된 시간이 표시됩니다. CloudTrail에서 이벤트를 로깅한 실제 시간을 보려면 eventTime 필드를 확인합니다.

AWS CLI를 사용하여 CloudWatch Logs 모니터링 구성

AWS CLI를 사용하여 CloudWatch Logs에 이벤트를 전송하도록 CloudTrail을 구성하여 이벤트를 모니터링할 수 있습니다.

로그 그룹 생성

  1. 기존의 로그 그룹이 없는 경우 CloudWatch Logs create-log-group 명령을 사용하여 CloudWatch Logs 로그 그룹을 로그 이벤트에 대한 전송 종단점으로 생성합니다.

    aws logs create-log-group --log-group-name name

    다음 예제에서는 CloudTrail/logs라는 로그 그룹을 생성합니다.

    aws logs create-log-group --log-group-name CloudTrail/logs
  2. 로그 그룹 Amazon 리소스 이름(ARN)을 검색합니다.

    aws logs describe-log-groups

역할 생성

CloudTrail이 CloudWatch Logs 로그 그룹으로 이벤트를 전송하도록 허용하는 역할을 생성합니다. IAM create-role 명령은 역할 이름 및 파일 경로(JSON 형식의 역할 수임 정책 문서를 가리킴)라는 두 개의 파라미터를 사용합니다. 사용하는 정책 문서는 CloudTrail에 AssumeRole 권한을 부여합니다. create-role 명령은 필요한 권한을 가진 역할을 생성합니다.

정책 문서가 포함된 JSON 파일을 생성하려면 텍스트 편집기를 열고 assume_role_policy_document.json 파일에 다음 정책 콘텐츠를 저장합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

다음 명령을 실행하여 CloudTrail에 대해 AssumeRole 권한을 가진 역할을 생성합니다.

aws iam create-role --role-name role_name --assume-role-policy-document file://<path to assume_role_policy_document>.json

명령이 완료되면 출력에 역할 ARN이 표시됩니다.

정책 문서 생성

CloudTrail에 대해 다음 역할 정책 문서를 생성합니다. 이 문서는 지정된 로그 그룹에 CloudWatch Logs 로그 스트림을 생성하고 이 로그 스트림으로 CloudTrail 이벤트를 전송하는 데 필요한 권한을 CloudTrail에 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSCloudTrailCreateLogStream2014110", "Effect": "Allow", "Action": [ "logs:CreateLogStream" ], "Resource": [ "arn:aws:logs:region:accountID:log-group:log_group_name:log-stream:accountID_CloudTrail_region*" ] }, { "Sid": "AWSCloudTrailPutLogEvents20141101", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:accountID:log-group:log_group_name:log-stream:accountID_CloudTrail_region*" ] } ] }

정책 문서를 role-policy-document.json 파일에 저장합니다.

조직 추적에도 사용할 수 있는 정책을 만들려면 조금 다르게 구성해야 합니다. 예를 들어 다음 정책은 ID가 o-exampleorgid인 AWS Organizations 조직에 적용되는 111111111111 계정에 생성된 조직 추적과 111111111111 AWS 계정의 추적 모두에 대해 지정한 로그 그룹에 CloudWatch Logs 로그 스트림을 생성하고 해당 로그 스트림에 CloudTrail 이벤트를 전송하는 데 필요한 권한을 CloudTrail에 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSCloudTrailCreateLogStream20141101", "Effect": "Allow", "Action": [ "logs:CreateLogStream" ], "Resource": [ "arn:aws:logs:us-east-2:111111111111:log-group:CloudTrail/DefaultLogGroupTest:log-stream:111111111111_CloudTrail_us-east-2*", "arn:aws:logs:us-east-2:111111111111:log-group:CloudTrail/DefaultLogGroupTest:log-stream:o-exampleorgid_*", ] }, { "Sid": "AWSCloudTrailPutLogEvents20141101", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-2:111111111111:log-group:CloudTrail/DefaultLogGroupTest:log-stream:111111111111_CloudTrail_us-east-2*", "arn:aws:logs:us-east-2:111111111111:log-group:CloudTrail/DefaultLogGroupTest:log-stream:o-exampleorgid_*", ] } ] }

조직 추적에 대한 자세한 내용은 조직에 대한 추적 생성을 참조하십시오.

다음 명령을 실행하여 정책을 역할에 적용합니다.

aws iam put-role-policy --role-name role_name --policy-name cloudtrail-policy --policy-document file://<path to role-policy-document>.json

추적 업데이트

CloudTrail update-trail 명령을 사용하여 로그 그룹 및 역할 정보로 추적을 업데이트합니다.

aws cloudtrail update-trail --name trail_name --cloud-watch-logs-log-group-arn log_group_arn --cloud-watch-logs-role-arn role_arn

AWS CLI 명령에 대한 자세한 내용은 AWS CloudTrail 명령줄 레퍼런스를 참조하십시오.

제한

CloudWatch Logs의 이벤트 크기는 256KB로 제한되므로 CloudTrail은 256KB보다 큰 이벤트는 CloudWatch Logs로 전송하지 않습니다. 예를 들어 EC2 RunInstances API에 대한 호출이 500개의 인스턴스를 시작하면 256KB 제한을 초과하게 됩니다. 이 경우 CloudTrail이 CloudWatch Logs로 이벤트를 전송하지 않습니다. CloudTrail이 CloudWatch Logs로 이벤트를 전송하도록 하려면 큰 요청을 여러 개의 작은 배치로 나누십시오.