Amazon CloudFront 로그 수집

다음에서 지원:

이 문서에서는 Google Security Operations 피드를 설정하여 Amazon CloudFront 로그를 수집하는 방법을 설명합니다.

자세한 내용은 Google Security Operations에 데이터 수집 개요를 참조하세요.

수집 라벨은 원시 로그 데이터를 구조화된 UDM 형식으로 정규화하는 파서를 식별합니다. 이 문서의 정보는 AWS_CLOUDFRONT 수집 라벨이 있는 파서에 적용됩니다.

시작하기 전에

Amazon S3 버킷이 생성되었는지 확인합니다. 자세한 내용은 첫 번째 S3 버킷 만들기를 참고하세요.

Amazon CloudFront 구성

  1. AWS 관리 콘솔에 로그인합니다.
  2. Amazon S3 콘솔에 액세스하여 Amazon S3 버킷을 만듭니다.
  3. 로깅을 사용 설정하려면 사용을 선택합니다.
  4. 로그 버킷 필드에 Amazon S3 버킷 이름을 지정합니다.
  5. 로그 접두사 필드에 접두사(선택사항)를 지정합니다.
  6. 로그 파일이 Amazon S3 버킷에 저장된 후 SQS 큐를 만들고 Amazon S3 버킷에 연결합니다.

연결 엔드포인트 식별

S3, SQS, KMS에 필요한 IAM 사용자 및 KMS 키 정책을 확인합니다.

서비스 및 리전을 기반으로 다음 AWS 문서를 참고하여 연결 엔드포인트를 식별합니다.

Amazon CloudFront 로그를 수집하도록 Google Security Operations에서 피드 구성

  1. SIEM 설정 > 피드를 선택합니다.
  2. 새로 추가를 클릭합니다.
  3. 피드 이름에 고유한 이름을 입력합니다.
  4. 소스 유형으로 Amazon S3 또는 Amazon SQS를 선택합니다.
  5. 로그 유형으로 AWS CloudFront를 선택합니다.
  6. 다음을 클릭합니다.
  7. Google Security Operations는 액세스 키 ID 및 비밀 메서드를 사용한 로그 수집을 지원합니다. 액세스 키 ID와 보안 비밀을 만들려면 AWS로 도구 인증 구성을 참고하세요.
  8. 사용자가 만든 Amazon CloudFront 구성에 따라 다음 필드의 값을 지정합니다.
    • Amazon S3를 사용하는 경우 다음 필드의 값을 지정합니다.
      • 리전
      • S3 URI
      • URI
      • 소스 삭제 옵션
    • Amazon SQS를 사용하는 경우 다음 필드의 값을 지정합니다.
      • 리전
      • 대기열 이름
      • 계정 번호
      • 현재 재생목록 액세스 키 ID
      • 현재 재생목록 보안 비밀 액세스 키
      • 소스 삭제 옵션
  9. 다음을 클릭한 후 제출을 클릭합니다.

Amazon CloudFront 로그를 Amazon S3 버킷으로 전송하려면 표준 로그 (액세스 로그) 구성 및 사용을 참고하세요.

Google Security Operations 피드에 대한 자세한 내용은 Google Security Operations 피드 문서를 참조하세요. 각 피드 유형의 요구사항은 유형별 피드 구성을 참조하세요. 피드를 만들 때 문제가 발생하면 Google Security Operations 지원팀에 문의하세요.

필드 매핑 참조

이 파서는 AWS CloudFront 로그에서 SYSLOG 또는 JSON 형식의 필드를 추출하여 UDM으로 정규화합니다. grok 패턴을 사용하여 메시지 문자열을 파싱하고, 다양한 데이터 변환 (예: 유형 변환, 이름 변경)을 처리하며, 사용자 에이전트 파싱 및 애플리케이션 프로토콜 식별과 같은 추가 컨텍스트로 데이터를 보강합니다.

UDM 매핑 표

로그 필드 UDM 매핑 논리
c-ip principal.ip 직접 매핑됩니다. principal.asset.ip에 매핑됩니다.
c-port principal.port 직접 매핑됩니다.
cs(Cookie) additional.fields[].key: 'cookie'
additional.fields[].value.string_value: 직접 매핑됩니다.
cs(Cookie)가 있고 agent에 '://'이 포함되지 않은 경우 조건부로 매핑됩니다.
cs(Host) principal.hostname 직접 매핑됩니다. principal.asset.hostname에 매핑됩니다. 다른 URL 필드를 사용할 수 없는 경우 target.url를 구성하는 데 사용됩니다.
cs(Referer) network.http.referral_url 직접 매핑됩니다.
cs(User-Agent) network.http.user_agent 직접 매핑됩니다. 또한 network.http.parsed_user_agent에 매핑되고 '://'이 포함되지 않은 경우 구성요소로 파싱됩니다.
cs-bytes network.sent_bytes 직접 매핑됩니다. 부호 없는 정수로 변환됩니다.
cs-method network.http.method 직접 매핑됩니다.
cs-protocol network.application_protocol 대문자로 변환한 후 매핑됩니다. 값이 표준 애플리케이션 프로토콜로 인식되지 않고 cs-protocol-version에 'HTTP'가 포함된 경우 network.application_protocol은 'HTTP'로 설정됩니다.
dport target.port 직접 매핑됩니다. 정수로 변환됩니다.
edge_location principal.location.name 직접 매핑됩니다.
fle-encrypted-fields additional.fields[].key: 'fle-encrypted-fields'
additional.fields[].value.string_value: 직접 매핑되었습니다.
있는 경우 조건부로 매핑됩니다.
fle-status additional.fields[].key: 'fle-status'
additional.fields[].value.string_value: 직접 매핑되었습니다.
있는 경우 조건부로 매핑됩니다.
host principal.hostname, principal.asset.hostname 직접 매핑됩니다.
id principal.asset_id 'id: ' 접두사로 직접 매핑됩니다.
ip target.ip, target.asset.ip 직접 매핑됩니다.
log_id metadata.product_log_id 직접 매핑됩니다.
resource additional.fields[].key: 'resource'
additional.fields[].value.string_value: 직접 매핑되었습니다.
있는 경우 조건부로 매핑됩니다.
result_type additional.fields[].key: 'result_type'
additional.fields[].value.string_value: 직접 매핑되었습니다.
있는 경우 조건부로 매핑됩니다.
sc-bytes network.received_bytes 직접 매핑됩니다. 부호 없는 정수로 변환됩니다.
sc-content-len additional.fields[].key: 'sc-content-len'
additional.fields[].value.string_value: 직접 매핑되었습니다.
있는 경우 조건부로 매핑됩니다.
sc-content-type additional.fields[].key: 'sc-content-type'
additional.fields[].value.string_value: 직접 매핑되었습니다.
있는 경우 조건부로 매핑됩니다.
sc-status network.http.response_code 직접 매핑됩니다. 정수로 변환됩니다.
ssl-cipher network.tls.cipher 직접 매핑됩니다.
ssl-protocol network.tls.version 직접 매핑됩니다.
timestamp metadata.event_timestamp 가능한 경우 파싱되고 매핑됩니다. 다양한 형식이 지원됩니다.
ts metadata.event_timestamp 가능한 경우 파싱되고 매핑됩니다. ISO8601 형식이 예상됩니다.
url target.url 직접 매핑됩니다.
url_back_to_product metadata.url_back_to_product 직접 매핑됩니다.
x-edge-detailed-result-type additional.fields[].key: 'x-edge-detailed-result-type'
additional.fields[].value.string_value: 직접 매핑되었습니다.
있는 경우 조건부로 매핑됩니다.
x-edge-location additional.fields[].key: 'x-edge-location'
additional.fields[].value.string_value: 직접 매핑되었습니다.
있는 경우 조건부로 매핑됩니다.
x-edge-request-id additional.fields[].key: 'x-edge-request-id'
additional.fields[].value.string_value: 직접 매핑되었습니다.
있는 경우 조건부로 매핑됩니다.
x-edge-response-result-type additional.fields[].key: 'x-edge-response-result-type'
additional.fields[].value.string_value: 직접 매핑되었습니다.
있는 경우 조건부로 매핑됩니다.
x-edge-result-type additional.fields[].key: 'x-edge-result-type'
additional.fields[].value.string_value: 직접 매핑되었습니다.
있는 경우 조건부로 매핑됩니다.
x-forwarded-for target.ip, target.asset.ip 직접 매핑됩니다. IP가 여러 개 있는 경우 (쉼표로 구분) IP가 분할되어 각 UDM 필드에 병합됩니다.
x-host-header target.hostname, target.asset.hostname 직접 매핑됩니다. ip 또는 x-forwarded-forhttp_verb가 있는 경우 'NETWORK_HTTP'로 설정합니다. 그 외의 경우에는 'GENERIC_EVENT'로 설정합니다. 'AWS_CLOUDFRONT'로 하드코딩되었습니다. 'AWS CloudFront'로 하드코딩됩니다. 'AMAZON'으로 하드코딩됩니다. Google Security Operations에 로그 항목이 수집된 시간입니다.