Amazon CloudFront 로그 수집
이 문서에서는 Google Security Operations 피드를 설정하여 Amazon CloudFront 로그를 수집하는 방법을 설명합니다.
자세한 내용은 Google Security Operations에 데이터 수집 개요를 참조하세요.
수집 라벨은 원시 로그 데이터를 구조화된 UDM 형식으로 정규화하는 파서를 식별합니다. 이 문서의 정보는 AWS_CLOUDFRONT
수집 라벨이 있는 파서에 적용됩니다.
시작하기 전에
Amazon S3 버킷이 생성되었는지 확인합니다. 자세한 내용은 첫 번째 S3 버킷 만들기를 참고하세요.
Amazon CloudFront 구성
- AWS 관리 콘솔에 로그인합니다.
- Amazon S3 콘솔에 액세스하여 Amazon S3 버킷을 만듭니다.
- 로깅을 사용 설정하려면 사용을 선택합니다.
- 로그 버킷 필드에 Amazon S3 버킷 이름을 지정합니다.
- 로그 접두사 필드에 접두사(선택사항)를 지정합니다.
- 로그 파일이 Amazon S3 버킷에 저장된 후 SQS 큐를 만들고 Amazon S3 버킷에 연결합니다.
연결 엔드포인트 식별
S3, SQS, KMS에 필요한 IAM 사용자 및 KMS 키 정책을 확인합니다.
서비스 및 리전을 기반으로 다음 AWS 문서를 참고하여 연결 엔드포인트를 식별합니다.
- 로깅 소스에 관한 자세한 내용은 AWS Identity and Access Management 엔드포인트 및 할당량을 참고하세요.
- S3 로깅 소스에 대한 자세한 내용은 Amazon Simple Storage Service 엔드포인트 및 할당량을 참고하세요.
- SQS 로깅 소스에 관한 자세한 내용은 Amazon Simple Queue Service 엔드포인트 및 할당량을 참고하세요.
Amazon CloudFront 로그를 수집하도록 Google Security Operations에서 피드 구성
- SIEM 설정 > 피드를 선택합니다.
- 새로 추가를 클릭합니다.
- 피드 이름에 고유한 이름을 입력합니다.
- 소스 유형으로 Amazon S3 또는 Amazon SQS를 선택합니다.
- 로그 유형으로 AWS CloudFront를 선택합니다.
- 다음을 클릭합니다.
- Google Security Operations는 액세스 키 ID 및 비밀 메서드를 사용한 로그 수집을 지원합니다. 액세스 키 ID와 보안 비밀을 만들려면 AWS로 도구 인증 구성을 참고하세요.
- 사용자가 만든 Amazon CloudFront 구성에 따라 다음 필드의 값을 지정합니다.
- Amazon S3를 사용하는 경우 다음 필드의 값을 지정합니다.
- 리전
- S3 URI
- URI
- 소스 삭제 옵션
- Amazon SQS를 사용하는 경우 다음 필드의 값을 지정합니다.
- 리전
- 대기열 이름
- 계정 번호
- 현재 재생목록 액세스 키 ID
- 현재 재생목록 보안 비밀 액세스 키
- 소스 삭제 옵션
- Amazon S3를 사용하는 경우 다음 필드의 값을 지정합니다.
- 다음을 클릭한 후 제출을 클릭합니다.
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-for 및 http_verb 가 있는 경우 'NETWORK_HTTP'로 설정합니다. 그 외의 경우에는 'GENERIC_EVENT'로 설정합니다. 'AWS_CLOUDFRONT'로 하드코딩되었습니다. 'AWS CloudFront'로 하드코딩됩니다. 'AMAZON'으로 하드코딩됩니다. Google Security Operations에 로그 항목이 수집된 시간입니다. |