Fivetran 로그 수집

다음에서 지원:

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

Fivetran은 다양한 소스에서 데이터 웨어하우스로의 데이터 파이프라인을 자동화하는 데이터 통합 플랫폼입니다. Fivetran은 커넥터 동기화 이벤트, 변환 이벤트, 연결 상태 변경 등 운영 이벤트를 생성합니다. 이러한 이벤트는 모니터링, 알림, 보안 분석을 위해 아웃바운드 웹훅을 통해 외부 엔드포인트로 전송될 수 있습니다.

시작하기 전에

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

  • Google SecOps 인스턴스
  • 관리자 또는 계정 수준 권한이 있는 Fivetran 계정
  • Google Cloud 콘솔 액세스 (API 키 생성용)
  • Business Critical 또는 Enterprise 요금제의 Fivetran 계정 (웹훅 기능용)

Google SecOps에서 웹훅 피드 만들기

피드 만들기

  1. SIEM 설정> 피드로 이동합니다.
  2. 새 피드 추가를 클릭합니다.
  3. 다음 페이지에서 단일 피드 구성을 클릭합니다.
  4. 피드 이름 필드에 피드 이름을 입력합니다(예: Fivetran Events).
  5. 소스 유형으로 웹훅을 선택합니다.
  6. 로그 유형으로 Fivetran을 선택합니다.
  7. 다음을 클릭합니다.
  8. 다음 입력 파라미터의 값을 지정합니다.
    • 분할 구분자 (선택사항): 비워 둡니다 (각 웹훅 요청에는 단일 JSON 이벤트가 포함됨).
    • 애셋 네임스페이스: 애셋 네임스페이스
    • 수집 라벨: 이 피드의 이벤트에 적용할 라벨입니다.
  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 키 만들기

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

API 키 만들기

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

API 키 제한

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

Fivetran 웹훅 구성

웹훅 URL 구성

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

    <ENDPOINT_URL>?key=<API_KEY>
    

    예:

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

Fivetran REST API를 사용하여 웹훅 만들기

Fivetran 웹훅은 REST API를 통해 구성됩니다. 계정 수준 웹훅 (모든 그룹) 또는 그룹 수준 웹훅 (특정 대상 그룹)을 만들 수 있습니다.

Fivetran API 사용자 인증 정보 가져오기

  1. Fivetran 계정에 로그인합니다.
  2. 오른쪽 상단에 있는 사용자 이름을 클릭합니다.
  3. 계정 설정 > API 구성으로 이동합니다.
  4. API 키가 없는 경우 다음 단계를 따르세요.
    1. API 키 생성을 클릭합니다.
    2. API 키API 비밀번호를 안전하게 복사하여 저장합니다.

계정 수준 웹훅 만들기

이 메서드를 사용하여 계정의 모든 그룹에 있는 모든 커넥터에서 이벤트를 수신합니다.

  1. 터미널 또는 API 클라이언트를 엽니다.
  2. 다음 curl 명령어를 사용하여 웹훅을 만듭니다.

    curl -X POST https://api.fivetran.com/v1/webhooks/account \
        -u "API_KEY:API_SECRET" \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{
            "url": "https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=YOUR_SECOPS_API_KEY",
            "events": [
                "sync_start",
                "sync_end",
                "transformation_start",
                "transformation_succeeded",
                "transformation_failed",
                "connection_successful",
                "connection_failure",
                "create_connector",
                "pause_connector",
                "resume_connector",
                "edit_connector",
                "delete_connector",
                "force_update_connector",
                "resync_connector",
                "resync_table"
            ],
            "active": true,
            "secret": "YOUR_SECOPS_SECRET_KEY"
        }'
    
  3. 다음 값을 바꿉니다.

    • API_KEY: Fivetran API 키
    • API_SECRET: Fivetran API 보안 비밀번호
    • YOUR_SECOPS_API_KEY: 이전에 만든 Google Cloud API 키
    • YOUR_SECOPS_SECRET_KEY: 피드 생성에서 가져온 Google SecOps 보안 비밀 키
  4. 응답에는 웹훅 ID가 포함됩니다.

    {
        "code": "Success",
        "message": "Operation performed.",
        "data": {
            "id": "webhook_abc123",
            "type": "account",
            "url": "https://malachiteingestion-pa.googleapis.com/...",
            "events": ["sync_start", "sync_end", ...],
            "active": true,
            "secret": "******",
            "created_at": "2025-01-15T10:30:00Z",
            "created_by": "user_id"
        }
    }
    
  5. 나중에 참조할 수 있도록 웹훅 ID를 저장합니다.

그룹 수준 웹훅 만들기 (선택사항)

특정 대상 그룹의 커넥터에서 이벤트를 수신하려면 이 메서드를 사용하세요.

  1. 그룹 ID를 가져옵니다.

    1. Fivetran에 로그인합니다.
    2. 모니터링할 대상 그룹으로 이동합니다.
    3. 그룹 ID는 URL에 있습니다(https://fivetran.com/dashboard/groups/GROUP_ID).
  2. 다음 curl 명령어를 사용하여 웹훅을 만듭니다.

    curl -X POST https://api.fivetran.com/v1/webhooks/group/GROUP_ID \
        -u "API_KEY:API_SECRET" \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{
            "url": "https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=YOUR_SECOPS_API_KEY",
            "events": [
                "sync_start",
                "sync_end",
                "transformation_start",
                "transformation_succeeded",
                "transformation_failed",
                "connection_successful",
                "connection_failure"
            ],
            "active": true,
            "secret": "YOUR_SECOPS_SECRET_KEY"
        }'
    
  3. GROUP_ID를 대상 그룹 ID로 바꿉니다.

사용 가능한 웹훅 이벤트

모니터링할 이벤트를 선택합니다.

이벤트 설명
sync_start 커넥터 동기화가 시작됨
sync_end 커넥터 동기화 완료
transformation_start 변환 시작됨
transformation_succeeded 변환이 완료되었습니다.
transformation_failed 변환 실패
connection_successful 연결 테스트 성공
connection_failure 연결 테스트에 실패했습니다.
create_connector 새 커넥터가 생성됨
pause_connector 커넥터 일시중지됨
resume_connector 커넥터 재개됨
edit_connector 커넥터 구성 수정됨
delete_connector 커넥터를 삭제했습니다.
force_update_connector 커넥터 강제 업데이트가 트리거됨
resync_connector 커넥터 다시 동기화가 트리거됨
resync_table 표 재동기화가 트리거됨

웹훅 테스트

  1. Fivetran API를 사용하여 웹훅을 테스트합니다.

    curl -X POST https://api.fivetran.com/v1/webhooks/WEBHOOK_ID/test \
        -u "API_KEY:API_SECRET" \
        -H "Accept: application/json"
    
  2. WEBHOOK_ID를 생성 응답의 웹훅 ID로 바꿉니다.

  3. Fivetran이 Google SecOps에 테스트 이벤트를 전송합니다.

  4. Google SecOps에서 이벤트를 확인합니다.

    1. SIEM 설정> 피드로 이동합니다.
    2. Fivetran 피드를 클릭합니다.
    3. 로그 탭으로 이동합니다.
    4. 테스트 이벤트가 수신되었는지 확인합니다.

웹훅 페이로드 형식

  • Fivetran은 다음 JSON 형식으로 웹훅 이벤트를 전송합니다.

    {
        "event": "sync_end",
        "created": "2025-01-15T10:30:00.386Z",
        "connector_type": "salesforce",
        "connector_id": "mystified_presiding",
        "connector_name": "Salesforce Production",
        "sync_id": "abc123-def456-ghi789",
        "destination_group_id": "deck_enjoy",
        "data": {
            "status": "SUCCESSFUL"
        }
    }
    

웹훅 인증

Fivetran은 사용자가 제공한 보안 비밀을 사용하여 HMAC SHA-256으로 웹훅 페이로드에 서명합니다. 서명은 X-Fivetran-Signature-256 헤더에 전송됩니다.

Google SecOps는 피드 생성 중에 구성된 보안 비밀 키를 사용하여 서명을 자동으로 검증합니다.

웹훅 재시도 동작

Fivetran은 실패한 웹훅을 자동으로 재시도합니다.

다시 시도 Time After Initial Attempt(첫 번째 시도 후 시간)
초기 시도 0분
1차 재시도 6분
두 번째 재시도 27분
3번째 재시도 1시간 45분
4번째 재시도 6시간 25분
5번째 재시도 23시간 13분
  • Fivetran은 최대 24시간 동안 재시도합니다.
  • 웹훅에는 10초 제한 시간이 있습니다.
  • 웹훅은 3일 동안 계속 실패하면 자동으로 비활성화됩니다.

웹훅 관리

모든 웹훅 나열

  • bash curl -X GET https://api.fivetran.com/v1/webhooks \ -u "API_KEY:API_SECRET" \ -H "Accept: application/json"

웹훅 세부정보 가져오기

  • bash curl -X GET https://api.fivetran.com/v1/webhooks/WEBHOOK_ID \ -u "API_KEY:API_SECRET" \ -H "Accept: application/json"

웹훅 업데이트

  • bash curl -X PATCH https://api.fivetran.com/v1/webhooks/WEBHOOK_ID \ -u "API_KEY:API_SECRET" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "active": true, "events": ["sync_start", "sync_end"] }'

웹훅 삭제

  • bash curl -X DELETE https://api.fivetran.com/v1/webhooks/WEBHOOK_ID \ -u "API_KEY:API_SECRET" \ -H "Accept: application/json"

인증 방법 참조

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

Fivetran은 아웃바운드 웹훅에 대한 맞춤 HTTP 헤더를 지원하지 않습니다. 쿼리 매개변수를 사용하여 사용자 인증 정보를 전달합니다.

  • URL 형식:

    <ENDPOINT_URL>?key=<API_KEY>
    

    예:

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

    인증:

    • URL 쿼리 매개변수의 API 키
    • X-Fivetran-Signature-256 헤더의 HMAC 서명을 통해 검증된 보안 비밀 키

방법 2: 맞춤 헤더 (Fivetran에서 지원되지 않음)

Fivetran 아웃바운드 웹훅은 맞춤 HTTP 헤더를 지원하지 않습니다. 대신 방법 1을 사용하세요.

웹훅 한도 및 권장사항

요청 한도

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

권장사항

  • 필요한 이벤트만 구독하여 HTTP 요청을 최소화하세요.
  • Fivetran 대시보드에서 웹훅 전송 상태를 모니터링합니다.
  • 웹훅 비활성화에 대한 알림을 설정합니다.
  • 중앙 집중식 모니터링을 위해 계정 수준 웹훅을 사용합니다.
  • 특정 대상 모니터링에 그룹 수준 웹훅을 사용합니다.
  • 정기적으로 이벤트 구독을 검토하고 업데이트합니다.

문제 해결

웹훅 생성 실패

오류: 웹훅 생성 중 HTTP 400 Bad Request 오류가 발생합니다.

원인: Google SecOps 엔드포인트에 연결할 수 없거나 2xx가 아닌 상태가 반환됩니다.

해결책:

  1. Google SecOps 엔드포인트 URL이 올바른지 확인합니다.
  2. API 키가 유효하고 Google SecOps API 액세스 권한이 있는지 확인합니다.
  3. 엔드포인트를 수동으로 테스트합니다.

    curl -X POST "https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=YOUR_API_KEY" \
        -H "Content-Type: application/json" \
        -H "x-chronicle-auth: YOUR_SECRET_KEY" \
        -d '{"test": "event"}'
    
  4. "active": false로 웹훅을 만들어 초기 검사를 건너뛴 다음 나중에 활성화합니다.

웹훅이 비활성화됨

원인: 웹훅이 3일 이상 지속적으로 실패했습니다.

해결책:

  1. Google SecOps 피드가 활성 상태이고 정상인지 확인합니다.
  2. Google SecOps 피드 로그에서 오류를 확인합니다.
  3. API 키와 보안 비밀 키가 아직 유효한지 확인합니다.
  4. 웹훅을 다시 활성화합니다.

    curl -X PATCH https://api.fivetran.com/v1/webhooks/WEBHOOK_ID \
        -u "API_KEY:API_SECRET" \
        -H "Content-Type: application/json" \
        -d '{"active": true}'
    

이벤트가 Google SecOps에 표시되지 않음

원인: 이벤트가 전송되지만 수집되지 않습니다.

해결책:

  1. Google SecOps에서 SIEM 설정 > 피드로 이동합니다.
  2. Fivetran 피드를 클릭합니다.
  3. 로그 탭으로 이동합니다.
  4. 인제스트 오류를 확인합니다.
  5. 로그 유형이 Fivetran으로 설정되어 있는지 확인합니다.
  6. 보안 비밀 키가 웹훅에 구성된 키와 일치하는지 확인합니다.

HMAC 서명 확인 실패

원인: 보안 비밀 키가 일치하지 않습니다.

해결책:

  1. Google SecOps 피드의 보안 비밀 키가 웹훅 생성에 사용된 키와 일치하는지 확인합니다.
  2. 필요한 경우 Google SecOps 보안 비밀 키를 재생성합니다.
  3. 새 보안 비밀로 Fivetran 웹훅을 업데이트합니다.

    curl -X PATCH https://api.fivetran.com/v1/webhooks/WEBHOOK_ID \
        -u "API_KEY:API_SECRET" \
        -H "Content-Type: application/json" \
        -d '{"secret": "NEW_SECOPS_SECRET_KEY"}'
    

UDM 매핑 테이블

로그 필드 UDM 매핑 논리
jsonPayload.connector_id additional.connector_id 값이 직접 복사됨
jsonPayload.connector_type additional.connector_type 값이 직접 복사됨
jsonPayload.data.executionTime additional.executionTime 문자열로 변환됨
insertId additional.insertId 비어 있지 않은 경우 값이 복사됨
labels.levelName additional.levelName 비어 있지 않은 경우 값이 복사됨
labels.levelValue additional.levelValue 비어 있지 않은 경우 값이 복사됨
jsonPayload.data.number additional.number 문자열로 변환됨
jsonPayload.data.query additional.query 값이 직접 복사됨
resource.type additional.type 비어 있지 않은 경우 값이 복사됨
metadata.event_type has_principal_user == 'true' 및 has_target == 'true'인 경우 'RESOURCE_READ'로 설정되고, has_principal_user == 'true'인 경우 'USER_COMMUNICATION'으로 설정되고, has_principal == 'true'인 경우 'STATUS_UPDATE'로 설정되고, 그 밖의 경우에는 'GENERIC_EVENT'로 설정됩니다.
jsonPayload.event metadata.product_event_type 값이 직접 복사됨
jsonPayload.sync_id metadata.product_log_id 값이 직접 복사됨
jsonPayload.connector_name principal.asset.hostname 값이 직접 복사됨
jsonPayload.connector_name principal.hostname 값이 직접 복사됨
resource.labels.email_id principal.user.email_addresses '^.+@.+$'와 일치하는 경우 병합됨
resource.labels.project_id principal.user.product_object_id 비어 있지 않은 경우 값이 복사됨
resource.labels.unique_id principal.user.userid ["", "null", " "]에 없는 경우 값이 복사됩니다.
줄이는 것을 security_result.severity 'INFO'와 일치하는 경우 'INFORMATIONAL'로 설정됩니다.
logName target.resource.name 비어 있지 않은 경우 값이 복사됨
target.resource.type 'DATABASE'로 설정
metadata.product_name 'FIVETRAN'으로 설정
metadata.vendor_name 'FIVETRAN'으로 설정

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