【发布时间】:2021-10-21 21:03:44
【问题描述】:
我试图获取成员列表及其角色,我可以使用命令找到但我需要 API,这里有什么帮助吗?
相关命令:gcloud projects get-iam-policy <name of the project>
【问题讨论】:
标签: google-cloud-platform google-cloud-functions gcloud google-iam
我试图获取成员列表及其角色,我可以使用命令找到但我需要 API,这里有什么帮助吗?
相关命令:gcloud projects get-iam-policy <name of the project>
【问题讨论】:
标签: google-cloud-platform google-cloud-functions gcloud google-iam
是的,您可以使用Resource Manager REST API。
响应类似于:
{
"version": 1,
"etag": "someTag=",
"bindings": [
{
"role": "roles/cloudtasks.admin",
"members": [
"serviceAccount:name@projectid.iam.gserviceaccount.com",
"user:username@domain.tld"
]
},
{
"role": "roles/firebase.admin",
"members": [
"user:username@domain.tld"
]
},
]
}
单个用户可能有多个角色,并且该用户的电子邮件可能位于绑定数组的多个项目中,但您应该能够以编程方式轻松过滤它们。
一个 Javascript 函数,用于获取一组用户及其角色:
const {bindings} = {} // response from API
const users = {}
bindings.forEach(({members, role}) => {
members.forEach(member => {
const [type, id] = member.split(":")
if (!users[id]) users[id] = {roles: [], id, type}
users[id]["roles"].push(role)
})
})
const data = Object.keys(users).map(u => users[u])
console.log(data)
// Output:
[
{
id: "name@projectid.iam.gserviceaccount.com",
roles: ["roles/cloudtasks.admin"],
type: "serviceAccount"
},
{
id: "username@domain.tld",
roles: ["roles/cloudtasks.admin", "roles/firebase.admin"],
type: "user"
}
]
【讨论】: