You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Open Liberty通过Azure工作负载身份连接Azure PostgreSQL配置示例请求

Open Liberty 配置 Azure 工作负载身份认证连接 Azure PostgreSQL

1. 基础依赖与特性配置(server.xml)

先确保Open Liberty启用必要的核心特性,以及PostgreSQL JDBC驱动支持:

<featureManager>
    <feature>jdbc-4.3</feature>
    <feature>mpConfig-2.0</feature>
    <!-- 支持Azure工作负载身份令牌获取 -->
    <feature>azure-identity-1.0</feature>
</featureManager>

<!-- 配置PostgreSQL JDBC驱动库 -->
<library id="postgresql-library">
    <file name="postgresql-42.6.0.jar" /> <!-- 替换为你使用的JDBC版本 -->
</library>

2. 工作负载身份与数据源配置

2.1 配置Azure工作负载身份凭据提供者

利用已创建的AKS服务账号与托管身份联合关系,自动获取Azure AD访问令牌:

<azureWorkloadIdentityCredential id="azure-wi-credential" />

2.2 配置PostgreSQL数据源(替换密码认证)

将原密码字段替换为动态获取的Azure AD令牌,同时在JDBC URL中指定Azure AD认证模式:

<dataSource id="postgresql-ds" jndiName="jdbc/postgresql">
    <jdbcDriver libraryRef="postgresql-library" />
    <properties.postgresql
        url="jdbc:postgresql://<你的PostgreSQL服务器名>.postgres.database.azure.com:5432/<数据库名>?sslmode=require&authentication=AzureADPassword"
        user="<托管身份客户端ID或用户主体名(如:<托管身份名>@<租户ID>.onmicrosoft.com)>"
        password="${azure.workload.identity.token}" />
    <!-- 关联工作负载身份凭据提供者 -->
    <containerAuthData credentialRef="azure-wi-credential" />
</dataSource>

3. 应用代码适配(无需修改核心逻辑)

如果应用原本通过JNDI获取数据源,直接沿用原有逻辑即可,令牌获取与认证过程由Open Liberty自动处理:

Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("jdbc/postgresql");
Connection conn = ds.getConnection();
// 后续数据库操作逻辑保持不变

4. 前置验证与权限配置

确保Azure PostgreSQL端已完成以下配置:

  1. 服务器已启用Azure AD认证
  2. 将托管身份添加为数据库角色并赋予权限,执行PostgreSQL命令:
CREATE ROLE <托管身份名称> WITH LOGIN PASSWORD '<托管身份客户端ID>' IN ROLE azure_ad_user;
GRANT CONNECT ON DATABASE <数据库名> TO <托管身份名称>;
-- 根据业务需求赋予数据表操作权限
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO <托管身份名称>;

内容的提问来源于stack exchange,提问作者user2745580

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 23:28:27