主题的 GCP PubSub 权限

gar*_*gar 2 permissions publish-subscribe google-cloud-platform google-cloud-pubsub

我正在尝试创建一个仅有权访问特定 pubsub 主题的服务帐户。

我创建一个主题:

gcloud pubsub topics create mytopic
Run Code Online (Sandbox Code Playgroud)

然后创建一个服务帐户:

gcloud iam service-accounts create my-user \
  --display-name "my-user"
Run Code Online (Sandbox Code Playgroud)

然后尝试授予此服务帐户权限:

gcloud alpha pubsub topics add-iam-policy-binding mytopic \
      --member="serviceAccount:my-user@myproject.iam.gserviceaccount.com" \
      --role='roles/pubsub.editor'
Run Code Online (Sandbox Code Playgroud)

获取服务帐号json文件:

gcloud iam service-accounts keys create \
  --iam-account "my-user@myproject.iam.gserviceaccount.com" \
  service-account.json
Run Code Online (Sandbox Code Playgroud)

使用此服务帐户 json 凭据创建此主题的订阅时被拒绝。

如果我授予此用户对整个项目的 pubsub 的权限,我就可以创建对此主题的订阅,但我不想为此服务帐户授予太多权限。

gcloud projects add-iam-policy-binding myproject \
  --member="serviceAccount:my-user@myproject.iam.gserviceaccount.com" \
  --role='roles/pubsub.editor'
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用它,但它似乎不起作用:https : //cloud.google.com/sdk/gcloud/reference/alpha/pubsub/topics/add-iam-policy-binding

我在这里错过了什么吗?我会认为此用户与主题的角色绑定是否足够权限?

gar*_*gar 6

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

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