S
SkillNav

Semantic Kernel Python 调整 Azure 认证:1.36.0 移除 DefaultAzureCredential 默认回退

资讯2025-08-27T05:16:27+00:006 分钟阅读
Semantic Kernel Python 调整 Azure 认证:1.36.0 移除 DefaultAzureCredential 默认回退

在早期版本的 Semantic Kernel Python 中,像 AzureChatCompletion 这样的 Azure 服务默认会使用 Azure Identity 库里的 DefaultAzureCredential 作为回退认证机制。这个机制在不显式传入凭据时也能完成认证,尤其在开发阶段非常方便。不过,最新的 1.36.0 版本正在移除这一回退机制,以鼓励更安全、更明确的认证实践。如果你的代码依赖了这一默认行为,升级后可能会遇到错误,并且需要做一些小幅代码调整,才能继续使用基于凭据的认证。

本文将说明这项变更背后的原因、你可能遇到的问题,以及如何更新代码。关于 Azure 认证方式的更多细节,可参考 Azure Identity library documentation

为什么需要这项变更

DefaultAzureCredential 主要是为本地开发环境设计的。它会按顺序尝试一组常见的开发者凭据(例如 Azure CLI、Azure PowerShell、Visual Studio Code 登录态),直到成功为止,从而简化认证流程。虽然这很适合快速原型开发,但在生产环境中会带来一些风险和限制:

  1. 行为不可预测: 它会依次尝试多种认证方式,可能导致延迟、意外失败,或者依赖那些在不同环境中并不稳定可用的凭据。
  2. 交互式认证回退: 默认情况下,它可能触发基于浏览器的交互式登录,这不适合在服务器或云环境中运行的自动化、无界面(headless)生产应用。
  3. 安全性与最佳实践: 生产场景更适合使用显式、专用的凭据,例如托管身份(managed identities)或服务主体(service principals),这样在控制、审计与安全性方面更可控。像 DefaultAzureCredential 这种宽泛回退机制可能掩盖配置问题,也不符合最小权限原则。

基于以上原因,我们建议在生产中根据部署环境选择更有针对性的凭据类型,以确保可靠性和安全性。

最新版本中的变更与潜在报错

从新 SDK 版本开始,隐式使用 DefaultAzureCredential 作为回退机制已被移除。这意味着如果代码没有显式提供认证方式(例如 API key、AD token 或 credential 对象),初始化将失败。

此前依赖默认回退的用户在升级后,可能会看到 ServiceInitializationError,错误信息为:Please provide either api_key, ad_token, ad_token_provider, credential or a client. 这表示 SDK 现在要求你在创建服务时显式传入受支持的认证选项之一。

这项变更通过让认证显式化,减少隐藏依赖,并与 Azure 安全指南保持一致,从而推动更好的编码实践。

如何更新你的代码

要解决这个问题,你需要更新代码并显式传入认证方式。如果你希望继续使用“基于凭据”的方案(类似之前的回退机制),可以从 Azure Identity 库实例化一个具体凭据类型,并传给服务构造函数。

例如,从旧的隐式回退:

code
chat_service = AzureChatCompletion()

改为显式凭据,比如 AzureCliCredential(或者根据场景使用其他类型,如适用于 Azure 托管应用的 ManagedIdentityCredential):

code
from azure.identity import AzureCliCredential

chat_service = AzureChatCompletion(credential=AzureCliCredential())  # Or use another credential type

其他可选方式还包括传入 api_keyad_tokenad_token_provider,或者一个预配置好的 client。请根据你的运行环境选择最合适的方案。

同时别忘了从 azure.identity 导入所需凭据类,并确保运行环境已完成对应配置(例如使用 AzureCliCredential 时需先登录 Azure CLI)。

总结

Semantic Kernel Python 的这次更新移除了 DefaultAzureCredential 回退机制,目的是推动显式且更安全的认证方式,在保留灵活性的同时解决生产环境潜在问题。只需做一处小幅代码调整,你就可以避免初始化错误,并与最佳实践保持一致。

我们也一直希望听到你的声音。如果你有反馈、问题,或希望进一步讨论,欢迎在 GitHub 的 discussion boards 与我们和社区交流!如果你喜欢 Semantic Kernel,也欢迎在 GitHub 给我们点个 star。

Category

Author

Dmytro Struk

高级软件工程师

原文链接:https://devblogs.microsoft.com/semantic-kernel/azure-authentication-changes-in-semantic-kernel-python/

相关文章

AINews:Harness Engineering 到底是不是一门真学问?
深度·3月5日
AINews:Harness Engineering 到底是不是一门真学问?

这篇文章围绕 AI 工程中的核心争议展开:系统能力究竟主要来自更强的模型(Big Model),还是来自更强的编排层(Big Harness)。文中汇总了 OpenAI、Anthropic、Scale AI、METR 等多方观点与数据,显示两派在“模型进步会不会吞噬 Harness 价值”上分歧明显。作者最终认为,随着 Agent 产品落地加速,Harness Engineering 的独立价值正在被市场和社区进一步确认。

10 分钟
每个 Agent 都需要一个 Box:Aaron Levie 谈 AI 时代的新基础设施
深度·3月5日
每个 Agent 都需要一个 Box:Aaron Levie 谈 AI 时代的新基础设施

在围绕“AI 是否正在杀死 SaaS”的争论中,Box CEO Aaron Levie 提出相反观点:企业内容与文件系统在 Agent 时代反而更关键。随着 Filesystem、Sandbox 和 Agent 工作流快速普及,核心问题从“让 Agent 能做事”转向“如何治理 Agent 的身份、权限与安全边界”。他认为,未来企业将拥有远多于人的 Agent 数量,而真正的竞争力在于率先完成面向 Agent 的组织与基础设施改造。

8 分钟