主题的 GCP PubSub 权限
Posted
技术标签:
【中文标题】主题的 GCP PubSub 权限【英文标题】:GCP PubSub Permissions for a topic 【发布时间】:2019-06-20 09:40:03 【问题描述】:我正在尝试创建一个仅对特定 pubsub 主题具有权限的服务帐户。
我创建一个主题:
gcloud pubsub topics create mytopic
然后创建一个服务帐号:
gcloud iam service-accounts create my-user \
--display-name "my-user"
然后尝试授予此服务帐户权限:
gcloud alpha pubsub topics add-iam-policy-binding mytopic \
--member="serviceAccount:my-user@myproject.iam.gserviceaccount.com" \
--role='roles/pubsub.editor'
获取服务帐号json文件:
gcloud iam service-accounts keys create \
--iam-account "my-user@myproject.iam.gserviceaccount.com" \
service-account.json
使用此服务帐户 json 凭据创建对此主题的订阅被拒绝。
如果我授予此用户对整个项目的 pubsub 的权限,我可以创建对此主题的订阅,但我不想授予此服务帐户那么多权限。
gcloud projects add-iam-policy-binding myproject \
--member="serviceAccount:my-user@myproject.iam.gserviceaccount.com" \
--role='roles/pubsub.editor'
我正在尝试使用它,但它似乎不起作用:https://cloud.google.com/sdk/gcloud/reference/alpha/pubsub/topics/add-iam-policy-binding
我在这里遗漏了什么吗?我会认为这个用户与主题的角色绑定就足够了?
【问题讨论】:
【参考方案1】:要创建订阅,您需要
pubsub.subscriptions.create on the containing Cloud project and pubsub.topics.attachSubscription on the requested topic
由于pubsub.subscriptions.create
仅包含在roles/
pubsub.editor
(和...admin
)中,您可能希望创建一个自定义角色以不放弃delete
等主题等权限
关于请求的主题,您可以授予pubsub.subscriber
以授予attachSubscription
通过https://cloud.google.com/pubsub/docs/access-control#tbl_perm
【讨论】:
【参考方案2】:原来订阅本身也有权限。您需要授予服务帐户权限才能附加到它。
使用此命令:https://cloud.google.com/sdk/gcloud/reference/alpha/pubsub/subscriptions/add-iam-policy-binding
【讨论】:
非常感谢!我在这上面浪费了 40 分钟。尝试使用google_pubsub_topic_iam_binding
和roles/pubsub.admin
仍然没有用!最后,我使用google_pubsub_subscription_iam_policy
让它工作。以上是关于主题的 GCP PubSub 权限的主要内容,如果未能解决你的问题,请参考以下文章