Skip to content

使用 TypeScript 连接 Azure Database for PostgreSQL

解决 Node.js 应用连接 Azure PostgreSQL 的配置痛点:提供一套完整的 TypeScript 实现方案,涵盖从基础连接、连接池管理到基于 Microsoft Entra ID 的无密码安全认证工作流。

为什么需要这个技能

在企业级开发中,直接在代码中硬编码数据库密码存在极大的安全风险。Azure 提供了强大的 Microsoft Entra ID(原 Azure AD)集成,允许应用通过托管身份(Managed Identity)进行无密码访问。

此外,由于 Azure PostgreSQL 强制要求 SSL 连接且具有特定的连接限制,开发者需要正确配置 node-postgres (pg) 库,并实现 Token 自动刷新机制,以确保生产环境的长久稳定运行。

适用场景

  • 构建运行在 Azure 上的 Node.js/TypeScript 后端服务。
  • 需要将数据库认证升级为无密码模式(Passwordless)以增强安全性。
  • 处理高并发请求,需要优化数据库连接池(Connection Pool)配置。
  • 编写类型安全的数据库查询逻辑,利用 TypeScript 增强代码健壮性。

核心工作流

1. 环境准备与安装

安装核心驱动及 Azure 身份验证库:

bash
npm install pg @azure/identity
npm install -D @types/pg

2. 认证模式选择

  • 密码认证:适用于开发环境,通过 AZURE_POSTGRESQL_PASSWORD 环境变量传递。
  • Entra ID 认证(推荐):通过 @azure/identity 获取访问令牌,将 Token 作为密码传递给 pg 客户端。

3. 连接池管理 (Production Ready)

为了避免频繁创建/销毁连接,建议使用 Pool。对于无密码认证,由于 Token 约一小时过期,需实现一个包装类(如 AzurePostgresPool)来监控 Token 状态并在过期前自动刷新并重建连接池。

4. 安全查询实践

  • 参数化查询:严禁使用字符串拼接,必须使用 $1, $2 占位符防止 SQL 注入。
  • 事务处理:使用 BEGINCOMMITROLLBACK 确保多步操作的原子性。
  • 强制 SSL:配置 ssl: { rejectUnauthorized: true } 以符合 Azure 安全要求。

下载和安装

下载 azure-postgres-ts 中文版 Skill ZIP

解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md

你可能还需要

暂无推荐