【问题标题】:How to get the list of all the Members in IAM using Google API如何使用 Google API 获取 IAM 中所有成员的列表
【发布时间】: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


【解决方案1】:

是的,您可以使用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"
  }
]

【讨论】:

  • @user3256289 很高兴听到这个消息。如果我的回答有用,您可以点击旁边的复选标记图标接受它:)
  • 我没有资格这样做......它说......谢谢您的反馈!您需要至少 15 声望才能投票,但您的反馈已被记录。
  • @user3256289 你可能在谈论upvote。你仍然可以接受答案;)What should I do when someone answers?
猜你喜欢
  • 2020-09-14
  • 1970-01-01
  • 1970-01-01
  • 2015-06-04
  • 2015-11-15
  • 1970-01-01
  • 1970-01-01
  • 2017-08-15
  • 1970-01-01
相关资源
最近更新 更多