◇ 공부 기록용으로 작성하였으니 틀린 점, 피드백 주시면 감사하겠습니다 ◇
사전지식) Trail의 사전적 의미
1.(사람이나 동물이 남긴) 발자국, 자취, 단서, 실마리 | 2.(사람이나 동물이 다니는) 포장되지 않은 길 |
Track User Activity and API Usage on AWS and in hybrid and multicloud environments
AWS CloudTrail
CloudTrail은 AWS 계정(IAM User, Role...)에서 수행되는 모든 API 요청(API calls)을 로그로 기록하는 서비스이다.
이를 통해 AWS 리소스의 사용에 관한 보안(security) 및 규정 준수(Goverance&Compliance), 위험 감사(risk auditing)를 평가할 수 있다.
예시) CloudTrail의 사용 방법
회사의 인프라 리더가 AWS의 IAM 서비스에서 "Mary"라는 이름의 새로운 IAM 계정을 발견했다.
팀장님은 누가, 언제, 어디서 "Mary"라는 계정을 만들었는지 알고 싶다. 이때 어떻게 알아낼 수 있을까???
🙋정답: "CloudTrail를 사용하기"
CloudTrail의 "Event History" 라는 섹션에 들어간 뒤에 IAM 서비스의 “CreateUser” API라는 이벤트를 필터링하면,
어떻게 Mary라는 계정이 생성되었는지 확인할 수 있다.
CloudTrail 특징
- AWS Console, CLI, SDK 및 API에서 수행한 작업을 CloudTrail의 이벤트(event)라는 것으로 기록된다.
- 각 이벤트는 거의 15분 안에 CloudTrail에 기록된다.
- 로그는 90일간 저장된다.
- CloudTrail로 얻을 수 있는 Log 종류
- Management events (관리 이벤트) ...유저의 로그인, EC2의 작성 등
- Data events (데이터 이벤트) ...S3 Object에 관한 조작, Lambda 함수의 실행 등
- Insight events (인사이트 이벤트) ... 평소와 다른 조작
- CloudTrail의 로그는 "Trail(트레일)"에 등록함으로써 S3 버킷에 저장할 수 있다.
- S3 버킷에 저장하면 90일이 지나도 로그를 보관할 수 있다.
Event History
기록된 로그에는 다음과 같은 정보를 포함한다.
각 이벤트는 날짜나 누가 API를 요청했는지 등에 따라서 필터링 가능하다.
속성에 대한 자세한 설명
- 이벤트 정보(Event Information):
- EventName: 수행된 AWS 작업의 이름.
- EventTime: 작업이 수행된 시간과 날짜.
- EventSource: 작업을 실행한 AWS 서비스의 이름.
- 기타 등등
- AWS 계정 (AWS Account):
- Username: 작업을 수행한 IAM 사용자 또는 Role의 이름 또는
- 클라이언트 정보 (Client):
- UserAgent: API 호출한 클라이언트 애플리케이션의 정보.
- SourceIPAddress: API 호출한 클라이언트의 IP 주소.
- 리소스 정보(Resource Information):
- ResourceType: 작업의 대상이 되는 AWS 리소스의 유형.
- ResourceName: 작업이 수행된 AWS 리소스의 이름 또는 식별자.
- 요청 및 응답 정보(Request and Response Information):
- RequestMethod: API 호출에 사용된 HTTP 요청 메서드(GET, POST 등).
- 기타 등등
CloudTrail로 얻을 수 있는 Log 종류
- Management events (관리 이벤트)
- Data events (데이터 이벤트)
- Insight events (인사이트 이벤트)
🧾 1. Management events: 관리에 관한 이벤트
- EC2 인스턴스를 작성 및 조작
- S3 버킷 작성
- IAM 리소스의 작성과 관리
- Routing Table 규칙 작성
🧾 2. Data events: 데이터에 관한 이벤트
- S3 object-level의 API 활동
- S3 object를 지우거나 가져오는 명령어 (DeleteOject, GetObject, PutObject)
- Lambda 함수의 실행 (InvokeFunction API)
- Amazo DynamoDB table에 관한 API 실행
🧾 3. Insight events
1. 관리 이벤트(Management events)의 분석
2. 비정상적인 활동을 감지하고 검출
👨🏫 CloudTrail Insights
CloudTrail에서 기록한 로그를 AWS측에서 기계학습을 시켜서, 평소와 다른 Unusual API Activities(비정상인 API 활동)를 탐지하여 검출해주는 기능이다. 예를 들어, CloudTrail Insights는 나의 계정에서 평소와 달리 많은 EC2 인스턴스가 기동 된 것을 탐지해 준다.
👨🏫 Trails (추적): S3 버킷에 저장
CloudTrail의 로그는 "Trails"에 등록함으로써 S3 버킷에 저장할 수 있다.
S3 버킷에 로그를 저장하면 90일을 초과하여 CloudTrail 로그를 보관할 수 있다.
아래는 Trails 등록 화면이다.
- S3 버킷을 선택한다.
- Management events, Insights event 및 Data event에 대해서는 기록할지 여부를 선택한다.
- S3에 저장되는 로그의 내용은 JSON 형식으로 출력되며, gz 형식으로 압축된다.
- 저장할 때는 Amazon KMS(Key Management Service)를 이용해 암호화하는 것도 가능하다.
👨🏫 CloudWatch Logs 등록
CloudTrail에서 CloudWatch Logs로 로그 송신을 활성화하면 CloudTrail 이벤트 로그를 CloudWatch Logs에 보낼 수 있다. 이렇게 하면 AWS 리소스에서 발생한 API 호출을 실시간으로 모니터링하고, CloudWatch에서 로그 분석이나 알림 설정을 통해 더 효율적으로 관리할 수 있다.
🤔 SAA-C03 문제
팀에서는 여러 개의 AWS 계정을 운영하고 있으며, 감사자는 팀이 AWS 서비스를 적절하게 운영하고 있는지를 감사해야 합니다. 감사자가 팀의 CloudTrail 로그를 적절하게 감사하기 위한 가장 효율적인 수단은 무엇일까요?
- 팀원들의 AWS 계정에서 추적(Trail) 정보를 생성하고, 로그의 저장 위치로 감사자 계정의 S3 버킷을 지정합니다.
- 감사자용 AWS 계정에 팀원들의 CloudTrail 로그를 참조할 수 있는 IAM 권한을 부여합니다.
- AWS Lambda 함수를 사용하여 팀원들의 CloudTrail 로그를 감사자 계정으로 복사합니다.
- 팀원 중 한 명의 대표 계정에 CloudTrail 로그를 집계하고, 90일마다 로그를 감사자에게 제출합니다.
정답
정답. 1번
팀원들의 AWS 계정에서 추적(Trail) 정보를 생성하고, 로그의 저장 위치로 감사자 계정의 S3 버킷을 지정합니다.
AWS CloudTrail에서는 기업이나 조직이 여러 개의 AWS 계정을 관리하는 경우, 각각의 CloudTrail 로그를 하나의 S3 버킷으로 관리할 수 있다.
예를 들어, 계정 A, B, C의 작업 로그를 감사용 계정 D에 속하는 버킷에 집계함으로써 감사를 용이하게 수행하고, 각 계정의 로그 변조를 방지할 수 있다.
여러 계정의 CloudTrail 로그를 집계할 때는, 추적(Trail) 정보를 생성할 때 "저장 위치"를 기존의 S3 버킷으로 지정한다. 또한, S3 버킷 이름은 모든 사용자에게 고유하므로, 계정에 관계없이 버킷을 특정할 수 있다. 지정하는 S3 버킷은 다른 계정에서 접근할 수 있도록 미리 bucket policy를 설정해 두어야 한다.
기본적으로 CloudTrail의 로그는 S3에 저장하는 것을 잘 외우자. (90일 지나면 사라지기 때문에)
오답
2번. 감사자용 AWS 계정에 팀원들의 CloudTrail 로그를 참조할 수 있는 IAM 권한을 부여하는 것
감사자가 여러 계정의 로그를 통합적으로 참조하는 것은 효율적이지 않기 때문에 오답
3번. AWS Lambda 함수를 사용하여 팀원들의 CloudTrail 로그를 감사자 계정으로 복사하는 것
외부 AWS 서비스를 이용하여 로그를 복사하는 것은 효율적인 방법이 아니기 때문에 오답
4번. 팀원 중 한 명의 대표 계정에 CloudTrail 로그를 집계하고, 90일마다 로그를 감사자에게 제출하는 것
팀원의 대표에 의해 로그가 변조될 가능성이 있으며, 집계하고 제출하는 비효율적인 방법을 사용하고 있으므로 오답이다. 로그를 Trail에 등록하고 저장 위치로 S3를 지정함으로써 90일을 초과하여 저장할 수 있다.
참고 자료:
https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-events.html