Oracle Cloud Infrastructure - Oracle Cloud Guard 로그 수집

다음에서 지원:

이 문서에서는 웹훅을 사용하여 로그를 Google Security Operations로 푸시하도록 Oracle Cloud Infrastructure Cloud Guard를 구성하는 방법을 설명합니다.

Oracle Cloud Guard는 Oracle Cloud Infrastructure (OCI)에서 강력한 보안 상황을 모니터링, 식별, 유지하는 데 도움이 되는 클라우드 네이티브 보안 서비스입니다. Cloud Guard는 구성과 관련된 보안 취약점이 있는지 OCI 리소스를 검사하고 비정상적인 활동을 감지합니다. Cloud Guard가 감지기 규칙에서 벗어난 것을 발견하면 OCI 테넌시 전반에서 포괄적인 보안 모니터링을 제공하는 문제 이벤트가 생성됩니다. 이 통합은 OCI 이벤트 서비스와 OCI 함수를 사용하여 Cloud Guard 문제 이벤트를 거의 실시간으로 Google SecOps에 전달합니다.

시작하기 전에

다음 기본 요건이 충족되었는지 확인합니다.

  • Google SecOps 인스턴스
  • Cloud Guard가 사용 설정된 활성 Oracle Cloud Infrastructure 테넌시
  • Oracle Cloud Infrastructure 콘솔에 대한 관리자 액세스 권한
  • OCI Functions 애플리케이션을 만들고 관리할 수 있는 권한
  • OCI 이벤트 규칙 및 알림 주제를 만들 수 있는 권한
  • OCI Cloud Shell 또는 Fn Project CLI가 설치된 로컬 환경에 대한 액세스
  • Docker 설치 (로컬에서 OCI 함수 빌드용)
  • Google Cloud 콘솔 액세스 (API 키 생성용)

Google SecOps에서 웹훅 피드 만들기

피드 만들기

  1. SIEM 설정 > 피드로 이동합니다.
  2. 새 피드 추가를 클릭합니다.
  3. 다음 페이지에서 단일 피드 구성을 클릭합니다.
  4. 피드 이름 필드에 피드 이름을 입력합니다(예: OCI Cloud Guard Problems).
  5. 소스 유형으로 Webhook을 선택합니다.
  6. 로그 유형으로 Oracle Cloud Infrastructure - Oracle Cloud Guard를 선택합니다.
  7. 다음을 클릭합니다.
  8. 다음 입력 파라미터의 값을 지정합니다.
    • 분할 구분자 (선택사항): 비워 둡니다 (각 함수 호출이 단일 이벤트를 전송함).
    • 애셋 네임스페이스: 애셋 네임스페이스
    • 수집 라벨: 이 피드의 이벤트에 적용할 라벨
  9. 다음을 클릭합니다.
  10. 확정 화면에서 새 피드 구성을 검토한 다음 제출을 클릭합니다.

보안 비밀 키 생성 및 저장

피드를 만든 후 인증을 위한 보안 비밀 키를 생성해야 합니다.

  1. 피드 세부정보 페이지에서 보안 비밀 키 생성을 클릭합니다.
  2. 대화상자에 보안 비밀 키가 표시됩니다.
  3. 보안 비밀 키를 안전하게 복사하여 저장합니다.

중요: 보안 비밀 키는 한 번만 표시되며 나중에 검색할 수 없습니다. 분실할 경우 새 보안 키를 생성해야 합니다.

피드 엔드포인트 URL 가져오기

  1. 피드의 세부정보 탭으로 이동합니다.
  2. 엔드포인트 정보 섹션에서 피드 엔드포인트 URL을 복사합니다.
  3. URL 형식은 다음과 같습니다.

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    

    또는

    https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    
  4. 다음 단계를 위해 이 URL을 저장합니다.

  5. 완료를 클릭합니다.

Google Cloud API 키 만들기

Chronicle에는 인증을 위한 API 키가 필요합니다. Google Cloud 콘솔에서 제한된 API 키를 만듭니다.

API 키 만들기

  1. Google Cloud 콘솔 사용자 인증 정보 페이지로 이동합니다.
  2. 프로젝트 (Chronicle 인스턴스와 연결된 프로젝트)를 선택합니다.
  3. 사용자 인증 정보 만들기 API 키를 클릭합니다.
  4. API 키가 생성되어 대화상자에 표시됩니다.
  5. API 키 수정을 클릭하여 키를 제한합니다.

API 키 제한

  1. API 키 설정 페이지에서 다음을 수행합니다.
    • 이름: 설명이 포함된 이름 (예: Chronicle Webhook API Key)을 입력합니다.
  2. API 제한사항에서 다음을 실행합니다.
    1. 키 제한을 선택합니다.
    2. API 선택 드롭다운에서 Google SecOps API (또는 Chronicle API)를 검색하여 선택합니다.
  3. 저장을 클릭합니다.
  4. 페이지 상단의 API 키 필드에서 API 키 값을 복사합니다.
  5. API 키를 안전하게 저장합니다.

Cloud Guard Cloud Event 응답자 사용 설정

Cloud Guard는 클라우드 이벤트 응답자를 사용하여 문제 세부정보를 OCI 이벤트 서비스에 내보냅니다. Cloud Event 응답자는 응답자 레시피의 일부이며 사용 설정되어 자동으로 실행되도록 설정해야 합니다.

Responder 레시피에서 Cloud Event 규칙 사용 설정

  1. Oracle Cloud Infrastructure 콘솔에 로그인합니다.
  2. 탐색 메뉴를 열고 ID 및 보안 > Cloud Guard > 레시피를 선택합니다.
  3. Responder Recipes를 선택합니다.
  4. 타겟에 연결된 응답자 레시피를 클릭합니다.
  5. Responder Rules(응답자 규칙) 섹션에서 Cloud Events(클라우드 이벤트) 규칙을 찾습니다.
  6. 상태가 사용 중지됨인 경우:
    1. 작업 메뉴 (점 3개)를 열고 수정을 선택합니다.
    2. 상태를 사용 설정됨으로 변경합니다.
    3. 저장을 클릭합니다.

타겟에서 자동 실행 구성

  1. Oracle Cloud Infrastructure 콘솔에서 탐색 메뉴를 열고 ID 및 보안 > Cloud Guard > 구성 > 타겟을 선택합니다.
  2. 타겟 컴파트먼트를 선택합니다.
  3. 리소스에서 대답 도우미 레시피를 선택합니다.
  4. 응답자 레시피 링크를 클릭합니다.
  5. Cloud Event 응답자 규칙을 찾습니다.
  6. 작업 메뉴 (점 3개)를 열고 수정을 선택합니다.
  7. 규칙 트리거를 자동 실행으로 설정합니다.
  8. 자동 실행 확인 체크박스를 선택합니다.
  9. 저장을 클릭합니다.

OCI Functions 애플리케이션 만들기

Cloud Guard 이벤트를 Google SecOps로 전달하는 역할을 하는 함수를 호스팅할 OCI Functions 애플리케이션을 만듭니다.

애플리케이션 만들기

  1. Oracle Cloud Infrastructure 콘솔에서 탐색 메뉴를 열고 개발자 서비스 > 함수 > 애플리케이션을 선택합니다.
  2. 애플리케이션을 만들 컴파트먼트를 선택합니다.
  3. 애플리케이션 만들기를 클릭합니다.
  4. 다음 구성 세부정보를 제공합니다.
    • 이름: cloudguard-chronicle-forwarder을 입력합니다.
    • VCN: 인터넷 액세스 권한이 있는 VCN을 선택합니다 (함수가 Chronicle 웹훅 엔드포인트에 도달하는 데 필요).
    • 서브넷: NAT 게이트웨이가 구성된 공개 서브넷 또는 비공개 서브넷을 선택합니다.
  5. 만들기를 클릭합니다.

함수 만들기 및 배포

OCI Cloud Shell 또는 Fn Project CLI가 설치된 로컬 환경을 사용하여 함수를 만들고 배포합니다.

  1. Oracle Cloud Infrastructure 콘솔에서 OCI Cloud Shell을 엽니다 (상단 탐색 메뉴에서 Cloud Shell 아이콘 클릭).
  2. OCI Functions 애플리케이션의 Fn 컨텍스트를 설정합니다.

    fn list context
    fn use context <your-region-context>
    fn update context oracle.compartment-id <compartment_OCID>
    fn update context registry <region-key>.ocir.io/<tenancy-namespace>/cloudguard-chronicle
    
  3. 새 Python 함수를 초기화합니다.

    fn init --runtime python cloudguard-to-chronicle
    cd cloudguard-to-chronicle
    
  4. func.py 파일의 내용을 다음 코드로 바꿉니다.

    import io
    import json
    import logging
    import requests
    
    from fdk import response
    
    def handler(ctx, data: io.BytesIO = None):
        """
        OCI Function that receives Cloud Guard events from OCI Events Service
        and forwards them to Google SecOps (Chronicle) webhook endpoint.
        """
        logger = logging.getLogger()
    
        try:
            cfg = ctx.Config()
            chronicle_endpoint = cfg.get("CHRONICLE_ENDPOINT")
            chronicle_api_key = cfg.get("CHRONICLE_API_KEY")
            chronicle_secret = cfg.get("CHRONICLE_SECRET")
    
            if not all([chronicle_endpoint, chronicle_api_key, chronicle_secret]):
                logger.error("Missing required configuration: CHRONICLE_ENDPOINT, CHRONICLE_API_KEY, or CHRONICLE_SECRET")
                return response.Response(
                    ctx, response_data=json.dumps({"error": "Missing configuration"}),
                    headers={"Content-Type": "application/json"}, status_code=500
                )
    
            event_data = json.loads(data.getvalue())
            logger.info(f"Received Cloud Guard event: {event_data.get('eventType', 'unknown')}")
    
            webhook_url = f"{chronicle_endpoint}?key={chronicle_api_key}&secret={chronicle_secret}"
    
            headers = {
                "Content-Type": "application/json"
            }
    
            resp = requests.post(
                webhook_url,
                json=event_data,
                headers=headers,
                timeout=30
            )
    
            if resp.status_code >= 200 and resp.status_code < 300:
                logger.info(f"Successfully forwarded event to Chronicle (HTTP {resp.status_code})")
            else:
                logger.error(f"Failed to forward event to Chronicle (HTTP {resp.status_code}): {resp.text}")
    
            return response.Response(
                ctx, response_data=json.dumps({"status": resp.status_code}),
                headers={"Content-Type": "application/json"}, status_code=200
            )
    
        except Exception as e:
            logger.error(f"Error processing Cloud Guard event: {str(e)}")
            return response.Response(
                ctx, response_data=json.dumps({"error": str(e)}),
                headers={"Content-Type": "application/json"}, status_code=500
            )
    
  5. requirements.txt 파일의 내용을 바꿉니다.

    fdk>=0.1.0
    requests>=2.25.0
    
  6. 애플리케이션에 함수를 배포합니다.

    fn -v deploy --app cloudguard-chronicle-forwarder
    
  7. 배포가 완료될 때까지 기다립니다.

함수 환경 변수 구성

  1. Oracle Cloud Infrastructure 콘솔에서 탐색 메뉴를 열고 개발자 서비스 > 함수 > 애플리케이션을 선택합니다.
  2. cloudguard-chronicle-forwarder 애플리케이션을 클릭합니다.
  3. 리소스에서 함수를 선택합니다.
  4. cloudguard-to-chronicle 함수를 클릭합니다.
  5. 리소스에서 구성을 선택합니다.
  6. 수정을 클릭하고 다음 키-값 쌍을 추가합니다.

    키 값
    CHRONICLE_ENDPOINT Chronicle 웹훅 엔드포인트 URL (예: https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate)
    CHRONICLE_API_KEY Chronicle 웹훅용으로 생성된 Google Cloud API 키
    CHRONICLE_SECRET Chronicle 웹훅 보안 비밀 키
  7. 저장을 클릭합니다.

OCI Functions용 IAM 정책 만들기

OCI Functions 서비스와 Events 서비스에는 함수를 호출하기 위한 IAM 정책이 필요합니다.

함수의 동적 그룹 만들기

  1. Oracle Cloud Infrastructure 콘솔에서 탐색 메뉴를 열고 ID 및 보안 > 도메인을 선택합니다.
  2. 기본 도메인을 선택합니다.
  3. ID 도메인 리소스에서 동적 그룹을 선택합니다.
  4. 동적 그룹 만들기를 클릭합니다.
  5. 다음 구성 세부정보를 제공합니다.

    • 이름: cloudguard-chronicle-functions을 입력합니다.
    • 설명: Dynamic group for Cloud Guard to Chronicle forwarder function를 입력합니다.
    • 일치 규칙: 다음 규칙을 입력합니다.
    ALL {resource.type = 'fnfunc', resource.compartment.id = '<compartment_OCID>'}
    
  6. 만들기를 클릭합니다.

IAM 정책 만들기

  1. Oracle Cloud Infrastructure 콘솔에서 탐색 메뉴를 열고 ID 및 보안 > 정책을 선택합니다.
  2. 루트 컴파트먼트에 있는지 확인합니다.
  3. 정책 만들기를 클릭합니다.
  4. 다음 구성 세부정보를 제공합니다.
    • 이름: cloudguard-chronicle-policy을 입력합니다.
    • 설명: Allows Events Service to invoke Cloud Guard Chronicle forwarder function를 입력합니다.
    • Compartment: 루트 컴파트먼트가 선택되어 있는지 확인합니다.
  5. 정책 빌더 섹션에서 수동 편집기 표시를 전환합니다.
  6. 문 필드에 다음 정책 문을 입력합니다.

    Allow dynamic-group cloudguard-chronicle-functions to use fn-function in compartment <compartment_name>
    Allow dynamic-group cloudguard-chronicle-functions to use fn-invocation in compartment <compartment_name>
    Allow service cloudguardevents to use fn-function in compartment <compartment_name>
    Allow service cloudguardevents to use fn-invocation in compartment <compartment_name>
    
  7. 만들기를 클릭합니다.

Cloud Guard용 OCI 이벤트 규칙 만들기

Cloud Guard에서 문제를 감지, 해제 또는 해결할 때 OCI 함수를 트리거하는 이벤트 규칙을 만듭니다.

이벤트 규칙 만들기

  1. Oracle Cloud Infrastructure 콘솔에서 탐색 메뉴를 열고 관측 가능성 및 관리 > 이벤트 서비스 > 규칙을 선택합니다.

  2. 규칙 만들기를 클릭합니다.

  3. 다음 구성 세부정보를 제공합니다.

    • 표시 이름: cloudguard-to-chronicle를 입력합니다.
    • 설명: Forwards Cloud Guard problem events to Google SecOps via OCI Functions를 입력합니다.
  4. 규칙 조건 섹션에서 다음을 수행합니다.

    1. 조건을 이벤트 유형으로 설정합니다.
    2. 서비스 이름을 Cloud Guard로 설정합니다.
    3. 이벤트 유형을 다음으로 설정합니다 (여러 개 선택 가능).
      • 감지됨 - 문제
      • 거부됨 - 문제
      • 해결됨 - 문제
  5. 작업 섹션에서 다음을 수행합니다.

    1. 작업 유형을 함수로 설정합니다.
    2. 함수 컴파트먼트를 함수 애플리케이션이 포함된 컴파트먼트로 설정합니다.
    3. 함수 애플리케이션을 cloudguard-chronicle-forwarder로 설정합니다.
    4. 함수를 cloudguard-to-chronicle로 설정합니다.
  6. 규칙 만들기를 클릭합니다.

선택사항: 위험 수준별로 필터링

심각도가 높은 문제만 전달하려면 이벤트 규칙에 속성 필터를 추가하세요.

  1. 규칙 조건 섹션에서 + 다른 조건을 클릭합니다.
  2. 조건을 속성으로 설정합니다.
  3. 속성 이름을 riskLevel로 설정합니다.
  4. 속성 값을 원하는 위험 수준으로 설정합니다.

    • CRITICAL
    • HIGH

통합 확인

함수를 수동으로 테스트

  1. Oracle Cloud Infrastructure 콘솔에서 탐색 메뉴를 열고 개발자 서비스 > 함수 > 애플리케이션을 선택합니다.
  2. cloudguard-chronicle-forwarder 애플리케이션을 클릭합니다.
  3. 리소스에서 함수를 선택합니다.
  4. cloudguard-to-chronicle 함수를 클릭합니다.
  5. 호출을 클릭하여 샘플 데이터로 함수를 테스트하거나 OCI Cloud Shell을 사용합니다.

    echo '{"eventType":"com.oraclecloud.cloudguard.problemdetected","cloudEventsVersion":"0.1","eventID":"test-event-001","data":{"compartmentId":"ocid1.compartment.oc1..example","resourceName":"test-problem","additionalDetails":{"riskLevel":"HIGH","problemDescription":"Test problem for integration verification","status":"OPEN","region":"us-ashburn-1"}}}' | fn invoke cloudguard-chronicle-forwarder cloudguard-to-chronicle
    
  6. 개발자 서비스 > 함수 > 애플리케이션 > cloudguard-chronicle-forwarder로 이동하여 로그 섹션을 선택하여 함수 로그를 확인합니다.

  7. 성공적인 전달을 확인하는 로그 항목을 찾습니다.

    Received Cloud Guard event: com.oraclecloud.cloudguard.problemdetected
    Successfully forwarded event to Chronicle (HTTP 200)
    

Google SecOps에서 확인

  1. Google SecOps에 로그인합니다.
  2. 검색으로 이동하여 로그 유형이 OCI_CLOUDGUARD인 이벤트를 쿼리합니다.
  3. Cloud Guard 문제 이벤트가 검색 결과에 표시되는지 확인합니다.

일정이 표시되지 않는 경우:

  • 함수 구성에서 Chronicle 웹훅 엔드포인트 URL, API 키, 보안 비밀 키 확인
  • 이벤트 규칙이 올바른 OCI 리전 (Cloud Guard 보고 리전)에 있는지 확인합니다.
  • Cloud Event 응답기가 사용 설정되어 있고 자동 실행으로 설정되어 있는지 확인합니다.
  • 오류 메시지에 대한 함수 로그 검토

Cloud Guard 이벤트 유형 참조

Cloud Guard는 OCI 이벤트 서비스를 통해 다음 이벤트 유형을 내보냅니다.

이벤트 유형 트리거
com.oraclecloud.cloudguard.problemdetected 새로운 문제가 감지됨
com.oraclecloud.cloudguard.problemdismissed 문제가 닫힘
com.oraclecloud.cloudguard.problemremediated 문제가 해결됨
com.oraclecloud.cloudguard.sightingdetected 새로운 발견이 감지됨

인증 방법 참조

Chronicle 웹훅 피드는 여러 인증 방법을 지원합니다. 공급업체에서 지원하는 방법을 선택합니다.

공급업체에서 맞춤 HTTP 헤더를 지원하는 경우 이 방법을 사용하여 보안을 강화하세요.

  • 요청 형식:

    POST <ENDPOINT_URL> HTTP/1.1
    Content-Type: application/json
    x-goog-chronicle-auth: <API_KEY>
    x-chronicle-auth: <SECRET_KEY>
    
    {
            "event": "data",
            "timestamp": "2025-01-15T10:30:00Z"
    }
    

장점:

  • API 키 및 보안 비밀이 URL에 표시되지 않음
  • 더 안전함 (헤더가 웹 서버 액세스 로그에 기록되지 않음)
  • 공급업체에서 지원하는 경우 선호되는 방법

방법 2: 쿼리 매개변수

공급업체에서 맞춤 헤더를 지원하지 않는 경우 사용자 인증 정보를 URL에 추가하세요.

  • URL 형식:

    <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>
    
  • 예:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...&secret=abcd1234...
    
  • 요청 형식:

    POST <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY> HTTP/1.1
    Content-Type: application/json
    
    {
            "event": "data",
            "timestamp": "2025-01-15T10:30:00Z"
    }
    

단점:

  • URL에 사용자 인증 정보가 표시됨
  • 웹 서버 액세스 로그에 기록될 수 있음
  • 헤더보다 보안 수준이 낮음

방법 3: 하이브리드 (URL + 헤더)

일부 구성에서는 URL에 API 키를 사용하고 헤더에 비밀 키를 사용합니다.

  • 요청 형식:

    POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1
    Content-Type: application/json
    x-chronicle-auth: <SECRET_KEY>
    
    {
            "event": "data",
            "timestamp": "2025-01-15T10:30:00Z"
    }
    

인증 헤더 이름

Chronicle은 인증을 위해 다음 헤더 이름을 허용합니다.

  • API 키의 경우:

    • x-goog-chronicle-auth(권장)
    • X-Goog-Chronicle-Auth (대소문자 구분 안 함)
  • 보안 비밀 키:

    • x-chronicle-auth(권장)
    • X-Chronicle-Auth (대소문자 구분 안 함)

웹훅 한도 및 권장사항

요청 한도

한도 값
최대 요청 크기 4MB
최대 QPS (초당 쿼리 수) 15,000
요청 제한 시간 30초
재시도 동작 지수 백오프를 사용한 자동

UDM 매핑 테이블

로그 필드 UDM 매핑 로직
contentType additional.fields 다양한 추가 필드에서 병합됨
cloudEventsVersion additional.fields
data.additionalDetails.reason additional.fields
data.additionalDetails.tenantId additional.fields
data.additionalDetails.problemType additional.fields
data.resourceName additional.fields
data.resourceId additional.fields
상태 additional.fields
problem_recommendation additional.fields
compartment_id additional.fields
compartment_name additional.fields
product_event extensions.auth.type product_event가 로그인과 일치하는 경우 'AUTHTYPE_UNSPECIFIED'로 설정됩니다.
data.additionalDetails.problemDescription metadata.description 비어 있지 않은 경우 data.additionalDetails.problemDescription의 값, 그렇지 않은 경우 data.additionalDetails.description
data.additionalDetails.description metadata.description
has_user metadata.event_type has_user 및 has_target_resource인 경우 USER_RESOURCE_ACCESS, has_user인 경우 USER_UNCATEGORIZED, product_event가 login과 일치하는 경우 USER_LOGIN, has_principal인 경우 STATUS_UPDATE, 그 밖의 경우 GENERIC_EVENT로 설정됩니다.
has_target_resource metadata.event_type
product_event metadata.event_type
has_principal metadata.event_type
eventType metadata.product_event_type 비어 있지 않은 경우 eventType의 값, 비어 있는 경우 product_event
product_event metadata.product_event_type
eventID metadata.product_log_id 값이 직접 복사됨
버전 metadata.product_version 값이 직접 복사됨
관찰자 observer.domain.name grok을 사용하여 관찰자로부터 추출된 도메인
관찰자 observer.hostname IP가 아닌 경우 관찰자의 값
관찰자 observer.ip IP인 경우 관찰자의 값
주 구성원 principal.administrative_domain grok을 사용하여 주 구성원 또는 principal_host에서 추출된 도메인
principal_host principal.administrative_domain
data.additionalDetails.problemAdditionalDetails.public_ips principal.asset.ip 비어 있지 않은 경우 data.additionalDetails.problemAdditionalDetails.public_ips의 값, 비어 있지 않은 경우 vnicDetails.0.vnicPublicIp의 값, IP인 경우 주체에서, IP인 경우 principal_host에서
vnicDetails.0.vnicPublicIp principal.asset.ip
주 구성원 principal.asset.ip
principal_host principal.asset.ip
주 구성원 principal.hostname IP가 아닌 경우 주 구성원의 값, IP가 아닌 경우 principal_host
principal_host principal.hostname
data.additionalDetails.problemAdditionalDetails.public_ips principal.ip 비어 있지 않은 경우 data.additionalDetails.problemAdditionalDetails.public_ips의 값, 비어 있지 않은 경우 vnicDetails.0.vnicPublicIp의 값, IP인 경우 principal의 값, IP인 경우 principal_host의 값
vnicDetails.0.vnicPublicIp principal.ip
주 구성원 principal.ip
principal_host principal.ip
data.additionalDetails.region principal.location.name 값이 직접 복사됨
principal_port principal.port principal_port에서 정수로 변환됨
data.additionalDetails.resourceName principal.resource.name 비어 있지 않은 경우 data.additionalDetails.resourceName의 값, 그렇지 않은 경우 data.additionalDetails.principalResourceName
data.additionalDetails.principalResourceName principal.resource.name
data.additionalDetails.resourceId principal.resource.product_object_id 비어 있지 않은 경우 data.additionalDetails.resourceId의 값, 그렇지 않은 경우 data.additionalDetails.principalResourceId
data.additionalDetails.principalResourceId principal.resource.product_object_id
data.additionalDetails.resourceType principal.resource.resource_subtype data.additionalDetails.resourceType이 비어 있지 않으면 해당 값, 그렇지 않으면 data.additionalDetails.principalResourceType
data.additionalDetails.principalResourceType principal.resource.resource_subtype
data.additionalDetails.resourceName principal.user.userid data.additionalDetails.resourceType == 'User'인 경우 data.additionalDetails.resourceName의 값, 그렇지 않은 경우 data.additionalDetails.principalResourceType == 'User'인 경우 data.additionalDetails.principalResourceName의 값
data.additionalDetails.principalResourceName principal.user.userid
action security_result.action 작업이 차단과 일치하면 BLOCK으로 설정하고, 성공하면 ALLOW로 설정하고, 실패하면 FAIL로 설정하고, 그 외의 경우에는 UNKNOWN으로 설정합니다.
action security_result.action_details 값이 직접 복사됨
data.additionalDetails.tacticName security_result.attack_details.tactics 값이 tactic_data.name에 직접 복사된 후 병합됨
data.additionalDetails.techniqueName security_result.attack_details.techniques 값이 technique_data.name에 직접 복사된 후 병합됨
data.additionalDetails.confidence security_result.confidence_score 값이 직접 복사됨
sightingType security_result.detection_fields sightingType, sightingScore, riskScore 라벨에서 병합됨
sightingScore security_result.detection_fields
riskScore security_result.detection_fields
data.additionalDetails.detectorRuleId security_result.rule_id 값이 직접 복사됨
data.additionalDetails.detectorRuleType security_result.rule_name 값이 직접 복사됨
줄이는 것을 security_result.severity 심각도가 INFO인 경우 INFORMATIONAL로 설정, 심각도가 Low인 경우 LOW로 설정, 심각도가 WARN인 경우 MEDIUM으로 설정, 심각도가 High인 경우 HIGH로 설정, 심각도가 Critical인 경우 CRITICAL로 설정
줄이는 것을 security_result.severity_details 값이 직접 복사됨
대상 target.administrative_domain grok을 사용하여 타겟 또는 target_host에서 도메인을 추출함
target_host target.administrative_domain
대상 target.hostname IP가 아닌 경우 타겟의 값, IP가 아닌 경우 target_host
target_host target.hostname
대상 target.ip IP인 경우 타겟의 값, IP가 아닌 경우 target_host
target_host target.ip
target_port target.port target_port에서 정수로 변환됨
targetId target.resource.attribute.labels 다양한 라벨 필드에서 병합됨
labels target.resource.attribute.labels
vnicAttachmentId target.resource.attribute.labels
vnicAttachmentDisplayName target.resource.attribute.labels
subnets target.resource.attribute.labels
instance_ocid target.resource.attribute.labels
route_table_ocids target.resource.attribute.labels
security_list_ocids target.resource.attribute.labels
data.additionalDetails.impactedResourceName target.resource.name 비어 있지 않은 경우 data.additionalDetails.impactedResourceName의 값, 그렇지 않은 경우 vnicDetails.0.vnicDisplayName
vnicDetails.0.vnicDisplayName target.resource.name
data.additionalDetails.impactedResourceId target.resource.product_object_id 비어 있지 않은 경우 data.additionalDetails.impactedResourceId의 값, 그렇지 않은 경우 vnicDetails.0.vnicId
vnicDetails.0.vnicId target.resource.product_object_id
data.additionalDetails.impactedResourceType target.resource.resource_subtype 값이 직접 복사됨
target_url target.url 값이 직접 복사됨
target_user target.user.userid 값이 직접 복사됨
제품 metadata.product_name 값이 직접 복사됨
vendor metadata.vendor_name 값이 직접 복사됨
data.additionalDetails.tacticName security_result.attack_details.tactics.name 변경 로그에서 매핑됨
data.additionalDetails.techniqueName security_result.attack_details.techniques.name 변경 로그에서 매핑됨

변경 로그

이 파서의 변경 로그 보기

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.