빠른 시작: Cloud 애셋 인벤토리를 사용하여 애셋 메타데이터 내보내기

Cloud 애셋 인벤토리를 사용하여 애셋 메타데이터 내보내기

이 빠른 시작에서는 Cloud 애셋 인벤토리 및 Google Cloud CLI gcloud asset 명령어를 사용하여 특정 시점에 애셋 메타데이터를 내보내는 방법을 보여줍니다.

시작하기 전에

Cloud 애셋 인벤토리 작업을 시작하기 전에 Cloud 애셋 인벤토리 API 및 Google Cloud CLI를 사용 설정하고 권한을 할당해야 합니다. Google Cloud CLI는 Cloud 애셋 인벤토리 및 기타 Google Cloud 서비스와 상호작용합니다. gcloud CLI에 대해 자세히 알아보세요.

Cloud 애셋 인벤토리 API 및 Google Cloud CLI 사용 설정

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  3. 필요한 API를 사용 설정합니다.

    API 사용 설정

  4. Google Cloud CLI를 설치하고 초기화합니다.
  5. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  6. 필요한 API를 사용 설정합니다.

    API 사용 설정

  7. Google Cloud CLI를 설치하고 초기화합니다.

권한 구성

Cloud 애셋 인벤토리 API를 호출하려면 먼저 권한을 구성해야 합니다.

애셋 검색

  1. 리소스 메타데이터를 검색하려면 다음 gcloud asset search-all-resources 명령어를 실행하세요.

     gcloud asset search-all-resources \
        --scope SCOPE \
        --query QUERY \
        --asset-types ASSET_TYPES,… \
        --order-by ORDER_BY \
        --read-mask READ_MASK
    

    여기서 다음 플래그는 모두 선택사항입니다.

    • (선택사항) SCOPE: 범위는 프로젝트, 폴더 또는 조직이 될 수 있습니다. 이 범위 내의 Google Cloud 리소스로 검색이 제한됩니다. 호출자는 원하는 범위에 대한 cloudasset.assets.searchAllResources 권한을 부여받아야 합니다. 지정하지 않으면 구성된 프로젝트 속성이 사용됩니다. 구성된 프로젝트를 찾으려면 gcloud config get-value project를 실행하세요. 설정을 변경하려면 gcloud config set project PROJECT_ID를 실행하세요.

      허용되는 값은 다음과 같습니다.

      • projects/PROJECT_ID(예: 'projects/foo-bar')
      • projects/PROJECT_NUMBER(예: 'projects/12345678')
      • folders/FOLDER_NUMBER(예: 'folders/1234567')
      • organizations/ORGANIZATION_NUMBER(예: 'organizations/123456')
    • (선택사항) QUERY: 쿼리 문입니다. 자세한 내용은 쿼리 구성 방법을 참조하세요. 값을 지정하지 않거나 비어 있으면 지정된 scope 내의 모든 리소스를 검색합니다.

      예:

      • name:Important: 이름에 'Important'라는 단어가 포함된 Google Cloud 리소스를 찾습니다.
      • name=Important: 이름이 정확히 'Important'인 Google Cloud 리소스를 찾는 데 사용됩니다.
      • displayName:Impor*: 표시 이름에 'Impor'라는 프리픽스가 포함된 Google Cloud 리소스를 찾습니다.
      • location:us-west*: 위치에 'us' 및 'west'가 모두 포함된 Google Cloud 리소스를 찾습니다.
      • labels:prod: 라벨에 'prod'라는 키 또는 값이 포함된 Google Cloud 리소스를 찾습니다.
      • labels.env:prod: 'env' 라벨이 있고 그 값이 'prod'인 Google Cloud 리소스를 찾습니다.
      • labels.env:*: 'env' 라벨이 있는 Google Cloud 리소스를 찾습니다.
      • kmsKey:key: 이름에 'key'라는 단어가 포함된 고객 관리 암호화 키로 암호화된 Google Cloud 리소스를 찾습니다.
      • state:ACTIVE: 상태에 'ACTIVE'가 포함된 Google Cloud 리소스를 찾습니다.
      • NOT state:ACTIVE: 상태에 'ACTIVE'가 없는 Google Cloud 리소스를 찾습니다.
      • createTime<1609459200, createTime<2021-01-01 또는 createTime<"2021-01-01T00:00:00": '2021-01-01 00:00:00 UTC' 이전에 생성된 Google Cloud 리소스를 찾습니다. 1609459200은 '2021-01-01 00:00:00 UTC'의 에포크 타임스탬프(초)입니다.
      • updateTime>1609459200, updateTime>2021-01-01 또는 updateTime>"2021-01-01T00:00:00": '2021-01-01 00:00:00 UTC' 이후에 업데이트된 Google Cloud 리소스를 찾습니다. 1609459200은 '2021-01-01 00:00:00 UTC'의 에포크 타임스탬프(초)입니다.
      • project:12345: 숫자 12345를 포함하는 Google Cloud 프로젝트에 속하는 Google Cloud 리소스를 찾습니다. 프로젝트 ID가 지원되지 않습니다.
      • folders:(123 or 456): 숫자 123 또는 456을 포함하는 Google Cloud 폴더의 하위 요소인 Google Cloud 리소스를 찾습니다.
      • organization:123: 숫자 123을 포함하는 Google Cloud 조직의 하위 리소스인 Google Cloud 리소스를 찾습니다.
      • parentFullResourceName:ImportantName: 상위 요소 이름에 ImportantName이 포함된 Google Cloud 리소스를 찾습니다.
      • parentAssetType:Project: 상위 요소의 애셋 유형에 Project가 포함된 Google Cloud 리소스를 찾습니다.
      • Important: 검색 가능한 모든 필드에서 'Important'라는 단어가 포함된 Google Cloud 리소스를 찾습니다.
      • Impor*: 검색 가능한 필드에서 'Impor'라는 프리픽스가 포함된 Google Cloud 리소스를 찾습니다.
      • Important location:(us-west1 OR global): 검색 가능한 필드에서 'Important'라는 단어가 포함되고 위치가 'us-west1' 리전이거나 'global'인 Google Cloud 리소스를 찾습니다.
    • (선택사항) ASSET_TYPES: 이 요청이 검색하는 애셋 유형 목록입니다. 비어 있으면 검색 가능한 애셋 유형을 모두 검색합니다. 정규 표현식도 지원됩니다. 예를 들면 다음과 같습니다.

      • "compute.googleapis.com.*"은 애셋 유형이 "compute.googleapis.com"으로 시작하는 리소스의 스냅샷을 만듭니다.
      • ".*Instance"는 애셋 유형이 "Instance"로 끝나는 리소스의 스냅샷을 만듭니다.
      • ".*Instance.*"는 애셋 유형에 "Instance"가 포함된 리소스의 스냅샷을 만듭니다.

      지원되는 모든 정규 표현식 구문은 RE2를 참조하세요. 정규 표현식이 지원되는 애셋 유형과 일치하지 않으면 INVALID_ARGUMENT 오류가 반환됩니다.

    • (선택사항) ORDER_BY: 결과의 정렬 순서를 지정하는 쉼표로 구분된 필드 목록입니다. 기본 순서는 오름차순입니다. 필드 이름 다음에 " DESC"를 추가하여 내림차순으로 표시합니다. 중복된 공백 문자는 무시됩니다. 예를 들면 "location DESC, name"입니다. 응답의 단일 기본 필드만 정렬할 수 있습니다.

      • name
      • assetType
      • project
      • displayName
      • description
      • location
      • kmsKey
      • createTime
      • updateTime
      • state
      • parentFullResourceName
      • parentAssetType

      반복되는 입력란과 같은 다른 모든 필드(예: networkTags), 맵 필드(예: labels) 및 구조체 필드(예: additionalAttributes)는 지원되지 않습니다.

    • (선택사항) READ_MASK: 결과에 반환할 필드를 지정하는 쉼표로 구분된 필드 목록입니다. 지정하지 않으면 versionedResources를 제외한 모든 필드가 반환됩니다. "*"만 지정되면 모든 필드가 반환됩니다. 예시: "name,location", "name,versionedResources", "*".

    리소스 검색 방법을 자세히 알아보려면 리소스 검색을 참조하세요.

  2. IAM 정책을 검색하려면 다음 gcloud asset search-all-iam-policies 명령어를 실행하세요.

     gcloud asset search-all-iam-policies \
        --scope SCOPE \
        --query QUERY \
        --asset-types ASSET_TYPES,… \
        --order-by ORDER_BY
    

    각 항목의 의미는 다음과 같습니다.

    • (선택사항) SCOPE: 범위는 프로젝트, 폴더 또는 조직이 될 수 있습니다. 검색은 이 범위 내의 Identity and Access Management(IAM) 정책으로 제한됩니다. 호출자는 원하는 범위에 대한 cloudasset.assets.searchAllIamPolicies 권한을 부여받아야 합니다. 지정하지 않으면 구성된 프로젝트 속성이 사용됩니다. 구성된 프로젝트를 찾으려면 gcloud config get-value project를 실행하세요. 설정을 변경하려면 gcloud config set project PROJECT_ID를 실행하세요.

      허용되는 값은 다음과 같습니다.

      • projects/PROJECT_ID(예: 'projects/foo-bar')
      • projects/PROJECT_NUMBER(예: 'projects/12345678')
      • folders/FOLDER_NUMBER(예: 'folders/1234567')
      • organizations/ORGANIZATION_NUMBER(예: 'organizations/123456')
    • (선택사항) QUERY: 쿼리 문입니다. 자세한 내용은 쿼리 구성 방법을 참조하세요. 지정하지 않거나 비어 있으면 지정된 scope 내의 모든 IAM 정책을 검색합니다. 쿼리 문자열은 주 구성원, 역할, IAM 조건을 포함하여 각 IAM 정책 binding과 비교됩니다. 반환된 IAM 정책에는 쿼리와 일치하는 binding만 포함됩니다. IAM 정책 구조에 대한 자세한 내용은 IAM 정책 문서를 참조하세요.

      예:

      • policy:amy@gmail.com: 'amy@gmail.com' 사용자를 지정하는 IAM 정책 binding을 찾습니다.
      • policy:roles/compute.admin: Compute Admin 역할을 지정하는 IAM 정책 binding을 찾습니다.
      • policy:comp*: 바인딩에서 'compt'가 모든 단어의 프리픽스로 포함된 IAM 정책 바인딩을 찾습니다.
      • policy.role.permissions:storage.buckets.update: 'storage.buckets.update' 권한이 포함된 역할을 지정하는 Cloud IAM 정책 binding을 찾습니다. 역할에 포함된 iam.roles.get 액세스 권한이 호출자에게 없으면 이 역할을 지정하는 정책 binding이 검색결과에서 삭제됩니다.
      • policy.role.permissions:upd*: 역할 권한에서 모든 단어의 프리픽스로 'upd'를 포함하는 역할을 지정하는 IAM 정책 바인딩을 찾습니다. 역할에 포함된 iam.roles.get 액세스 권한이 호출자에게 없으면 이 역할을 지정하는 정책 바인딩이 검색결과에서 삭제됩니다.
      • resource:organizations/123456: 'organizations/123456'에 설정된 IAM 정책 바인딩을 찾습니다.
      • resource=//cloudresourcemanager.googleapis.com/projects/myproject: 'myproject'라는 프로젝트에 설정된 IAM 정책 binding을 찾습니다.
      • Important: 포함된 권한을 제외하고 검색 가능한 모든 필드에 'Important'라는 단어가 포함된 IAM 정책 binding을 찾습니다.
      • resource:(instance1 OR instance2) policy:amy: 'instance1' 또는 'instance2' 리소스에 설정된 IAM 정책 바인딩을 찾고 사용자 'amy'도 지정합니다.
      • roles:roles/compute.admin: Compute Admin 역할을 지정하는 IAM 정책 binding을 찾습니다.
      • memberTypes:user: '사용자' 주 구성원 유형이 포함된 IAM 정책 binding을 찾습니다.
    • (선택사항) ASSET_TYPES: Identity and Access Management 정책이 연결된 애셋 유형의 목록입니다. 비어 있으면 검색 가능한 애셋 유형에 연결된 Identity and Access Management 정책을 검색합니다. 정규 표현식도 지원됩니다. 예를 들면 다음과 같습니다.

      • "compute.googleapis.com.*""compute.googleapis.com"으로 시작하는 애셋 유형에 연결된 IAM 정책의 스냅샷을 만듭니다.
      • ".*Instance""Instance"로 끝나는 애셋 유형에 연결된 IAM 정책의 스냅샷을 만듭니다.
      • ".*Instance.*""Instance"가 포함된 애셋 유형에 연결된 IAM 정책의 스냅샷을 만듭니다.

      지원되는 모든 정규 표현식 구문은 RE2를 참조하세요. 정규 표현식이 지원되는 애셋 유형과 일치하지 않으면 INVALID_ARGUMENT 오류가 반환됩니다.

    • (선택사항) ORDER_BY: 결과의 정렬 순서를 지정하는 쉼표로 구분된 필드 목록입니다. 기본 순서는 오름차순입니다. 필드 이름 다음에 " DESC"를 추가하여 내림차순으로 표시합니다. 중복된 공백 문자는 무시됩니다. 예를 들면 "assetType DESC, resource"입니다. 응답의 단일 기본 필드만 정렬할 수 있습니다.

      • resource
      • assetType
      • project

      반복되는 입력란과 같은 다른 모든 필드(예: folders) 및 기본이 아닌 필드(예: policy)는 지원되지 않습니다.

    IAM 정책을 검색하는 방법을 자세히 알아보려면 IAM 정책 검색을 참조하세요.

Cloud Storage로 애셋 스냅샷 내보내기

지정된 타임스탬프에 Cloud Storage 파일로 모든 애셋 메타데이터를 내보내려면 다음 단계를 완료하세요.

  1. 프로젝트에 내보낸 데이터를 저장할 수 있는 기존 Cloud Storage 버킷이 없으면 새 버킷을 생성합니다.

  2. 프로젝트 내에서 애셋 메타데이터를 내보내려면 다음 명령어를 실행하세요. 이 명령어는 내보낸 스냅샷을 gs://YOUR_BUCKET/NEW_FILE의 Cloud Storage 버킷에 저장합니다.

    gcloud asset export \
       --content-type CONTENT_TYPE \
       --project PROJECT_ID \
       --snapshot-time SNAPSHOT_TIME \
       --output-path "gs://YOUR_BUCKET/NEW_FILE"
    

    각 항목의 의미는 다음과 같습니다.

    • (선택사항) CONTENT_TYPE: 내보낼 애셋의 콘텐츠 유형입니다. 콘텐츠 유형을 지정하지 않으면 애셋 이름만 반환됩니다. 예시 유형에는 리소스 메타데이터를 내보내는 resource가 포함됩니다(지정된 리소스의 각 하위 애셋에 대한 IAM 정책을 내보내는 iam-policy 등). 다른 옵션에는 org-policy, access-policy, os-inventory가 포함됩니다. 자세한 내용은 gcloud asset export 선택적 플래그 섹션을 참조하세요.
    • PROJECT_ID: 메타데이터를 내보낸 프로젝트의 ID입니다. 이 프로젝트는 Cloud 애셋 인벤토리 API가 사용 설정되고 내보내기를 실행 중인 프로젝트이거나 다른 프로젝트일 수 있습니다.
    • (선택사항) SNAPSHOT_TIME: 값은 애셋의 스냅샷을 만들고자 하는 현재 시간 혹은 과거 시간이어야 합니다. 기본적으로 현재 시간으로 스냅샷을 찍습니다. 시간 형식에 대한 자세한 내용은 gcloud topic datetimes를 참조하세요. 예를 들면 --snapshot-time 2021-05-25T10:49:41Z입니다. 참고: 스냅샷 시간을 지정하면 35일을 초과할 수 없습니다.
  3. 조직 또는 폴더의 애셋을 내보내려면 --project 플래그 대신 다음 플래그 중 하나를 사용합니다.

    • --organization=ORGANIZATION_ID
    • --folder=FOLDER_ID
  4. (선택사항) 내보내기 상태를 확인하려면 다음 명령어를 실행하세요. 내보내기 명령어를 실행한 후 gcloud CLI에 표시됩니다.

    gcloud asset operations describe projects/PROJECT_ID/operations/ExportAssets/CONTENT_TYPE/OPERATION_NUMBER
    

애셋 스냅샷 보기

Cloud Storage로 내보낸 후 애셋 스냅샷을 보려면 다음 단계를 완료하세요.

  1. Cloud Storage 브라우저 페이지로 이동
    Cloud Storage 브라우저 페이지 열기

  2. 메타데이터를 내보낸 파일을 엽니다.

내보내기 파일에 애셋 및 리소스 이름이 나열됩니다.

다음 단계