Storage Insights 데이터 세트

Storage Insights 데이터 세트 기능을 사용하면 데이터를 대규모로 파악, 구성, 관리할 수 있습니다. 조직이나 메타데이터를 업데이트하려는 버킷과 객체가 포함된 하나 이상의 프로젝트 또는 폴더를 선택할 수 있습니다. 이러한 프로젝트에 포함된 버킷과 객체의 쿼리 가능한 메타데이터 색인이 BigQuery 연결 데이터 세트로 제공됩니다.

BigQuery로 내보낸 Cloud Storage 리소스에 대한 인사이트를 얻으려면 Storage Insights 데이터 세트를 사용하세요. 이러한 인사이트를 활용하면 데이터 탐색, 비용 최적화, 보안 시행, 거버넌스 구현에 도움이 됩니다. Storage Insights 데이터 세트는 Storage Intelligence 구독을 통해서만 사용할 수 있는 전용 기능입니다.

개요

Storage Insights 데이터 세트는 조직 내에서 지정된 하나 이상의 소스 프로젝트에 있는 모든 버킷과 객체의 메타데이터에 대한 롤링 스냅샷입니다. 데이터 세트에서 제공하는 정보를 통해 Cloud Storage 데이터를 더 잘 이해하고 정기적으로 감사할 수 있습니다.

데이터 세트를 만들려면 먼저 프로젝트에서 데이터 세트 구성을 만듭니다. 조직 또는 메타데이터를 보려는 버킷과 객체가 포함된 하나 이상의 프로젝트나 폴더를 선택할 수 있습니다. 데이터 세트 구성은 매일 데이터 세트를 생성합니다. 데이터 세트 구성과 데이터 세트는 모두 Cloud Storage 내에 저장된 리소스입니다.

데이터 세트를 보려면 먼저 데이터 세트를 BigQuery에 연결해야 합니다.

데이터 세트 구성 속성

데이터 세트 구성을 만들 때 데이터 세트의 이러한 속성을 설정합니다. 데이터 세트를 구성한 후 첫 번째 데이터가 BigQuery에 연결된 데이터 세트로 채워지는 데 최대 48시간이 걸릴 수 있습니다. 새로 추가된 객체 또는 버킷은 다음 일일 스냅샷에 포함됩니다.

  • 이름: 데이터 세트를 참조하는 데 사용되는 이름입니다. 이름은 데이터 세트 구성의 식별자로 사용되며 구성이 생성된 후에는 변경할 수 없습니다. 이름은 영문자, 숫자, 밑줄을 사용하여 최대 128자(영문 기준)를 포함합니다. 이름은 문자로 시작해야 합니다.

  • 설명(선택사항): 데이터 세트에 대한 설명입니다. 설명은 언제든지 수정할 수 있습니다.

  • 데이터 세트 범위: 메타데이터를 원하는 버킷과 객체가 포함된 조직, 프로젝트 또는 폴더를 지정하는 필수 필드입니다. 프로젝트 또는 폴더를 개별적으로 지정하거나 CSV 파일로 지정할 수 있으며, 각 프로젝트 또는 폴더 번호는 별도의 줄에 입력됩니다. 하나의 데이터 세트 구성에서 최대 10,000개의 프로젝트 또는 폴더를 지정할 수 있습니다. 데이터 세트는 지정된 데이터 세트 범위에 대해 구성됩니다. 각 데이터 세트 구성에 하나의 데이터 세트 범위만 지정할 수 있습니다. 데이터 세트 구성을 수정할 때 데이터 세트 범위를 업데이트할 수 있습니다.

  • 버킷 필터(선택사항): 버킷 이름 또는 리전별로 데이터 세트에서 특정 버킷을 포함하거나 제외하는 데 사용되는 필터입니다.

  • 보관 기간: 데이터 세트가 데이터를 캡처하고 보관하는 기간(일)입니다(데이터 세트 생성일 포함). 데이터 세트는 24시간마다 메타데이터로 업데이트되며 최대 90일 동안 데이터를 보관할 수 있습니다. 보관 기간을 벗어나 캡처된 데이터는 자동으로 삭제됩니다. 예를 들어 2023년 10월 1일에 생성되었으며 보관 기간이 30으로 설정된 데이터 세트가 있다고 가정해 보겠습니다. 10월 30일에는 10월 1일부터 10월 30일까지 지난 30일간의 데이터가 데이터 세트에 반영됩니다. 10월 31일에는 10월 2일부터 10월 31일까지의 데이터가 데이터 세트에 반영됩니다. 보관 기간은 언제든지 수정할 수 있습니다.

  • 위치: 데이터 세트와 데이터를 저장할 위치입니다. 예를 들면 us-central1입니다. 위치는 BigQuery에서 지원되어야 합니다. BigQuery 테이블이 있는 경우 BigQuery 테이블의 위치를 선택하는 것이 좋습니다.

  • 서비스 에이전트 유형: 구성 범위 서비스 에이전트 또는 프로젝트 범위 서비스 에이전트입니다.

    데이터 세트 구성을 만들면 서비스 에이전트가 프로비저닝됩니다. 데이터 세트를 읽고 쓰려면 서비스 에이전트에게 필요한 권한이 부여되어야 합니다.

    프로젝트 범위 서비스 에이전트은 프로젝트의 모든 데이터 세트 구성에서 생성된 데이터 세트에 액세스하고 이를 쓸 수 있습니다. 예를 들어 프로젝트에 여러 데이터 세트 구성이 있는 경우 프로젝트 범위 서비스 에이전트가 프로젝트 내의 모든 데이터 세트 구성에 대한 데이터 세트를 읽고 쓸 수 있도록 필요한 권한을 한 번만 부여하면 됩니다. 데이터 세트 구성이 삭제되어도 프로젝트 범위 서비스 에이전트는 삭제되지 않습니다.

    구성 범위 서비스 에이전트는 특정 데이터 세트 구성에서 생성된 데이터 세트에만 액세스하고 이를 쓸 수 있습니다. 즉, 데이터 세트 구성이 여러 개인 경우 각 구성 범위 서비스 에이전트에 필요한 권한을 부여해야 합니다. 데이터 세트 구성이 삭제되면 구성 범위 서비스 에이전트가 삭제됩니다.

데이터 세트 구성을 만든 후 데이터 세트를 BigQuery에 연결합니다. 데이터 세트를 BigQuery에 연결하면 쿼리를 위해 BigQuery에 연결된 데이터 세트가 생성됩니다. 언제든지 데이터 세트를 연결하거나 연결 해제할 수 있습니다.

데이터 세트 구성을 만들거나 업데이트할 때 설정하는 속성에 관한 자세한 내용은 JSON API 참고 리소스의 DatasetConfigs 리소스를 참조하세요.

지원되는 위치

연결된 데이터 세트를 만드는 데 지원되는 BigQuery 위치는 다음과 같습니다.

  • EU
  • US
  • asia-southeast1
  • europe-west1
  • us-central1
  • us-east1
  • us-east4

메타데이터의 데이터 세트 스키마

다음 섹션에서는 데이터 세트에 포함된 메타데이터 필드를 설명합니다. BigQuery 열 모드에 관한 자세한 내용은 모드를 참조하세요. 열 모드는 BigQuery가 데이터를 저장하고 쿼리하는 방식을 결정합니다.

버킷 메타데이터

다음 표에서는 버킷 메타데이터 필드를 설명합니다.

메타데이터 필드 모드 유형 설명
snapshotTime NULLABLE TIMESTAMP snapshotTime 필드는 버킷 메타데이터 스냅샷 새로고침 시간을 RFC 3339 형식으로 저장합니다.
name NULLABLE STRING 버킷의 이름입니다.
location NULLABLE STRING 버킷의 위치입니다. 버킷에 있는 객체의 객체 데이터는 이 위치 내의 물리적 스토리지에 상주합니다.
project NULLABLE INTEGER 버킷이 속한 프로젝트의 프로젝트 번호입니다.
storageClass NULLABLE STRING 버킷의 기본 스토리지 클래스입니다.
public NULLABLE RECORD 지원 중단되었습니다. 이 필드는 버킷에 공개적으로 액세스할 수 있었는지 여부를 나타냅니다. iamConfiguration을 대신 사용하세요.
public.bucketPolicyOnly NULLABLE BOOLEAN 지원 중단되었습니다. public 레코드의 일부인 이 필드는 균일한 버킷 수준 액세스가 사용 설정되었는지 여부를 나타냅니다. 균일한 버킷 수준 액세스가 사용 설정되면 객체 수준 ACL을 통한 액세스가 허용되지 않습니다.
public.publicAccessPrevention NULLABLE STRING 지원 중단되었습니다. public 레코드의 일부인 이 필드는 버킷에 대한 공개 액세스가 차단되었는지 여부를 나타냅니다.
autoclass NULLABLE RECORD 버킷의 자동 클래스 구성: 사용 설정된 경우 객체의 액세스 방식과 시점을 기반으로 객체의 스토리지 클래스를 제어합니다.
autoclass.enabled NULLABLE BOOLEAN 자동 클래스 사용 설정 여부입니다.
autoclass.toggleTime NULLABLE TIMESTAMP 이 버킷에 대해 자동 클래스가 마지막으로 사용 설정 또는 사용 중지된 시간입니다(RFC 3339 형식).
versioning NULLABLE BOOLEAN 버킷에 버전 관리가 사용 설정되어 있는지 여부입니다. 자세한 내용은 객체 버전 관리를 참고하세요.
lifecycle NULLABLE BOOLEAN 버킷에 수명 주기 구성이 있는지 여부입니다. 자세한 내용은 수명 주기 관리를 참고하세요.
metageneration NULLABLE INTEGER 이 버킷의 메타데이터 생성입니다.
timeCreated NULLABLE TIMESTAMP 버킷 생성 시간(RFC 3339 형식)
tags NULLABLE RECORD 지원 중단되었습니다. 이 필드에는 버킷과 연결된 사용자 정의 키-값 쌍이 포함됩니다. 대신 리소스 태그를 사용하세요.
tags.lastUpdatedTime NULLABLE TIMESTAMP 지원 중단되었습니다. tags 레코드의 일부인 이 필드는 태그가 마지막으로 업데이트된 시간을 나타냅니다.
tags.tagMap REPEATED RECORD 지원 중단되었습니다. tags 레코드의 일부인 이 필드에는 태그 키와 값의 맵이 포함됩니다.
tags.tagMap.key NULLABLE STRING 지원 중단되었습니다. tags.tagMap 레코드의 일부인 이 필드는 태그의 키를 나타냅니다.
tags.tagMap.value NULLABLE STRING 지원 중단되었습니다. tags.tagMap 레코드의 일부인 이 필드는 태그의 값을 나타냅니다.
labels REPEATED RECORD 사용자가 제공한 버킷 라벨(키-값 쌍)입니다.
labels.key NULLABLE STRING 개별 라벨 항목입니다.
labels.value NULLABLE STRING 라벨의 값입니다.
softDeletePolicy NULLABLE OBJECT 버킷의 소프트 삭제 정책: 삭제된 후 버킷의 객체가 소프트 삭제된 상태로 유지되는 기간을 정의합니다. 소프트 삭제된 상태의 객체는 영구 삭제할 수 없으며 hardDeleteTime까지 복원할 수 있습니다.
softDeletePolicy.effectiveTime NULLABLE DATETIME

RFC 3339 형식의 소프트 삭제 정책이 적용되는 날짜와 시간입니다.

softDeletePolicy.retentionDurationSeconds이 증가할 때마다 softDeletePolicy.effectiveTime이 업데이트됩니다.

softDeletePolicy.retentionDurationSeconds NULLABLE LONG 소프트 삭제된 객체가 보관되어 영구 삭제할 수 없는 기간(초)입니다. 값은 604800 (7일) 이상, 7776000 (90일) 미만이어야 합니다. 값을 0로 설정하여 소프트 삭제 정책을 사용 중지할 수도 있습니다.
iamConfiguration NULLABLE RECORD 버킷의 IAM 구성입니다.
iamConfiguration.uniformBucketLevelAccess NULLABLE RECORD 버킷의 균일한 버킷 수준 액세스 구성입니다.
iamConfiguration.uniformBucketLevelAccess.enabled NULLABLE BOOLEAN 버킷이 균일한 버킷 수준 액세스를 사용하는지 여부입니다.
iamConfiguration.publicAccessPrevention NULLABLE STRING 버킷의 공개 액세스 방지 상태입니다("inherited" 또는 "enforced").
resourceTags REPEATED RECORD 버킷의 태그입니다. 자세한 내용은 Cloud Resource Manager API를 참고하세요.
resourceTags.key NULLABLE STRING 리소스 태그 키입니다.
resourceTags.value NULLABLE STRING 리소스 태그 값입니다.
totalSize NULLABLE INTEGER 버킷 크기(바이트)입니다.
objectCount NULLABLE INTEGER 버킷의 총 객체 수입니다.

객체 메타데이터

다음 표에서는 객체 메타데이터 필드를 설명합니다.

메타데이터 필드 모드 유형 설명
snapshotTime NULLABLE TIMESTAMP snapshotTime 필드는 객체 메타데이터 스냅샷 새로고침 시간을 RFC 3339 형식으로 저장합니다.
bucket NULLABLE STRING 이 객체가 포함된 버킷의 이름입니다.
location NULLABLE STRING 버킷의 위치입니다. 버킷에 있는 객체의 객체 데이터는 이 위치 내의 물리적 스토리지에 상주합니다.
componentCount NULLABLE INTEGER 복합 객체에만 반환됩니다. 복합 객체에 있는 비복합 객체의 수입니다. componentCount에는 현재 객체를 구성하는 데 사용된 복합 객체의 일부였던 비복합 객체가 포함됩니다.
contentDisposition NULLABLE STRING 객체 데이터의 Content-Disposition입니다.
contentEncoding NULLABLE STRING 객체 데이터의 Content-Encoding입니다.
contentLanguage NULLABLE STRING 객체 데이터의 Content-Language입니다.
contentType NULLABLE STRING 객체 데이터의 Content-Type입니다.
crc32c NULLABLE INTEGER RFC 4960, 부록 B에 설명된 CRC32c 체크섬입니다. big-endian 바이트 순서로 base64를 사용하여 인코딩됩니다.
customTime NULLABLE TIMESTAMP RFC 3339 형식의 객체에 대해 사용자가 지정한 타임스탬프입니다.
etag NULLABLE STRING 객체의 HTTP 1.1 항목 태그입니다.
eventBasedHold NULLABLE BOOLEAN 객체에 이벤트 기반 보존 조치가 적용되는지 여부입니다.
generation NULLABLE INTEGER 이 객체의 콘텐츠 생성입니다.
md5Hash NULLABLE STRING base64를 사용하여 인코딩된 데이터의 MD5 해시입니다. 복합 객체에는 이 필드가 없습니다.
metadata REPEATED RECORD 사용자가 제공한 메타데이터(키-값 쌍)입니다.
metadata.key NULLABLE STRING 개별 메타데이터 항목입니다.
metadata.value NULLABLE STRING 메타데이터 값입니다.
metageneration NULLABLE INTEGER 이 세대에서 이 객체의 메타데이터 버전입니다.
name NULLABLE STRING 객체 이름입니다.
size NULLABLE INTEGER 바이트 단위의 데이터 Content-Length입니다.
storageClass NULLABLE STRING 객체의 스토리지 클래스입니다.
temporaryHold NULLABLE BOOLEAN 객체에 임시 보존이 적용되는지 여부입니다.
timeCreated NULLABLE TIMESTAMP RFC 3339 형식의 객체 생성 시간입니다.
timeDeleted NULLABLE TIMESTAMP RFC 3339 형식의 객체 삭제 시간입니다.
updated NULLABLE TIMESTAMP RFC 3339 형식의 객체 메타데이터의 수정 시간입니다.
timeStorageClassUpdated NULLABLE TIMESTAMP 객체의 스토리지 클래스가 마지막으로 변경된 시간입니다.
retentionExpirationTime NULLABLE TIMESTAMP 객체를 삭제할 수 있는 가장 이른 시간이며 객체에 설정된 보관 구성 및 객체가 포함된 버킷에 설정된 보관 정책에 따라 달라집니다. retentionExpirationTime 값은 RFC 3339 형식으로 제공됩니다.
softDeleteTime NULLABLE DATETIME 객체가 소프트 삭제된 시간입니다. 소프트 삭제 정책이 있는 버킷의 객체에만 사용할 수 있습니다.
hardDeleteTime NULLABLE DATETIME 소프트 삭제된 객체가 영구적으로 삭제되어 더 이상 복원할 수 없는 시간입니다. 값은 버킷의 softDeleteTime 값과 softDeletePolicy.retentionDurationSeconds 값의 합계입니다. 소프트 삭제 정책이 있는 버킷의 객체에만 사용할 수 있습니다.
project NULLABLE INTEGER 버킷이 속한 프로젝트의 프로젝트 번호입니다.

최신 버킷 및 객체 메타데이터 스냅샷

연결된 데이터 세트는 다음 전용 뷰를 통해 버킷 및 객체 메타데이터의 최신 스냅샷을 노출합니다.

  • bucket_attributes_latest_snapshot_view는 Cloud Storage 버킷의 최신 메타데이터를 제공합니다. 구조가 버킷 메타데이터 스키마와 일치합니다.

  • object_attributes_latest_snapshot_view는 Cloud Storage 객체의 최신 메타데이터를 제공합니다. 구조가 객체 메타데이터 스키마와 일치합니다.

프로젝트 메타데이터

프로젝트 메타데이터는 연결된 데이터 세트에서 project_attributes_view라는 뷰로 노출됩니다.

메타데이터 필드 모드 유형 설명
snapshotTime NULLABLE TIMESTAMP snapshotTime 필드는 프로젝트 메타데이터 스냅샷 새로고침 시간을 RFC 3339 형식으로 저장합니다.
name NULLABLE STRING 프로젝트 이름입니다.
id NULLABLE STRING 프로젝트의 고유 식별자입니다.
number NULLABLE NUMBER 프로젝트와 연결된 숫자 값입니다.

이벤트 및 오류의 데이터 세트 스키마

연결된 데이터 세트에서는 events_viewerror_attributes_view 뷰를 통해 스냅샷 처리 이벤트 및 오류를 확인할 수 있습니다. 스냅샷 처리 오류를 해결하는 방법을 알아보려면 데이터 세트 오류 문제 해결을 참조하세요.

이벤트 로그

연결된 데이터 세트의 events_view 뷰에서 이벤트 로그를 확인할 수 있습니다.

열 이름 모드 유형 설명
manifest.snapshotTime NULLABLE TIMESTAMP 이벤트 스냅샷이 새로고침되는 시간입니다(RFC 3339 형식).
manifest.viewName NULLABLE STRING 새로고침된 뷰의 이름입니다.
manifest.location NULLABLE STRING 새로고침된 데이터의 소스 위치입니다.
globalManifest.snapshotTime NULLABLE TIMESTAMP 이벤트 스냅샷이 새로고침되는 시간입니다(RFC 3339 형식).
eventTime NULLABLE STRING 이벤트가 발생한 시간입니다.
eventCode NULLABLE STRING 해당 항목과 연결된 이벤트 코드입니다. 이벤트 코드 1은 스냅샷 manifest.snapshotTime 내 소스 위치 manifest.location의 모든 항목으로 새로고침되는 manifest.viewName 뷰를 나타냅니다. 이벤트 코드 2는 모든 소스 위치의 버킷 및 객체 항목으로 데이터 세트가 새로고침됨을 나타냅니다. 이 새로고침은 스냅샷 globalManifest.snapshotTime 내에서 발생합니다.

오류 코드

연결된 데이터 세트의 error_attributes_view 뷰에서 오류 코드를 확인할 수 있습니다.

열 이름 모드 유형 설명
errorCode NULLABLE INTEGER 이 항목과 연결된 오류 코드입니다. 유효한 값 목록과 해결 방법은 데이터 세트 오류 문제 해결을 참조하세요.
errorSource NULLABLE STRING 오류의 소스입니다. 유효한 값: CONFIGURATION_PREPROCESSING
errorTime NULLABLE TIMESTAMP 오류가 발생한 시간입니다.
sourceGcsLocation NULLABLE STRING 오류의 소스 Cloud Storage 위치입니다. 프로젝트는 위치가 없으므로 이 필드는 null입니다.
bucketErrorRecord.bucketName NULLABLE STRING 오류와 관련된 버킷의 이름입니다. 이 정보를 사용하여 버킷 오류를 디버그할 수 있습니다.
bucketErrorRecord.serviceAccount NULLABLE STRING 버킷에서 객체를 수집할 권한이 필요한 서비스 계정입니다. 이 정보를 사용하여 버킷 오류를 디버그할 수 있습니다.
projectErrorRecord.projectNumber NULLABLE INTEGER 오류가 발생한 프로젝트 번호입니다. 이 정보를 사용하여 프로젝트 오류를 디버그할 수 있습니다.
projectErrorRecord.organizationName NULLABLE STRING 프로젝트가 처리되기 위해 속해 있어야 하는 조직의 번호입니다. 0 값은 데이터 세트가 조직에 없음을 나타냅니다. 이 정보를 사용하여 프로젝트 오류를 디버그할 수 있습니다.

데이터 세트 오류 문제 해결

연결된 데이터 세트의 error_attributes_view 뷰에 로깅되는 스냅샷 처리 오류를 해결하는 방법을 알아보려면 다음 표를 참조하세요.

오류 코드 오류 사례 오류 메시지 문제 해결
1 소스 프로젝트가 조직에 속하지 않습니다. 소스 프로젝트 projectErrorRecord.projectNumber가 조직 projectErrorRecord.organizationName에 속하지 않습니다. 소스 프로젝트 projectErrorRecord.projectNumber를 조직 projectErrorRecord.organizationName에 추가합니다. 조직 간에 프로젝트를 마이그레이션하는 방법에 관한 안내는 조직 간에 프로젝트 마이그레이션을 참조하세요.
2 버킷 승인 오류 bucketErrorRecord.bucketName 버킷의 객체 수집 권한이 거부되었습니다. 서비스 계정 bucketErrorRecord.serviceAccountbucketErrorRecord.bucketName 버킷의 객체 수집을 허용하는 Identity and Access Management(IAM) 권한을 부여합니다. 자세한 내용은 서비스 에이전트에 필요한 권한 부여를 참조하세요.
3 대상 프로젝트가 조직에 속하지 않습니다. 대상 프로젝트 projectErrorRecord.projectNumber가 조직 projectErrorRecord.organizationName에 없습니다. 대상 프로젝트 projectErrorRecord.projectNumber를 조직 projectErrorRecord.organizationName에 추가합니다. 조직 간에 프로젝트를 마이그레이션하는 방법에 관한 안내는 조직 간에 프로젝트 마이그레이션을 참조하세요.
4 소스 프로젝트에 Storage Intelligence가 구성되어 있지 않습니다. 소스 프로젝트 projectErrorRecord.projectNumber에 Storage Intelligence가 구성되어 있지 않습니다. 소스 프로젝트 projectErrorRecord.projectNumber에 Storage Intelligence를 구성합니다. 자세한 내용은 Storage Intelligence 구성 및 관리를 참조하세요.
5 버킷에 Storage Intelligence가 구성되어 있지 않습니다. 버킷 bucketErrorRecord.bucketName에 Storage Intelligence가 구성되어 있지 않습니다. bucketErrorRecord.bucketName 버킷에 Storage Intelligence를 구성합니다. 자세한 내용은 Storage Intelligence 구성 및 관리를 참조하세요.

고려사항

데이터 세트 구성 시 다음 사항을 고려하세요.

  • 계층적 네임스페이스가 사용 설정된 버킷에서 폴더의 이름을 바꾸면 해당 버킷의 객체 이름이 업데이트됩니다. 연결된 데이터 세트에서 수집할 때 이러한 객체 스냅샷은 연결된 데이터 세트의 새 항목으로 간주됩니다.

  • 데이터 세트는 이러한 BigQuery 위치에서만 지원됩니다.

다음 단계