postgresql 将所有权重新分配给IAM服务帐户

xtfmy6hx  于 2023-05-17  发布在  PostgreSQL
关注(0)|答案(1)|浏览(100)

我有一个带有Postgres CloudSQL示例的应用程序,其中的表是由开发人员的IAM帐户设置的。因此,它们由IAM帐户拥有,现在我想将它们设置为由IAM服务帐户拥有。然而,我很难让REASSIGN OWNED工作,只是遇到了权限问题。
我发现了这个有点类似的文档条目,它介绍了如何通过执行GRANT "user@domain" TO "serviceaccount@project.iam"来重新分配所有权。但是,我一这样做,服务帐户就无法再登录,得到FATAL: Cloud SQL IAM user authentication failed for user serviceaccount@project.iam。撤销授权允许再次登录,但我无法重新分配所有权…
当在一个单独的示例上进行测试时,我确实让该过程在用户帐户之间工作,也可以从一个服务帐户到一个用户帐户,但不能从用户帐户到服务帐户。
是否有一种方法可以让服务帐户在用户帐户上GRANTed时登录,或者有其他方法可以重新分配所有权?

x6h2sr28

x6h2sr281#

我也在挣扎,但这似乎是可靠的工作:
假设您以postgres的身份登录。

GRANT "serviceaccount@project.iam" TO postgres;
GRANT other_user TO postgres;

REASSIGN OWNED BY other_user TO "serviceaccount@project.iam";

REVOKE "other_user" FROM postgres;
-- If wanted DROP ROLE other_user;
REVOKE "serviceaccount@project.iam" FROM postgres;

请记住,REASSIGN在数据库级别上工作,因此您可能需要在希望转移所有权的每个数据库中运行此命令。

相关问题