How to manage GCP permissions to create a subscription and allow deletion of only the subscritpion created by this service account?
我正在尝试在应用程序运行时创建订阅,代码应该能够创建订阅并在完成后清理它。
我想以对我正在使用的服务帐户的最低权限执行此操作。现在,我已经创建了一个自定义角色,并授予了对角色
的两个访问权限
虽然这允许创建和清理订阅,但它不仅允许删除当前订阅,还允许删除同一项目中其他用户创建的订阅。
如何分配权限,以便能够在 Pub/Sub 中创建订阅,删除此服务帐户创建的订阅?
另一种说法是,我怎样才能在运行时创建订阅并仅修改此订阅的权限以包含
有没有办法为该帐户创建的资源(主题、订阅、计算引擎等)创建服务帐户管理员/编辑器?类似于 IAM 角色 - 创建资源后成为管理员。
相关文档链接:
https://cloud.google.com/pubsub/docs/access-control
由于 Google IAM 的设计限制,这是不可能的。
在 Google IAM 中,权限与 REST 方法是 1:1 对应的。要调用方法,调用者需要该权限。换句话说,权限被授予调用它们的方法,而不是对象,以便修改/重命名/删除它们,这在您的情况下是必要的。你想删除某个对象,对吧?
要获得更精细的访问权限,您需要在订阅对象上显式分配具有自定义角色的策略,但您几乎无法在项目级别以下分配 Pub/Sub 自定义角色。
订阅创建者不会成为所创建对象的"管理员",因为它可能在具有对象权限的访问管理服务中。如果可以在新创建的订阅上显式分配具有自定义角色的策略,则必须由具有可以管理权限的角色的帐户完成:例如
了解 IAM 自定义角色
Cloud IAM 文档 > 了解角色 > Pub/Sub 角色
访问控制> 所需权限
访问控制>角色