[英]GCP gcloud script to compare all project roles with a list of roles in a file
[英]gcloud command to list all project owner
搜索 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
上的多个文档根。
然后可以过滤掉 value 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 output 。
这种方法的缺点是您需要使用多个工具( gcloud
和jq
)而不是一个( gcloud
)。
在jq
的情况下,更容易 (?:) 编写一个从成员中提取 email 的过滤器:
FILTER="
.bindings[]
|select(.role==\"roles/owner\").members[]
|split(\":\")[1]"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.