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

如何在Jenkins中通过AAD认证自动化SQL数据拉取Python脚本?

解决Jenkins中Python脚本AAD认证SQL Server的问题

核心排查与解决方案

1. 确认Jenkins节点安装对应ODBC驱动

本地脚本能正常运行依赖ODBC Driver 17 for SQL Server,但Jenkins所在的master/agent节点可能未安装该驱动:

  • 登录Jenkins节点服务器,安装对应系统版本的ODBC Driver 17 for SQL Server
  • 验证安装结果:Linux节点执行odbcinst -q -d,Windows节点通过ODBC数据源管理器查看,确认驱动已存在

2. 用Jenkins凭据管理替代硬编码敏感信息

直接在代码中写入用户名密码不仅不安全,还可能因Jenkins环境权限、变量传递问题导致认证失败:

  • 在Jenkins中创建用户名+密码类型凭据,设置ID为sql-aad-credentials
  • 修改Python脚本,通过Jenkins环境变量读取凭据:
import os
import pyodbc
import pandas as pd

server = 'XXX.database.windows.net'
database = 'xxx-production'
username = os.environ.get('SQL_AAD_USER')
password = os.environ.get('SQL_AAD_PWD')
authentication = 'ActiveDirectoryPassword'

driver = '{ODBC Driver 17 for SQL Server}'
conn = pyodbc.connect(
    f'DRIVER={driver};SERVER={server};PORT=1433;DATABASE={database};UID={username};PWD={password};AUTHENTICATION={authentication}'
)
df = pd.read_sql('select xxxx from tablename', conn)
  • 在Jenkins任务配置中,启用“凭据绑定”,选择上述凭据并映射到SQL_AAD_USER、SQL_AAD_PWD环境变量

3. 切换至AAD服务主体认证(生产环境推荐)

用户密码认证易受过期、交互式限制影响,改用服务主体可提升稳定性:

  • 在Azure AD中注册应用,获取客户端ID、客户端密钥、租户ID
  • 为该服务主体分配SQL Server的db_datareader等必要权限
  • 修改脚本使用服务主体认证:
import os
import pyodbc
import pandas as pd

server = 'XXX.database.windows.net'
database = 'xxx-production'
client_id = os.environ.get('AAD_CLIENT_ID')
client_secret = os.environ.get('AAD_CLIENT_SECRET')
tenant_id = os.environ.get('AAD_TENANT_ID')

driver = '{ODBC Driver 17 for SQL Server}'
conn_str = (
    f'DRIVER={driver};SERVER={server};PORT=1433;DATABASE={database};'
    f'Authentication=ActiveDirectoryServicePrincipal;'
    f'UID={client_id};PWD={client_secret};TenantId={tenant_id}'
)
conn = pyodbc.connect(conn_str)
df = pd.read_sql('select xxxx from tablename', conn)
  • 在Jenkins中存储三个敏感信息为凭据,通过环境变量注入脚本

4. 检查Jenkins节点的网络与权限

  • 确认Jenkins节点能访问SQL Server的1433端口,无防火墙/安全组拦截
  • 验证Jenkins运行账户(Linux的jenkins用户、Windows的服务账户)具备读取环境变量、执行ODBC操作的权限

内容的提问来源于stack exchange,提问作者aredla revanth reddy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:35:19