Google课堂添加IAM策略绑定

时间:2020-07-18 13:38:00

标签: google-cloud-pubsub google-classroom

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

API URL:- 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文档 链接:- https://cloud.google.com/pubsub/docs/reference/rest/v1/Policy#Binding 我不明白为什么这条消息来了。请分享您的建议和反馈。

3 个答案:

答案 0 :(得分:0)

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

来自文档:

格式应为user | group | serviceAccount:email或domain:domain。

因此,请尝试按以下前缀添加前缀:serviceAccount:abc@domain.com,或您的成员类型是什么。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

我用过的:

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

预期:

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