목표 : GCP 내부 자산을 중 GCE부분을 확인하는 방안입니다.
온프레미스처럼 클라우드도 어디에 리소스가 존재하는지 파악하는 것이 매우 중요합니다.
운영 인수인계, DR구성등 기존환경에 있는 리소스를 확인하는 경우에 유용합니다.
본 문서에서는 GCE를 기준으로 확인하였으나, 프로젝트, 폴더 또는 조직의 리소스 메타데이터를 쿼리하여 클라우드상 존재하는 리소스를 찾을 수 있습니다.
GCE, LB, Storage등 리소스 자체는 잘 수집이되나 일부 API는 수집이 안되는 경우가 있으니 유의합니다.
3가지 방식 모두 권한은 아래와 같이 "클라우드 애셋 뷰어"가 필요합니다.
해당 권한을 조직, 폴더, 프로젝트 어디에 두느냐에 따라 조회할 수 있는 범위가 달라집니다.
필요 권한 : cloudasset.assets.searchAllResources → roles/cloudasset.viewer
총 3가지 방안에 대해 작성하였습니다.
- Web Console의 애셋 인벤토리 이용하기
콘솔에 접근하여 IAM 및 관리자 / 리소스로 이동
애셋 인벤토리 → 리소스탭을 선택합니다.
리소스 유형에서 더보기를 선택 후
compute.Instance를 체크
현재 프로젝트, 위치, 상태, 생성일, 네트워크 태그등을 정보를 한번에 볼 수 있습니다.
csv 형식으로 파일로도 볼 수 있습니다.
조직 레벨에서 클라우드 애셋 (cloudasset.viewer) 권한이 있다면, 조직레벨에서 한번에 검색도 가능합니다.
- 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 설치는 아래 링크를 참조합니다.
https://cloud.google.com/sdk/docs/install?hl=ko
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”로 파일을 출력하면 엑셀에서 확인이 가능합니다.
- 애셋 인벤토리 이용
해당 기능은 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
'Cloud > GCP' 카테고리의 다른 글
[GCP] VM기준으로 방화벽 내용을 조회 하는 스크립트 (0) | 2025.04.19 |
---|---|
[GCP] STS(Storage Transfer Service) Agent 설치, 설정 (0) | 2025.03.14 |
On-premise 환경에서 GCP의 Private Google Access(PGA) 사용하기 – DNS Forward 방안 (2) | 2025.03.03 |
On-premise 환경에서 GCP의 Private Google Access(PGA) 사용하기 – DNS 설정 가이드 (0) | 2025.02.26 |
[GCP] Cloud Site to Site VPN을 위한 strongswan(openvpn), Cloud VPN 설정방안 (4) | 2025.02.25 |
GCE, GCS, Bigquery Audit Log 확인 (0) | 2025.02.18 |
[GCP] 2단계(MFA) 인증을 조직 단위로 설정하기 (0) | 2025.02.09 |