【问题标题】:Google Classroom Add IAM Policy BindingGoogle 课堂添加 IAM 策略绑定
【发布时间】:2020-11-08 03:51:16
【问题描述】:

我正在研究 Google Classroom Pub/Sub Notification。我的任务是使用 Rest API 创建发布/订阅主题和订阅。我已经成功创建了发布/订阅主题,但是当我为创建的主题设置 IAM 策略/权限时,我收到了错误消息。

API 网址:- https://pubsub.googleapis.com/v1/projects/project-abc/topics/xyz-topic-101:setIamPolicy API 方法:- POST API 请求正文:-

{
    "policy": {
        "bindings": [
            {
                "role": "roles/owner",
                "members": [
                    "abc@domain.com",
                    "classroom-notifications@system.gserviceaccount.com"
                ]
            },
            {
                "role": "roles/pubsub.admin",
                "members": [
                    "abc@domain.com",
                    "classroom-notifications@system.gserviceaccount.com"
                ]
            },
            {
                "role": "roles/pubsub.editor",
                "members": [
                    "abc@domain.com",
                    "classroom-notifications@system.gserviceaccount.com"
                ]
            },
            {
                "role": "roles/pubsub.publisher",
                "members": [
                    "abc@domain.com",
                    "classroom-notifications@system.gserviceaccount.com"
                ]
            },
            {
                "role": "roles/pubsub.subscriber",
                "members": [
                    "abc@domain.com",
                    "classroom-notifications@system.gserviceaccount.com"
                ]
            }
        ],
        "version": 1
    }
}

API 响应:- { “错误”: { “代码”:400, "message": "成员 abc@domain.com 的类型未知。请为该成员设置一个有效的类型前缀。", “状态”:“INVALID_ARGUMENT” } }

我已关注以下 Google Doc 链接:- https://cloud.google.com/pubsub/docs/reference/rest/v1/Policy#Binding 我不明白为什么这个消息会来。请分享您的建议和反馈。

【问题讨论】:

标签: google-cloud-pubsub google-classroom


【解决方案1】:

在我的例子中,我尝试使用服务帐户名称,但它希望在前缀中看到帐户类型

我用了什么:

xyz@gcp-airflow-k8s.iam.gserviceaccount.com

预期结果:

serviceaccount:xyz@gcp-airflow-k8s.iam.gserviceaccount.com

【讨论】:

    【解决方案2】:

    很遗憾,我目前无法发表评论,但 Voy 的回答解决了这个问题。您必须添加成员的类型。以下部分摘自谷歌云文档:

    示例:user:test-user@gmail.com、group:admins@example.com、serviceAccount:test123@example.domain.com 或 domain:example.domain.com。 也可以是以下特殊值之一: allUsers - 代表互联网上任何人的特殊标识符,无论是否有 Google 帐户。 allAuthenticatedUsers - 表示通过 Google 帐户或服务帐户进行身份验证的任何人的特殊标识符。

    【讨论】:

    • Voy 已经粘贴了google doc的链接。如果您想声明答案有用,您应该只投票answer 而不是评论。
    • 我的意思是,由于我的声誉,我不能投票...这就是我添加评论的原因
    • 这就是为什么这里是声誉:) 没关系。你知道,无论如何,投票都是记录在案的。声望提升后可见。
    【解决方案3】:

    不确定这是否会有所帮助,但我发现您需要 set the member type 才能使用。

    来自文档:

    应该是 user|group|serviceAccount:email 或 domain:domain 的形式。

    所以尝试添加前缀,类似于:serviceAccount:abc@domain.com,或任何您的成员类型。

    【讨论】:

      猜你喜欢
      • 2020-11-20
      • 1970-01-01
      • 1970-01-01
      • 2021-09-23
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 2020-09-01
      • 1970-01-01
      相关资源
      最近更新 更多