Wiz 로그 수집
다음에서 지원:
Google secops
Siem
이 문서에서는 WIZ 로그를 Google Security Operations에 수집하는 방법을 설명합니다. 파서는 WIZ의 원시 JSON 형식 로그를 통합 데이터 모델 (UDM)로 변환합니다. 먼저 UDM 필드의 기본값을 초기화한 다음 JSON 메시지를 파싱하고 사용자 정보, 위치, 기기 세부정보, 보안 결과와 같은 관련 필드를 추출합니다. Wiz는 Google Cloud, AWS, Azure, OCI, Kubernetes 환경 전반에서 에이전트리스 방식의 엔드 투 엔드 가시성과 위험 우선순위를 제공하는 클라우드 보안 플랫폼입니다.
시작하기 전에
다음 기본 요건이 충족되었는지 확인합니다.
- Google SecOps 인스턴스
- Wiz에 대한 액세스 권한 관리
Google SecOps 고객 ID 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 프로필로 이동합니다.
- 조직 세부정보 섹션에서 고객 ID를 복사하여 저장합니다.
Wiz에서 통합 구성
- Wiz 웹 UI에 로그인합니다.
- Wiz에 연결 페이지로 이동합니다.
- Google Cloud Chronicle를 클릭합니다.
- 범위를 선택합니다.
- Google SecOps 고객 ID를 입력합니다.
- Chronicle 인스턴스 엔드포인트 주소를 입력합니다.
- 캐나다: https://northamerica-northeast2-malachiteingestion-pa.googleapis.com
- 다맘: https://me-central2-malachiteingestion-pa.googleapis.com
- 유럽 다중 리전: https://europe-malachiteingestion-pa.googleapis.com
- 프랑크푸르트: https://europe-west3-malachiteingestion-pa.googleapis.com
- 런던: https://europe-west2-malachiteingestion-pa.googleapis.com
- 뭄바이: https://asia-south1-malachiteingestion-pa.googleapis.com
- 싱가포르: https://asia-southeast1-malachiteingestion-pa.googleapis.com
- 시드니: https://australia-southeast1-malachiteingestion-pa.googleapis.com
- 텔아비브: https://me-west1-malachiteingestion-pa.googleapis.com
- 도쿄: https://asia-northeast1-malachiteingestion-pa.googleapis.com
- 미국 다중 리전: https://malachiteingestion-pa.googleapis.com
- 취리히: https://europe-west6-malachiteingestion-pa.googleapis.com
- Google 서비스 계정 키를 업로드합니다.
- 저장을 클릭합니다.
UDM 매핑 표
로그 필드 | UDM 매핑 | 논리 |
---|---|---|
action | metadata.product_event_type | eventType이 비어 있을 때의 직접 매핑 |
action | principal.application | 작업이 Report 이고 serviceAccount.name이 비어 있지 않은 경우 직접 매핑 |
actionParameters.groups | security_result.detection_fields.value | 파서는 actionParameters.groups의 각 그룹을 반복하고 키가 service_account_group 인 별도의 detection_fields 항목에 매핑합니다. |
actionParameters.input.patch.portalVisitHistory.dateTime | additional.fields.value.string_value | 파서는 actionParameters.input.patch.portalVisitHistory의 각 항목을 반복하고 dateTime 필드를 추출하여 키가 dateTime {index} 인 별도의 additional.fields 항목에 매핑합니다. |
actionParameters.input.patch.portalVisitHistory.id | principal.resource.attribute.labels.value | 파서는 actionParameters.input.patch.portalVisitHistory의 각 항목을 반복하고 id 필드를 추출하여 키가 id {index} 인 별도의 principal.resource.attribute.labels 항목에 매핑합니다. |
actionParameters.input.patch.portalVisitHistory.name | principal.resource.attribute.labels.value | 파서는 actionParameters.input.patch.portalVisitHistory의 각 항목을 반복하고 이름 필드를 추출하여 키가 name {index} 인 별도의 principal.resource.attribute.labels 항목에 매핑합니다. |
actionParameters.input.patch.portalVisitHistory.resourceName | principal.resource.attribute.labels.value | 파서는 actionParameters.input.patch.portalVisitHistory의 각 항목을 반복하고 resourceName 필드를 추출하여 키가 resourceName {index} 인 별도의 principal.resource.attribute.labels 항목에 매핑합니다. |
actionParameters.input.patch.portalVisitHistory.resourceType | principal.resource.attribute.labels.value | 파서는 actionParameters.input.patch.portalVisitHistory의 각 항목을 반복하고 resourceType 필드를 추출하여 키가 resourceType {index} 인 별도의 principal.resource.attribute.labels 항목에 매핑합니다. |
actionParameters.input.patch.portalVisitHistory.ruleType | principal.resource.attribute.labels.value | 파서는 actionParameters.input.patch.portalVisitHistory의 각 항목을 반복하고 ruleType 필드를 추출하여 키가 ruleType {index} 인 별도의 principal.resource.attribute.labels 항목에 매핑합니다. |
actionParameters.input.patch.portalVisitHistory.type | additional.fields.value.string_value | 파서는 actionParameters.input.patch.portalVisitHistory의 각 항목을 반복하고 유형 필드를 추출하여 키가 type {index} 인 별도의 additional.fields 항목에 매핑합니다. |
actionParameters.name | target.user.user_display_name | actionParameters.name이 비어 있지 않은 경우 직접 매핑 |
actionParameters.products | security_result.detection_fields.value | 파서는 actionParameters.products의 각 제품 (빈 문자열 및 * 제외)을 반복하고 키가 service_account_product 인 별도의 detection_fields 항목에 매핑합니다. |
actionParameters.role | target.user.attribute.roles.name | actionParameters.role이 비어 있지 않은 경우 직접 매핑 |
actionParameters.scopes | security_result.detection_fields.value | 파서는 actionParameters.scopes의 각 범위를 반복하고 키가 service_account_scope 인 별도의 detection_fields 항목에 매핑합니다. |
actionParameters.selection | additional.fields.value.list_value.values.string_value | 파서는 actionParameters.selection.preferences의 각 항목을 반복하고 additional.fields.value.list_value.values 내의 별도의 string_value 항목에 매핑합니다. |
actionParameters.userEmail | target.user.email_addresses | Grok 패턴을 사용하여 추출되며 비어 있지 않으면 매핑됩니다. |
actionParameters.userID | target.user.userid | actionParameters.userID가 비어 있지 않은 경우의 직접 매핑 |
actor.displayName | target.user.user_display_name | actor.displayName이 비어 있지 않고 unknown 가 아닌 경우의 직접 매핑 |
actor.id | target.user.userid | actor.id가 비어 있지 않은 경우의 직접 매핑 |
authenticationContext.authenticationProvider | security_result.detection_fields.value | 비어 있지 않으면 키가 authenticationProvider 인 detection_fields 항목에 매핑됩니다. |
authenticationContext.credentialProvider | security_result.detection_fields.value | 비어 있지 않으면 키가 credentialProvider 인 detection_fields 항목에 매핑됩니다. |
authenticationContext.credentialType | extensions.auth.mechanism | 특정 값을 기반으로 extensions.auth.mechanism의 값을 파생하는 데 사용됩니다. |
authenticationContext.externalSessionId | network.parent_session_id | 비어 있지 않고 unknown 가 아닌 경우 직접 매핑합니다. |
client.device | principal.asset.type | 특정 값을 기반으로 principal.asset.type의 값을 파생하는 데 사용됩니다. |
client.geographicalContext.city | principal.location.city | 비어 있지 않은 경우 직접 매핑 |
client.geographicalContext.country | principal.location.country_or_region | 비어 있지 않은 경우 직접 매핑 |
client.geographicalContext.geolocation.lat | principal.location.region_latitude | 비어 있지 않은 경우 직접 매핑 |
client.geographicalContext.geolocation.lon | principal.location.region_longitude | 비어 있지 않은 경우 직접 매핑 |
client.geographicalContext.postalCode | additional.fields.value.string_value | 비어 있지 않으면 키가 Postal code 인 additional.fields 항목에 매핑됩니다. |
client.geographicalContext.state | principal.location.state | 비어 있지 않은 경우 직접 매핑 |
client.ipAddress | principal.asset.ip | 비어 있지 않은 경우 principal.ip 및 principal.asset.ip와 병합됩니다. |
client.ipAddress | principal.ip | 비어 있지 않은 경우 principal.ip 및 principal.asset.ip와 병합됩니다. |
client.userAgent.browser | target.resource.attribute.labels.value | 비어 있지 않으면 키가 Browser 인 target.resource.attribute.labels 항목에 매핑됩니다. |
client.userAgent.os | principal.platform | 특정 값을 기반으로 principal.platform의 값을 파생하는 데 사용됩니다. |
client.userAgent.rawUserAgent | network.http.user_agent | 비어 있지 않은 경우 직접 매핑 |
debugContext.debugData.behaviors | security_result.description | 비어 있지 않은 경우 직접 매핑 |
debugContext.debugData.deviceFingerprint | target.asset.asset_id | 비어 있지 않으면 device_finger_print: 접두사로 target.asset.asset_id에 매핑됩니다. |
debugContext.debugData.dtHash | security_result.detection_fields.value | 비어 있지 않으면 키가 dtHash 인 detection_fields 항목에 매핑됩니다. |
debugContext.debugData.factor | security_result.detection_fields.value | 비어 있지 않으면 키가 factor 인 detection_fields 항목에 매핑됩니다. |
debugContext.debugData.promptingPolicyTypes | security_result.detection_fields.value | 비어 있지 않으면 키가 promptingPolicyTypes 인 detection_fields 항목에 매핑됩니다. |
debugContext.debugData.requestUri | extensions.auth.auth_details | 비어 있지 않은 경우 직접 매핑 |
eventType | metadata.event_type | 특정 값을 기반으로 metadata.event_type의 값을 파생하는 데 사용됩니다. |
eventType | metadata.product_event_type | 비어 있지 않은 경우 직접 매핑 |
outcome.reason | security_result.category_details | 비어 있지 않은 경우 직접 매핑 |
outcome.result | security_result.action | 특정 값을 기반으로 정규화된 후 security_result.action에 매핑됩니다. |
requestId | metadata.product_log_id | 비어 있지 않은 경우 직접 매핑 |
serviceAccount.name | principal.application | 작업이 Report 이고 serviceAccount.name이 비어 있지 않은 경우 직접 매핑 |
sourceIP | principal.asset.ip | grok 패턴을 사용하여 추출되며 빈 값이 아니고 유효한 경우 principal.ip 및 principal.asset.ip와 병합됩니다. |
sourceIP | principal.ip | grok 패턴을 사용하여 추출되며 빈 값이 아니고 유효한 경우 principal.ip 및 principal.asset.ip와 병합됩니다. |
상태 | security_result.summary | 비어 있지 않은 경우 직접 매핑 |
타임스탬프 | metadata.event_timestamp | 타임스탬프 형식으로 변환되며 비어 있지 않으면 매핑됩니다. |
user.id | target.user.userid | actionParameters.userID가 비어 있고 user.id가 비어 있지 않은 경우 직접 매핑 |
user.name | target.user.user_display_name | actionParameters.name이 비어 있고 user.name이 비어 있지 않은 경우의 직접 매핑 |
userAgent | network.http.user_agent | client.userAgent.rawUserAgent가 비어 있고 userAgent가 비어 있지 않은 경우 직접 매핑 |
extensions.auth.type | has_user가 true이고 작업이 Login 인 경우 AUTHTYPE_UNSPECIFIED 로 설정합니다. |
|
metadata.product_name | WIZ_IO 로 설정합니다. |
|
metadata.vendor_name | WIZ_IO 로 설정합니다. |
|
network.http.parsed_user_agent | user_agent_value를 parseduseragent로 변환하여 파생됩니다. | |
security_result.severity | 특정 값을 기반으로 심각도에서 파생되며 기본값은 LOW 입니다. |
변경사항
2024-03-04
개선사항:
actionParameters.selection.preferences
,actionParameters.input.patch.portalVisitHistory.dateTime
,actionParameters.input.patch.portalVisitHistory.type
를additional.fields
에 매핑했습니다.actionParameters.input.patch.portalVisitHistory.name
,actionParameters.input.patch.portalVisitHistory.resourceName
,actionParameters.input.patch.portalVisitHistory.resourceType
,actionParameters.input.patch.portalVisitHistory.ruleType
,actionParameters.input.patch.portalVisitHistory.id
를principal.resource.attribute.labels
에 매핑했습니다.
2024-02-08
개선사항:
WIZ_IO
를metadata.product_name
및metadata.vendor_name
에 매핑했습니다.action
를metadata.product_event_type
에 매핑했습니다.timestamp
를metadata.event_timestamp
에 매핑했습니다.userAgent
를network.http.user_agent
및network.http.parsed_user_agent
에 매핑했습니다.sourceIP
를principal.ip
에 매핑했습니다.- 작업 값이
Report
이면serviceAccount.name
을principal.application
에 매핑했습니다. user.id
를target.user.id
에 매핑했습니다.user.name
를target.user.user_display_name
에 매핑했습니다.userEmail
를target.user.email_addresses
에 매핑했습니다.actionParameters.role
를target.user.attribute.roles
에 매핑했습니다.actionParameters.groups
및actionParameters.products
를 `security_result.detection_fields`에 매핑했습니다.
2023-12-15
개선사항:
- 파서를 새로 만들었습니다.
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가의 답변을 받아 보세요.