0

我创建了一个打算在我们的开发环境中使用的服务帐户,并且由于它的凭据已检查到源代码控制中,因此我想将其访问权限锁定在最低限度。

当启动新主机时,我们的应用程序会创建一个新的 PubSub 订阅,监听新创建的订阅,然后在完成后将其删除。我们选择了这个模型而不是拥有许多预配置/硬编码的订阅,因为主机的数量会随着时间的推移而增加和减少,如果可能的话,我们不想要特定于主机的配置(以主机订阅映射的形式)等等。我们希望在本地开发环境中具有相同的行为,非常适合调试。

我创建了一个特定的“开发”主题,并授予我们的开发服务帐户 Pub/Sub Admin 角色,允许它附加订阅到该主题。我还授予服务帐户项目级权限,允许它创建订阅。服务帐户可以成功创建新订阅并将其附加到主题,但是当它尝试从新订阅中读取时,我收到权限被拒绝错误。

我猜这是因为,在检查新创建的订阅时,我注意到创建它的服务帐户没有被授予对该订阅的任何类型的权限。我希望创建订阅的帐户至少具有读取权限。

服务帐户有没有办法创建订阅,将它们附加到主题,然后从该订阅中读取...而不授予服务帐户访问任何其他订阅或主题的权限?我知道我可以只给服务帐户一个“更高级别”的角色,可以读取所有订阅,但这违背了拥有一个仅限开发帐户的目的。

4

1 回答 1

-1

在您的服务帐户创建订阅后,它可以在订阅上调用 setIamPolicy 以授予自己对它的读取权限。这是有效的,因为您为您的服务帐户提供了项目的 pubsub 管理员角色,其中包括对项目中的任何订阅调用 setIamPolicy 的能力。

https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.subscriptions/setIamPolicy

于 2017-10-26T20:49:24.143 回答