我正在尝试创建仅对特定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
我在这里错过了什么吗?我以为该用户对该主题的角色绑定将具有足够的权限?
答案 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