Azure身份认证

20分钟前更新 2 00

Python版Azu

收录时间:
2026-02-25
Azure身份认证Azure身份认证
Azure身份认证

技能简介

Azure Identity是微软官方Python SDK的身份认证组件,支持通过Microsoft Entra ID(原Azure AD)获取访问令牌。该库提供多种凭证类型,覆盖本地开发、CI/CD流水线及Azure云环境的统一认证方案。

业务背景

开发团队使用Azure Identity可统一解决Python应用的身份认证问题。无论本地调试、CI/CD部署还是生产环境,无需修改代码即可自动适配最佳认证方式,降低多环境配置复杂度,同时避免密钥硬编码带来的安全隐患。

落地案例:某数据团队需将本地Python脚本迁移至Azure虚拟机运行。原先使用服务主体密钥的代码,通过DefaultAzureCredential自动识别:本地开发时复用VS Code登录状态,云上运行时切换为虚拟机托管标识,全程无需改动业务代码或暴露敏感凭证。

能做什么

  • 自动检测运行环境并选择最优认证方式
  • 支持系统分配和用户分配的托管标识
  • 基于服务主体密钥或证书完成应用认证
  • 复用Azure CLI、VS Code等已有登录状态
  • 直接获取指定资源的访问令牌
  • 兼容同步与异步Azure SDK客户端

使用说明

安装指令

pip install azure-identity

基础用法

1. 配置环境变量(服务主体场景):

export AZURE_TENANT_ID=<租户ID>
export AZURE_CLIENT_ID=<应用ID>
export AZURE_CLIENT_SECRET=<密钥>

2. 代码中使用DefaultAzureCredential:

from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient

credential = DefaultAzureCredential()
client = BlobServiceClient(
    account_url="https://<账户>.blob.core.windows.net",
    credential=credential
)

3. 自定义凭证链(排除不需要的认证方式):

credential = DefaultAzureCredential(
    exclude_environment_credential=True,
    managed_identity_client_id="<用户分配MI的客户端ID>"
)

4. 直接使用托管标识:

from azure.identity import ManagedIdentityCredential
credential = ManagedIdentityCredential()  # 系统分配
credential = ManagedIdentityCredential(client_id="<用户分配MI的客户端ID>")  # 用户分配

5. 异步场景:

from azure.identity.aio import DefaultAzureCredential
# 使用async with管理客户端生命周期,最后调用await credential.close()

输入与输出

见下方输入与输出表格。

项目内容
输入环境变量(AZURE_TENANT_ID、AZURE_CLIENT_ID、AZURE_CLIENT_SECRET)、托管标识配置、目标资源URL、用户指定的凭证排除选项
输出Microsoft Entra ID访问令牌、令牌元数据(过期时间)、认证失败时的异常详情
适用人群Python后端开发者、DevOps工程师、云架构师、需要集成Azure服务的数据工程师
不包含具体的Azure服务操作(如Blob上传下载)、其他云厂商的认证协议、可视化登录界面

 

风险提示

  • 生产环境避免将密钥硬编码,优先使用托管标识或环境变量注入
  • DefaultAzureCredential会按固定顺序尝试多种认证,失败时错误信息可能指向最后一个尝试的凭证
  • SharedTokenCacheCredential仅Windows可用,跨平台代码需显式排除
  • 令牌具有有效期,长时间运行的任务需处理刷新逻辑
  • 用户分配托管标识必须在代码中指定client_id,否则回退到系统分配可能产生权限不足错误

来源信息

原始链接:https://github.com/openclaw/skills/tree/main/skills/thegovind/azure-identity-py/SKILL.md
来源类型:GitHub仓库

数据统计

相关导航

暂无评论

none
暂无评论...