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에 필요한 Identity and Access Management 사용자 및 KMS 키 정책을 확인합니다.

서비스 및 지역에 따라 다음 AWS 문서를 참고하여 연결 엔드포인트를 식별합니다.

피드 설정

Google SecOps 플랫폼에서 피드를 설정하는 방법은 두 가지입니다.

  • SIEM 설정 > 피드 > 새로 추가
  • 콘텐츠 허브 > 콘텐츠 팩 > 시작하기

AWS CloudFront 피드를 설정하는 방법

  1. Amazon Cloud Platform 팩을 클릭합니다.
  2. AWS CloudFront 로그 유형을 찾습니다.
  3. 다음 필드에 값을 지정합니다.

    • 소스 유형: Amazon SQS V2
    • Queue Name: 읽어올 SQS 큐 이름
    • S3 URI: 버킷 URI입니다.
      • s3://your-log-bucket-name/
        • your-log-bucket-name을 실제 S3 버킷 이름으로 바꿉니다.
    • 소스 삭제 옵션: 수집 환경설정에 따라 삭제 옵션을 선택합니다.

    • 최대 파일 기간: 지난 일수 동안 수정된 파일을 포함합니다. 기본값은 180일입니다.

    • SQS 대기열 액세스 키 ID: 20자리 영숫자 문자열인 계정 액세스 키입니다.

    • SQS 대기열 보안 비밀 액세스 키: 40자로 된 영숫자 문자열인 계정 액세스 키입니다.

    고급 옵션

    • 피드 이름: 피드를 식별하는 미리 채워진 값입니다.
    • 애셋 네임스페이스: 피드와 연결된 네임스페이스입니다.
    • 수집 라벨: 이 피드의 모든 이벤트에 적용되는 라벨입니다.
  4. 피드 만들기를 클릭합니다.

이 제품군 내에서 다양한 로그 유형에 대해 여러 피드를 구성하는 방법에 관한 자세한 내용은 제품별 피드 구성을 참고하세요.

필드 매핑 참조

이 파서는 SYSLOG 또는 JSON 형식의 AWS CloudFront 로그에서 필드를 추출하여 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가 여러 개 있으면 (쉼표로 구분) 분할되어 해당 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에 수집된 시간입니다.

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.