AWS CloudTrail 자습서 시작하기 - AWS CloudTrail

AWS CloudTrail 자습서 시작하기

AWS CloudTrail을 처음 사용하는 경우 이 자습서를 통해 기능 사용법을 학습할 수 있습니다. 이 자습서에서는 CloudTrail 콘솔에서 최근 AWS 계정 활동을 검토하고 이벤트를 조사합니다. 그런 다음, 추적을 생성합니다. 추적은 Amazon S3 버킷에 저장되는 관리 이벤트 활동의 지속적인 레코드입니다. [이벤트 기록(Event history)]과는 달리, 이 지속적인 레코드는 90일로 제한되지 않고, 모든 AWS 리전에서 이벤트를 로그하며, 시간 경과에 따른 보안 및 감사 요구를 충족하는 데 도움이 될 수 있습니다.

사전 조건

시작하기 전에 다음과 같은 사전 조건 및 설정을 완료해야 합니다.

1단계: 이벤트 기록에서 AWS 계정 활동 검토

CloudTrail은 계정 생성 시 AWS 계정에서 사용되도록 설정됩니다. CloudTrail을 지원하는 어떤 AWS 서비스에서든 활동이 발생하면 해당 활동은 [이벤트 기록(Event history)]의 다른 AWS 서비스 이벤트와 함께 CloudTrail 이벤트에 기록됩니다. 다시 말해서, 추적을 생성하는 것이 AWS 계정 활동의 장기적인 레코드 및 감사에 중요하지만, 추적을 생성하기 전에 AWS 계정에서 최근 이벤트를 보고 검색하고 다운로드할 수 있습니다. 추적과는 달리 [이벤트 기록(Event history)]은 지난 90일 동안 발생한 이벤트만 표시합니다.

  1. CloudTrail 관리를 위해 구성한 IAM 사용자로 AWS Management Console에 로그인합니다. https://console.aws.amazon.com/cloudtrail/home/에서 CloudTrail 콘솔을 엽니다.

  2. 대시보드에서 AWS 계정에서 발생한 가장 최신 이벤트에 대한 정보를 검토합니다. 최근 이벤트는 AWS Management Console에 방금 로그인했음을 보여주는 ConsoleLogin 이벤트여야 합니다.

    
      최근 이벤트가 표시된 CloudTrail 대시보드
  3. 이벤트에 대한 추가 정보를 보려면 정보를 확장합니다.

    
      이벤트에 대한 확장된 정보가 표시된 CloudTrail 대시보드
  4. 탐색 창에서 Event history(이벤트 내역)를 선택합니다. 가장 최근 이벤트가 먼저 표시되는 필터링된 이벤트 목록일 보입니다. 이벤트의 기본 필터는 읽기 전용이며, false로 설정됩니다. 필터 오른쪽에 있는 X를 선택하여 해당 필터를 지울 수 있습니다.

    
      [읽기 전용(Read-only)] 필터가 강조 표시된 CloudTrail [이벤트 기록(Event history)] 페이지
  5. 기본 필터가 없으면 훨씬 더 많은 이벤트가 표시됩니다. 여러 가지 방식으로 이벤트를 필터링할 수 있습니다. 예를 들어 모든 콘솔 로그인 이벤트를 보려면 이벤트 이름 필터를 선택하고 ConsoleLogin을 지정할 수 있습니다. 필터 선택은 사용자에게 달려 있습니다.

    
      필터 옵션의 부분적인 목록이 표시되고 기본 필터가 제거된 CloudTrail [이벤트 기록(Event history)] 페이지
  6. CSV 또는 JSON 형식의 파일로 다운로드하여 이벤트 기록을 저장할 수 있습니다. 이벤트 기록을 다운로드하는 데 몇 분 정도 걸릴 수 있습니다.

    
      다운로드 옵션이 표시된 CloudTrail [이벤트 기록(Event history)] 페이지

자세한 내용은 CloudTrail 이벤트 기록에서 이벤트 보기 단원을 참조하세요.

2단계: 첫 번째 추적 생성

CloudTrail 콘솔의 [이벤트 기록(Event history)]에 제공된 이벤트는 최근 활동을 검토하는 데 유용하지만, 최근 활동으로 제한되며 CloudTrail에서 기록할 수 있는 가능한 모든 이벤트가 포함되는 것은 아닙니다. 또한 콘솔의 이벤트 보기는 로그인한 AWS 리전으로 제한됩니다. 모든 AWS 리전에 대한 정보를 캡처하는 AWS 계정의 지속적인 활동 레코드를 생성하려면 추적을 생성합니다. CloudTrail 콘솔에서 추적을 생성하면 기본적으로 추적은 모든 리전의 이벤트를 로그합니다. 계정의 모든 리전에서 이벤트를 로그하는 것이 권장되는 모범 사례입니다.

첫 번째 추적의 경우 모든 AWS 리전의 모든 관리 이벤트를 로그하고 데이터 이벤트는 로그하지 않는 추적을 생성하는 것이 좋습니다. 관리 이벤트의 예에는 IAM CreateUserAttachRolePolicy 이벤트와 같은 보안 이벤트, RunInstancesCreateBucket과 같은 리소스 이벤트 등이 포함됩니다. CloudTrail 콘솔에서 추적 생성의 일부로 추적에 대한 로그 파일을 저장하는 Amazon S3 버킷을 생성합니다.

참고

이 자습서에서는 첫 번째 추적을 생성하고 있다고 가정합니다. AWS 계정에 있는 추적 수 및 추적이 구성되는 방식에 따라 다음 절차에서 비용이 발생할 수도 있고 발생하지 않을 수도 있습니다. CloudTrail은 Amazon S3 버킷에 로그 파일을 저장하므로 비용이 발생합니다. 요금에 대한 자세한 내용은 AWS CloudTrail 요금Amazon S3 요금을 참조하세요.

  1. CloudTrail 관리를 위해 구성한 IAM 사용자로 AWS Management Console에 로그인합니다. https://console.aws.amazon.com/cloudtrail/home/에서 CloudTrail 콘솔을 엽니다. 리전 선택기에서 추적을 생성할 AWS 리전을 선택합니다. 이 리전은 추적에 대한 홈 리전입니다.

    참고

    홈 리전은 추적이 모든 AWS 리전에서 이벤트를 로그하더라도 추적을 생성한 후 추적을 보고 업데이트할 수 있는 유일한 AWS 리전입니다.

  2. CloudTrail 서비스 홈 페이지의 [추적(Trails)] 페이지 또는 [대시보드(Dashboard)] 페이지의 [추적(Trails)] 단원에서 [추적 생성(Create trail)]을 선택합니다.

  3. Trail name(추적 이름)에서 추적에 이름을 지정합니다(예: My-Management-Events-Trail). 모범 사례로 추적 목적을 빠르게 식별할 수 있는 이름을 사용합니다. 이 경우에는 관리 이벤트를 로깅하는 추적을 생성합니다.

  4. AWS Organizations 조직 추적에 대한 기본 설정을 그대로 둡니다. Organizations 계정이 구성되어 있어야 이 옵션을 변경할 수 있습니다.

  5. [스토리지 위치(Storage location)]에서 [새 S3 버킷 생성(Create new S3 bucket)]을 선택하여 버킷을 생성합니다. 버킷을 생성하면 CloudTrail은 필요한 버킷 정책을 생성하고 적용합니다. 버킷에 이름을 지정합니다(예: my-bucket-for-storing-cloudtrail-logs).

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

    참고

    Amazon S3 버킷의 이름은 전역적으로 고유해야 합니다. 자세한 내용은 Amazon S3 버킷 이름 지정 요구 사항 단원을 참조하세요.

    
      [추적 생성(Create trail)] 페이지
  6. 확인란의 선택을 취소하여 [로그 파일 SSE-KMS 암호화(Log file SSE-KMS encryption)]를 비활성화합니다. 기본적으로 로그 파일은 SSE-S3 암호화를 통해 암호화됩니다. 이 설정에 대한 자세한 내용은 Amazon S3 관리형 암호화 키(SSE-S3)를 사용하는 서버 측 암호화로 데이터 보호 단원을 참조하세요.

  7. [추가 설정(Additional settings)]의 기본 설정을 그대로 둡니다.

  8. 지금은 Amazon CloudWatch Logs로 로그를 전송하지 마세요.

  9. 태그에서 하나 이상의 사용자 정의 태그(키-값 페어)를 추적에 추가합니다. 태그를 사용하면 CloudTrail 로그 파일이 포함된 Amazon S3 버킷과 같이 CloudTrail 추적 및 다른 리소스를 식별할 수 있습니다. 예를 들어 Compliance 이름과 Auditing 값을 사용하여 태그를 연결할 수 있습니다.

    참고

    CloudTrail 콘솔에서 태그를 생성할 때 추적에 태그를 추가할 수 있고 CloudTrail 콘솔에서 로그 파일을 저장할 Amazon S3 버킷을 생성할 수 있지만 CloudTrail 콘솔에서 Amazon S3 버킷에 태그를 추가할 수는 없습니다. 버킷에 태그를 추가하는 등 Amazon S3 버킷의 속성을 보고 변경하는 방법에 대한 자세한 내용은 Amazon S3 사용 설명서를 참조하세요.

    
      [추적 생성(Create trail)] 페이지에서 Amazon CloudWatch Logs 및 [태그(Tags)] 설정

    작업을 마쳤으면 [다음(Next)]을 선택합니다.

  10. [로그 이벤트 선택(Choose log events)] 페이지에서 로그할 이벤트 유형을 선택합니다. 이 추적의 경우 기본값인 [관리 이벤트(Management events)]를 그대로 둡니다. [관리 이벤트(Management events)] 영역에서, 아직 선택하지 않은 경우 [읽기(Read)] 및 [쓰기(Write)] 이벤트를 모두 로그하도록 선택합니다. 모든 이벤트를 로그하려면 AWS KMS 이벤트 제외(Exclude KMS events)Amazon RDS 데이터 API 이벤트 제외(Exclude Amazon RDS Data API events) 확인란을 비워 둡니다.

    
      [추적 생성(Create trail)] 페이지, [이벤트 유형(Event type)] 설정
  11. [데이터 이벤트(Data events)] 및 Insights 이벤트에 대한 기본 설정을 그대로 둡니다. 이 추적은 데이터 또는 CloudTrail Insights 이벤트를 로그하지 않습니다. 다음(Next)을 선택합니다.

  12. [검토 및 생성(Review and create)] 페이지에서 추적에 대해 선택한 설정을 검토합니다. 뒤로 돌아가서 변경하려면 단원에 대해 [편집(Edit)]을 선택합니다. 추적을 생성할 준비가 되면 [추적 생성(Create trail)]을 선택합니다.

  13. 이 [추적(Trails)] 페이지에서 새 추적을 테이블로 표시합니다. 추적은 기본적으로 [다중 리전 추적(Multi-region trail)]으로 설정되며 로깅이 추적에 대해 기본적으로 활성화됩니다.

    
      [추적 생성(Create trail)] 페이지, [이벤트 유형(Event type)] 설정

3단계: 로그 파일 보기

첫 번째 추적을 생성한 후 15분 이내에 CloudTrail은 추적을 위한 Amazon S3 버킷에 첫 번째 로그 파일 집합을 제공합니다. 이러한 파일을 살펴보고 포함된 정보에 대해 알아볼 수 있습니다.

참고

CloudTrail은 일반적으로 API 호출 후 평균 15분 이내에 로그를 전달합니다. 이 시간은 보장되지 않습니다. 자세한 내용은 AWS CloudTrail 서비스 수준 계약에서 검토하세요.

  1. 탐색 창에서 [Trails]를 선택합니다. [추적(Trails)] 페이지에서 방금 생성한 추적의 이름을 찾습니다(예: My-Management-Events-Trail).

    참고

    CloudTrail 관리를 위해 구성한 IAM 사용자로 아직도 로그인된 상태인지 확인합니다. 로그인되지 않았다면 CloudTrail 콘솔 또는 해당 추적에 대한 로그 파일이 포함된 Amazon S3 버킷에서 추적을 볼 수 있는 충분한 권한이 없을 수 있습니다.

  2. 추적의 행에서 S3 버킷의 값을 선택합니다(예: aws-cloudtrail-logs-08132020-mytrail).

  3. Amazon S3 콘솔이 열리고 로그 파일의 최상위 수준에 해당 버킷이 표시됩니다. 모든 AWS 리전에서 이벤트를 로깅하는 추적을 생성했기 때문에 각 리전 폴더가 표시되는 수준에서 디스플레이가 열립니다. 이 수준에서 Amazon S3 버킷 탐색의 계층 구조는 bucket-name/AWSLogs/account-id/CloudTrail입니다. 로그 파일을 검토하려는 AWS 리전에 대한 폴더를 선택합니다. 예를 들어, 미국 동부(오하이오) 리전에 대한 로그 파일을 검토하려는 경우 us-east-2를 선택합니다.

    
      AWS 리전의 로그 파일 구조가 표시된 추적용 Amazon S3 버킷
  4. 해당 리전에서 활동 로그를 검토하려는 연도, 월 및 일로 버킷 폴더 구조를 탐색합니다. 해당 요일에는 수많은 파일이 있습니다. 파일 이름은 AWS 계정 ID로 시작하고 .gz 확장명으로 끝납니다. 예를 들어 계정 ID가 123456789012인 경우 123456789012_CloudTrail_us-east-2_20190610T1255abcdeEXAMPLE.json.gz와 유사한 이름의 파일이 표시됩니다.

    이러한 파일을 보려면 파일을 다운로드하고 압축을 푼 다음 일반 텍스트 편집기 또는 JSON 파일 뷰어에서 파일을 볼 수 있습니다. 일부 브라우저도 .gz 및 JSON 파일 직접 보기를 지원합니다. JSON 뷰어를 사용하는 것이 좋습니다. 이 뷰어를 사용하면 CloudTrail 로그 파일의 정보를 쉽게 구문 분석할 수 있습니다.

    파일 내용을 검색하는 동안 보고 있는 내용이 무엇인지 궁금할 수 있습니다. CloudTrail은 이벤트가 발생한 시점에 해당 AWS 리전에서 활동을 경험한 모든 AWS 서비스에 대한 이벤트를 로그합니다. 다시 말해서, 시간만을 기반으로 다양한 AWS 서비스에 대한 이벤트가 함께 혼합됩니다. 해당 서비스의 API 호출에 대한 로그 파일 항목 예를 포함하여 특정 AWS 서비스가 CloudTrail을 통해 무엇을 로그하는지에 대한 자세히 알아보려면 CloudTrail에 대해 지원되는 서비스 목록을 참조하고 해당 서비스에 대한 CloudTrail 통합 주제를 읽어 보세요. 또한 CloudTrail 로그 이벤트 참조 단원을 검토하여 CloudTrail 로그 파일의 내용과 구조에 대해 자세히 알아볼 수 있습니다.

    미국 동부(오하이오)의 로그 파일에서 무엇이 보이지 않는지도 참고할 수 있습니다. 특히, 콘솔에 로그인한 것을 알고 있더라도 콘솔 로그인 이벤트가 보이지 않습니다. 이유는 콘솔 로그인 이벤트와 IAM 이벤트가 글로벌 서비스 이벤트이며, 특정 AWS 리전에서 로그되기 때문입니다. 이 경우 해당 이벤트는 미국 동부(버지니아 북부)에 로그되며 us-east-1 폴더에 있습니다. 해당 폴더를 열고 관심 있는 연도, 월 및 일을 엽니다. 로그 파일을 검색하여 다음과 비슷한 ConsoleLogin이벤트를 찾습니다.

    { "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::123456789012:user/Mary_Major", "accountId": "123456789012", "userName": "Mary_Major" }, "eventTime": "2019-06-10T17:14:09Z", "eventSource": "signin.amazonaws.com", "eventName": "ConsoleLogin", "awsRegion": "us-east-1", "sourceIPAddress": "203.0.113.67", "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0", "requestParameters": null, "responseElements": { "ConsoleLogin": "Success" }, "additionalEventData": { "LoginTo": "https://console.aws.amazon.com/console/home?state=hashArgs%23&isauthcode=true", "MobileVersion": "No", "MFAUsed": "No" }, "eventID": "2681fc29-EXAMPLE", "eventType": "AwsConsoleSignIn", "recipientAccountId": "123456789012" }

    이 로그 파일 항목은 로그인한 IAM 사용자(Mary_Major)의 자격 증명, 이 사용자가 로그인한 날짜와 시간, 로그인이 성공했다는 것만이 아니라 그보다 많은 정보를 알려줍니다. 로그인한 IP 주소, 사용한 컴퓨터의 운영 체제와 브라우저 소프트웨어, Multi-Factor Authentication을 사용하지 않았다는 것도 알 수 있습니다.

4단계: 다음 단계에 대한 계획

이제 추적이 있으므로 AWS 계정의 이벤트와 활동에 대한 지속적인 레코드에 액세스할 수 있습니다. 이 지속적인 레코드는 AWS 계정에 대한 회계 및 감사 필요를 충족하는 데 도움이 됩니다. 하지만 CloudTrail 및 CloudTrail 데이터로 훨씬 더 많은 작업을 수행할 수 있습니다.

  • 트레일 데이터에 대한 보안을 더 강화합니다. CloudTrail은 추적을 생성할 때 특정 수준의 보안을 자동으로 적용합니다. 하지만 데이터의 보안을 유지하기 위해 추가 조치를 취할 수 있습니다.

  • 데이터 이벤트를 로깅하기 위한 추적을 생성합니다. 하나 이상의 Amazon S3 버킷에서 객체가 추가, 검색 및 삭제될 때, DynamoDB 테이블에서 항목이 추가, 변경 또는 삭제될 때 또는 하나 이상의 AWS Lambda 함수가 호출될 때 로그하려는 경우 이러한 이벤트는 데이터 이벤트입니다. 이 자습서의 앞부분에서 생성한 관리 이벤트 추적은 이러한 유형의 이벤트를 로깅하지 않습니다. 특히 일부 또는 모든 지원되는 리소스에 대한 데이터 이벤트를 로그하기 위해 별도의 추적을 생성할 수 있습니다. 자세한 내용은 데이터 이벤트 단원을 참조하세요.

    참고

    데이터 이벤트 로깅에는 추가 요금이 부과됩니다. 자세한 내용은 AWS CloudTrail 요금을 참조하세요.

  • 트레일에 CloudTrail Insights 이벤트를 로그합니다. CloudTrail Insights는 사용자가 CloudTrail 관리 이벤트를 지속적으로 분석하여 write API 호출과 연결된 비정상적인 또는 이례적인 활동을 식별하고 이에 대응할 수 있도록 지원합니다. CloudTrail Insights는 수학적 모델을 사용하여 계정에 대한 API 및 서비스 이벤트 활동의 정상적인 수준을 결정합니다. 이는 정상적인 패턴을 벗어나는 동작을 식별하고 Insights 이벤트를 생성하고 추적을 위해 선택한 대상 S3 버킷의 /CloudTrail-Insight 폴더로 해당 이벤트를 전송합니다. CloudTrail Insights에 대한 자세한 내용은 추적에 대한 Insights 이벤트 로깅 단원을 참조하세요.

    참고

    인사이트 이벤트 로깅에는 추가 요금이 부과됩니다. 자세한 내용은 AWS CloudTrail 요금을 참조하세요.

  • 특정 이벤트가 발생할 때 알리도록 CloudWatch Logs 경보를 설정합니다. CloudWatch Logs를 사용하면 CloudTrail에서 캡처된 특정 이벤트에 대한 알림을 모니터링하고 수신할 수 있습니다. 예를 들어 보안 그룹 변경, AWS Management Console 로그인 실패 이벤트 또는 IAM 정책 변경과 같은 주요 보안 및 네트워크 관련 관리 이벤트를 모니터링할 수 있습니다. 자세한 내용은 Amazon CloudWatch Logs로 CloudTrail 로그 파일 모니터링 단원을 참조하세요.

  • 분석 도구를 사용하여 CloudTrail 로그에서 추세를 식별합니다. 이벤트 기록의 필터는 최근 활동에서 특정 이벤트 또는 이벤트 유형을 찾는 데 도움이 되지만, 장기간에 걸친 활동을 검색할 수 있는 기능을 제공하지 않습니다. 더 심층적이고 정교한 분석을 위해 Amazon Athena를 사용할 수 있습니다. 자세한 내용은 Amazon Athena 사용 설명서의 AWS CloudTrail 로그 쿼리 단원을 참조하세요.