主题的 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_bindingroles/pubsub.admin 仍然没有用!最后,我使用google_pubsub_subscription_iam_policy 让它工作。

以上是关于主题的 GCP PubSub 权限的主要内容,如果未能解决你的问题,请参考以下文章

如何将 GCP Pubsub 订阅的消息转发到另一个主题?

GCP PubSub 主题推送问题

将消息发布到 GCP pubSub 主题失败

GCP Pubsub 主题持续时间中存在的消息数

如何从 Cloudflare 工作人员内部发布到 GCP PubSub 主题

GCP - 如何添加关于发送到 pubsub 死信队列的消息数量的警报?