我想在google kubernetes引擎(GKE(中运行一个keycloak
(在wildfly
中运行(,并将我的数据存储在一个托管SQL实例中,我想使用内置IAM身份验证使用google服务帐户(GSA(连接到该实例。我已经完成了大部分设置(云SQL身份验证代理作为sidecar在keycloak
旁边运行,代理成功地对托管实例进行了身份验证,等等(,但我无法说服wildfly
在尝试通过localhost连接到数据库时不要提供密码(sidecar可用(。
类似于我的问题:psql -U <service_account>@<project>.iam
就像一个符咒,空密码的psql -U <service_account>@<project>.iam -p
会失败。
我已经通过安装我自己版本的/opt/jboss/tools/cli/databases/postgres/change-database.cli
来调整使用jboss/keycloak
docker映像的容器,在那里我删除了设置密码的行。新文件看起来像:
/subsystem=datasources/data-source=KeycloakDS: remove()
/subsystem=datasources/data-source=KeycloakDS: add(jndi-name=java:jboss/datasources/KeycloakDS,enabled=true,use-java-context=true,use-ccm=true, connection-url=jdbc:postgresql://${env.DB_ADDR:postgres}/${env.DB_DATABASE:keycloak}${env.JDBC_PARAMS:}, driver-name=postgresql)
/subsystem=datasources/data-source=KeycloakDS: write-attribute(name=user-name, value=${env.DB_USER:keycloak})
/subsystem=datasources/data-source=KeycloakDS: write-attribute(name=check-valid-connection-sql, value="SELECT 1")
/subsystem=datasources/data-source=KeycloakDS: write-attribute(name=background-validation, value=true)
/subsystem=datasources/data-source=KeycloakDS: write-attribute(name=background-validation-millis, value=60000)
/subsystem=datasources/data-source=KeycloakDS: write-attribute(name=flush-strategy, value=IdleConnections)
/subsystem=datasources/jdbc-driver=postgresql:add(driver-name=postgresql, driver-module-name=org.postgresql.jdbc, driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource)
/subsystem=keycloak-server/spi=connectionsJpa/provider=default:write-attribute(name=properties.schema,value=${env.DB_SCHEMA:public})
(不带行的标准内容:/subsystem=datasources/data-source=KeycloakDS: write-attribute(name=password, value=${env.DB_PASSWORD:password})
(。
我错过了什么?
典型。这是键盘和椅子之间的错误。。。
当创建数据库用户时,我错过了最后的.iam
(它看起来像<GSA_account_id>@<project_id>
,而它一定像<GSA_account_id>@<project_id>.iam