我真的很困惑 IAM 登录如何与 AlloyDB 配合使用。我在文档中没有看到任何有关将 postgres 用户映射到 IAM 服务帐户的内容。
使用 Cloud SQL Postgres 我可以做到这一点:https://cloud.google.com/sql/docs/postgres/authentication
CLOUD_IAM_SERVICE_ACCOUNT
类型的云sql用户,(gcloud sql users create <GSA> --type=CLOUD_IAM_SERVICE_ACCOUNT
)应用程序通过其 IAM 服务帐户(通过代理)对自己的 postgres 数据库进行身份验证,并且无法访问 postgres 服务器上的其他数据库。
如何使用 AlloyDB 执行此操作?
查看文档,我看到一些提到了
CLOUD_IAM_USER
https://cloud.google.com/alloydb/docs/database-users/about#view-list
但是我看不到如何通过 API 创建 AlloyDB 用户:
sql users
API 也支持 AlloyDB 吗?借助 Cloud SQL,我可以通过 Cloud SQL API 创建 IAM 服务账户用户。
还没有,不。但它即将到来。当然没有日期承诺,但它正在积极开发中。
现已提供手动 IAM 身份验证。
https://cloud.google.com/alloydb/docs/manage-iam-authn
自动 IAM 身份验证(其中 AlloyDB 代理为您处理 OAuth2 令牌)尚不可用。
使用服务帐户和我的 Google IAM 帐户,使用我的 IAM 凭证成功以交互方式连接到 AlloyDB PostgreSQL 实例中的数据库。
帮助我思考两个层面上的联系。首先是使用 AlloyDB-auth-proxy 连接到 AlloyDB 实例。这对我来说适用,使用定义了适当角色的 GCE 服务帐户。基本上端口 5432 是为 PostgreSQL 客户端开放的。第二级是通过 PostgreSQL 客户端(如 psql)连接到特定数据库(如“postgres”)。
gcloud AlloyDB 用户 create [email protected] --type=IAM_BASED 创建 IAM 用户。有一个数据库标志“alloydb.iam_authentication”=“on”需要应用。我想这就是配置了。
然后每次我想以自己的身份连接时,1) gcloud auth login --update-adc; 2)打开一个到loyaldb-auth-proxy的gcloud ssh --iap-tunnel,然后3)使用以下方式登录数据库:
PGPASSWORD=$(gcloud auth print-access-token) psql --host=127.0.0.1 --dbname='postgres' --username="[email protected]"
我刚刚尝试使用上面的命令在服务帐户处于活动状态的情况下使用服务帐户 IAM 用户名,并且它有效。服务帐户必须添加为 Alloydb 用户类型 IAM_BASED,并且需要“roles/alloydb.databaseUser”和“roles/serviceusage.serviceUsageConsumer”。