Akamai DataStream 2 로그 수집
파서 버전: 2.0
이 문서에서는 Amazon S3를 사용하여 Akamai DataStream 2 로그를 Google Security Operations로 수집하는 방법을 설명합니다.
Akamai DataStream 2는 Akamai Intelligent Edge Platform의 성능 및 보안 로그를 캡처하여 선택한 대상으로 거의 실시간으로 전송합니다. DataStream 2를 사용하여 Akamai 속성 전반에서 CDN 및 보안 이벤트를 모니터링, 디버그, 분석할 수 있습니다.
시작하기 전에
다음 기본 요건이 충족되었는지 확인합니다.
- Google SecOps 인스턴스입니다.
- DataStream 2 구성 권한이 있는 Akamai Control Center에 대한 권한 있는 액세스
- AWS (S3, IAM)에 대한 액세스 권한
Google SecOps용 AWS S3 버킷 및 IAM 구성
- 이 사용자 가이드(버킷 만들기)에 따라 Amazon S3 버킷을 만듭니다.
- 나중에 참조할 수 있도록 버킷 이름과 리전을 저장합니다(예:
akamai-datastream2-logs). - 이 사용자 가이드(IAM 사용자 만들기)에 따라 사용자를 만듭니다.
- 생성된 사용자를 선택합니다.
- 보안용 사용자 인증 정보 탭을 선택합니다.
- 액세스 키 섹션에서 액세스 키 만들기를 클릭합니다.
- 사용 사례로 서드 파티 서비스를 선택합니다.
- 다음을 클릭합니다.
- 선택사항: 설명 태그를 추가합니다.
- 액세스 키 만들기를 클릭합니다.
- .csv 파일 다운로드를 클릭하여 나중에 참고할 수 있도록 액세스 키와 보안 비밀 액세스 키를 저장합니다.
- 완료를 클릭합니다.
- 권한 탭을 선택합니다.
- 권한 정책 섹션에서 권한 추가를 클릭합니다.
- 권한 추가를 선택합니다.
- 정책 직접 연결을 선택합니다.
- AmazonS3FullAccess 정책을 검색합니다.
- 정책을 선택합니다.
- 다음을 클릭합니다.
- 권한 추가를 클릭합니다.
Akamai S3 업로드의 IAM 정책 구성
- AWS 콘솔에서 IAM > 정책 > 정책 생성 > JSON 탭으로 이동합니다.
- 아래 정책을 복사하여 붙여넣습니다.
정책 JSON (다른 버킷 이름을 사용한 경우
akamai-datastream2-logs대체):{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAkamaiDataStreamWrite", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::akamai-datastream2-logs", "arn:aws:s3:::akamai-datastream2-logs/*" ] } ] }다음을 클릭합니다.
정책 이름 (예:
AkamaiDataStreamS3Policy)을 입력합니다.정책 만들기를 클릭합니다.
IAM > 사용자 > 사용자 만들기로 이동합니다.
사용자 이름 (예:
akamai-datastream-writer)을 입력합니다.다음을 클릭합니다.
정책 직접 연결을 선택합니다.
위에서 만든 정책을 검색하여 선택합니다.
다음 > 사용자 만들기를 클릭합니다.
생성된 사용자를 선택하고 보안용 사용자 인증 정보> 액세스 키 만들기로 이동합니다.
사용 사례로 서드 파티 서비스를 선택하고 다음 > 액세스 키 만들기를 클릭합니다.
.csv 파일 다운로드를 클릭하여 Akamai DataStream 2 구성에 사용할 액세스 키 ID와 보안 비밀 액세스 키를 저장합니다.
Amazon S3에 로그를 전송하도록 Akamai DataStream 2 구성
- Akamai Control Center에 로그인합니다.
- DataStream 2로 이동합니다.
- 스트림 만들기를 클릭합니다.
- 속성에 적합한 로그 유형을 선택합니다 (예: 전송, Edge DNS, GTM).
- 데이터 세트에서 필요한 필드를 선택합니다. 특별한 요구사항이 없는 한 기본값을 유지하세요.
- 대상으로 이동하여 Amazon S3를 선택합니다.
- S3 대상 세부정보를 입력합니다.
- 이름: 대상의 설명이 포함된 라벨을 입력합니다 (예:
SIEM S3 Destination). - 버킷: S3 버킷 이름 (예:
akamai-datastream2-logs)을 입력합니다. - 폴더 경로: 폴더 경로를 입력합니다 (예:
datastream2/logs/). 타임스탬프와 같은 동적 변수를 지원합니다. - 리전: S3 버킷과 일치하는 AWS 리전을 선택합니다.
- 액세스 키 ID: Akamai용으로 만든 IAM 사용자의 액세스 키 ID를 입력합니다.
- 보안 비밀 액세스 키: Akamai용으로 생성된 IAM 사용자의 보안 비밀 액세스 키를 입력합니다.
- 이름: 대상의 설명이 포함된 라벨을 입력합니다 (예:
유효성 검사 및 저장을 클릭합니다.
선택사항: 게재 옵션에서 다음을 구성합니다.
- 푸시 빈도: 30초 또는 60초를 선택합니다.
- 파일 이름 프리픽스 및 서픽스: 필요에 따라 맞춤설정합니다. 접두사에
.를 사용하지 마세요.
다음 > 활성화를 클릭합니다.
(선택사항) Google SecOps용 읽기 전용 IAM 사용자 만들기
Google SecOps에서 로그를 수집하기 위해 별도의 읽기 전용 사용자를 선호하는 경우 다음 단계를 따르세요.
- AWS 콘솔 > IAM > 정책 > 정책 생성 > JSON 탭으로 이동합니다.
아래 정책을 복사하여 붙여넣습니다 (다른 버킷 이름을 사용한 경우
akamai-datastream2-logs을 바꿈).{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::akamai-datastream2-logs/*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": "arn:aws:s3:::akamai-datastream2-logs" } ] }다음을 클릭합니다.
정책 이름 (예:
secops-reader-policy)을 입력합니다.정책 만들기를 클릭합니다.
IAM > 사용자 > 사용자 만들기로 이동합니다.
사용자 이름 (예:
secops-reader)을 입력합니다.다음을 클릭합니다.
정책 직접 연결을 선택하고 위에서 만든 정책을 선택합니다.
다음 > 사용자 만들기를 클릭합니다.
생성된 사용자를 선택하고 보안용 사용자 인증 정보> 액세스 키 만들기로 이동합니다.
사용 사례로 서드 파티 서비스를 선택하고 다음 > 액세스 키 만들기를 클릭합니다.
.csv 파일 다운로드를 클릭하여 Google SecOps 피드 구성의 액세스 키 ID와 보안 비밀 액세스 키를 저장합니다.
Akamai DataStream 2 로그를 수집하도록 Google SecOps에서 피드 구성
- SIEM 설정> 피드로 이동합니다.
- 새 피드 추가를 클릭합니다.
- 다음 페이지에서 단일 피드 구성을 클릭합니다.
- 피드 이름에 고유한 이름을 입력합니다 (예:
Akamai DataStream 2 Logs). - 소스 유형으로 Amazon S3 V2를 선택합니다.
- 로그 유형으로 Akamai DataStream 2를 선택합니다.
- 다음을 클릭한 후 제출을 클릭합니다.
다음 필드의 값을 지정합니다.
- S3 URI:
s3://akamai-datastream2-logs/datastream2/logs/ - 소스 삭제 옵션: 환경설정에 따라 삭제 옵션을 선택합니다.
- 최대 파일 기간: 지난 일수 동안 수정된 파일을 포함합니다 (기본값은 180일).
- 액세스 키 ID: S3 버킷에 대한 액세스 권한이 있는 사용자 액세스 키
- 보안 비밀 액세스 키: S3 버킷에 액세스할 수 있는 사용자 보안 비밀 키입니다.
- 애셋 네임스페이스: 애셋 네임스페이스입니다.
- 수집 라벨: 이 피드의 이벤트에 적용할 라벨입니다.
- S3 URI:
다음을 클릭한 후 제출을 클릭합니다.
UDM 매핑 테이블
| 로그 필드 | UDM 매핑 | 논리 |
|---|---|---|
billingRegion_label |
additional.fields |
병합됨 |
bytes_label |
additional.fields |
병합됨 |
cache_status_label |
additional.fields |
병합됨 |
customfield_label |
additional.fields |
병합됨 |
errorCode_label |
additional.fields |
병합됨 |
error_code_label |
additional.fields |
병합됨 |
fileSizeBucket_label |
additional.fields |
병합됨 |
jsonPayload_cookie_label |
additional.fields |
병합됨 |
jsonPayload_cp_label |
additional.fields |
병합됨 |
jsonPayload_overheadbytes_label |
additional.fields |
병합됨 |
objSize_label |
additional.fields |
병합됨 |
objsize_label |
additional.fields |
병합됨 |
overheadBytes_label |
additional.fields |
병합됨 |
rspContentLen_label |
additional.fields |
병합됨 |
rspcontentlen_label |
additional.fields |
병합됨 |
trace_label |
additional.fields |
병합됨 |
transferTimeMSec_label |
additional.fields |
병합됨 |
turnAroundTimeMSec_label |
additional.fields |
병합됨 |
has_principal |
metadata.event_type |
매핑됨: true → NETWORK_HTTP, true → NETWORK_CONNECTION, true → STATUS_UPDATE |
has_user |
metadata.event_type |
매핑됨: true → USER_UNCATEGORIZED |
insertId |
metadata.product_log_id |
직접 매핑됨 |
proto_type |
network.application_protocol |
직접 매핑됨 |
jsonPayload.reqmethod |
network.http.method |
직접 매핑됨 |
reqMethod |
network.http.method |
직접 매핑됨 |
jsonPayload_referer |
network.http.referral_url |
직접 매핑됨 |
jsonPayload.statuscode |
network.http.response_code |
직접 매핑됨 |
statusCode |
network.http.response_code |
직접 매핑됨 |
UA |
network.http.user_agent |
직접 매핑됨 |
jsonPayload.ua |
network.http.user_agent |
직접 매핑됨 |
jsonPayload.reqid |
network.session_id |
직접 매핑됨 |
reqId |
network.session_id |
직접 매핑됨 |
jsonPayload.tlsversion |
network.tls.version |
직접 매핑됨 |
tlsVersion |
network.tls.version |
직접 매핑됨 |
version |
network.tls.version_protocol |
직접 매핑됨 |
cliIP |
principal.asset.ip |
병합됨 |
jsonPayload.cliip |
principal.asset.ip |
병합됨 |
cliIP |
principal.ip |
병합됨 |
jsonPayload.cliip |
principal.ip |
병합됨 |
jsonPayload.city |
principal.location.city |
직접 매핑됨 |
jsonPayload.country |
principal.location.country_or_region |
직접 매핑됨 |
jsonPayload.totalbytes |
principal.network.received_bytes |
이름이 변경됨/매핑됨 |
totalBytes |
principal.network.received_bytes |
직접 매핑됨 |
logName |
security_result.category_details |
병합됨 |
asn_label |
security_result.detection_fields |
병합됨 |
querystr_label |
security_result.detection_fields |
병합됨 |
securityrules_label |
security_result.detection_fields |
병합됨 |
service_name_label |
security_result.detection_fields |
병합됨 |
jsonPayload.reqhost |
target.asset.hostname |
직접 매핑됨 |
jsonPayload.reqpath |
target.file.full_path |
직접 매핑됨 |
reqPath |
target.file.full_path |
직접 매핑됨 |
jsonPayload.rspcontenttype |
target.file.mime_type |
직접 매핑됨 |
rspContentType |
target.file.mime_type |
직접 매핑됨 |
jsonPayload.reqhost |
target.hostname |
직접 매핑됨 |
jsonPayload.reqport |
target.port |
이름이 변경됨/매핑됨 |
reqPort |
target.port |
이름이 변경됨/매핑됨 |
uncompressedsize |
target.process.file.size |
직접 매핑됨 |
resource.type |
target.resource.resource_subtype |
직접 매핑됨 |
| 해당 사항 없음 | metadata.event_type |
상수: NETWORK_HTTP |
| 해당 사항 없음 | metadata.product_name |
상수: Akamai Datastream |
| 해당 사항 없음 | metadata.vendor_name |
상수: AkamaiDatastream |
변경 로그
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.