搜索 GCP cmd 以列出项目的所有活跃所有者。已尝试使用以下 cmd,但它列出了所有 IAM 策略。我只需要项目所有者信息。
gcloud 项目 get-iam-policy $PROJECT-ID
尝试:
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]"