이 문서에서는 프로젝트의 애셋 메타데이터를 Cloud Storage 버킷으로 내보내는 방법을 보여줍니다.
시작하기 전에
Cloud 애셋 인벤토리 명령어를 실행할 프로젝트에서 Cloud 애셋 인벤토리 API를 사용 설정하세요.
계정에 Cloud 애셋 인벤토리 API를 호출할 수 있는 올바른 역할이 있는지 확인합니다. 각 호출 유형에 대한 개별 권한은 권한을 참고하세요.
내보낼 Cloud Storage 버킷을 만듭니다(아직 없는 경우).
제한사항
커스텀 Cloud Key Management Service(Cloud KMS) 키로 암호화된 Cloud Storage 버킷은 지원되지 않습니다.
Cloud Storage 버킷에 보관 정책을 설정할 수 없습니다.
내보내기 중에 작업이 출력 폴더에 임시 파일을 만들 수 있습니다. 작업이 진행되는 동안 이 임시 파일을 삭제하지 마세요. 작업이 완료된 후에 임시 파일이 자동으로 삭제됩니다.
ACCESS_POLICY
콘텐츠 유형은 조직 수준에서만 내보낼 수 있습니다.내보낼 파일이 이미 존재하고 내보내고 있는 경우
400
오류가 반환됩니다.권한을 테스트하기 위해 Cloud 애셋 인벤토리는 데이터를 내보내기 전에 빈 파일을 만들어
google.cloud.storage.object.v1.finalized
의 추가 Cloud Storage 트리거 이벤트를 전송합니다.
Cloud Storage로 애셋 스냅샷 내보내기
gcloud
gcloud asset export \ --SCOPE \ --billing-project=BILLING_PROJECT_ID \ --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \ --content-type=CONTENT_TYPE \ --relationship-types=RELATIONSHIP_TYPE_1,RELATIONSHIP_TYPE_2,... \ --snapshot-time="SNAPSHOT_TIME" \ --output-path="gs://BUCKET_NAME/FILENAME"
다음 값을 제공합니다.
-
SCOPE
: 다음 중 한 가지 값을 사용합니다.-
project=PROJECT_ID
: 여기서PROJECT_ID
는 내보내려는 애셋 메타데이터가 있는 프로젝트의 ID입니다. -
folder=FOLDER_ID
: 여기서FOLDER_ID
는 내보내려는 애셋 메타데이터가 포함된 폴더의 ID입니다.Google Cloud 폴더의 ID를 찾는 방법
Google Cloud 콘솔
Google Cloud 폴더의 ID를 찾으려면 다음 단계를 완료하세요.
-
Google Cloud 콘솔로 이동합니다.
- 메뉴 바에서 전환 목록 상자를 클릭합니다.
- 목록 상자에서 조직을 선택합니다.
- 폴더 이름을 검색합니다. 폴더 이름 옆에 폴더 ID가 표시됩니다.
gcloud CLI
다음 명령어를 사용하여 조직 수준에 있는 Google Cloud 폴더의 ID를 검색할 수 있습니다.
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
여기서 TOP_LEVEL_FOLDER_NAME은 폴더 이름과 부분 또는 전체 문자열이 일치하는 값입니다. 발견된 폴더에 대한 자세한 정보를 보려면
--format
플래그를 삭제합니다.이전 명령어는 폴더 내 하위 폴더의 ID를 반환하지 않습니다. 이렇게 하려면 최상위 폴더의 ID를 사용하여 다음 명령어를 실행합니다.
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organization=ORGANIZATION_ID
: 여기서ORGANIZATION_ID
는 내보내려는 애셋 메타데이터가 있는 조직의 ID입니다.Google Cloud 조직의 ID를 찾는 방법
Google Cloud 콘솔
Google Cloud 조직의 ID를 찾으려면 다음 단계를 완료합니다.
-
Google Cloud 콘솔로 이동합니다.
- 메뉴 바에서 전환 목록 상자를 클릭합니다.
- 목록 상자에서 조직을 선택합니다.
- 모두 탭을 클릭합니다. 조직 ID가 조직 이름 옆에 표시됩니다.
gcloud CLI
다음 명령어를 사용하여 Google Cloud 조직의 ID를 검색할 수 있습니다.
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: 선택사항. BigQuery 데이터 세트 및 테이블 관리 권한이 있는 기본 Cloud 애셋 인벤토리 서비스 에이전트가 있는 프로젝트 ID입니다. 결제 프로젝트 설정에 대해 자세히 알아보세요. ASSET_TYPE_#
: 선택사항. 검색 가능한 애셋 유형의 쉼표로 구분된 목록입니다. RE2 호환 정규 표현식이 지원됩니다. 정규 표현식이 지원되는 애셋 유형과 일치하지 않으면INVALID_ARGUMENT
오류가 반환됩니다.--asset-types
가 지정되지 않으면 모든 저작물 유형이 반환됩니다.CONTENT_TYPE
: 선택사항. 검색하려는 메타데이터의 콘텐츠 유형입니다.--content-type
이 지정되지 않으면 애셋 이름, 애셋이 마지막으로 업데이트된 시간, 애셋이 속한 프로젝트, 폴더, 조직과 같은 기본 정보만 반환됩니다.-
RELATIONSHIP_TYPE_#
: 선택사항. Security Command Center 프리미엄 및 엔터프라이즈 등급 구독자만 사용할 수 있습니다. 검색하려는 애셋 관계 유형의 쉼표로 구분된 목록입니다. 이렇게 하려면CONTENT_TYPE
을RELATIONSHIP
으로 설정해야 합니다. -
SNAPSHOT_TIME
: 선택사항. 애셋의 스냅샷을 만들려는 시간(gcloud topic datetime 형식)입니다. 값은 과거 35일 이내여야 합니다.--snapshot-time
이 지정되지 않은 경우 현재 시간으로 스냅샷을 찍습니다. BUCKET_NAME
: 쓰기를 수행할 대상 Cloud Storage 버킷의 이름입니다.FILENAME
: 쓰기를 수행할 대상 Cloud Storage 버킷에 있는 파일입니다.
모든 옵션은 gcloud CLI 참조를 확인하세요.
예
다음 명령어를 실행하여 my-project
프로젝트에서 2024년 1월 30일의 resource
메타데이터를 Cloud Storage 버킷 my-bucket
의 my-file.txt
파일로 내보내세요.
gcloud asset export \ --project=my-project \ --billing-project=my-project \ --content-type=resource \ --snapshot-time="2024-01-30" \ --output-path="gs://my-bucket/my-file.txt"
응답 예시
Export in progress for root asset [projects/my-project]. Use [gcloud asset operations describe projects/000000000000/operations/ExportAssets/RESOURCE/00000000000000000000000000000000] to check the status of the operation.
REST
HTTP 메서드 및 URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:exportAssets
헤더:
X-Goog-User-Project: BILLING_PROJECT_ID
JSON 요청 본문:
{ "assetTypes": [ "ASSET_TYPE_1", "ASSET_TYPE_2", "..." ], "contentType": "CONTENT_TYPE", "relationshipTypes": [ "RELATIONSHIP_TYPE_1", "RELATIONSHIP_TYPE_2", "..." ], "readTime": "SNAPSHOT_TIME", "outputConfig": { "gcsDestination": { "uri": "gs://BUCKET_NAME/FILENAME" } } }
다음 값을 제공합니다.
-
SCOPE_PATH
: 다음 중 한 가지 값을 사용합니다.허용되는 값은 다음과 같습니다.
-
projects/PROJECT_ID
: 여기서PROJECT_ID
는 내보내려는 애셋 메타데이터가 있는 프로젝트의 ID입니다. -
projects/PROJECT_NUMBER
: 여기서PROJECT_NUMBER
는 내보내려는 애셋 메타데이터가 있는 프로젝트의 번호입니다.Google Cloud 프로젝트 번호를 찾는 방법
Google Cloud 콘솔
Google Cloud 프로젝트 번호를 찾으려면 다음 단계를 완료합니다.
gcloud CLI
다음 명령어를 사용하여 Google Cloud 프로젝트 번호를 검색할 수 있습니다.
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
folders/FOLDER_ID
: 여기서FOLDER_ID
는 내보내려는 애셋 메타데이터가 포함된 폴더의 ID입니다.Google Cloud 폴더의 ID를 찾는 방법
Google Cloud 콘솔
Google Cloud 폴더의 ID를 찾으려면 다음 단계를 완료하세요.
-
Google Cloud 콘솔로 이동합니다.
- 메뉴 바에서 전환 목록 상자를 클릭합니다.
- 목록 상자에서 조직을 선택합니다.
- 폴더 이름을 검색합니다. 폴더 이름 옆에 폴더 ID가 표시됩니다.
gcloud CLI
다음 명령어를 사용하여 조직 수준에 있는 Google Cloud 폴더의 ID를 검색할 수 있습니다.
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
여기서 TOP_LEVEL_FOLDER_NAME은 폴더 이름과 부분 또는 전체 문자열이 일치하는 값입니다. 발견된 폴더에 대한 자세한 정보를 보려면
--format
플래그를 삭제합니다.이전 명령어는 폴더 내 하위 폴더의 ID를 반환하지 않습니다. 이렇게 하려면 최상위 폴더의 ID를 사용하여 다음 명령어를 실행합니다.
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID
: 여기서ORGANIZATION_ID
는 내보내려는 애셋 메타데이터가 있는 조직의 ID입니다.Google Cloud 조직의 ID를 찾는 방법
Google Cloud 콘솔
Google Cloud 조직의 ID를 찾으려면 다음 단계를 완료합니다.
-
Google Cloud 콘솔로 이동합니다.
- 메뉴 바에서 전환 목록 상자를 클릭합니다.
- 목록 상자에서 조직을 선택합니다.
- 모두 탭을 클릭합니다. 조직 ID가 조직 이름 옆에 표시됩니다.
gcloud CLI
다음 명령어를 사용하여 Google Cloud 조직의 ID를 검색할 수 있습니다.
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: BigQuery 데이터 세트 및 테이블 관리 권한이 있는 기본 Cloud 애셋 인벤토리 서비스 에이전트가 있는 프로젝트 ID입니다. 결제 프로젝트 설정에 대해 자세히 알아보세요. ASSET_TYPE_#
: 선택사항. 검색 가능한 애셋 유형의 배열입니다. RE2 호환 정규 표현식이 지원됩니다. 정규 표현식이 지원되는 애셋 유형과 일치하지 않으면INVALID_ARGUMENT
오류가 반환됩니다.assetTypes
가 지정되지 않으면 모든 저작물 유형이 반환됩니다.CONTENT_TYPE
: 선택사항. 검색하려는 메타데이터의 콘텐츠 유형입니다.contentType
이 지정되지 않으면 애셋 이름, 애셋이 마지막으로 업데이트된 시간, 애셋이 속한 프로젝트, 폴더, 조직과 같은 기본 정보만 반환됩니다.-
RELATIONSHIP_TYPE_#
: 선택사항. Security Command Center 프리미엄 및 엔터프라이즈 등급 구독자만 사용할 수 있습니다. 검색하려는 애셋 관계 유형의 쉼표로 구분된 목록입니다. 이렇게 하려면CONTENT_TYPE
을RELATIONSHIP
으로 설정해야 합니다. -
SNAPSHOT_TIME
: 선택사항. 애셋의 스냅샷을 만들려는 시간입니다(RFC 3339 형식). 값은 과거 35일 이내여야 합니다.readTime
이 지정되지 않은 경우 현재 시간으로 스냅샷을 찍습니다. BUCKET_NAME
: 쓰기를 수행할 대상 Cloud Storage 버킷의 이름입니다.FILENAME
: 쓰기를 수행할 대상 Cloud Storage 버킷에 있는 파일입니다.
모든 옵션은 REST 참조를 참고하세요.
명령어 예시
다음 명령어 중 하나를 실행하여 my-project
프로젝트에서 2024년 1월 30일의 resource
메타데이터를 Cloud Storage 버킷 my-bucket
의 my-file.txt
파일로 내보내세요.
cURL(Linux, macOS, Cloud Shell)
curl -X POST \ -H "X-Goog-User-Project: BILLING_PROJECT_ID" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "contentType": "RESOURCE", "readTime": "2024-01-30T00:00:00Z", "outputConfig": { "gcsDestination": { "uri": "gs://my-bucket/my-file" } } }' \ https://cloudasset.googleapis.com/v1/projects/my-project:exportAssets
PowerShell(Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-Goog-User-Project" = "BILLING_PROJECT_ID"; "Authorization" = "Bearer $cred" } $body = @" { "contentType": "RESOURCE", "readTime": "2024-01-30T00:00:00Z", "outputConfig": { "gcsDestination": { "uri": "gs://my-bucket/my-file" } } } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:exportAssets" | Select-Object -Expand Content
응답 예시
{ "name": "projects/000000000000/operations/ExportAssets/RESOURCE/00000000000000000000000000000000", "metadata": { "@type": "type.googleapis.com/google.cloud.asset.v1.ExportAssetsRequest", "parent": "projects/000000000000", "readTime": "2024-01-30T00:00:00Z", "contentType": "RESOURCE", "outputConfig": { "gcsDestination": { "uri": "gs://my-bucket/export.txt" } } } }
C#
Cloud 애셋 인벤토리용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Cloud 애셋 인벤토리 클라이언트 라이브러리를 참조하세요.
Cloud 애셋 인벤토리에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Go
Cloud 애셋 인벤토리용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Cloud 애셋 인벤토리 클라이언트 라이브러리를 참조하세요.
Cloud 애셋 인벤토리에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
자바
Cloud 애셋 인벤토리용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Cloud 애셋 인벤토리 클라이언트 라이브러리를 참조하세요.
Cloud 애셋 인벤토리에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
Cloud 애셋 인벤토리용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Cloud 애셋 인벤토리 클라이언트 라이브러리를 참조하세요.
Cloud 애셋 인벤토리에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
PHP
Cloud 애셋 인벤토리용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Cloud 애셋 인벤토리 클라이언트 라이브러리를 참조하세요.
Cloud 애셋 인벤토리에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Cloud 애셋 인벤토리용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Cloud 애셋 인벤토리 클라이언트 라이브러리를 참조하세요.
Cloud 애셋 인벤토리에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Ruby
Cloud 애셋 인벤토리용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Cloud 애셋 인벤토리 클라이언트 라이브러리를 참조하세요.
Cloud 애셋 인벤토리에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
내보내기 상태 확인
내보내기를 완료하는 데 시간이 걸립니다. 내보내기가 완료되었는지 확인하려면 해당 작업 ID를 사용하여 작업을 쿼리하면 됩니다.
내보내기가 완료되더라도 다른 사용자가 동일한 대상에 다른 작업으로 내보내기 요청을 했을 수 있습니다. 이전 요청이 완료된 후 또는 15분이 지난 후에 동일한 대상에 대한 새 내보내기 요청을 할 수 있습니다. 이러한 조건을 벗어난 내보내기 요청은 Cloud 애셋 인벤토리에서 거부됩니다.
gcloud
내보내기 상태를 보려면 다음 안내를 완료합니다.
내보내기 요청에 대한 응답에서 작업 ID가 포함된
OPERATION_PATH
를 가져옵니다.OPERATION_PATH
는 내보내기에 대한 응답에 표시되며 형식은 다음과 같습니다.projects/PROJECT_NUMBER/operations/ExportAssets/CONTENT_TYPE/OPERATION_ID
내보내기 상태를 확인하려면
OPERATION_PATH
와 함께 다음 명령어를 실행합니다.gcloud asset operations describe OPERATION_PATH
REST
내보내기 상태를 보려면 다음 안내를 완료합니다.
내보내기 요청에 대한 응답에서 작업 ID가 포함된
OPERATION_PATH
를 가져옵니다.OPERATION_PATH
는 내보내기에 대한 응답의name
필드 값으로 표시되며 형식은 다음과 같습니다.projects/PROJECT_NUMBER/operations/ExportAssets/CONTENT_TYPE/OPERATION_ID
내보내기 상태를 확인하려면 다음 요청을 실행합니다.
REST
HTTP 메서드 및 URL:
GET https://cloudasset.googleapis.com/v1/OPERATION_PATH
명령어 예시
cURL(Linux, macOS, Cloud Shell)
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://cloudasset.googleapis.com/v1/OPERATION_PATH
PowerShell(Windows)
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://cloudasset.googleapis.com/v1/OPERATION_PATH" | Select-Object -Expand Content
응답 예시
{ "name": "projects/000000000000/operations/ExportAssets/RESOURCE/00000000000000000000000000000000", "metadata": { "@type": "type.googleapis.com/google.cloud.asset.v1.ExportAssetsRequest", "parent": "projects/000000000000", "readTime": "2024-01-30T00:00:00Z", "contentType": "RESOURCE", "outputConfig": { "gcsDestination": { "uri": "gs://my-bucket/export.txt" } } } }
애셋 스냅샷 보기
애셋 스냅샷을 보려면 다음과 같이 하세요.
Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.
애셋 스냅샷을 내보낸 버킷의 이름을 클릭한 다음 내보내기 파일 이름을 클릭합니다.
다운로드를 클릭하여 애셋 스냅샷을 다운로드하고 원하는 텍스트 편집기에서 엽니다.