[AWS] CloudWatch Logs로 CloudTrail 이벤트 로그 전송 방법

HYEOB KIM·2022년 6월 16일
1

aws

목록 보기
37/62

개요

  • CloudTrail의 이벤트 기록CloudWatch 로그 그룹으로 전달하는 방법입니다.

사전 작업

  • IAM 사용자에게 역할에 대한 조작을 할 수 있는 권한들이 포함된 정책을 연결합니다.
    IAM 사용자가 관리자 권한을 가지고 있다면 이 과정을 생략해도 됩니다.

  • 이 과정이 필요한 이유는 아래에 CloudTrail에서 추적을 생성할 때 CloudWatch 로그 그룹에 이벤트를 성공적으로 전달하기 위한 역할을 생성하고 구성하는 과정이 있기 때문입니다.

{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "iam:CreateRole",
            "iam:PutRolePolicy",
            "iam:AttachRolePolicy",
            "iam:ListRoles",
            "iam:GetRolePolicy",
            "iam:GetUser"
        ],
        "Resource": "*"
    }]
}

추적 생성

일반 세부 정보

=> AWS 공식 문서 - 추적 생성를 참고했습니다.

1. CloudTrail 콘솔을 엽니다.

2. 추적 > 추적 생성을 선택합니다.

3. 추적 이름을 입력합니다.

4. AWS Organizations 조직 추적인 경우 조직의 모든 계정에 대해 추적을 사용하도록 선택할 수 있습니다. 관리 계정의 IAM 사용자 또는 역할로 콘솔에 로그인한 경우에만 이 옵션이 표시됩니다.

5. 추적 로그를 저장할 S3 버킷을 선택합니다.

  • 새 S3 버킷 생성을 선택하여 버킷을 생성합니다. 버킷을 생성하면 CloudTrail은 필요한 버킷 정책을 생성하고 적용합니다.

  • 기존 S3 버킷 사용을 선택해 기존 버킷을 선택할 수 있습니다.

  • 로그를 더 쉽게 찾을 수 있도록 기존 버킷에 새 폴더(또는 ‘접두사’)를 생성하여 CloudTrail 로그를 저장할 수 있습니다. 접두사에 접두사를 입력합니다.

6. SSE-S3 대신 SSE-KMS를 사용하여 로그 파일을 암호화하려면 활성화됨을 선택합니다.

  • SSE-KMS 암호화를 사용하도록 설정하는 경우 신규 또는 기존를 선택합니다.
  • 신규를 선택한 경우 AWS KMS 별칭에서 alias/MyAliasName 형식으로 별칭을 지정합니다.
  • 기존을 선택한 경우 AWS KMS key를 선택합니다.

7. 추가 설정을 진행합니다.

  • 로그 파일 검증: 로그 다이제스트 파일을 S3 버킷에 전달합니다. 다이제스트 파일을 사용하면 CloudTrail이 로그 파일을 전달한 후 해당 파일이 변경되지 않았는지 확인할 수 있습니다.(로그 파일 무결성 검증)

  • SNS 알림 전송: 로그가 버킷에 전달될 때마다 알림을 받습니다. CloudTrail은 여러 이벤트를 로그 파일에 저장합니다. 여기서는 모든 이벤트가 아니라 모든 로그 파일에 대해 SNS 알림이 전송됩니다.

  • SNS 알림 전송을 활성화하게 되면 아래와 같이 SNS 주제를 생성하거나, 기존의 주제를 선택할 수 있습니다.

CloudWatch Logs

1. CloudWatch Logs를 활성화합니다.

2. 로그 그룹을 생성하거나 기존 로그 그룹을 선택합니다.

  • 로그 그룹을 새로 생성할 경우 아래와 같이 로그 그룹 이름을 작성합니다.

  • 기존의 로그 그룹을 지정할 경우 기존을 선택합니다.

3. 역할 생성 또는 기존 역할 선택

  • 신규 역할을 생성하고, 역할 이름을 CloudTrailRoleForCloudWatchLogs으로 지정합니다.

  • 역할에 대한 정책은 아래와 같습니다.

  • CloudTrail은 이 역할을 수임해 CloudWatch 로그 그룹으로 이벤트를 전송할 수 있게 됩니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AWSCloudTrailCreateLogStream2014110",
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogStream"
      ],
      "Resource": [
        "arn:aws:logs:ap-northeast-2:797587922006:log-group:test-hyeob-aws-cloudtrail-logs-797587922006-99a53fe4:log-stream:797587922006_CloudTrail_ap-northeast-2*"
      ]
    },
    {
      "Sid": "AWSCloudTrailPutLogEvents20141101",
      "Effect": "Allow",
      "Action": [
        "logs:PutLogEvents"
      ],
      "Resource": [
        "arn:aws:logs:ap-northeast-2:797587922006:log-group:test-hyeob-aws-cloudtrail-logs-797587922006-99a53fe4:log-stream:797587922006_CloudTrail_ap-northeast-2*"
      ]
    }
  ]
}

로그 이벤트 선택

=> AWS 공식 문서 - 추적 생성를 참고했습니다.

  • 로그 이벤트 선택 페이지에서 로그하려는 이벤트 유형을 선택합니다.

관리 이벤트

  • 추적이 읽기 이벤트, 쓰기 이벤트 또는 둘 다를 로그하도록 할지 선택합니다.

    • 읽기: 리소스는 읽지만 변경되지 않는 API 작업이 포함됩니다.
    • 쓰기: 리소스를 수정하는(또는 수정 가능) API 작업이 포함됩니다.
  • AWS KMS 이벤트 제외를 선택하여 추적에서 AWS KMS 이벤트를 필터링합니다.
    기본 설정은 모든 AWS KMS 이벤트를 포함하는 것입니다.
    다른 이벤트를 선택할 경우 항상 AWS KMS 이벤트는 포함됩니다.

  • Amazon RDS Data API 이벤트 제외를 선택하여 추적에서 Amazon RDS Data API 이벤트를 필터링합니다.
    기본 설정은 모든 Amazon RDS Data API 이벤트를 포함하는 것입니다.

데이터 이벤트

  • 데이터 이벤트는 리소스에 대해 또는 리소스 내에서 수행된 리소스 작업에 대한 정보를 표시합니다.

  • 아래 항목에 대한 이벤트를 로깅합니다.

Insights 이벤트

추적이 CloudTrail Insights 이벤트를 로그하도록 하려면 Insights 이벤트를 선택합니다

  • CloudTrail Insights비정상적인 활동에 대한 관리 이벤트를 분석하고 이상이 감지되면 이벤트를 로그합니다.

  • Insights 이벤트는 추적 세부 정보 페이지의 스토리지 위치 영역에 지정된 동일한 S3 버킷의 /CloudTrail-Insight 라는 이름의 폴더에 전달됩니다.


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

  1. CloudWatch 콘솔을 엽니다.

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

  3. 로그 스트림 이름을 선택하면 이벤트에 대해 JSON 형식으로 나타나는 것을 볼 수 있습니다.

profile
Devops Engineer

0개의 댓글