gcloud 命令列出所有项目所有者

问题描述 投票:0回答:1

搜索 GCP cmd 以列出项目的所有活跃所有者。已尝试使用以下 cmd,但它列出了所有 IAM 策略。我只需要项目所有者信息。

gcloud 项目 get-iam-policy $PROJECT-ID

google-cloud-platform scripting gcloud identity-management
1个回答
1
投票

尝试:

PROJECT="[YOUR-PROJECT-ID]"

gcloud projects get-iam-policy ${PROJECT} \
--flatten="bindings" \
--filter="bindings.role=roles/owner" \
--format="value(bindings.members[])"

这使用

gcloud
--flatten
--format
--filter
。请参阅this帖子以获得非常好的解释。

这很令人困惑,但

--filter
只能在列表上使用,因此
--flatten
用于将具有单个
bindings
的单个资源转换为
bindings
上的多个文档根。

然后就可以过滤掉值

roles
roles/owner
了。

然后将结果格式化为仅包含

members

注意:

members
以类型为前缀(
user:
serviceAccount:
等)。您可能想进一步处理这些。

或者:

PROJECT="[YOUR-PROJECT-ID]"

FILTER="
  .bindings[]
  |select(.role==\"roles/owner\").members"

gcloud projects get-iam-policy ${PROJECT} \
--format=json \
| jq -r "${FILTER}"

如果您愿意使用

jq
来处理 JSON。您可以让
gcloud --format=json
发出 JSON,然后使用
jq
处理它。

这种方法的优点是您可以学习并使用一个工具(即

jq
)来处理任意数量命令(而不仅仅是
gcloud
)的 JSON 输出。

这种方法的缺点是您需要使用多个工具(

gcloud
jq
),而不是只使用一个(
gcloud
)。

jq
的情况下,编写一个从成员中提取电子邮件的过滤器会更容易(!?):

FILTER="
  .bindings[]
  |select(.role==\"roles/owner\").members[]
  |split(\":\")[1]"
© www.soinside.com 2019 - 2024. All rights reserved.