使用 Terraform 在 Cloud SQL 中创建不是 cloudsqlsuperuser 的用户

Creating a user that's not a cloudsqlsuperuser in Cloud SQL using Terraform

我想限制我通过 Google Terraform 提供商创建的任何给定用户的权限。默认情况下,创建的任何用户都放在 cloudsqlsuperuser 组中,并且创建的任何新数据库都将 role/group 作为所有者。这使通过 GCP 控制台或 google_sql_user Terraform 资源创建的任何用户都可以完全控制以类似方式创建(或曾经)创建的任何数据库。

到目前为止,我们能想到的最好办法是通过单个 运行 k8s 作业创建和更改用户。充其量这似乎是迂回的,特别是考虑到如果我们想通过 Terraform 管理该资源,则必须稍后手动导入该资源。

是否有更好的方法来创建权限仅限于单个特定于应用程序的数据库的用户?

我也对这种行为感到困惑。它可能不是您想要的答案,但如果您可以使用 GCP IAM 帐户,则用户将在没有角色的 PostgreSQL 实例中创建。

您可以通过“gcloud sql 用户创建”或 terraform 模块“google_sql_user”创建 3 种类型的帐户 “CLOUD_IAM_USER”、“CLOUD_IAM_SERVICE_ACCOUNT”或“BUILT_IN”

如果未指定,则默认为 built_in 类型。 CLOUD_IAM_USER 和 CLOUD_IAM_SERVICE_ACCOUNTS 创建时没有任何角色。

我们使用这些是因为与 IAM 的集成在很多方面都很有用(在数据库级别不管理密码是一个主要的优点,尤其是当与 SQL Auth Proxy 结合使用时)。

BUILT_IN 帐户(即旧学校需要 postgres 用户名和密码)出于某种原因被授予“cloudsql超级用户”角色。

在没有被允许在 GCP 上担任超级用户角色的情况下,这对我(和你)来说就是你所能获得的特权,这似乎是一个奇怪的默认设置。