在为如何授予 IAM 服务账户对我的 AlloyDB 主实例的读/写权限而苦恼之后,Jack Wotherspoon 回复了我在 GitHub 问题上的询问。我意识到我可以……
在为如何授予 IAM 服务账户对我的 AlloyDB 主实例的读/写权限而苦恼之后,Jack Wotherspoon 回复了我在 GitHub 问题上的询问。我意识到我可以使用 Terraform 授予 IAM 服务账户来自 PostgreSQL 的预定义角色。https: https://github.com/GoogleCloudPlatform/alloydb-python-connector/issues/266
完成这一步后,我现在面临另一个问题。我想授予 IAM 服务帐户 CREATE DB 和 CREATE ROLE 权限,应用程序团队将使用这些权限来创建他们的对象(我来自架构团队)。我测试了不同的角色,有两个符合我的要求:alloydbagent 和loydbimportexport。
我尝试使用 Terraform 授予 Alloydbagent 角色,但遇到错误。
Error: Error updating User "projects/sbx-200827-data/locations/us-east1/clusters/sbx-200827-data-dave-cluster/users/[email protected]": googleapi: Error 400: invalid roles: role alloydbagent is forbidden
Details:
[
{
"@type": "type.googleapis.com/google.rpc.RequestInfo",
"requestId": "7f620fb22bf11fb7"
}
]
with module.gcp_alloydb.google_alloydb_user.iac_sa_user,
on ..\..\..\main.tf line 345, in resource "google_alloydb_user" "iac_sa_user":
345: resource "google_alloydb_user" "iac_sa_user" {
然后我测试了loydbimportexport角色,它成功了。但是,当我使用psql或pgAdmin连接IAM用户并尝试创建数据库或角色时,我收到了一条关于缺少权限的错误消息。
我发现创建数据库的唯一解决方法是在 CREATE DATABASE 语句之前使用 SET ROLE 命令。如果我这样做,它工作正常:
虽然这种方法有效,但我对数据库所有者作为loydbimportexport角色并不满意。
我的问题是:有没有办法直接使用 IAM 用户连接到 PostgreSQL 并运行 CREATE DATABASE 或 CREATE ROLE 命令,而无需使用 SET ROLE 命令?有什么建议或想法吗?