Azure DevOps与Databricks双PAT认证管理优化方案咨询
优化实现方案
1. 替换个人Databricks PAT为Azure托管身份认证
- 为你的发布流水线分配用户分配托管身份(UMI),为该托管身份授予对应Databricks工作区的库管理、集群访问权限
- 流水线运行时直接调用Azure AD接口动态获取Databricks服务的访问令牌,用该令牌代替静态PAT调用Databricks API,完全不需要存储长期有效密钥,也无需手动续期
- 注意:获取Databricks AAD令牌时,需指定资源ID为
2ff814a6-3304-4ab8-85cb-cd0e6f879c1d(Azure全球版Databricks固定应用ID,世纪互联版可替换为对应区域值)
2. 替换个人DevOps PAT为动态流水线访问令牌
- 无需用个人账号生成PAT,直接在发布流水线中启用内置的
System.AccessToken,给流水线对应的服务主体授予私有Azure Artifacts源的包读取权限即可 - 流水线运行时直接读取这个内置变量作为DevOps令牌,动态填入PyPI源地址,不需要在KeyVault中存储静态DevOps PAT,每次运行生成的令牌仅当前流水线执行周期有效,过期自动作废
- 额外安全优化:向Databricks API传repo地址时,不要明文填入令牌,提前在Databricks中创建绑定Azure KeyVault的机密范围,将动态拿到的DevOps令牌临时写入KeyVault对应密钥,repo地址直接用Databricks机密引用格式:
https://{{secrets/<你的机密范围名称>/<devops令牌密钥名>}}@pkgs.dev.azure.com/<company>/pypi/simple/,Databricks会自动解析机密,不会在日志、集群配置中明文暴露令牌
3. 长期简化方案:集群预配置私有源
如果所有集群都需要从该私有源拉包,可以直接在集群的Spark配置中提前写入私有PyPI源配置,地址同样用Databricks机密引用:
spark.databricks.contexthub.python.repositories https://{{secrets/<机密范围>/<devops令牌密钥>}}@pkgs.dev.azure.com/<company>/pypi/simple/
配置完成后,后续调用库安装接口时不需要再传repo参数,也不需要每次处理DevOps令牌,集群会自动从预配置的私有源拉取包,进一步简化调用逻辑。
内容的提问来源于stack exchange,提问作者luigi
相关产品推荐
相关产品推荐

