자체 관리형 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: 내보내기 작업이 시작된 시간을 나타내는 유닉스 시간 값을 나타냅니다.
- FILE_SHARD_NAME: 원시 로그가 포함된 샤딩된 파일의 이름을 나타냅니다. 각 파일 샤드의 최대 파일 크기 한도는 100MB입니다.
성능 및 제한사항
이 서비스에는 플랫폼 안정성과 공정한 리소스 할당을 보장하기 위해 다음과 같은 특정 한도가 있습니다.
- 작업당 최대 데이터 볼륨: 각 개별 내보내기 작업은 최대 100TB의 데이터를 요청할 수 있습니다. 대규모 데이터 세트의 경우 내보내기를 더 작은 기간의 여러 작업으로 나누는 것이 좋습니다.
- 동시 작업: 각 고객 테넌트는 최대 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 프로젝트에 다음 권한이 필요합니다.
- 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 범위가 Google SecOps UI의 설정 > SIEM 설정 > 데이터 액세스 > 범위에서 이미 생성되어 있는지 확인합니다. 사용자에게 할당하려는 각 범위의 전체 이름을 기록해 둡니다.
데이터 내보내기 관리를 위한 Identity and Access Management (IAM) 커스텀 역할을 만듭니다. 사전 정의된 역할은 너무 많은 액세스 권한을 부여하거나 특정 권한 조합이 없을 수 있으므로 다음 단계를 따라 범위가 지정된 컨텍스트 내에서 데이터 내보내기를 관리하는 데 적합한 커스텀 역할을 만듭니다.
- Google Cloud 콘솔에서 IAM 및 관리자 > 역할로 이동합니다.
- + 역할 만들기를 클릭합니다.
- 제목 (예:
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가 구현되는 방식에 대한 자세한 내용은 Data Export API에 데이터 RBAC가 적용되는 방식을 참조하세요.
Google Cloud Storage 버킷을 만듭니다. Google Cloud프로젝트에서 Google SecOps 테넌트와 동일한 리전에 새 Google Cloud Storage 버킷 (내보낸 데이터의 대상)을 만듭니다. 무단 액세스를 방지하기 위해 비공개로 설정합니다. 자세한 내용은 버킷 만들기를 참조하세요.
서비스 계정에 권한을 부여합니다. 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 버킷에 대한 다음 IAM 역할을 부여합니다. 이를 통해 Google SecOps 서비스가 내보낸 데이터 파일을 Google Cloud Storage 버킷에 쓸 수 있습니다.
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 전문가에게 문의하여 답변을 받으세요.