고급 BigQuery 내보내기로 데이터 스트리밍
이 문서에서는 Advanced BigQuery Export 기능을 사용하여 BigQuery에서 Google SecOps 데이터에 액세스하고 사용하는 방법을 설명합니다. Enterprise Plus 고객은 이 기능을 사용하여 완전 관리형 스트리밍 데이터 파이프라인을 통해 거의 실시간으로 보안 데이터에 액세스할 수 있습니다. 이 기능을 사용하면 보안 운영에서 데이터 지연 시간이라는 중요한 문제를 해결하고 위협을 더 적시에 효과적으로 감지하고 대응할 수 있습니다.
시작하기 전에
자격 요건과 필요한 조치를 정의하는 다음 사항을 검토하세요.
- Enterprise Plus 고객만: 이 기능은 Google SecOps Enterprise Plus 고객에게만 제공됩니다. 다른 모든 고객은 자체 관리 BigQuery 프로젝트로 내보내기를 참고하세요.
- 기능 활성화 필요: 이 기능은 요청 시 사용 설정되며 조직의 Google SecOps 인스턴스에서 초기 구성이 필요할 수 있습니다. 필요한 경우 Google SecOps 담당자에게 문의하여 기능 사용 설정 여부를 확인하세요.
- 데이터 이전: 이 기능을 활성화하면 Google 관리 BigQuery 프로젝트로 내보내기에 설명된 대로 Google 관리 BigQuery 프로젝트로 기존 내보내기 외에도 Google SecOps 인스턴스의 새 BigQuery 테넌트 프로젝트로 데이터가 내보내기 시작됩니다. 이중 작업을 통해 중단 없이 새 기능으로 이동할 수 있습니다. 계정의 이전 내보내기 파이프라인이 사용 중지되기 전에 알림이 전송됩니다.
- VPC 서비스 제어: 고급 BigQuery 내보내기는 VPC 서비스 제어 경계에서 작동할 수 있습니다. 자세한 내용은 VPC 서비스 제어 구성을 참고하세요.
- 고객 관리 암호화 키 (CMEK): Google SecOps 인스턴스에서 CMEK를 사용 설정한 고객은 고급 BigQuery 내보내기를 사용할 수 있습니다. 자세한 내용은 Google SecOps용 CMEK를 참고하세요. VPC 서비스 제어와 함께 CMEK를 사용하는 경우 권장사항과 안내는 Google SecOps용 VPC 서비스 제어 구성을 참고하세요.
기능 개요
Advanced BigQuery Export는 보안이 유지되고 Google에서 관리하는 BigQuery 프로젝트에서 통합 데이터 모델 (UDM) 이벤트, 규칙 감지, 엔티티 그래프, 침해 지표 (IoC) 일치 항목 등 필수 Google SecOps 데이터 세트를 자동으로 프로비저닝하고 관리합니다. BigQuery 연결 데이터 세트를 통해 이 데이터에 대한 보안 읽기 전용 액세스 권한을 얻을 수 있으며, 이 데이터 세트는 자체 Google Cloud 프로젝트에 직접 표시됩니다. 이 기능을 사용하면 데이터 파이프라인이나 스토리지를 관리하는 오버헤드 없이 로컬에 저장된 것처럼 보안 데이터를 쿼리할 수 있습니다.
Google SecOps는 다음 카테고리의 보안 데이터를 BigQuery로 내보냅니다.
- UDM 이벤트 레코드: 고객이 수집한 로그 데이터로부터 생성된 UDM 레코드입니다. 이러한 레코드는 별칭 정보로 보강됩니다.
- 규칙 일치 (감지): 규칙이 하나 이상의 이벤트와 일치하는 인스턴스입니다.
- IoC 일치: IoC 피드와 일치하는 이벤트의 아티팩트 (예: 도메인 또는 IP 주소)입니다. 여기에는 전역 피드 및 고객별 피드에 대한 일치가 포함됩니다.
- 수집 측정항목: 수집된 로그 줄 수, 로그에서 생성된 이벤트 수, 로그를 파싱할 수 없음을 나타내는 로그 오류 수와 같은 통계입니다.
- 항목 그래프 및 항목 관계: 항목 설명 및 다른 항목과의 관계입니다.
주요 혜택
고급 BigQuery Export의 주요 이점은 다음과 같습니다.
- 거의 실시간 데이터 최신성: 스트리밍 아키텍처를 사용하면 수집 후 몇 분 이내에 보안 데이터를 쿼리할 수 있습니다. UDM 이벤트, 규칙 감지, IoC 일치는 예상 지연 시간 5~10분으로 사용할 수 있습니다.
- 간소화되고 예측 가능한 비용 모델: Google SecOps는 관리 BigQuery 프로젝트 내의 모든 데이터 수집 및 스토리지 비용을 부담합니다. 조직은 쿼리를 실행할 때 발생하는 BigQuery 분석 비용만 부담하면 됩니다.
- 유지보수가 필요 없는 데이터 액세스: 기본 인프라는 Google에서 완전 관리하므로 팀에서 데이터 엔지니어링이 아닌 데이터 분석에 집중할 수 있습니다.
- 데이터 무결성 및 중복 삭제: 보안 데이터는 초기 수집 후 자주 업데이트되거나 다시 보강됩니다. 이 기능은 세부적인 데이터 조작 언어 (DML) 병합을 사용하여 레코드를 제자리에서 업데이트합니다. 복잡한 SQL 중복 제거 루틴을 작성하지 않고도 정리되고 중복이 제거된 데이터를 수신합니다.
- 원활한 MSSP 지원 (허브 및 스포크): 관리 보안 서비스 제공업체 (MSSP)는 중앙 집중식 허브 프로젝트에서 고객의 연결된 데이터 세트를 프로그래매틱 방식으로 구독하여 여러 고객 테넌트의 분석을 효율적으로 관리할 수 있습니다.
- 기본 제공 규정 준수: 이 기능은 VPC 서비스 제어, 고객 관리 암호화 키 (CMEK), 데이터 상주 (DRZ)를 기본적으로 지원합니다. 고객 대상 감사 로그 (액세스 투명성)는 제휴 리소스 식별 서비스 (FRIS)를 사용하여 Cloud Logging 작업공간에 직접 전송됩니다.
일반적인 사용 사례
고급 BigQuery 내보내기는 임시 조사, 맞춤 분석, 비즈니스 인텔리전스 도구와의 통합을 위해 최신 보안 데이터에 직접 고성능으로 액세스해야 하는 보안 분석가, 위협 추적자, 데이터 과학자, 보안 엔지니어를 위해 설계되었습니다.
고급 BigQuery 내보내기의 일반적인 사용 사례는 다음과 같습니다.
- BigQuery에서 직접 임시 쿼리를 실행합니다.
- Microsoft Power BI와 같은 자체 비즈니스 인텔리전스 도구를 사용해서 대시보드, 보고서, 분석을 만듭니다.
- Google SecOps 데이터를 서드 파티 데이터 세트와 조인합니다.
아키텍처
고급 BigQuery 내보내기 아키텍처는 연속 스트리밍 파이프라인을 사용합니다. Google SecOps 인스턴스의 데이터는 높은 처리량의 BigQuery Storage Write API를 사용하여 Google에서 관리하는 보안 테넌트 프로젝트로 푸시됩니다.
Google SecOps는 BigQuery 공유를 사용하여 안전한 데이터 목록을 만들고 사용자에게 액세스 권한을 제공합니다. BigQuery 탐색기 창에서 Google Cloud 프로젝트가 이 목록을 자동으로 구독하며, 이 목록은 secops_linked_datalake 연결된 데이터 세트로 표시됩니다.
이 모델은 강력한 데이터 격리를 지원하면서 원활한 읽기 전용 쿼리 액세스를 제공합니다.
주요 용어
다음은 고급 BigQuery 내보내기의 몇 가지 주요 용어와 개념입니다.
- 테넌트 프로젝트: Google SecOps가 소유하고 관리하는 프로젝트입니다. Google Cloud 이 프로젝트는 내보낸 보안 데이터가 물리적으로 저장되고 관리되는 위치입니다. 이 프로젝트에 직접 액세스할 수 없습니다.
- BYOP (Bring Your Own Project): 조직이 소유하고 Google SecOps 인스턴스에 연결하는 Google Cloud 프로젝트입니다. 연결된 데이터 세트가 표시되고 쿼리를 실행하며 분석 비용이 발생하는 프로젝트입니다.
- 프로젝트 ID: Google SecOps 인스턴스에 연결된 Google Cloud 프로젝트의 전역 고유 식별자입니다.
- 연결된 데이터 세트: 다른 프로젝트의 공유 데이터 세트에 대한 심볼릭 링크 또는 포인터 역할을 하는 읽기 전용 BigQuery 데이터 세트입니다. 데이터를 복사하지 않고도 데이터를 쿼리할 수 있으므로 데이터 제공업체가 물리적 스토리지를 관리하는 동안 안전한 액세스를 제공합니다.
- 세부적인 DML(FGDML): 고급 BigQuery 내보내기에서 업데이트 및 삽입을 실행하는 데 사용하는 자동화된 백엔드 프로세스입니다. 이벤트가 늦게 도착하거나 다시 보강되면 시스템은 중복을 만드는 대신 고유 식별자 (예:
metadata.id)를 기반으로 기존 행을 업데이트합니다. - 통합 데이터 모델 (UDM): 수백 개의 공급업체 제품에서 보안 원격 분석 데이터를 일관된 형식으로 파싱하고 정규화하기 위한 Google의 확장 가능한 표준 스키마입니다.
- 관리형 보안 서비스 제공업체 (MSSP): Google Cloud 인증된 MSSP는 끊임없이 진화하는 사이버 보안 위협에 대한 방어를 강화하는 포괄적인 도구와 전문 지식을 제공합니다.
시스템 설정
고급 BigQuery 내보내기를 사용하려면 먼저 시스템을 설정해야 합니다. 환경과 요구사항에 따라 다음 섹션 중 하나의 안내를 따르세요.
기본 설정
다음 단계에 따라 고급 BigQuery 내보내기를 사용하도록 시스템을 설정하고 데이터 쿼리를 시작하세요.
- 라이선스 확인: 조직에 Google SecOps Enterprise Plus 라이선스가 있는지 확인합니다.
- 프로젝트 식별: Google Cloud 콘솔에 로그인하고 Google SecOps 인스턴스에 연결된 Google Cloud 프로젝트를 선택합니다.
- 연결된 데이터 세트 찾기: BigQuery 콘솔에서 탐색기 창을 사용하여 프로젝트의 리소스로 이동합니다.
secops_linked_datalake라는 연결된 데이터 세트가 표시됩니다. 이 데이터 세트는 Google SecOps에서 관리하는 실시간 보안 데이터에 대한 읽기 전용 포인터입니다. ID 및 액세스 관리 (IAM) 권한 확인: 데이터를 쿼리하려면 사용자 또는 서비스 계정에 프로젝트에 대한 다음 IAM 역할이 부여되어야 합니다.
roles/bigquery.dataViewer: 조직의 최종 사용자 또는 BI 도구가 연결된 데이터 세트 뷰에 대해 SQL 쿼리를 실행하는 데 필요합니다.roles/bigquery.jobUser: 조직의 최종 사용자 또는 BI 도구가 연결된 데이터 세트 뷰에 대해 SQL 쿼리를 실행하는 데 필요합니다.Chronicle API Admin: MSSP 구독을 관리하기 위해 데이터 플레인 API (예:ProvisionPartnerSubscription)를 실행하려면 Google SecOps 내에서 필요합니다.
이러한 역할을 통해 사용자 (예: 보안 분석가 및 데이터 소비자)는 연결된 데이터 세트에서 데이터를 쿼리하고 프로젝트 내에서 BigQuery 작업을 실행할 수 있습니다.
테스트 쿼리 실행: BigQuery SQL 작업공간을 열고 기본 쿼리를 실행하여 액세스가 올바르게 구성되었는지 확인합니다. 다음 코드 스니펫을 사용할 수 있습니다.
SELECT * FROM `PROJECT_ID.secops_linked_datalake.events` LIMIT 10;PROJECT_ID를 실제 Google Cloud 프로젝트 ID로 바꿉니다.
VPC 서비스 제어 경계 내에서 고급 BigQuery 내보내기 설정
VPC 서비스 제어 경계 내에서 고급 BigQuery 내보내기를 설정하려면 특정 인그레스 규칙을 구성해야 합니다. 이 규칙을 사용하면 필요한 Google SecOps 서비스 계정이 경계로 보호되는 프로젝트에서 BigQuery 및 관련 서비스와 상호작용할 수 있습니다. 자세한 안내와 정보는 Google Security Operations의 VPC 서비스 제어 구성을 참고하세요.
VPC 서비스 제어 경계 내에서 고급 BigQuery 내보내기를 설정하려면 다음 인그레스 규칙을 구성하세요.
- ingressFrom: identities: - serviceAccount:malachite-advanced-bq-exporter@system.gserviceaccount.com - serviceAccount:malachite-data-export-service@system.gserviceaccount.com sources: - accessLevel: "*" ingressTo: operations: - serviceName: analyticshub.googleapis.com methodSelectors: - method: "*" - serviceName: bigquery.googleapis.com methodSelectors: - method: "*" resources: - projects/PROJECT_NUMBERPROJECT_NUMBER를 Google SecOps에 연결된 Google Cloud 프로젝트 번호로 바꿉니다.
MSSP: 하위 테넌트의 BigQuery 데이터에 대한 중앙 집중식 액세스 설정
MSSP로 프로비저닝된 경우 Google SecOps 데이터 플레인 API를 활용하여 중앙 '허브' 프로젝트에서 BigQuery 연결 데이터 세트를 프로그래매틱 방식으로 만들 수 있습니다. 이러한 연결된 데이터 세트는 고객 (스포크)의 BigQuery 데이터를 가리키므로 단일 제어 창에서 여러 테넌트를 쿼리할 수 있습니다. 이 프로세스에서는 고객이 MSSP 인스턴스 액세스 권한을 부여해야 합니다.
주요 이점은 다음과 같습니다.
- 중앙 집중식 가시성: 모든 고객의 보안 데이터를 한곳에서 분석합니다.
- 효율적인 워크플로: 고객 기반 전반에서 위협 추적 및 보고를 간소화합니다.
- 프로그래매틱 관리: 데이터 액세스 설정 및 해체를 자동화합니다.
기본 요건
MSSP
- 중앙 '허브' 역할을 할 Google Cloud 프로젝트
- Google SecOps 인스턴스입니다.
- 허브 프로젝트에서 BigQuery 데이터 세트를 관리할 수 있는 적절한 IAM 권한
고객 (하위 테넌트)
- Google SecOps Enterprise Plus 라이선스
- Google SecOps 인스턴스에 연결된 Google Cloud 프로젝트 (BYOP)입니다.
- Google SecOps API 액세스를 관리할 수 있는 적절한 IAM 권한
gcloudCLI가 설치되고 인증되었습니다.
1단계: 고객이 MSSP 액세스 권한 부여
고객은 ProvisionPartnerSubscription API를 호출하여 MSSP의 Google SecOps 인스턴스에 권한을 부여할 수 있습니다. Google SecOps는 MSSP의 Google SecOps 인스턴스에 연결된 MSSP의 Google Cloud 프로젝트 내에서 secops_linked_datalake_<customer_id> 형식으로 이름이 지정된 BigQuery 연결 데이터 세트를 자동으로 프로비저닝합니다. 이 데이터 세트는 고객의 Google SecOps 데이터에 연결됩니다.
API 엔드포인트:
POST
https://chronicle.googleapis.com/v1alpha/projects/CUSTOMER_PROJECT/locations/REGION/instances/CUSTOMER_INSTANCE_ID/bigQueryExport:provisionPartnerSubscription
메서드
POST
요청 본문
빈 JSON 객체입니다.
{}
고객이 실행할 CURL 명령어 예시:
curl -X POST \
-H "Authorization: Bearer ${OAUTH_TOKEN}" \
-H "Content-Type: application/json" \
-d '{}' \
"https://chronicle.googleapis.com/v1alpha/projects/CUSTOMER_PROJECT/locations/REGION/instances/CUSTOMER_INSTANCE_ID/bigQueryExport:provisionPartnerSubscription"
다음 자리표시자를 바꿉니다.
- CUSTOMER_PROJECT: 고객의 Google Cloud 프로젝트 ID 또는 프로젝트 번호입니다. 프로젝트 만들기 및 관리를 참고하세요.
- REGION: 고객의 Google SecOps 인스턴스가 있는 Google Cloud 리전입니다 (예: us, europe-west2). 리전 목록을 참고하세요.
- CUSTOMER_INSTANCE_ID: 고객의 Google SecOps 인스턴스 ID입니다.
응답 본문
정기 결제 세부정보가 포함된 ProvisionPartnerSubscriptionResponse를 반환합니다.
{
"subscriptionDetails": {
"subscription": "projects/SUBSCRIBER_PROJECT_ID/locations/SUBSCRIBER_REGION/subscriptions/SUBSCRIPTION_ID",
"linkedDataset": "string"
}
}
- SUBSCRIBER_PROJECT_ID: 구독자 MSSP의 Google Cloud 프로젝트 ID입니다.
- SUBSCRIBER_REGION: 구독자의 Google Cloud Project가 있는 리전입니다.
- SUBSCRIPTION_ID: 기존 정기 결제의 고유 식별자입니다.
2단계: MSSP가 테넌트 전반에서 데이터를 쿼리합니다.
여러 고객의 연결된 데이터 세트가 MSSP의 Google Cloud 프로젝트에 프로비저닝되면 표준 BigQuery SQL 쿼리를 사용하여 데이터를 분석할 수 있습니다. 여러 고객에 걸쳐 쿼리하려면 UNION ALL 연산자를 사용하세요.
예시 질문 (MSSP가 허브 프로젝트에서 실행):
SELECT event_type, timestamp
FROM `PARTNER_PROJECT_ID.secops_linked_datalake_CUSTOMER_ID_1.events`
WHERE <your_conditions>
UNION ALL
SELECT event_type, timestamp
FROM `PARTNER_PROJECT_ID.secops_linked_datalake_CUSTOMER_ID_2.events`
WHERE <your_conditions>
-- Add more UNION ALL clauses for other customers
3단계: 고객이 액세스 권한을 감사함
고객은 fetchSubscriptions API를 호출하여 데이터에 액세스하는 모든 활성 구독 및 MSSP 인스턴스를 확인할 수 있습니다.
API 엔드포인트
GET https://chronicle.googleapis.com/v1alpha/projects/CUSTOMER_PROJECT/locations/REGION/instances/CUSTOMER_INSTANCE_ID/bigQueryExport:fetchSubscriptions
메서드
GET
고객이 실행할 CURL 명령어 예시:
curl -X GET \
-H "Authorization: Bearer ${OAUTH_TOKEN}" \
"https://chronicle.googleapis.com/v1alpha/projects/CUSTOMER_PROJECT/locations/REGION/instances/CUSTOMER_INSTANCE_ID/bigQueryExport:fetchSubscriptions"
다음 자리표시자를 바꿉니다.
- CUSTOMER_PROJECT: 고객의 Google Cloud 프로젝트 ID 또는 프로젝트 번호입니다. 프로젝트 만들기 및 관리를 참고하세요.
- REGION: 고객의 Google SecOps 인스턴스가 있는 Google Cloud 리전입니다 (예: us, europe-west2). 리전 목록을 참고하세요.
- CUSTOMER_INSTANCE_ID: 고객의 Google SecOps 인스턴스 ID입니다.
응답 본문
활성 구독 목록이 포함된 FetchSubscriptionsResponse를 반환합니다.
{
"subscriptions": [
{
"subscription": "projects/SUBSCRIBER_PROJECT_ID/locations/SUBSCRIBER_REGION/subscriptions/SUBSCRIPTION_ID",
"linkedDataset": "string"
}
]
}
- SUBSCRIBER_PROJECT_ID: 구독자의 Google Cloud 프로젝트 ID입니다. 구독자는 고객 또는 MSSP를 참조할 수 있습니다.
- SUBSCRIBER_REGION: 구독자의 Google Cloud Project가 있는 리전입니다.
- SUBSCRIPTION_ID: 기존 정기 결제의 고유 식별자입니다.
4단계: 고객이 액세스 권한 취소 (필요한 경우)
고객이 MSSP의 액세스 권한을 취소해야 하는 경우 revokePartnerSubscription API를 사용할 수 있습니다. 이 작업은 MSSP의 허브 프로젝트를 사용하여 연결된 데이터 세트를 쿼리할 수 있는 권한을 즉시 취소합니다. 취소된 정기 결제의 ID가 비활성 상태가 됩니다.
API 엔드포인트
POST https://chronicle.googleapis.com/v1alpha/projects/CUSTOMER_PROJECT/locations/REGION/instances/CUSTOMER_INSTANCE_ID/bigQueryExport:revokePartnerSubscription
메서드
POST
요청 본문
fetchSubscriptions API 호출에서 가져온 취소할 정기 결제의 URI가 필요합니다.
{
"subscriptionUri": "projects/SUBSCRIBER_PROJECT_ID/locations/SUBSCRIBER_REGION/subscriptions/SUBSCRIPTION_ID"
}
고객이 실행할 CURL 명령어 예시:
# Set subscription details obtained from Fetch Subscriptions
export SUBSCRIBER_PROJECT_ID="partner-byop-project-id"
export SUBSCRIBER_REGION="subscription-location"
export SUBSCRIPTION_ID="subscription-id"
curl -X POST \
-H "Authorization: Bearer ${OAUTH_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"subscriptionUri": "projects/SUBSCRIBER_PROJECT_ID/locations/SUBSCRIBER_REGION/subscriptions/SUBSCRIPTION_ID"
}' \
"https://chronicle.googleapis.com/v1alpha/projects/CUSTOMER_PROJECT/locations/REGION/instances/CUSTOMER_INSTANCE_ID/bigQueryExport:revokePartnerSubscription"
다음 자리표시자를 바꿉니다.
- SUBSCRIBER_PROJECT_ID: 구독자의 Google Cloud 프로젝트 ID입니다.
- SUBSCRIBER_REGION: 구독자의 Google Cloud Project가 있는 리전입니다.
- SUBSCRIPTION_ID: 기존 정기 결제의 고유 식별자입니다.
- CUSTOMER_PROJECT: 고객의 Google Cloud 프로젝트 ID 또는 프로젝트 번호입니다.
- REGION: 고객의 Google SecOps 인스턴스가 있는 Google Cloud 리전입니다.
- CUSTOMER_INSTANCE_ID: 고객의 Google SecOps 인스턴스 ID입니다.
응답 본문
빈 JSON 객체입니다.
{}
BigQuery 데이터 쿼리
BigQuery에서 직접 쿼리를 실행하거나 Microsoft Power BI와 같은 자체 비즈니스 인텔리전스 도구를 BigQuery에 연결할 수 있습니다.
쿼리에 대한 자세한 내용은 다음을 참고하세요.
- BigQuery에서 쿼리에 액세스하고 쿼리를 실행하는 방법에 대한 자세한 내용은 쿼리 실행을 열고 대화형 쿼리를 실행하고 일괄 쿼리를 실행하는 방법을 알아보세요.
- 파티션을 나눈 테이블을 쿼리하는 방법은 파티션을 나눈 테이블 쿼리를 참조하세요.
BigQuery 테넌트 프로젝트의 데이터 보관 기간
BigQuery의 데이터 보관 기간은 Google SecOps 테넌트에 구성된 데이터 보관 기간과 동일합니다. BigQuery의 데이터 보관 정책을 맞춤설정할 수 있는 별도의 구성 가능한 설정은 없습니다. 데이터가 테넌트의 보관 기간을 지나면 BigQuery 테이블에서 자동으로 삭제됩니다.
연결된 데이터 세트
연결된 데이터 세트에는 다양한 유형의 보안 데이터에 해당하는 테이블이 포함됩니다.
다음 표에는 사용 가능한 데이터 세트, 목표 데이터 업데이트 빈도, 데이터 무결성을 보장하는 데 사용되는 고유 식별자가 요약되어 있습니다.
| 데이터 세트 이름 | 설명 | 예상되는 최적의 업데이트 간격 | 중복 삭제를 위한 고유 식별자 |
|---|---|---|---|
events | UDM 스키마의 정규화된 보안 이벤트입니다. 스키마에 대한 자세한 내용은 Google SecOps 이벤트 스키마를 참고하세요. | 5분 미만 | id (문자열 표현) |
rule_detections | Google SecOps 감지 엔진 규칙에 의해 생성된 감지입니다. | 5분 미만 | detection.id |
ioc_matches | UDM 이벤트에 대해 확인된 침해 지표 (IOC) 일치 항목입니다. | 5분 미만 | day_bucket_seconds, feed_log_type, ioc_type, ioc_value의 복합 키 |
entity_graph | 엔티티 (사용자, 애셋) 및 엔티티 간 관계에 관한 컨텍스트 데이터입니다. | 약 4시간 (일괄) | partition_day, metadata.product_entity_id, metadata.event_metadata.id의 복합 키 |
ingestion_metrics | 로그 수집량 및 데이터 소스에 관한 통계입니다. | 약 5분 | 없음 (추가 전용 시계열) |
entity_enum_value_to_name_mapping | 항목 그래프 열거형 유형의 숫자 값을 문자열 값에 매핑합니다. | 해당 사항 없음 | 없음 |
udm_enum_value_to_name_mapping | UDM 이벤트 열거형 유형의 숫자 값을 문자열 값에 매핑합니다. | 해당 사항 없음 | 없음 |
샘플 쿼리
다음 예에서는 일반적인 보안 사용 사례에 대해 데이터 세트를 쿼리하는 방법을 보여줍니다.
예시 - 지난 24시간 동안 특정 IP 주소에서 발생한 모든 네트워크 연결 찾기
이 쿼리는 의심스러운 IP 주소의 최근 네트워크 활동을 이벤트 테이블에서 검색합니다.
SELECT
metadata.product_event_type,
principal.ip,
target.ip,
network.application_protocol
FROM
`PROJECT_ID.secops_linked_datalake.events`
WHERE
principal.ip = '192.0.2.1'
AND metadata.event_timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 24 HOUR);
- PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿉니다.
예 - 가장 빈번한 상위 10개 규칙 감지 수 계산
rule_detections 테이블에 대한 이 쿼리는 환경에서 감지된 가장 일반적인 위협 또는 정책 위반을 식별하는 데 도움이 됩니다.
SELECT
rule_name,
COUNT(*) AS detection_count
FROM
`PROJECT_ID.secops_linked_datalake.rule_detections`
WHERE
detection.id IS NOT NULL
GROUP BY
1
ORDER BY
2 DESC
LIMIT
10;
- PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿉니다.
권장사항
다음은 고급 BigQuery 내보내기로 쿼리하는 몇 가지 권장사항입니다.
쿼리 비용 최적화: 스토리지는 무료이지만 컴퓨팅 비용은 프로젝트에 청구되므로 다음을 수행하세요.
- SELECT *를 사용하지 마세요. 쿼리에서 필요한 열만 지정하여 스캔되는 데이터 양을 줄이고 쿼리 비용을 낮추세요.
- 쿼리에서 BigQuery 파티셔닝 (hour_time_bucket 파티션 시간 열 사용) 및 클러스터링 (hour_time_bucket, log_type, event_type, id)을 활용하여 스캔하는 데이터 양을 줄이고 쿼리 비용을 크게 절감해야 합니다.
파티션 필터 사용: events 테이블은 hour_time_bucket 열을 기준으로 파티셔닝되어 있습니다. 이 열에 WHERE 절 필터를 항상 포함하여 쿼리를 가능한 가장 작은 시간 범위로 제한하세요. 이렇게 하면 성능이 크게 향상되고 비용이 절감됩니다.
효율적인 쿼리 작성: UDM 스키마는 넓고 희소합니다. 특정 이벤트 유형을 효율적으로 필터링하려면 WHERE...을 사용하세요. 관련 필드에 IS NOT NULL 예를 들어 DNS 쿼리만 찾으려면 WHERE network.dns.questions.name IS NOT NULL로 필터링합니다.
쿼리 검증: 쿼리를 실행하기 전에 BigQuery UI의 쿼리 검사기를 사용합니다. 쿼리 검사기는 처리된 데이터의 추정치를 제공하여 예상치 못한 대규모의 비용이 많이 드는 쿼리를 방지하는 데 도움이 됩니다.
열거형 매핑 테이블 사용: 고급 BigQuery 내보내기에는 entity_enum_value_to_name_mapping 및 udm_enum_value_to_name_mapping 테이블이 포함됩니다. 이를 사용하여 이벤트에 대해 조인하면 쿼리에서 수동 번역 로직을 작성하지 않고도 숫자 enum 값을 사람이 읽을 수 있는 문자열로 변환할 수 있습니다.
감사 로깅 통합: 고급 BigQuery 내보내기는 연합 리소스 식별 서비스 (FRIS)와 통합됩니다. Google 액세스 투명성 기능을 사용하는 고객 대상 감사 로그는 Google 직원이 관리 테넌트 프로젝트에 액세스하는 경우 BYOP Cloud Logging 작업공간 내에 기본적으로 제공됩니다.
알려진 제한사항
다음은 고급 BigQuery 내보내기 기능의 알려진 제한사항입니다.
- 엔티티 그래프 지연 시간: entity_graph 데이터 세트는 일괄 처리 프로세스를 사용하여 내보내지며 데이터 업데이트 빈도는 약 4시간입니다.
- UDM 스키마-열 한도: BigQuery의 테이블당 열 한도는 10,000개입니다. UDM 스키마에는 27,000개가 넘는 필드가 포함되어 있으며 필드가 드물게 채워져 있습니다. 내보내기 파이프라인은 특정 이벤트에 대해 채워진 열만 지능적으로 포함하므로 대부분의 고객은 한도를 훨씬 밑돌게 됩니다. Google SecOps는 열 사용량을 모니터링하고 이 기준점에 가까워지면 테넌트 프로젝트의 한도 상향을 사전에 요청합니다.
- 보관 기간은 구성할 수 없음: BigQuery로 내보낸 모든 보안 데이터의 데이터 보관 기간은 Google SecOps 프로젝트의 데이터 보관 기간과 자동으로 동기화되며 별도로 구성할 수 없습니다.
- SOAR 데이터는 지원되지 않음: Google Security Operations SOAR (search_everything_db)의 데이터는 고급 BigQuery Export에서 지원되지 않습니다.
- 리전 간 제휴는 지원되지 않음: 허브 및 스포크 MSSP 구독은 동일한 리전 내에서 지원됩니다. 리전 간 연동 (예: 미국에서 유럽)은 지원되지 않습니다.
- 중복 이벤트가 발생할 수 있음 (가능성 1% 미만): 시스템에서 DML 병합을 사용하여 중복 삭제를 자동으로 처리하지만 분산 스트리밍의 특성으로 인해 백그라운드 병합이 완료되기 전 특이 사례 수집 기간에 중복 이벤트가 표시될 가능성이 낮습니다 (< 1%).
- 이전 데이터에 액세스할 수 있지만 특정 방법이 필요합니다. 데이터 내보내기는 고급 BigQuery 내보내기가 사용 설정된 시점부터 시작되며 이전 데이터는 기존 프로젝트에서 액세스할 수 있습니다. 고급 BigQuery 내보내기를 활성화하기 전에 내보낸 데이터를 쿼리하려면 두 프로젝트의 데이터를 조인하는 단일 쿼리를 사용하거나 각 프로젝트에서 별도의 쿼리 두 개 (이전 데이터 세트용 하나, 새 데이터 세트용 하나)를 실행해야 합니다.
문제 해결 및 지원
다음 표에는 발생할 수 있는 일반적인 문제의 해결 방법이 나와 있습니다.
| 관찰된 증상 | 가능한 원인 | 권장 조치 |
|---|---|---|
Access Denied: User does not have permission. 오류와 함께 쿼리가 실패합니다. | 사용자 또는 서비스 계정에 Google SecOps 인스턴스에 연결된 Google Cloud 프로젝트에 필요한 BigQuery IAM 역할이 없습니다. | 주 구성원에게 BigQuery 데이터 뷰어 및 BigQuery 작업 사용자 역할을 부여합니다. gcloud projects get-iam-policy YOUR_PROJECT_ID --flatten="bindings.members" --format='table(bindings.role)' --filter="bindings.members:user:your-user@example.com"을 사용하여 확인 |
secops_linked_datalake 데이터 세트가 내 BigQuery 프로젝트에 표시되지 않습니다. | 1. 올바른 Google Cloud 프로젝트에 있지 않습니다. 2. 조직이 Enterprise Plus 등급이 아닙니다. 3. 조직이 Enterprise Plus 등급이지만 Google SecOps 인스턴스에서 고급 BigQuery 내보내기가 사용 설정되어 있지 않습니다. | 1. Google Cloud 콘솔에서 Google SecOps 인스턴스에 연결된 프로젝트를 선택했는지 확인합니다. 2. Google 담당자에게 문의하여 Google SecOps 라이선스 등급을 확인합니다. 3. Google SecOps 담당자에게 문의하여 Google SecOps 인스턴스에서 고급 BigQuery 내보내기를 사용 설정해 달라고 요청하세요. |
ProvisionPartnerSubscription 또는 FetchSubscriptions에 대한 권한 오류로 인해 API 호출이 실패함 | 호출 ID에 필요한 권한이 없습니다. | 호출을 실행하는 서비스 계정 또는 사용자에게 허브 인스턴스 리소스에 대한 권한이 포함된 Chronicle API 관리자 IAM 역할이 있는지 확인합니다. |
| 맞춤 열 누락 또는 스키마 불일치 | 새 로그 유형 또는 깊이 중첩된 UDM 필드가 수집되었습니다. | 고급 BigQuery 내보내기는 동적 스키마 업데이트를 사용합니다. 새 UDM 필드가 채워지면 시스템에서 스키마 불일치를 자동으로 감지하고, 잠시 일시중지한 후 BigQuery 스키마를 업데이트하고 삽입을 다시 시도합니다. 이와 관련해 별도의 조치를 취할 필요는 없습니다. |
자주 묻는 질문(FAQ)
다음은 자주 묻는 질문(FAQ)입니다.
고급 Google SecOps 내보내기를 사용하려면 기존 레거시 BigQuery SQL 쿼리를 수정해야 하나요?
아니요. 100% 하위 호환성을 유지하기 위해 Google SecOps는 기존 Google SecOps 내보내기 기능의 테이블 스키마와 완벽하게 일치하는 연결된 데이터 세트의 뷰 (예: events, ioc_matches)를 노출합니다.
고급 BigQuery 내보내기의 데이터 보관 기간을 조정할 수 있나요?
아니요. 고급 BigQuery 내보내기의 데이터 보관 기간은 Google SecOps 데이터 보관 정책을 직접 반영합니다. Google SecOps에서 데이터가 만료되면 BigQuery 테넌트 프로젝트에서 자동으로 만료되고 삭제됩니다.
백엔드 DML 업데이트 및 중복 삭제에 요금이 청구되나요?
아니요. 모든 백엔드 스토리지, 스트리밍 삽입 작업, 세분화된 DML 컴퓨팅 비용은 Google SecOps에서 부담합니다. BYOP에서 명시적으로 실행한 쿼리에 대해서만 요금이 청구됩니다.
Google SecOps Standard 또는 Enterprise 등급에서 이 기능을 사용할 수 있나요?
아니요. 고급 BigQuery 내보내기 (관리형 스토리지 및 스트리밍)는 Google SecOps Enterprise Plus 등급 전용 프리미엄 기능입니다. Standard 및 Enterprise 고객은 BigQuery 프로젝트를 제공하고 스토리지 및 컴퓨팅 비용을 모두 부담하는 Bring Your Own BigQuery (BYOBQ) 모델을 사용할 수 있습니다.
고급 BigQuery 내보내기의 데이터와 Google Security Operations UI에 표시되는 통계 간에 일시적인 차이가 발생하는 이유는 무엇인가요?
고급 BigQuery 내보내기 파이프라인의 거의 실시간 스트리밍 특성으로 인해 일시적인 불일치가 발생할 수 있습니다. 주요 이유는 다음과 같습니다.
늦게 도착하는 데이터: 내보내기 파이프라인은 높은 처리량을 위해 설계되었습니다. 대부분의 데이터는 5~10분 이내에 BigQuery에 표시됩니다. 하지만 네트워크 지연이나 소스 시스템 문제로 인해 이벤트가 처리 파이프라인에 늦게 도착하는 경우가 있습니다. 시스템은 이러한 지연된 이벤트를 병합하려고 하지만, 절대 최신 상태를 반영하는 라이브 UI 통계가 지속적으로 업데이트되는 BigQuery 데이터와 다른 짧은 기간이 있을 수 있습니다.
데이터 재보강: Google SecOps는 최신 위협 인텔리전스 및 컨텍스트 정보를 사용하여 이벤트 데이터를 지속적으로 보강합니다. 고급 BigQuery 내보내기는 초기 보강 시점의 상태를 기반으로 이벤트를 내보냅니다. BigQuery로 스트리밍된 후 새 정보로 이벤트가 다시 보강되면 업데이트된 버전이 BigQuery에 즉시 반영되지 않을 수 있습니다. 이로 인해 항상 완전히 다시 보강된 데이터를 표시하는 UI 요소와 비교할 때 차이가 발생할 수 있습니다.
DML 병합 지연 시간: BigQuery의 데이터를 최신 상태로 유지하고 늦게 도착하는 데이터나 중복 가능성과 같은 문제를 처리하기 위해 파이프라인은 백그라운드에서 데이터 조작 언어 (DML)
MERGE작업을 사용합니다. 이러한 작업은 효율적이지만 즉각적이지는 않습니다. 이러한 병합은 특히 세부적인 업데이트의 경우 처리되는 데 내재된 지연 시간이 있습니다. 이 병합 간격 동안 BigQuery에 대한 쿼리는 Google Security Operations UI에 이미 표시된 최신 마이크로 업데이트를 포착하지 못할 수 있습니다.
언급된 요인 (지연된 데이터, 재강화 처리, 병합 지연 시간)으로 인해 특정 시점에 BigQuery와 실시간 UI 통계가 완벽하게 1:1로 일치하지 않을 수 있습니다. 고급 BigQuery 내보내기는 거의 실시간 데이터를 제공하며, 몇 분 이내의 데이터 업데이트가 중요한 위협 추적, 맞춤 분석, 대시보드와 같은 사용 사례에 최적화되어 있습니다. 절대적인 시점 일관성이 필요한 감사 목적으로는 일시적인 미미한 차이가 발생할 수 있음을 고려하세요.
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.