【问题标题】:Using the gcloud CLI tool, and given the id of the instance, how do you get the project?使用 gcloud CLI 工具,并给定实例的 id,如何获取项目?
【发布时间】:2021-12-30 22:33:23
【问题描述】:

我正在努力为审计自动收集“证据”。审计员给了我一份 GCP 实例列表,供我收集数据。其中一些涉及获取防火墙数据,为此我需要该项目。

我们在 GCP 中有 300 多个项目。审核员给了我一个实例 ID,以及我们创建并放入 DNS 的 FQDN。

所以我正在寻找某种咒语,例如 gcloud projects list --id=8675309,但 Google(搜索引擎,而不是云提供商)今天不想让我找到它。

改写以简化问题:

审核员向我提供了一份 GCP 实例列表。这意味着我无法控制他们给我的信息。我可以从该列表中提取 VM 的实例 ID。例如:

top-1404255003473941074.client1.example.com  -> 1404255003473941074
bot-4104033772852034975.client2.example.com  -> 4104033772852034975
inf-2193649402447445175.example.com          -> 2193649402447445175

我非常想这样做:

for instance_line in $(sort -n -k4 -t',' $instance_list)
do
    instance_id=$(some awk stuff, some sed stuff) 
    project=$(gcloud please give me the project that $instance_id belongs to.) 
    ...
done

【问题讨论】:

  • 不清楚您要的是什么。请包括所涉及的 Google Cloud Platform 资源(例如 GCP Cloud DNS)、您已经尝试过的一些 Cloud SDK (gcloud) 命令以及这些命令的预期和实际输出。我可以看到您已经包含了一个示例 gcloud 命令,但 --id 不是 list 命令的有效标志。

标签: google-cloud-platform cloud gcloud


【解决方案1】:

Google 提供了一项(新)服务,用于清点 Organization'al 资源。这可能是更好的选择:Cloud Asset Inventory

我认为您必须反转问题,因为 (!?) 实例由项目“拥有”(而不是相反)。

  • 因此您必须列举所有项目
  • 枚举项目中的实例
  • 确定这些实例的公共 IP
  • 将 FQDN Cloud DNS A 记录映射到公共 IP 列表

除非防火墙规则明确映射到实例,否则您将难以将防火墙规则与实例关联起来,例如通过标签。即使这样,Compute Engine 元数据也没有描述实例服务可能使用的端口。

gcloud:

# Assume that the auth'd  account can access all the Org's projects
# Otherwise you'll want to replace the command with a list
PROJECTS=$(gcloud projects list --format="value(projectId)"

for PROJECT in ${PROJECTS}
do
  # From docs as I don't have any instances running
  # Returns a CSV to facilitate parsing
  # Potentially pull networkInterfaces too for public IPs
  # https://cloud.google.com/compute/docs/reference/rest/v1/instances/list
  INSTANCES=$(gcloud compute instances list \
  --project=${PROJECT} \
  --format="csv[no-heading](id,name)")
  for INSTANCE in ${INSTANCES}
  do
    IFS=, read ID NAME <<< ${INSTANCE}
    printf "Instance %s (%s)\n" ${ID} ${NAME}
    ...
  done
done

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 2013-01-13
    • 2010-12-23
    • 1970-01-01
    • 2020-07-22
    相关资源
    最近更新 更多