Sysdig 로그 수집
이 파서는 Sysdig JSON 로그에서 보안 이벤트 데이터를 추출하여 원시 로그 필드를 Google Security Operations UDM 형식으로 변환하고 매핑합니다. 메타데이터, 주체 또는 타겟 정보, 보안 결과 세부정보, Kubernetes 관련 컨텍스트 등 다양한 필드를 처리하여 Google SecOps 내 분석을 위한 데이터를 보강합니다. 또한 파서는 필드 값을 기반으로 데이터 유형 변환, 오류 처리, 조건부 로직을 실행하여 정확하고 포괄적인 UDM 표현을 보장합니다.
시작하기 전에
다음 기본 요건이 충족되었는지 확인합니다.
- Google SecOps 인스턴스
- Sysdig Secure에 대한 권한 액세스
웹훅 피드에 대한 API 키 만들기
Google Cloud 콘솔 > 사용자 인증 정보로 이동합니다.
사용자 인증 정보 만들기를 클릭한 후 API 키를 선택합니다.
Google Security Operations API에 대한 API 키 액세스를 제한합니다.
옵션 1
피드 설정
피드를 구성하려면 다음 단계를 따르세요.
- SIEM 설정 > 피드로 이동합니다.
- 새 피드 추가를 클릭합니다.
- 다음 페이지에서 단일 피드 구성을 클릭합니다.
- 피드 이름 필드에 피드 이름을 입력합니다(예: Sysdig 로그).
- 소스 유형으로 Webhook을 선택합니다.
- 로그 유형으로 Sysdig를 선택합니다.
- 다음을 클릭합니다.
선택사항: 다음 입력 파라미터의 값을 지정합니다.
- 분할 구분 기호: 로그 줄을 구분하는 데 사용되는 구분 기호입니다(예:
\n).
- 분할 구분 기호: 로그 줄을 구분하는 데 사용되는 구분 기호입니다(예:
다음을 클릭합니다.
확정 화면에서 피드 구성을 검토한 다음 제출을 클릭합니다.
보안 비밀 키 생성을 클릭하여 이 피드를 인증하기 위한 보안 비밀 키를 생성합니다.
보안 비밀 키를 복사하여 저장합니다. 이 보안 비밀 키는 다시 볼 수 없습니다. 필요한 경우 새 보안 비밀 키를 재생성할 수 있지만 이 작업으로 인해 이전 보안 비밀 키는 더 이상 사용할 수 없게 됩니다.
세부정보 탭의 엔드포인트 정보 필드에서 피드 엔드포인트 URL을 복사합니다. 클라이언트 애플리케이션에서 이 엔드포인트 URL을 지정해야 합니다.
완료를 클릭합니다.
엔드포인트 URL 지정
- 클라이언트 애플리케이션에서 웹훅 피드에 제공된 HTTPS 엔드포인트 URL을 지정합니다.
다음 형식의 커스텀 헤더의 일부로 API 키와 보안 비밀 키를 지정하여 인증을 사용 설정합니다.
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET권장사항: URL에 지정하는 대신 API 키를 헤더로 지정하세요.
웹훅 클라이언트가 커스텀 헤더를 지원하지 않는 경우 쿼리 매개변수를 다음 형식으로 사용하여 API 키와 보안 비밀 키를 지정할 수 있습니다.
ENDPOINT_URL?key=API_KEY&secret=SECRET다음을 바꿉니다.
ENDPOINT_URL: 피드 엔드포인트 URL입니다.API_KEY: Google SecOps에 인증하기 위한 API 키입니다.SECRET: 피드를 인증하기 위해 생성한 보안 비밀 키입니다.
Sysdig에서 웹훅 구성
- 관리자 권한으로 Sysdig Secure에 로그인합니다.
- 프로필 > 설정 > 이벤트 전달로 이동합니다.
- +통합 추가를 클릭하고 드롭다운에서 Webhook을 선택합니다.
다음 입력 매개변수의 값을 지정합니다.
- 통합 이름: 웹훅에 대한 설명이 포함된 이름을 입력합니다 (예: Google SecOps 웹훅).
- 엔드포인트: 웹훅
<ENDPOINT_URL>를 입력한 다음<API_KEY및<SECRET>를 입력합니다. 전송할 데이터: 드롭다운에서 전달할 Sysdig 데이터 유형을 선택합니다.
통합을 테스트한 다음 사용 설정됨으로 전환하여 활성화합니다.
저장을 클릭합니다.
옵션 2
Google SecOps로 직접 데이터 전달
- 관리자 사용자 인증 정보를 사용하여 Sysdig Secure에 로그인합니다.
- 설정 > 이벤트 전달로 이동합니다.
- +통합 추가를 클릭하고 드롭다운에서 Google Chronicle을 선택합니다.
- 다음 입력 파라미터의 값을 지정합니다.
- 통합 이름: 통합에 대한 설명이 포함된 이름을 제공합니다 (예: Google SecOps 통합).
- 고객 ID: Google Cloud 계정과 연결된 Google 고객 ID입니다. (Google SecOps에서 설정 > 프로필에서 확인할 수 있습니다.)
- 네임스페이스: 선택사항: 색인 생성 및 보강에 적합한 데이터 도메인을 식별하는 태그로 사용합니다.
- JSON 사용자 인증 정보: Google SecOps JSON 사용자 인증 정보를 업로드합니다.
- 리전: 미국, 유럽, 아시아와 같은 리전을 선택합니다.
- 전송할 데이터: 드롭다운에서 전달할 Sysdig 데이터 유형을 선택합니다.
- 통합을 테스트한 다음 사용 설정됨으로 전환하여 활성화합니다.
- 저장을 클릭합니다.
UDM 매핑 테이블
| 로그 필드 | UDM 매핑 | 로직 |
|---|---|---|
agentId |
read_only_udm.metadata.product_deployment_id |
원시 로그의 agentId 값이 이 UDM 필드에 직접 매핑됩니다. |
category |
read_only_udm.security_result.category_details |
원시 로그의 category 값이 이 UDM 필드에 직접 매핑됩니다. |
content.fields.container.id |
read_only_udm.target.asset.asset_id |
원시 로그의 content.fields.container.id 값이 'container_id:'로 시작하고 이 UDM 필드에 매핑됩니다. containerId이 비어 있는 경우 사용됩니다. |
content.fields.container.image.repository |
read_only_udm.target.file.full_path |
원시 로그의 content.fields.container.image.repository 값이 이 UDM 필드에 직접 매핑됩니다. |
content.fields.container.image.tag |
키가 tag인 read_only_udm.metadata.ingestion_labels.value |
원시 로그의 content.fields.container.image.tag 값이 이 UDM 필드에 직접 매핑됩니다. |
content.fields.evt.res |
키가 evt_res인 read_only_udm.metadata.ingestion_labels.value |
원시 로그의 content.fields.evt.res 값이 이 UDM 필드에 직접 매핑됩니다. |
content.fields.evt.type |
read_only_udm.metadata.event_type |
원시 로그의 content.fields.evt.type 값이 이 UDM 필드에 직접 매핑됩니다. |
content.fields.falco.rule |
read_only_udm.security_result.rule_name |
원시 로그의 content.fields.falco.rule 값이 이 UDM 필드에 직접 매핑됩니다. content.ruleName이 비어 있는 경우 사용됩니다. |
content.fields.group.gid |
read_only_udm.target.group.product_object_id |
원시 로그의 content.fields.group.gid 값이 이 UDM 필드에 직접 매핑됩니다. |
content.fields.group.name |
read_only_udm.target.group.group_display_name |
원시 로그의 content.fields.group.name 값이 이 UDM 필드에 직접 매핑됩니다. |
content.fields.proc.cmdline |
read_only_udm.target.process.command_line |
원시 로그의 content.fields.proc.cmdline 값이 이 UDM 필드에 직접 매핑됩니다. |
content.fields.proc.pcmdline |
read_only_udm.target.process.parent_process.command_line |
원시 로그의 content.fields.proc.pcmdline 값이 이 UDM 필드에 직접 매핑됩니다. |
content.fields.proc.pid |
read_only_udm.target.process.pid |
원시 로그의 content.fields.proc.pid 값이 이 UDM 필드에 직접 매핑됩니다. |
content.fields.proc.ppid |
read_only_udm.target.process.parent_process.pid |
원시 로그의 content.fields.proc.ppid 값이 이 UDM 필드에 직접 매핑됩니다. |
content.fields.proc.sid |
키가 sid인 read_only_udm.metadata.ingestion_labels.value |
원시 로그의 content.fields.proc.sid 값이 이 UDM 필드에 직접 매핑됩니다. |
content.fields.user.loginname |
read_only_udm.principal.user.user_display_name |
원시 로그의 content.fields.user.loginname 값이 이 UDM 필드에 직접 매핑됩니다. |
content.fields.user.uid |
read_only_udm.principal.user.userid |
원시 로그의 content.fields.user.uid 값이 이 UDM 필드에 직접 매핑됩니다. |
content.output |
키가 content_output인 read_only_udm.additional.fields.value.string_value |
원시 로그의 content.output 값이 이 UDM 필드에 직접 매핑됩니다. |
content.policyId |
read_only_udm.security_result.rule_id |
원시 로그의 content.policyId 값이 이 UDM 필드에 직접 매핑됩니다. |
content.policyOrigin |
키가 content_policyOrigin인 read_only_udm.additional.fields.value.string_value |
원시 로그의 content.policyOrigin 값이 이 UDM 필드에 직접 매핑됩니다. |
content.policyVersion |
키가 content_policyVersion인 read_only_udm.additional.fields.value.string_value |
원시 로그의 content.policyVersion 값이 이 UDM 필드에 직접 매핑됩니다. |
content.ruleName |
read_only_udm.security_result.rule_name |
원시 로그의 content.ruleName 값이 이 UDM 필드에 직접 매핑됩니다. |
content.ruleTags |
read_only_udm.security_result.rule_labels |
원시 로그의 content.ruleTags 배열에 있는 값은 'ruletag_index'로 동적으로 생성된 키와 함께 이 UDM 필드에 매핑됩니다. |
content.ruleType |
키가 content_ruleType인 read_only_udm.additional.fields.value.string_value |
원시 로그의 content.ruleType 값이 이 UDM 필드에 직접 매핑됩니다. |
containerId |
read_only_udm.target.asset.asset_id |
원시 로그의 containerId 값이 'container_id:'로 시작하고 이 UDM 필드에 매핑됩니다. |
description |
read_only_udm.metadata.description |
원시 로그의 description 값이 이 UDM 필드에 직접 매핑됩니다. |
id |
read_only_udm.metadata.product_log_id |
원시 로그의 id 값이 이 UDM 필드에 직접 매핑됩니다. |
labels.container.label.io.kubernetes.container.name |
키가 container_name인 read_only_udm.additional.fields.value.string_value |
원시 로그의 labels.container.label.io.kubernetes.container.name 값이 이 UDM 필드에 직접 매핑됩니다. |
labels.container.label.io.kubernetes.pod.name |
키가 pod_name인 read_only_udm.additional.fields.value.string_value |
원시 로그의 labels.container.label.io.kubernetes.pod.name 값이 이 UDM 필드에 직접 매핑됩니다. labels.kubernetes.pod.name이 비어 있는 경우 사용됩니다. |
labels.container.label.io.kubernetes.pod.namespace |
read_only_udm.principal.namespace |
원시 로그의 labels.container.label.io.kubernetes.pod.namespace 값이 이 UDM 필드에 직접 매핑됩니다. labels.kubernetes.namespace.name이 비어 있는 경우 사용됩니다. |
labels.aws.instanceId |
read_only_udm.target.resource.product_object_id |
원시 로그의 labels.aws.instanceId 값이 이 UDM 필드에 직접 매핑됩니다. |
labels.aws.region |
read_only_udm.target.resource.attribute.cloud.availability_zone |
원시 로그의 labels.aws.region 값이 이 UDM 필드에 직접 매핑됩니다. |
labels.host.hostName |
read_only_udm.principal.ip 또는 read_only_udm.principal.hostname |
값에 'ip'가 포함되어 있으면 IP 주소로 파싱되어 principal.ip에 매핑됩니다. 그렇지 않으면 principal.hostname으로 매핑됩니다. |
labels.host.mac |
read_only_udm.principal.mac |
원시 로그의 labels.host.mac 값이 이 UDM 필드에 직접 매핑됩니다. machineId이 비어 있는 경우 사용됩니다. |
labels.kubernetes.cluster.name |
키가 kubernetes_cluster_name인 read_only_udm.additional.fields.value.string_value |
원시 로그의 labels.kubernetes.cluster.name 값이 이 UDM 필드에 직접 매핑됩니다. |
labels.kubernetes.deployment.name |
키가 kubernetes_deployment_name인 read_only_udm.additional.fields.value.string_value |
원시 로그의 labels.kubernetes.deployment.name 값이 이 UDM 필드에 직접 매핑됩니다. |
labels.kubernetes.namespace.name |
read_only_udm.principal.namespace |
원시 로그의 labels.kubernetes.namespace.name 값이 이 UDM 필드에 직접 매핑됩니다. |
labels.kubernetes.node.name |
키가 kubernetes_node_name인 read_only_udm.additional.fields.value.string_value |
원시 로그의 labels.kubernetes.node.name 값이 이 UDM 필드에 직접 매핑됩니다. |
labels.kubernetes.pod.name |
키가 pod_name인 read_only_udm.additional.fields.value.string_value |
원시 로그의 labels.kubernetes.pod.name 값이 이 UDM 필드에 직접 매핑됩니다. |
labels.kubernetes.service.name |
키가 kubernetes_service_name인 read_only_udm.additional.fields.value.string_value |
원시 로그의 labels.kubernetes.service.name 값이 이 UDM 필드에 직접 매핑됩니다. |
machineId |
read_only_udm.principal.mac |
원시 로그의 machineId 값이 이 UDM 필드에 직접 매핑됩니다. |
name |
read_only_udm.security_result.summary |
원시 로그의 name 값이 이 UDM 필드에 직접 매핑됩니다. |
severity |
read_only_udm.security_result.severity |
원시 로그의 severity 값은 <4 = HIGH, >3 및 <6 = MEDIUM, 6 = LOW, 7 = INFORMATIONAL 범위에 따라 문자열 값에 매핑됩니다. |
source |
read_only_udm.security_result.description |
원시 로그의 source 값이 이 UDM 필드에 직접 매핑됩니다. |
timestampRFC3339Nano |
read_only_udm.metadata.event_timestamp |
원시 로그의 timestampRFC3339Nano 값이 타임스탬프로 파싱되고 이 UDM 필드에 매핑됩니다. |
type |
read_only_udm.metadata.product_event_type |
원시 로그의 type 값이 이 UDM 필드에 직접 매핑됩니다. |
| (파서 로직) | read_only_udm.metadata.product_name |
'SYSDIG'로 하드코딩됩니다. |
| (파서 로직) | read_only_udm.metadata.vendor_name |
'SYSDIG'로 하드코딩됩니다. |
| (파서 로직) | read_only_udm.metadata.event_type |
기본적으로 'PROCESS_UNCATEGORIZED'로 설정되며, labels.host.hostName가 비어 있으면 'GENERIC_EVENT'로 설정됩니다. |
| (파서 로직) | read_only_udm.metadata.log_type |
'SYSDIG'로 하드코딩됩니다. |
| (파서 로직) | read_only_udm.target.resource.resource_type |
labels.aws.instanceId가 있으면 'CLOUD_PROJECT'로 설정합니다. |
변경 로그
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.