자체 관리형 Google Cloud Storage 버킷으로 원시 로그 내보내기
Data Export API를 사용하면 Google Security Operations에서 제어하는 Google Cloud Storage 버킷으로 보안 데이터를 일괄 내보낼 수 있습니다. 이 기능은 중요한 장기 데이터 보관을 지원하고, 과거 포렌식 분석 및 엄격한 규정 준수 요구사항 (예: SOX 및 GDPR)을 지원합니다.
자세한 API 참조 정보는 Data Export API (향상됨)를 참고하세요.
Data Export API는 특정 시점의 데이터 내보내기를 위한 확장 가능하고 안정적인 솔루션을 제공하며 최대 100TB의 요청을 처리합니다.
관리형 파이프라인으로서 다음과 같은 필수 엔터프라이즈급 기능을 제공합니다.
- 일시적 오류에 대한 자동 재시도
- 포괄적인 작업 상태 모니터링
- 각 내보내기 작업의 전체 감사 추적
API는 Google Cloud Storage 버킷 내에서 내보낸 데이터를 날짜와 시간별로 논리적으로 파티셔닝합니다.
이 기능을 사용하면 대규모 데이터 오프로드 워크플로를 빌드할 수 있습니다. Google SecOps는 안정성과 성능을 제공하기 위해 내보내기 프로세스의 복잡성을 관리합니다.
주요 이점
Data Export API는 보안 데이터의 수명 주기를 관리하기 위한 복원력 있고 감사 가능한 솔루션을 제공하며 다음과 같은 주요 이점을 제공합니다.
- 안정성: 서비스는 대규모 데이터 전송을 처리합니다. 이 시스템은 지수 백오프 전략을 사용하여 일시적인 문제 (예: 임시 네트워크 문제)가 발생하는 내보내기 작업을 자동으로 재시도하므로 복원력이 뛰어납니다. 일시적인 오류로 인해 내보내기 작업이 실패하면 자동으로 여러 번 재시도합니다. 모든 재시도 후에도 작업이 영구적으로 실패하면 시스템은 상태를
FINISHED_FAILURE로 업데이트하고 해당 작업의 API 응답에는 원인을 설명하는 자세한 오류 메시지가 포함됩니다. 포괄적인 감사 가능성: 엄격한 규정 준수 및 보안 표준을 충족하기 위해 시스템은 변경 불가능한 감사 추적에서 내보내기 작업과 관련된 모든 작업을 캡처합니다. 이 추적에는 작업을 시작한 사용자, 타임스탬프, 작업 매개변수와 함께 모든 작업의 생성, 시작, 성공 또는 실패가 포함됩니다.
성능 및 규모에 최적화: API는 강력한 작업 관리 시스템을 사용합니다. 이 시스템에는 플랫폼 안정성을 제공하고 단일 테넌트가 리소스를 독점하는 것을 방지하기 위한 대기열 및 우선순위 지정이 포함되어 있습니다.
향상된 데이터 무결성 및 접근성: 시스템은 Google Cloud Storage 버킷 내에서 데이터를 논리적 디렉터리 구조로 자동 정리하므로 과거 분석을 위해 특정 시간대를 찾고 쿼리하는 데 도움이 됩니다.
보안: API는 고객 관리 암호화 키 (CMEK) (제로 트러스트 보안) 및 데이터 RBAC (최소 권한 액세스)를 완전히 준수하도록 설계되었습니다. 내보내기 작업은 승인되지 않은 데이터 추출을 방지하기 위해 요청을 트리거하는 사용자의 데이터 공개 범위가 상속됩니다. 내보내기 파이프라인은 Google Cloud Key Management Service와 완전히 통합되어 있으며 데이터는 자체 키를 사용하여 Google Cloud Storage 버킷에 저장 상태로 암호화된 상태로 유지됩니다.
주요 용어 및 개념
- 내보내기 작업: 로그 데이터의 특정 시간
범위를 Google Cloud Storage 버킷으로 내보내는 단일 비동기 작업입니다. 시스템은 고유한
dataExportId로 각 작업을 추적합니다. - 작업 상태: 수명 주기에서 내보내기 작업의 현재 상태입니다 (예:
IN_QUEUE,PROCESSING,FINISHED_SUCCESS). - Google Cloud Storage 버킷: 내보낸 데이터의 대상 역할을 하는 사용자 소유의 Google Cloud Storage 버킷입니다.
- 로그 유형: 내보낼 수 있는 로그의 특정 카테고리입니다 (예:
NIX_SYSTEM,WINDOWS_DNS,CB_EDR). 자세한 내용은 지원되는 모든 로그 유형 목록을 참고하세요.
내보낸 데이터 구조 이해
작업이 성공적으로 완료되면 시스템은 데이터를 Google Cloud Storage 버킷에 씁니다. 데이터 액세스 및 쿼리를 간소화하기 위해 특정 파티셔닝된 디렉터리 구조를 사용합니다.
디렉터리 경로 구조: gs://GCS_BUCKET_NAME/
EXPORT_JOB_NAME/LOGTYPE/EVENT_TIME_BUCKET/EPOCH_EXECUTION_TIME/FILE_SHARD_NAME.csv
각 항목의 의미는 다음과 같습니다.
- GCS_BUCKET_NAME: Google Cloud Storage 버킷의 이름을 나타냅니다.
- EXPORT_JOB_NAME: 내보내기 작업의 고유한 이름을 나타냅니다.
- LOGTYPE: 내보낸 데이터의 로그 유형 이름을 나타냅니다.
- EVENT_TIME_BUCKET: 내보낸 로그의 이벤트 타임스탬프의 시간 범위를 나타냅니다. 형식은 UTC 타임스탬프입니다.
year/month/day/UTC-timestamp이며 여기서UTC-timestamp는hour/minute/second입니다. 예를 들어2025/08/25/01/00/00은UTC 01:00:00 AM, August 25, 2025을 나타냅니다. - EPOCH_EXECUTION_TIME: 내보내기 작업이 시작된 시점을 나타내는 Unix 시간 값입니다.
- FILE_SHARD_NAME: 원시 로그가 포함된 샤딩된 파일의 이름을 나타냅니다. 각 파일 샤드의 최대 파일 크기 한도는 100MB입니다.
성능 및 제한사항
이 서비스에는 플랫폼 안정성과 공정한 리소스 할당을 보장하기 위해 다음과 같은 특정 제한사항이 있습니다.
- 작업당 최대 데이터 볼륨: 각 개별 내보내기 작업은 최대 100TB의 데이터를 요청할 수 있습니다. 더 큰 데이터 세트의 경우 Google은 내보내기를 시간 범위가 더 작은 여러 작업으로 나누는 것이 좋습니다.
- 동시 작업: 각 고객 테넌트는 최대 3개의 내보내기 작업을 동시에 실행하거나 대기열에 추가할 수 있습니다. 시스템은 이 한도를 초과하는 새 작업 생성 요청을 거부합니다.
- 작업 완료 시간: 내보낸 데이터의 볼륨에 따라 작업 완료 시간이 결정됩니다. 단일 작업은 최대 18시간이 걸릴 수 있습니다.
- 내보내기 형식 및 데이터 범위: API는 다음과 같은 제한사항과 기능으로 일괄 내보내기 및 특정 시점
내보내기를 지원합니다.
- 원시 로그만: 원시 로그만 내보낼 수 있습니다(UDM 로그, UDM 이벤트 또는 감지 아님). UDM 데이터를 내보내는 방법은 자체 관리형 BigQuery 프로젝트로 내보내기를 참고하세요.
- 데이터 압축: API는 데이터를 압축되지 않은 텍스트로 내보냅니다.
기본 요건 및 아키텍처
이 섹션에서는 Data Export API를 사용하는 데 필요한 시스템 아키텍처 및 요구사항을 간략하게 설명하고 시스템 아키텍처를 자세히 설명합니다. 이 정보를 사용하여 환경이 올바르게 구성되었는지 확인합니다.
).Data Export API를 사용하기 전에 다음 기본 요건 단계를 완료하여 Google Cloud Storage 대상을 설정하고 필요한 권한을 부여하세요.
사용자에게 권한 부여. Data Export API를 사용하려면 Google SecOps 테넌트에 연결된 BYOP Google Cloud project에 다음 권한이 필요합니다.
- chronicle.dataExports.fetchServiceAccountForDataExport
- chronicle.dataExports.create
- chronicle.dataExports.cancel
- chronicle.dataExports.get
- chronicle.dataExports.list
이러한 권한은 다음과 같은 사전 정의된 IAM 역할의 일부를 구성합니다.
- Chronicle API 관리자: API를 사용하여 내보내기 작업을 만들고, 업데이트하고, 취소하고, 볼 수 있는 모든 권한을 부여합니다. 이 역할은 전역 액세스 권한을 부여합니다.
- Chronicle API 뷰어: API를 사용하여 작업 구성 및 기록을 볼 수 있는 읽기 전용 액세스 권한을 부여합니다. `
restrictedDataAccess` 역할이 없으면 이 역할이 있는 사용자는 모든 데이터를 볼 수 있습니다 (+ 다른 역할 추가 단계를 참고하고 조건을 추가하세요).
사용자에게 데이터 RBAC 범위 적용. 사용자를 특정 데이터 액세스 범위로 제한하려면 다음을 수행합니다.
- 적용하려는 데이터 RBAC 범위가 설정 > SIEM 설정 > 데이터 액세스 > 범위의 Google SecOps UI 내에 이미 생성되어 있는지 확인합니다. 사용자에게 할당하려는 각 범위의 전체 이름을 기록해 둡니다.
데이터 내보내기 관리를 위한 Identity and Access Management (IAM) 커스텀 역할을 만듭니다. 사전 정의된 역할은 너무 많은 액세스 권한을 부여하거나 특정 권한 조합이 없을 수 있으므로 범위 지정된 컨텍스트 내에서 데이터 내보내기를 관리하는 데 맞게 조정된 커스텀 역할을 만들려면 다음을 수행합니다.
- 콘솔에서 IAM 및 관리자 > 역할 로 이동합니다. Google Cloud
- + 역할 만들기 를 클릭합니다.
- 제목을 입력합니다 (예:
SecOps Scoped Data Export User). - ID를 입력합니다 (예:
secopsScopedDataExportUser). - + 권한 추가 를 클릭합니다.
- Chronicle 권한을 필터링하고 첫 번째 단계 (API 사용자에게 권한 부여)에 나열된 관련 권한을 추가합니다.
- 만들기 를 클릭합니다.
사용자에게 IAM 역할 부여. IAM 페이지에서 다음을 수행하여 사용자에게 필요한 역할을 할당합니다.
- IAM 및 관리자 > IAM 으로 이동합니다.
- + 액세스 권한 부여를 클릭합니다.
- 새 주 구성원에 사용자의 이메일 주소를 입력합니다.
역할을 할당하려면 다음을 수행합니다.
- 만든 커스텀 역할을 추가합니다 (예:
SecOps Scoped Data Export User). - + 다른 역할 추가 를 클릭하고 Chronicle API 제한된 데이터 액세스 (
restrictedDataAccess) 역할을 추가합니다. 이 역할은 사용자를 데이터 범위의 대상으로 표시하는 데 중요합니다.
- 만든 커스텀 역할을 추가합니다 (예:
Chronicle API Restricted Data Access역할 바인딩에 IAM 조건 추가. 사용자를 특정 데이터 범위에 연결하려면 다음을 수행합니다.- IAM 조건 추가 를 클릭합니다.
- 조건 작성 도구 또는 조건 편집기를 사용하여 첫 번째 단계에서 만든 범위 이름을 리소스 이름으로 사용하여 허용된 범위를 정의합니다. 예를 들어
scope_test라는 범위를 사용하려면 조건resource.name.endsWith("/dataAccessScopes/scope_test")를 설정합니다.
Data Export API에 데이터 RBAC가 구현되는 방식에 대한 자세한 내용은 데이터 RBAC가 Data Export API에 적용되는 방식을 참고하세요.
Google Cloud Storage 버킷 만들기. 프로젝트에서 새 Google Cloud Storage 버킷 (내보낸 데이터의 대상)을 Google SecOps 테넌트와 동일한 리전에 만듭니다. Google Cloud승인되지 않은 액세스를 방지하기 위해 비공개로 설정합니다. 자세한 내용은 버킷 만들기를 참고하세요.
서비스 계정에 권한 부여. Google SecOps 테넌트에 연결된 Google SecOps 서비스 계정에 버킷에 데이터를 쓸 수 있는 필요한 IAM 역할을 부여하려면 다음을 수행합니다.
FetchServiceAccountForDataExportAPI 엔드포인트를 호출하여 Google SecOps 인스턴스의 고유한 서비스 계정을 식별합니다. API는 서비스 계정 이메일을 반환합니다.요청 예시:
{ "parent": "projects/myproject/locations/us/instances/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" }응답 예:
{ "service_account_email": "service-1234@gcp-sa-chronicle.iam.gserviceaccount.com" }Google SecOps 서비스가 내보낸 데이터 파일을 Google Cloud Storage 버킷에 쓸 수 있도록 대상 Google Cloud Storage 버킷에 대해 Google SecOps 서비스 계정 주 구성원에게 다음 IAM 역할을 부여합니다.
Storage object administrator (roles/storage.objectAdmin)Legacy bucket reader (roles/storage.legacyBucketReader)
자세한 내용은 Google SecOps 서비스 계정에 액세스 권한 부여를 참고하세요.
인증 완료. Data Export API는 호출을 인증합니다. 이 인증을 설정하려면 다음 섹션의 안내를 따르세요.
주요 사용 사례 및 핵심 워크플로
Data Export API는 데이터 내보내기 작업을 만들고 대량 데이터 내보내기의 전체 수명 주기를 관리하는 엔드포인트 모음을 제공합니다. API 호출을 사용하여 모든 상호작용을 수행합니다.
다음 사용 사례에서는 데이터 내보내기 작업을 만들고, 모니터링하고, 관리하는 방법을 설명합니다.
새 데이터 내보내기 작업 만들기
시스템은 데이터 내보내기 작업 사양을 상위 리소스 Google SecOps 인스턴스에 저장합니다. 이 인스턴스는 내보내기 작업의 로그 데이터 소스입니다.
Google SecOps 인스턴스의 고유한 서비스 계정을 식별하는 방법은 FetchServiceAccountForDataExports를 참고하세요.
새 내보내기를 시작하려면
POST요청을dataExports.create엔드포인트로 보냅니다. 자세한 내용은CreateDataExport엔드포인트를 참고하세요.
데이터 내보내기 작업 상태 모니터링
특정 내보내기 작업의 데이터 내보내기 작업 세부정보 및 상태를 보거나 특정 유형의 작업을 볼 수 있도록 필터를 구성할 수 있습니다.
특정 내보내기 작업을 보는 방법은 GetDataExport를 참고하세요.
필터를 사용하여 특정 유형의 데이터 내보내기 작업을 나열하는 방법은 ListDataExport를 참고하세요.
대기열에 추가된 작업 취소
작업 상태가 IN_QUEUE일 때 작업을 취소할 수 있습니다.
대기열에 추가된 작업을 취소하는 방법은 CancelDataExport를 참고하세요.
데이터 RBAC가 Data Export API에 적용되는 방식
내보내기 작업은 내보내기 작업을 만드는 사용자의 데이터 RBAC 범위를 상속하므로 승인되지 않은 데이터 추출을 방지합니다.
데이터 액세스 범위에서 허용하는 범위를 벗어나는 데이터를 내보내려고 하면 API는 내보내기 작업을 실행할 때 이러한 데이터를 자동으로 제외합니다. 완료된 작업 (즉, 상태가 FINISHED_SUCCESS인 작업)의 메타데이터에 있는 dataRbacFiltered 필드의 값은 데이터가 제외되었는지 여부를 나타냅니다. dataRbacFiltered가 true이면 내보내기 작업에 선택된 데이터의 일부 또는 전부가 작업 생성자에게 적용되는 데이터 RBAC 범위에 속하지 않기 때문에 제외되었습니다. dataRbacFiltered가 false이면 내보내기 작업은 데이터 RBAC 범위 제한사항의 영향을 받지 않았으며 작업의 일부로 포함된 모든 데이터가 성공적으로 내보내졌습니다.
API는 작업 생성 시 생성자에게 적용되는 데이터 RBAC 범위를 적용합니다. 데이터 RBAC 범위의 변경사항은 이미 생성된 작업에 소급 적용되지 않습니다.
데이터 RBAC에 대한 자세한 내용은 데이터 RBAC 개요를 참고하세요.
일반적인 문제 해결
API는 문제를 진단하는 데 도움이 되는 자세한 오류 메시지를 제공합니다.
| 표준 코드 | 오류 메시지 |
|---|---|
INVALID_ARGUMENT |
INVALID_REQUEST: Invalid request parameter PARAMETER_1, PARAMETER_2, ... PARAMETER_N. Please fix the request parameters and try again. |
PERMISSION_DENIED |
INSUFFICIENT_PERMISSIONS: Unable to validate request with the current CMEK key. Please fix the CMEK key and try again |
NOT_FOUND |
BUCKET_NOT_FOUND: The destination Google Cloud Storage bucket BUCKET_NAME does not exist. Please create the destination Google Cloud Storage bucket and try again. |
NOT_FOUND |
REQUEST_NOT_FOUND: The dataExportId:DATA_EXPORT_ID does not exist. Please add a valid dataExportId and try again. |
FAILED_PRECONDITION |
BUCKET_INVALID_REGION: The Google Cloud Storage bucket BUCKET_ID's region:REGION_1 is not the same region as the SecOps tenant region:REGION_2. Please create the Google Cloud Storage bucket in the same region as SecOps tenant and try again. |
FAILED_PRECONDITION |
INSUFFICIENT_PERMISSIONS: The Service Account P4SA does not have storage.objects.create, storage.objects.get and storage.buckets.get permissions on the destination Google Cloud Storage bucket BUCKET_NAME. Please provide the required access to the Service Account and try again. |
FAILED_PRECONDITION |
INVALID_CANCELLATION: The request status is in the STATUS stage and can't be cancelled. You can only cancel the request if the status is in the IN_QUEUE stage. |
RESOURCE_EXHAUSTED |
CONCURRENT_REQUEST_LIMIT_EXCEEDED: Maximum concurrent requests limit LIMIT reached for the request size SIZE_LIMIT. Please wait for the existing requests to complete and try again. |
RESOURCE_EXHAUSTED |
REQUEST_SIZE_LIMIT_EXCEEDED: The estimated export volume: ESTIMATED_VOLUME for the request is greater than maximum allowed export volume: ALLOWED_VOLUME per request. Please try again with a request within the allowed export volume limit. |
INTERNAL |
INTERNAL_ERROR: An Internal error occurred. Please try again. |
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.