我有一个带有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
。撤销授权可以再次登录,但我无法重新分配所有权。。。
当在一个单独的实例上测试时,我确实得到了在用户帐户之间工作的过程,也得到了从服务帐户到用户帐户的过程,但没有得到从用户帐户到服务帐户的过程。
有没有一种方法可以让服务帐户在用户帐户上被授予时登录,或者有其他方法可以重新分配所有权?
我也遇到了同样的问题,但这似乎可靠地起作用:
假设您以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
在数据库级别上工作,因此您可能需要在要转移所有权的每个数据库中运行它。