콘텐츠로 이동

CloudTrail 네트워크 활동 이벤트 정리

네트워크 활동 이벤트란

네트워크 활동 이벤트(Network Activity Events)란 VPC 엔드포인트를 통과한 AWS API 호출을 엔드포인트 소유자 계정에 기록하는 CloudTrail 이벤트 유형

  • 기록 주체: 호출한 계정이 아니라 VPC 엔드포인트를 소유한 계정
  • 포착 범위: 사설 VPC에서 엔드포인트를 거쳐 AWS 서비스로 나간 호출
  • 목적: 조직 밖 자격 증명이 내 엔드포인트를 경유하려는 시도 탐지
  • 기본값: 미기록. eventSource별로 명시 설정해야 함
  • 과금: 기록한 만큼 별도 청구, 관리 이벤트에 있는 첫 사본 무료 없음
graph LR
    In["조직 내부 자격 증명"] --> VPCE["VPC Endpoint<br/>(내 계정 소유)"]
    Out["조직 밖 자격 증명"] --> VPCE
    VPCE --> SVC["AWS 서비스"]
    VPCE -. 기록 .-> CT["CloudTrail<br/>(엔드포인트 소유자 계정)"]
  • 호출자가 다른 계정 소속이어도 내 엔드포인트를 지나갔으면 내 트레일에 남음
  • 데이터 경계(Data Perimeter) 설계에서 조직 밖 자격 증명의 접근 시도를 확인할 수 있는 경로는 이것뿐

엔드포인트 정책과의 역할 구분

VPC 엔드포인트 정책과 네트워크 활동 이벤트는 대체재가 아니라 차단과 기록으로 나뉨

구분 VPC 엔드포인트 정책 네트워크 활동 이벤트
역할 조건에 안 맞는 호출을 거부 엔드포인트를 지난 호출을 기록
개입 시점 요청을 처리하기 전 차단 허용·거부 결과와 함께 기록
남는 것 거부 결과만, 시도 내역은 미보존 호출자·이벤트명·엔드포인트 ID
조직 밖 자격 증명 aws:PrincipalOrgID 조건으로 차단 가능 누가 몇 번 시도했는지 식별 가능
비용 없음 기록 건수 기준 과금
  • 정책만 걸면 막히기는 하나 누가 두드렸는지 남지 않음 → 침해 조사 시 근거 부재
  • 두 가지를 같이 써서 정책으로 막고 이벤트로 시도를 남기는 구성이 일반적

이벤트 유형 비교

CloudTrail 이벤트는 세 유형으로 나뉘고, 네트워크 활동 이벤트만 엔드포인트 경유 트래픽을 다룸

비교 항목 관리 이벤트 데이터 이벤트 네트워크 활동 이벤트
eventCategory Management Data NetworkActivity
기록 대상 리소스 제어 평면 작업 리소스 내부 데이터 작업 VPC 엔드포인트 경유 호출
기본 기록 기록됨 미기록 미기록
트레일 전달 요금 첫 사본 무료, 추가 사본 100,000건당 $2.00 100,000건당 $0.10 100,000건당 $0.10
  • 요금은 트레일이 S3로 전달하는 이벤트 기준, 이벤트 데이터 스토어(CloudTrail Lake)는 수집 용량(GB) 기준의 별도 체계
  • 네트워크 활동 이벤트를 이벤트 데이터 스토어에 담으려면 CloudTrail events 타입이어야 함

고급 이벤트 선택기 필드

네트워크 활동 이벤트는 고급 이벤트 선택기(Advanced Event Selector)로만 설정 가능

필드 필수 사용 가능 연산자 설명
eventCategory 필수 Equals 값은 NetworkActivity 고정
eventSource 필수 Equals s3.amazonaws.com, kms.amazonaws.com 등. 현재 70여 개
eventName 선택 전체 예: CreateKey, ListKeys
errorCode 선택 Equals 유효값은 VpceAccessDenied 하나뿐
vpcEndpointId 선택 전체 호출이 통과한 엔드포인트 식별
userIdentity.arn 선택 전체 호출한 IAM 자격 증명. 트레일 전용
  • eventSourceEquals만 받으므로 여러 서비스를 담으려면 선택기를 서비스별로 따로 만들어야 함
  • S3는 지원하되 Multi-Region Access Points 경유 호출은 미지원

userIdentity.arn 필터

2026년 7월 추가된 필드로, 호출한 IAM 자격 증명에 따라 기록 여부가 갈림

  • 활용: 신뢰하는 IAM 역할 집합에 없는 자격 증명의 VpceAccessDenied만 남기는 구성
  • 효과: 승인된 주체의 성공 호출까지 전부 기록하는 비용 없이 유출 시도만 포착
  • 조합: eventName·vpcEndpointId와 함께 걸어 기록 범위를 좁힐 수 있음

이벤트 유형별 지원 범위

같은 userIdentity.arn인데 이벤트 유형마다 쓸 수 있는 곳이 다름

이벤트 유형 트레일 이벤트 데이터 스토어
관리 이벤트
데이터 이벤트
네트워크 활동 이벤트
  • 관리 이벤트의 트레일 선택기가 받는 필드는 eventCategory·eventSource·readOnly 세 개뿐 → eventName·eventType·sessionCredentialFromConsole도 이벤트 데이터 스토어에서만 사용 가능
  • 네트워크 활동 이벤트는 방향이 반대라 이벤트 데이터 스토어에서 자격 증명 필터를 못 씀
  • CloudTrail Lake로 감사를 통합하려던 설계라면 이 지점에서 트레일을 따로 남겨야 함

설정 예시

신뢰 역할을 뺀 나머지 자격 증명의 S3 접근 거부만 기록하는 선택기

aws cloudtrail put-event-selectors \
  --trail-name dotoryeee-audit-trail \
  --region ap-northeast-2 \
  --advanced-event-selectors '[
    {
      "Name": "Log untrusted VpceAccessDenied for S3",
      "FieldSelectors": [
        { "Field": "eventCategory", "Equals": ["NetworkActivity"] },
        { "Field": "eventSource", "Equals": ["s3.amazonaws.com"] },
        { "Field": "errorCode", "Equals": ["VpceAccessDenied"] },
        { "Field": "userIdentity.arn", "NotStartsWith": ["arn:aws:sts::111122223333:assumed-role/dotoryeee-app-role"] }
      ]
    }
  ]'
  • 설정 확인은 aws cloudtrail get-event-selectors --trail-name dotoryeee-audit-trail
  • 이벤트 데이터 스토어는 create-event-data-store 또는 update-event-data-store를 쓰되 userIdentity.arn은 제외해야 함

조건 평가 규칙

한 필드에 조건을 여러 개 걸면 연산자 성격에 따라 결합 방식이 갈림

연산자 그룹 연산자 결합
SELECT Equals, StartsWith, EndsWith 서로 OR. 하나만 맞아도 통과
DESELECT NotEquals, NotStartsWith, NotEndsWith 서로 AND. 하나만 걸려도 제외
  • 두 그룹은 AND로 묶임 → DESELECT에 걸리면 SELECT를 만족해도 전달되지 않음
  • 와일드카드 *는 미지원 → 여러 값을 한 조건으로 잡으려면 접두·접미 연산자를 씀
  • 한 트레일 또는 이벤트 데이터 스토어의 모든 조건에 쓴 값의 합계는 500개까지

기록된 이벤트 확인

기록만 켜두면 쌓이기만 하므로 소비 경로를 같이 설계해야 함

  • 트레일 대상은 S3 버킷 → Athena로 VpceAccessDenied 발생 건수를 집계
  • 이벤트 데이터 스토어에 담았다면 CloudTrail Lake의 SQL로 조회
  • 조회 시 유용한 필드는 userIdentity.arn, vpcEndpointId, eventName, sourceIPAddress
  • 네트워크 활동 이벤트는 CloudWatch Logs 전달 대상이 아님 → 지표 필터·알람으로 바로 잇는 경로는 없음

운영 주의

  • 트레일에 고급 이벤트 선택기를 적용하면 기존 기본 이벤트 선택기가 덮어써짐 → 데이터 이벤트 설정을 먼저 옮겨 적어야 함
  • 트레일은 기본 선택기와 고급 선택기를 같이 쓸 수 없음
  • 서비스마다 선택기를 따로 만들어야 하니 대상이 늘면 선택기 목록 관리가 필요
  • 기록 범위를 좁히지 않고 켜면 정상 트래픽까지 전부 과금 대상
  • errorCode 유효값과 eventSource 목록은 계속 늘어나는 값이라 설정 전 현행 문서 확인 권장

결론

  • 네트워크 활동 이벤트는 VPC 엔드포인트를 지난 호출을 소유자 계정에 남기는 유형으로, 조직 밖 자격 증명의 접근 시도를 보는 경로
  • 엔드포인트 정책이 차단을 맡고 이 이벤트가 시도 기록을 맡는 구성이 실용적
  • userIdentity.arn 필터로 신뢰 역할을 제외하면 거부 이벤트만 남겨 비용과 노이즈를 함께 줄일 수 있음
  • 같은 필드인데 관리 이벤트는 이벤트 데이터 스토어에서만, 네트워크 활동 이벤트는 트레일에서만 동작하므로 감사 저장소를 고르기 전에 확인할 것