Cloud SQL(postgres)cloudsqlsuperuser无法查看cloudsqliamserviceac



我正在使用IAM服务帐户用户测试CloudSQL IAM自动身份验证。目标是部署一个使用服务帐户(SA(在云中运行的后端服务,该服务可以在不使用密码验证的情况下连接到CloudSQL数据库。

这就是我所做的:

  • 通过gcloud控制台创建云SQL数据库demo-db
  • 通过gcloud控制台创建服务帐户sa
  • 在云sqljdbcsocket工厂的帮助下,创建一个后端服务并以sa为帐户在k8s中运行.并使后端服务具有liquibaseschema迁移,以便它可以创建表
  • 通过gcloud控制台在demo-db中创建IAM服务帐户用户user-sa
  • 通过gcloud控制台在demo-db中创建一个普通的内置用户user-db(带密码((用于我的本地登录/psql到数据库(
  • 将后端部署到生产环境,并连接(使用user-sa(并在demo-db中创建表(使用liquibase(

这是我现在遇到的一个问题:

当我使用云sql代理通过psql本地登录demo-db时,使用用户user-db和密码,我意识到我无法查看或选择后端服务创建的表(通过user-sa(。

那么,作为开发人员,我如何查看数据库中的数据呢?

PS:现在我无法访问user-sasa的秘密/密钥文件。因为它由我们的基础设施管理。我只拥有demo-db的所有权,我可以将我的数据库访问权授予user-sa。。。

我在AWS的Postgres RDS上遇到了同样的问题。

您(作为后端创建服务(基本上必须创建一个角色,将您的部署角色(user-sa(和应用程序用户(user-db(放入该角色中。

然后您的部署脚本将不得不使用ALTER <OBJECT> OWNER TO <ROLE>。现在,该角色中的每个角色或用户都将拥有访问权限。对于函数、表等,您必须这样做

另一种选择是通过ALTER DEFAULT PRIVILEGES设置默认权限,但请注意,这些权限仅对对象生效。如果之后添加了一个新的数据库角色,并希望授予它对已经存在的表的权限,则仍然需要为新角色添加显式权限。

*注意,在postgres中,角色和用户在命令中是可互换的。在我看来,角色不登录,但它可以用来持有一组权限。与其将权限分配给单个用户,不如将其分配给组/角色,然后将用户成员资格授予该组/角色。请确保允许您对用户和角色拥有继承权限,这样才能正常工作。

相关内容

  • 没有找到相关文章

最新更新