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

如何通过Tedious为Sequelize ORM配置Azure用户分配托管标识连接Azure SQL

解决方案

Sequelize完全支持使用用户分配托管标识(User-Assigned Managed Identity)认证连接Azure SQL,无需修改原有业务逻辑,仅需调整连接配置即可完成升级。

配置步骤

前置准备

  • 完成用户分配托管标识与目标Azure App Service的关联
  • 为该托管标识分配目标Azure SQL数据库的对应访问权限
  • 安装所需依赖包:
    npm install @azure/identity tedious sequelize

连接配置示例

const { Sequelize } = require('sequelize');
const { DefaultAzureCredential } = require('@azure/identity');

// 建议所有配置从环境变量读取,不要硬编码
const MANAGED_IDENTITY_CLIENT_ID = process.env.MANAGED_IDENTITY_CLIENT_ID;
const SQL_SERVER = process.env.SQL_SERVER;
const SQL_DATABASE = process.env.SQL_DATABASE;

const credential = new DefaultAzureCredential({
  managedIdentityClientId: MANAGED_IDENTITY_CLIENT_ID
});

const sequelize = new Sequelize(SQL_DATABASE, null, null, {
  host: SQL_SERVER,
  dialect: 'mssql',
  dialectOptions: {
    authentication: {
      type: 'azure-active-directory-service-principal-secret',
      options: {
        tokenProvider: async () => {
          const accessToken = await credential.getToken('https://database.windows.net/.default');
          return accessToken.token;
        }
      }
    },
    options: {
      encrypt: true, // Azure SQL强制要求加密连接
      database: SQL_DATABASE
    }
  }
});

// 连接验证
sequelize.authenticate()
  .then(() => console.log('托管标识认证连接成功'))
  .catch(err => console.error('连接失败:', err));

注意事项

  • 依赖版本要求:Sequelize ≥ v6,Tedious ≥ v14,低于对应版本建议先升级依赖避免兼容性问题
  • 本地调试时如果已经通过Azure CLI登录了有权限的账号,DefaultAzureCredential会自动读取本地凭证,不需要额外修改配置即可调试
  • 所有敏感配置建议存放在Azure App Service的应用配置中,通过环境变量读取,不要硬编码在代码中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:06:00