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

如何通过Airflow DAG向含Azure Key Vault加密列的Azure SQL表插入数据及配置连接串

实现步骤
  • 先完成Azure侧权限配置:给Airflow运行时使用的身份(Azure托管身份或AD服务主体)分配两类权限,一是Azure SQL数据库的读写权限,二是Azure Key Vault对应加密密钥的加密、解密、获取密钥权限,密钥权限可在AKV的访问策略中配置。
  • 安装Airflow运行环境依赖:需要安装pyodbc、azure-identity、azure-keyvault-keys包,同时要在环境中安装对应版本的ODBC Driver for SQL Server,如果是手动处理加密逻辑可以用pymssql替代pyodbc。
  • 配置Airflow敏感信息:不要在DAG代码中硬编码密码、密钥等信息,建议将SQL登录凭证、AKV服务主体凭证(如果不用托管身份)存储在Airflow Variables或内置Secret Manager中。
  • 编写DAG逻辑:如果使用pyodbc的Always Encrypted自动加解密能力,只需要在连接字符串中开启对应参数,直接构造明文数据执行INSERT语句即可,pyodbc会自动调用AKV接口完成敏感列的加密;如果是手动加密,需要先通过Azure Key Vault SDK获取密钥完成敏感字段加密后,再执行插入逻辑。
  • 上线前验证:测试DAG运行成功后,分别用有权限和无权限的身份查询目标表,确认加密列只有有权限的身份可以正常解密出明文,避免权限配置错误。
MsSqlHook 连接字符串配置

你可以直接在Airflow Web UI的Admin -> Connections页面创建类型为Microsoft SQL Server的连接,连接字符串根据你使用的驱动分为两类:

1. pyodbc驱动(推荐,支持Always Encrypted自动加解密)

用户名密码登录场景

mssql+pyodbc://<sql用户名>:<sql密码>@<Azure SQL服务器地址>:1433/<数据库名>?driver=ODBC+Driver+18+for+SQL+Server&Encrypt=yes&ColumnEncryption=AzureKeyVault

Azure托管身份登录场景(无需硬编码密码)

mssql+pyodbc://@<Azure SQL服务器地址>:1433/<数据库名>?driver=ODBC+Driver+18+for+SQL+Server&Encrypt=yes&ColumnEncryption=AzureKeyVault&Authentication=ActiveDirectoryMsi

核心参数说明:ColumnEncryption=AzureKeyVault是开启自动加解密的必填参数,配置后驱动会自动对接AKV完成加密列的处理,不需要额外编写加解密代码。

2. pymssql驱动(仅手动加密场景使用)

pymssql对Always Encrypted支持度有限,仅适合已经手动完成字段加密的场景,连接字符串模板如下:

mssql+pymssql://<sql用户名>:<sql密码>@<Azure SQL服务器地址>:1433/<数据库名>?charset=utf8&Encrypt=yes

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 03:15:01