Palo Alto Prisma Cloud 알림 로그 수집
다음에서 지원:
Google SecOps
SIEM
개요
이 파서는 Palo Alto Prisma Cloud에서 알림 로그를 JSON 형식으로 추출하여 UDM으로 변환합니다. 파서는 데이터 정규화, 유형 변환, 조건부 로직을 실행하여 적절한 UDM 필드를 채웁니다. 또한 로그 데이터 내에서 중첩된 JSON 구조와 배열을 처리하여 관련 정보를 추출합니다.
시작하기 전에
- Google SecOps 인스턴스가 있는지 확인합니다.
- Palo Alto Prisma Cloud에 대한 액세스 권한이 있는지 확인합니다.
Palo Alto Prisma Cloud 알림을 수집하도록 Google SecOps에서 피드 구성
- SIEM 설정 > 피드로 이동합니다.
- 새로 추가를 클릭합니다.
- 피드 이름 필드에 피드 이름을 입력합니다 (예: PAN Prisma Cloud Alerts).
- 소스 유형으로 Webhook을 선택합니다.
- 로그 유형으로 Palo Alto Prisma Cloud 알림 페이로드를 선택합니다.
- 다음을 클릭합니다.
- 선택사항: 다음 입력 파라미터의 값을 지정합니다.
- 분할 구분 기호: 로그 줄을 구분하는 데 사용되는 구분 기호입니다(예:
\n
). - 애셋 네임스페이스: 애셋 네임스페이스입니다.
- 수집 라벨: 이 피드의 이벤트에 적용된 라벨입니다.
- 분할 구분 기호: 로그 줄을 구분하는 데 사용되는 구분 기호입니다(예:
- 다음을 클릭합니다.
- 확정 화면에서 피드 구성을 검토한 다음 제출을 클릭합니다.
- 보안 비밀 키 생성을 클릭하여 이 피드를 인증하기 위한 보안 비밀 키를 생성합니다.
- 비밀 키를 복사하여 저장합니다. 이 보안 비밀 키는 다시 볼 수 없습니다. 필요한 경우 새 보안 비밀 키를 재생성할 수 있지만 이 작업을 하면 이전 보안 비밀 키는 더 이상 사용할 수 없게 됩니다.
- 세부정보 탭의 엔드포인트 정보 필드에서 피드 엔드포인트 URL을 복사합니다. 클라이언트 애플리케이션에서 이 엔드포인트 URL을 지정해야 합니다.
- 완료를 클릭합니다.
웹훅 피드에 대한 API 키 만들기
Google Cloud 콘솔 > 사용자 인증 정보로 이동합니다.
사용자 인증 정보 만들기를 클릭한 후 API 키를 선택합니다.
Google Security Operations API에 대한 API 키 액세스를 제한합니다.
엔드포인트 URL 지정
- 클라이언트 애플리케이션에서 웹훅 피드에 제공된 HTTPS 엔드포인트 URL을 지정합니다.
다음 형식의 커스텀 헤더의 일부로 API 키와 보안 비밀 키를 지정하여 인증을 사용 설정합니다.
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
권장사항: API 키를 URL에 지정하는 대신 헤더로 지정하세요.
웹훅 클라이언트가 커스텀 헤더를 지원하지 않는 경우 다음 형식의 쿼리 매개변수를 사용하여 API 키와 보안 비밀 키를 지정할 수 있습니다.
ENDPOINT_URL?key=API_KEY&secret=SECRET
다음을 바꿉니다.
ENDPOINT_URL
: 피드 엔드포인트 URL입니다.API_KEY
: Google Security Operations에 인증하기 위한 API 키입니다.SECRET
: 피드를 인증하기 위해 생성한 보안 비밀 키입니다.
Palo Alto Prisma Cloud webhook을 Google SecOps에 구성
- Palo Alto Prisma Cloud에 로그인합니다.
- 설정 > 통합 및 알림 ((and_then)) 통합을 선택합니다.
- Add Integration(통합 추가)을 클릭합니다.
- Webhook을 선택합니다.
- 다음 입력 매개변수의 값을 지정합니다.
- 통합 이름: 고유하고 설명적인 이름을 입력합니다 (예: Google SecOps).
- 웹훅 URL: ENDPOINT_URL을 입력합니다.
- 선택사항: 통합에 대한 설명을 입력합니다.
- 선택사항: 맞춤 페이로드를 사용 설정하고 > 다음을 클릭하여 맞춤 페이로드를 검토하거나 수정합니다.
- 다음을 클릭합니다.
- 테스트 및 Save Integration(통합 저장)을 클릭합니다.
Palo Alto Prisma Cloud 알림 구성
- Palo Alto Prisma Cloud 콘솔에서 알림 > 알림 규칙 보기로 이동합니다.
- 수정할 기존 알림 규칙을 선택합니다.
- 선택사항: Cloud Infrastructure에 대한 새 알림을 만듭니다.
- 선택사항: Cloud 워크로드에 대한 새 알림을 만듭니다.
- 알림 구성으로 이동합니다.
- Webhook을 선택합니다.
- 선택사항: 알림 규칙에 의해 트리거된 알림을 보낼 채널을 선택합니다.
- 다음을 클릭합니다.
- 저장을 클릭합니다.
UDM 매핑 표
로그 필드 | UDM 매핑 | 논리 |
---|---|---|
accountId |
target.resource.id |
원시 로그의 accountId 값입니다. |
accountId |
target.resource.product_object_id |
원시 로그의 accountId 값입니다. 이렇게 하면 지원 중단된 resource.id 필드가 재정의됩니다. |
alertId |
security_result.detection_fields[].key |
키는 'alert id'로 설정됩니다. |
alertId |
security_result.detection_fields[].value |
원시 로그의 alertId 값입니다. |
alertRuleId |
security_result.rule_id |
원시 로그의 alertRuleId 값입니다. |
alertRuleName |
security_result.rule_name |
원시 로그의 alertRuleName 값입니다. |
alertStatus |
security_result.detection_fields[].key |
키가 'alert status'(알림 상태)로 설정됩니다. |
alertStatus |
security_result.detection_fields[].value |
원시 로그의 alertStatus 값입니다. |
alertTs |
security_result.detection_fields[].key |
키는 'alertTs'로 설정됩니다. |
alertTs |
security_result.detection_fields[].value |
원시 로그의 alertTs 값으로, 문자열로 변환됩니다. |
callbackUrl |
metadata.url_back_to_product |
원시 로그의 callbackUrl 값입니다. |
cloudType |
principal.cloud.environment |
cloudType 이 'gcp'인 경우(대소문자 구분 안 함) 값이 'GOOGLE_CLOUD_PLATFORM'으로 설정됩니다. |
complianceMetadata[].complianceId |
security_result.detection_fields[].key |
키가 'complianceId'로 설정됩니다. |
complianceMetadata[].complianceId |
security_result.detection_fields[].value |
원시 로그의 complianceMetadata[].complianceId 값입니다. |
complianceMetadata[].customAssigned |
security_result.detection_fields[].key |
키가 'customAssigned'로 설정됩니다. |
complianceMetadata[].customAssigned |
security_result.detection_fields[].value |
원시 로그의 complianceMetadata[].customAssigned 값으로, 문자열로 변환됩니다. |
complianceMetadata[].policyId |
security_result.detection_fields[].key |
키가 '정책 ID'로 설정됩니다. |
complianceMetadata[].policyId |
security_result.detection_fields[].value |
원시 로그의 complianceMetadata[].policyId 값입니다. |
complianceMetadata[].requirementId |
security_result.rule_id |
원시 로그의 complianceMetadata[].requirementId 값입니다. |
complianceMetadata[].requirementName |
security_result.summary |
원시 로그의 complianceMetadata[].requirementName 값입니다. |
complianceMetadata[].requirementViewOrder |
security_result.detection_fields[].key |
키는 'requirementViewOrder'로 설정됩니다. |
complianceMetadata[].requirementViewOrder |
security_result.detection_fields[].value |
원시 로그의 complianceMetadata[].requirementViewOrder 값으로, 문자열로 변환됩니다. |
complianceMetadata[].sectionDescription |
security_result.detection_fields[].key |
키가 'sectionDescription'으로 설정됩니다. |
complianceMetadata[].sectionDescription |
security_result.detection_fields[].value |
원시 로그의 complianceMetadata[].sectionDescription 값입니다. |
complianceMetadata[].sectionId |
security_result.detection_fields[].key |
키는 'sectionId'로 설정됩니다. |
complianceMetadata[].sectionId |
security_result.detection_fields[].value |
원시 로그의 complianceMetadata[].sectionId 값입니다. |
complianceMetadata[].sectionLabel |
security_result.detection_fields[].key |
키는 'sectionLabel'로 설정됩니다. |
complianceMetadata[].sectionLabel |
security_result.detection_fields[].value |
원시 로그의 complianceMetadata[].sectionLabel 값입니다. |
complianceMetadata[].sectionViewOrder |
security_result.detection_fields[].key |
키는 'sectionViewOrder'로 설정됩니다. |
complianceMetadata[].sectionViewOrder |
security_result.detection_fields[].value |
원시 로그의 complianceMetadata[].sectionViewOrder 값으로, 문자열로 변환됩니다. |
complianceMetadata[].standardDescription |
security_result.detection_fields[].key |
키가 'standardDescription'으로 설정됩니다. |
complianceMetadata[].standardDescription |
security_result.detection_fields[].value |
원시 로그의 complianceMetadata[].standardDescription 값입니다. |
complianceMetadata[].standardName |
security_result.rule_name |
원시 로그의 complianceMetadata[].standardName 값입니다. |
complianceMetadata[].systemDefault |
security_result.detection_fields[].key |
키가 'systemDefault'로 설정됩니다. |
complianceMetadata[].systemDefault |
security_result.detection_fields[].value |
원시 로그의 complianceMetadata[].systemDefault 값으로, 문자열로 변환됩니다. |
create_time |
metadata.event_timestamp , events[].timestamp |
원시 로그의 create_time 값입니다. |
data.allocationId |
principal.resource.product_object_id |
원시 로그의 data.allocationId 값입니다. |
data.publicIp |
principal.ip |
원시 로그의 data.publicIp 값입니다. |
deleted |
additional.fields[].key |
키가 '삭제됨'으로 설정됩니다. |
deleted |
additional.fields[].value.string_value |
원시 로그의 deleted 값으로, 문자열로 변환됩니다. |
description |
metadata.description |
원시 로그의 description 값입니다. |
firstSeen |
principal.asset.first_seen_time |
원시 로그의 firstSeen 값으로, 타임스탬프 (UNIX_MS 또는 UNIX 형식)로 파싱됩니다. |
hasFinding |
security_result.detection_fields[].key |
키가 'hasFinding'으로 설정됩니다. |
hasFinding |
security_result.detection_fields[].value |
원시 로그의 hasFinding 값으로, 문자열로 변환됩니다. |
lastSeen |
principal.asset.last_discover_time |
원시 로그의 lastSeen 값으로, 타임스탬프 (UNIX_MS 또는 UNIX 형식)로 파싱됩니다. |
해당 사항 없음 | metadata.event_type |
로그의 특정 이벤트 유형에서 재정의하지 않은 경우 'USER_RESOURCE_ACCESS'로 설정합니다. 그 외의 경우에는 'GENERIC_EVENT'로 설정합니다. |
해당 사항 없음 | metadata.product_name |
'CASB'로 하드코딩됩니다. |
해당 사항 없음 | metadata.vendor_name |
'Palo Alto Networks'로 하드코딩됩니다. |
policyDescription |
security_result.detection_fields[].key |
키는 'policyDescription'으로 설정됩니다. |
policyDescription |
security_result.detection_fields[].value |
원시 로그의 policyDescription 값입니다. |
policyId |
security_result.detection_fields[].key |
키가 '정책 ID'로 설정됩니다. |
policyId |
security_result.detection_fields[].value |
원시 로그의 policyId 값입니다. |
policyLabels |
additional.fields[].key |
키가 'policyLabels'로 설정됩니다. |
policyLabels |
additional.fields[].value.string_value |
원시 로그의 policyLabels 값입니다. |
policyName |
security_result.description |
원시 로그의 policyName 값입니다. |
policyRecommendation |
security_result.detection_fields[].key |
키가 '정책 권장사항'으로 설정됩니다. |
policyRecommendation |
security_result.detection_fields[].value |
원시 로그의 policyRecommendation 값입니다. |
policyType |
security_result.detection_fields[].key |
키가 '정책 유형'으로 설정됩니다. |
policyType |
security_result.detection_fields[].value |
원시 로그의 policyType 값입니다. |
reason |
security_result.summary |
원시 로그의 reason 값입니다. |
recommendation |
security_result.detection_fields[].key |
키가 '추천'으로 설정됩니다. |
recommendation |
security_result.detection_fields[].value |
원시 로그의 recommendation 값입니다. |
resource.additionalInfo |
principal.resource.attribute.labels[].key |
키가 'resource additionalInfo'로 설정됩니다. |
resource.additionalInfo |
principal.resource.attribute.labels[].value |
원시 로그의 resource.additionalInfo 값입니다. |
resource.cloudAccountGroups |
principal.resource.attribute.labels[].key |
키가 'resource cloudAccountGroups {index}'로 설정됩니다. |
resource.cloudAccountGroups |
principal.resource.attribute.labels[].value |
원시 로그의 resource.cloudAccountGroups[] 값입니다. |
resource.cloudType |
principal.resource.attribute.labels[].key |
키가 'resource cloudType'으로 설정됩니다. |
resource.cloudType |
principal.resource.attribute.labels[].value |
원시 로그의 resource.cloudType 값입니다. |
resource.data |
principal.resource.attribute.labels[].key |
키가 'resource data {nested_key}'로 설정됩니다. |
resource.data |
principal.resource.attribute.labels[].value |
원시 로그의 resource.data[] 값입니다. |
resource.id |
principal.resource.product_object_id |
원시 로그의 resource.id 값입니다. |
resource.name |
principal.resource.name |
원시 로그의 resource.name 값입니다. |
resource.region |
principal.location.country_or_region |
원시 로그의 resource.region 값입니다. |
resource.regionId |
principal.cloud.availability_zone |
원시 로그의 resource.regionId 값입니다. |
resource.resourceApiName |
principal.resource.attribute.labels[].key |
키가 'resource resourceApiName'으로 설정됩니다. |
resource.resourceApiName |
principal.resource.attribute.labels[].value |
원시 로그의 resource.resourceApiName 값입니다. |
resource.resourceTags |
principal.resource.attribute.labels[].key |
키가 'resource resourceTags {nested_key}'로 설정됩니다. |
resource.resourceTags |
principal.resource.attribute.labels[].value |
원시 로그의 resource.resourceTags[] 값입니다. |
resource.resourceTs |
principal.resource.attribute.labels[].key |
키가 'resource resourceTs'로 설정됩니다. |
resource.resourceTs |
principal.resource.attribute.labels[].value |
원시 로그의 resource.resourceTs 값입니다. |
resource.resourceType |
principal.resource.attribute.labels[].key |
키는 'resource resourceType'으로 설정됩니다. |
resource.resourceType |
principal.resource.attribute.labels[].value |
원시 로그의 resource.resourceType 값입니다. |
resource.rrn |
principal.resource.attribute.labels[].key |
키가 'resource rrn'으로 설정됩니다. |
resource.rrn |
principal.resource.attribute.labels[].value |
원시 로그의 resource.rrn 값입니다. |
resource.url |
principal.url |
원시 로그의 resource.url 값입니다. |
resourceCloudService |
principal.resource.attribute.labels[].key |
키가 '리소스 클라우드 서비스'로 설정됩니다. |
resourceCloudService |
principal.resource.attribute.labels[].value |
원시 로그의 resourceCloudService 값입니다. |
resourceName |
principal.resource.name |
원시 로그의 resourceName 값입니다. |
resourceRegion |
principal.location.country_or_region |
원시 로그의 resourceRegion 값입니다. |
resourceRegionId |
principal.cloud.availability_zone |
원시 로그의 resourceRegionId 값입니다. |
resourceType |
target.resource.resource_subtype |
원시 로그의 resourceType 값입니다. |
severity |
security_result.severity |
원시 로그의 severity 값으로, 대문자로 변환됩니다. UDM 심각도 값 (CRITICAL, HIGH, MEDIUM, LOW, INFORMATIONAL)에 매핑됩니다. |
source |
principal.application |
원시 로그의 source 값입니다. |
unifiedAssetId |
principal.asset.asset_id |
원시 로그의 unifiedAssetId 값이며, 'ASSETID:' 접두사가 붙습니다. |
변경사항
2023-12-10
- JSON 부분을 추출하는 Grok 패턴을 추가했습니다.
- 'resourceId'가 'principal.resource.product_object_id'에 매핑되었습니다.
- 'accountId'가 'target.resource.product_object_id'에 매핑되었습니다.
- 'alertRuleName'이 'security_result.rule_name'에 매핑되었습니다.
- 'accountName'이 'target.resource.name'에 매핑되었습니다.
- 'hasFinding'이 'security_result.detection_fields'에 매핑되었습니다.
- 'resourceRegionId'가 'principal.cloud.availability_zone'에 매핑되었습니다.
- 'source'가 'principal.application'에 매핑되었습니다.
- 'callbackUrl'이 'metadata.url_back_to_product'에 매핑되었습니다.
- 'alertRuleId'가 'security_result.rule_id'에 매핑되었습니다.
- 'alertId'가 'security_result.detection_fields'에 매핑되었습니다.
- 'policyLabels'가 'additional.fields'에 매핑되었습니다.
- 'policyName'이 'security_result.description'에 매핑되었습니다.
- 'resourceName'이 'principal.resource.name'에 매핑되었습니다.
- 'resourceRegion'이 'principal.location.country_or_region'에 매핑되었습니다.
- 'policyDescription'이 'security_result.detection_fields'에 매핑되었습니다.
- 'policyRecommendation'이 'security_result.detection_fields'에 매핑되었습니다.
- 'resourceCloudService'가 'principal.resource.attribute.labels'에 매핑되었습니다.
- 'resource.url'이 'principal.url'에 매핑되었습니다.
- 'alertTs'가 'security_result.detection_fields'에 매핑되었습니다.
- 'firstSeen'이 'principal.asset.first_seen_time'에 매핑되었습니다.
- 'lastSeen'이 'principal.asset.last_discover_time'에 매핑되었습니다.
- 'reason'이 'security_result.summary'에 매핑되었습니다.
- 'alertStatus'가 'security_result.detection_fields'에 매핑되었습니다.
- 'severity' 값이 'HIGH'인 경우 'security_result.severity'를 'HIGH'로 설정합니다.
- 'cloudType' 값이 'gcp'인 경우 'principal.cloud.environment'를 'GOOGLE_CLOUD_PLATFORM'으로 설정합니다.
2023-08-17
- 파서를 새로 만들었습니다.