Cloud/GCP

GCP Asset Inventory로 내부 자산인 GCE(VM) 확인하기

달빛궁전- 2025. 4. 9. 01:00

 

목표 : GCP 내부 자산을 중 GCE부분을 확인하는 방안입니다.
온프레미스처럼 클라우드도 어디에 리소스가 존재하는지 파악하는 것이 매우 중요합니다.
운영 인수인계, DR구성등 기존환경에 있는 리소스를 확인하는 경우에 유용합니다.
본 문서에서는 GCE를 기준으로 확인하였으나, 프로젝트, 폴더 또는 조직의 리소스 메타데이터를 쿼리하여 클라우드상 존재하는 리소스를 찾을 수 있습니다.

GCE, LB, Storage등 리소스 자체는 잘 수집이되나 일부 API는 수집이 안되는 경우가 있으니 유의합니다.

 

3가지 방식 모두 권한은 아래와 같이 "클라우드 애셋 뷰어"가 필요합니다.
해당 권한을 조직, 폴더, 프로젝트 어디에 두느냐에 따라 조회할 수 있는 범위가 달라집니다.

필요 권한 : cloudasset.assets.searchAllResources → roles/cloudasset.viewer

 


총 3가지 방안에 대해 작성하였습니다.

  1. Web Console의 애셋 인벤토리 이용하기
    콘솔에 접근하여 IAM 및 관리자 / 리소스로 이동
    애셋 인벤토리 → 리소스탭을 선택합니다.

리소스 유형에서 더보기를 선택 후
compute.Instance를 체크

현재 프로젝트, 위치, 상태, 생성일, 네트워크 태그등을 정보를 한번에 볼 수 있습니다.


csv 형식으로 파일로도 볼 수 있습니다.
조직 레벨에서 클라우드 애셋 (cloudasset.viewer) 권한이 있다면, 조직레벨에서 한번에 검색도 가능합니다.

 

  1. Cloud Shell에서 gcloud를 이용한 방안

애셋 인벤토리에서 조회를 하면 상단에 “쿼리 보기”가 있습니다.


클릭하면 gcloud용 명령어를 제공합니다.


각 옵션 명령어는 아래 GCP docs사이트를 참조 바랍니다.
https://cloud.google.com/asset-inventory/docs/searching-resources?hl=ko#search_resources

 

리소스 검색  |  Cloud Asset Inventory Documentation  |  Google Cloud

의견 보내기 리소스 검색 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Cloud Asset API에서는 커스텀 쿼리 언어를 사용하여 프로젝트, 폴더 또는 조직의 리소

cloud.google.com

 

 

 

gcloud CLI 설치  |  Google Cloud CLI Documentation

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 gcloud CLI 설치 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이 페이지에는 Google Cloud CLI

cloud.google.com

 

위의 gcloud 명령어는 아래와 같습니다.

gcloud asset search-all-resources \
    --scope=projects/YOUR_PROJECT_ID \
    --asset-types="compute.googleapis.com/Instance"


프로젝트 넘버를 입력하고, 실행하면 Instance의 모든 정보가 출력됩니다.
다만, GUI처럼 정리되어 나오는 것이 아니라 아래 캡쳐화면과 같이 Type, labels, state등 여러정보가 같이 나와서 리스트를 한번에 정리해서 보기는 힘듭니다.

 

 

  • 이제 json 포맷을 이용해서 좀 더 보기 쉽도록 변경해 보겠습니다.
    같은 프로젝트에서, GCE의 VM명, 위치(리전), 생성일자, IP만 보고싶으니 아래와 같이 실행합니다.
gcloud asset search-all-resources \
    --scope=projects/YOUR_PROJECT_ID \
    --asset-types="compute.googleapis.com/Instance" \
    --format="json" | jq -r '
        .[] | [
            (.name | split ("/") | last),
            .location,
            .createTime,
            (.parentFullResourceName | split ("/") | last),
            (.additionalAttributes.internalIPs | join(", "))
        ] | @tsv
    '



한결 보기 편해졌습니다.
좀 더 편하게 보기 위해서 마지막 명령어에 > 파일명. csv 로 내보내기를 하면 엑셀로 확인이 가능합니다.
그리고 csv형식이므로 엑셀의 텍스트 나누기를 하면 각 열별로 정보를 정리할 수 있습니다.



위의 예제로 프로젝트별 GCE 리소스를 확인하였습니다.
해당명령의 필수옵션으로 --scope을 정해야합니다.
범위는 프로젝트, 폴더, 조직 선택이 가능하며, 물론 해당 범위에 대한 SearchAllResources 권한이 있어야 합니다.

- 조직 전체의 GCE 리스트를 확인하기
일일히 프로젝트별로 보기는 힘드니 이제 조직 전체를 프로젝트별로 보도록 하겠습니다.
아래와 같이 입력하면 “VM명 / 위치(리전) / 생성일자 / 프로젝트명 / IP”

gcloud asset search-all-resources \
    --scope=organizations/조직ID \
    --asset-types="compute.googleapis.com/Instance" \
    --format="json" | jq -r '
        .[] | [
            (.name | split ("/") | last),
            .location,
            .createTime,
            (.parentFullResourceName | split ("/") | last),
            (.additionalAttributes.internalIPs | join(", "))
        ] | @tsv
    '


아래와 같이 전체 조직의 VM, 위치, 프로젝트명, IP를 출력할 수 있습니다.
마지막으로 위의 명령어에서 “ > 파일명.csv”로 파일을 출력하면 엑셀에서 확인이 가능합니다.

  1. 애셋 인벤토리 이용
    해당 기능은 Security Command Center 프리미엄 등급 구독시에만 사용이 가능합니다.
    IAM 및 관리자 → 애셋 인벤토리 → 애셋 쿼리 선택
  • GCE 리소스를 확인할 수 있는 아래 예시 쿼리를 실행합니다.
WITH
RegionInstances AS(
SELECT
SPLIT(name, '/') as nameComponents,
resource.DATA.creationTimestamp as createTime,
name
FROM
compute_googleapis_com_Instance
WHERE
resource.location LIKE '%asia%')
SELECT
nameComponents[OFFSET(4)] as project,
nameComponents[OFFSET(6)] as zone,
nameComponents[OFFSET(8)] as instance,
createTime,
name
FROM
RegionInstances


아래와 같이 Project, Zone, Instance명을 확인할 수 있습니다.


애셋 쿼리는 깔끔하게 나오기는 하지만, 너무 많은 리소스가 있으면 25년 4월 기준 수행이 잘 안되는 경우도 있습니다.

 

애셋 쿼리 GCP docs : https://cloud.google.com/asset-inventory/docs/query-assets?hl=ko

 

애셋 쿼리  |  Cloud Asset Inventory Documentation  |  Google Cloud

의견 보내기 애셋 쿼리 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 참고: 이 기능은 Security Command Center 프리미엄 등급 구독자만 사용할 수 있습니다.이 주

cloud.google.com

 

이번 내용 작성시 참고한 GCP docs 입니다.

https://cloud.google.com/asset-inventory/docs/searching-resources?hl=ko#gcloud
https://cloud.google.com/sdk/gcloud/reference/asset/search-all-resources

 

 

리소스 검색  |  Cloud Asset Inventory Documentation  |  Google Cloud

의견 보내기 리소스 검색 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Cloud Asset API에서는 커스텀 쿼리 언어를 사용하여 프로젝트, 폴더 또는 조직의 리소

cloud.google.com