Cisco Identity Intelligence 로그 수집

다음에서 지원:

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

Cisco Identity Intelligence (이전 명칭: Oort Security)는 ID 위협 감지 및 대응 플랫폼으로, ID 제공업체 전반에서 사용자 행동, 인증 패턴, 기기 사용, 액세스 권한을 지속적으로 모니터링합니다. 사용자 활동, 실패한 보안 검사, 신뢰 점수, 위험한 행동을 분석하여 ID 기반 위협, 구성 오류, 규정 준수 위반을 감지합니다.

시작하기 전에

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

  • Google SecOps 인스턴스
  • Cisco Identity Intelligence 테넌트에 대한 권한 액세스
  • Cisco Identity Intelligence에서 통합을 관리할 수 있는 관리 권한
  • Google Cloud 콘솔 액세스 (API 키 생성용)

Google SecOps에서 웹훅 피드 만들기

피드 만들기

  1. SIEM 설정 > 피드로 이동합니다.
  2. 새 피드 추가를 클릭합니다.
  3. 다음 페이지에서 단일 피드 구성을 클릭합니다.
  4. 피드 이름 필드에 피드 이름을 입력합니다(예: Cisco Identity Intelligence Events).
  5. 소스 유형으로 Webhook을 선택합니다.
  6. 로그 유형으로 Cisco Identity Intelligence를 선택합니다.
  7. 다음을 클릭합니다.
  8. 다음 입력 파라미터의 값을 지정합니다.
    • 분할 구분자 (선택사항): 여러 줄 이벤트를 분할하려면 \n를 입력합니다.
    • 애셋 네임스페이스: 애셋 네임스페이스
    • 수집 라벨: 이 피드의 이벤트에 적용할 라벨입니다.
  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 키를 안전하게 저장합니다.

Cisco Identity Intelligence 웹훅 구성

웹훅 URL 구성

  • Chronicle 엔드포인트 URL과 API 키를 결합합니다.

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

      https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...&secret=abcd1234...
      

다음을 바꿉니다.

  • <ENDPOINT_URL>: 이전에 복사한 Chronicle 피드 엔드포인트 URL
  • <API_KEY>: 이전에 만든 Google Cloud API 키
  • <SECRET_KEY>: 이전에 생성된 Chronicle 웹훅 보안 비밀 키

Cisco Identity Intelligence에서 웹훅 알림 대상 만들기

  1. Cisco Identity Intelligence에 로그인합니다.
  2. 통합으로 이동합니다.
  3. 통합 추가를 클릭합니다.
  4. 웹훅 섹션까지 아래로 스크롤합니다.
  5. 웹훅 타겟 추가를 클릭합니다.
  6. 다음 구성 세부정보를 제공합니다.
    • 이름: 설명이 포함된 이름을 입력합니다 (예: Chronicle SIEM Integration).
    • 웹훅 URL: 위의 API 키와 보안 비밀 키가 포함된 전체 엔드포인트 URL을 붙여넣습니다.
    • 승인 유형: API 키를 선택합니다.
    • API 키 이름: 키 이름을 입력합니다 (예: x-goog-chronicle-auth).
    • API 키 값: Google Cloud API 키를 입력합니다.
  7. 호출 HTTP 매개변수 섹션을 펼칩니다.
  8. 헤더 유형으로 다음 매개변수를 추가합니다.
    • 키: Content-Type, 값: application/json
    • 키: Accept, 값: application/json
  9. 이 타겟 사용 섹션에서 실패한 검사를 선택하여 본인 확인에서 실패한 결과가 감지되면 알림을 받습니다.
  10. 저장을 클릭합니다.

웹훅 연결 테스트

  1. 통합 페이지에서 생성한 웹훅 알림 대상을 찾습니다.
  2. 행 오른쪽에 있는 점 3개 메뉴를 클릭합니다.
  3. 연결 테스트를 선택합니다.
  4. 테스트 메시지가 전송되었는지 확인합니다.

본인 확인을 위한 웹훅 사용 설정

웹훅 알림 대상을 만든 후에는 모니터링하려는 특정 본인 확인에 대해 이를 사용 설정해야 합니다.

  1. Cisco Identity Intelligence에서 원하는 확인 세부정보 페이지로 이동합니다.
  2. 페이지 오른쪽 상단의 드롭다운을 펼칩니다.
  3. 만든 웹훅 알림 타겟의 체크박스를 선택합니다.
  4. Google SecOps에 전송할 각 검사에 대해 이 단계를 반복합니다.

자세한 내용은 Cisco Identity Intelligence 웹훅 문서를 참조하세요.

인증 방법 참조

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"
    }
    

장점:

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

방법 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 매핑 로직
계정 account_label.value 값이 직접 복사됨
계정 account_label.key 'account'로 설정
account_label security_result.detection_fields detection_fields로 병합됨
additional_detaildescription.key additional_detaildescription.key '세부 설명'으로 설정
detaildescription additional_detaildescription.value.list_value.values detaildescription에서 병합됨
additional_detaildescription event.idm.read_only_udm.additional.fields additional.fields에 병합됨
additional_recommendedaction.key additional_recommendedaction.key '추천 작업'으로 설정
recommendedAction additional_recommendedaction.value.list_value.values recommendedAction에서 병합됨
additional_recommendedaction event.idm.read_only_udm.additional.fields additional.fields로 병합됨
data1 usersFailing_label 값이 직접 복사됨
data.login login_label 값이 직접 복사됨
detail-type security_result.summary 값이 직접 복사됨
detail.id security_result.rule_id 값이 직접 복사됨
detail.title security_result.rule_name 값이 직접 복사됨
detail.severity security_result.severity [CRITICAL,ERROR,HIGH,INFORMATIONAL,LOW,MEDIUM]에 있는 경우 detail.severity의 값, 그렇지 않고 moderate인 경우 MEDIUM
detaildescription value_array.string_value 값이 직접 복사됨
detailsdata.key add_label.value, add_label.key detailsdata.value의 값, 실패한 SigninDetails 또는 ips가 아닌 경우 키는 'loginDetails %{index} details %{detailindex} %{detailsdata.key}'입니다.
detailsdata.value add_label.value, add_label.key
detailsdata.key security_result.detection_fields 조건이 충족되면 add_label 병합
detailsdata.value security_result.detection_fields
field_.value security_result.detection_fields ipAddress, ip 등을 제외하고 '%{index} %{detailindex} %{index1} %{key}' 등의 키가 있는 json_array (msg, ipInfo, asn, coordinates, first_event, second_event, locations)의 다양한 중첩 필드에 병합되었습니다.
field_.key security_result.detection_fields
id metadata.product_log_id 값이 직접 복사됨
login_label principal.user.email_addresses 이메일 정규식과 일치하는 경우 병합됨
msg.ipAddress principal.ip 비어 있지 않으면 병합됨
msg.first_event.ip_address principal.ip 비어 있지 않으면 병합됨
msg.second_event.ip_address principal.ip 비어 있지 않으면 병합됨
msg_travels_first_event_ip_address principal.ip 비어 있지 않으면 병합됨
msg_travels_second_event_ip_address principal.ip
recommendedAction value_array.string_value 값이 직접 복사됨
security_result event.idm.read_only_udm.security_result security_result에 병합됨
source source_label.value 값이 직접 복사됨
source source_label.key 'source'로 설정
source_label event.idm.read_only_udm.src.labels src.labels로 병합됨
시간 @timestamp ISO8601, RFC 3339, yyyy-MM-ddTHH:mm:ss.SSSSSSZ를 사용하는 날짜 필터를 사용하여 파싱됨
usersFailing_label principal.user.email_addresses 이메일 정규식과 일치하는 경우 병합됨
버전 metadata.product_version 값이 직접 복사됨
has_principal event.idm.read_only_udm.metadata.event_type has_principal이 true이면 'STATUS_UPDATE', has_user가 true이면 'USER_UNCATEGORIZED', 그 외에는 'GENERIC_EVENT'로 설정됩니다.
has_user event.idm.read_only_udm.metadata.event_type
metadata.product_name metadata.product_name 'OORT'로 설정
metadata.vendor_name metadata.vendor_name 'OORT'로 설정합니다.
detail.published event.idm.read_only_udm.metadata.collected_timestamp 변경 로그에서 매핑됨
detail.login event.idm.read_only_udm.principal.user.userid 변경 로그에서 매핑됨
detail.userTrustLevel event.idm.read_only_udm.principal.user.attribute.labels 변경 로그에서 매핑됨
detail.login event.idm.read_only_udm.principal.user.user_display_name 변경 로그에서 매핑됨
detail.checkTopics event.idm.read_only_udm.security_result.category_details 변경 로그에서 매핑됨
region event.idm.read_only_udm.additional.fields 변경 로그에서 매핑됨
detail.checkId event.idm.read_only_udm.security_result.detection_fields 변경 로그에서 매핑됨
detail.checkScope event.idm.read_only_udm.security_result.detection_fields 변경 로그에서 매핑됨
detail.frameworks event.idm.read_only_udm.security_result.detection_fields 변경 로그에서 매핑됨
detail.explainabilityEventIds event.idm.read_only_udm.security_result.detection_fields 변경 로그에서 매핑됨
data.value event.idm.read_only_udm.security_result.detection_fields 변경 로그에서 매핑됨

변경 로그

이 파서의 변경 로그 보기

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