主题的GCP PubSub权限

时间:2019-01-27 00:42:43

标签: permissions google-cloud-platform publish-subscribe google-cloud-pubsub

我正在尝试创建仅对特定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

我在这里错过了什么吗?我以为该用户对该主题的角色绑定将具有足够的权限?

2 个答案:

答案 0 :(得分:2)

事实证明,订阅本身也具有权限。您需要为此权限授予服务帐户才能附加到该帐户。

使用以下命令:https://cloud.google.com/sdk/gcloud/reference/alpha/pubsub/subscriptions/add-iam-policy-binding

答案 1 :(得分:0)

用于创建订阅,您需要

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