Appearance
如何在 Python 中使用 Azure Identity 实现统一身份认证
解决云端开发中凭据管理混乱的问题:通过 azure-identity 库,让同一套代码在本地开发环境(使用 CLI 登录)和生产环境(使用托管身份)之间自动切换认证方式,无需硬编码密钥。
为什么需要这个技能
在开发 Azure 应用时,最头疼的是处理不同环境的认证凭据。本地开发时你可能使用 az login 登录,而部署到 Azure VM 或 App Service 后则需要使用托管身份(Managed Identity),在 CI/CD 流水线中则需要服务主体(Service Principal)。
如果为每个环境编写不同的认证逻辑,代码会变得臃肿且难以维护。azure-identity 提供的 DefaultAzureCredential 可以自动尝试一系列预定义的认证链,从而实现“一次编写,到处运行”。
适用场景
- 需要在本地机器、GitHub Actions、Azure Kubernetes Service (AKS) 或 Azure Functions 之间共享同一套代码。
- 想要消除代码中硬编码的
Client Secret,提升安全性。 - 需要为 Azure 资源(如 Blob Storage, Key Vault)快速构建安全访问客户端。
核心工作流
1. 环境准备
安装 SDK 并配置必要的环境变量(如果是服务主体认证):
bash
pip install azure-identitybash
# 生产环境/CI 凭据
export AZURE_TENANT_ID=<your-tenant-id>
export AZURE_CLIENT_ID=<your-client-id>
export AZURE_CLIENT_SECRET=<your-client-secret>2. 使用 DefaultAzureCredential(推荐)
这是最通用的方式,它会按顺序尝试环境变量、托管身份、VS Code 插件、Azure CLI 等认证方式。
python
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
# 自动检测环境并选择合适的凭据
credential = DefaultAzureCredential()
client = BlobServiceClient(
account_url="https://<account>.blob.core.windows.net",
credential=credential
)3. 针对特定场景的凭据选择
如果 DefaultAzureCredential 无法满足需求,可以使用更具体的类:
- 托管身份:适用于 Azure 托管资源。
- 客户端密钥:适用于标准的 Service Principal。
- Azure CLI 凭据:强制使用本地
az login的账户。
python
from azure.identity import ClientSecretCredential, ManagedIdentityCredential
# 显式使用服务主体密钥
credential = ClientSecretCredential(
tenant_id="<tenant-id>",
client_id="<client-id>",
client_secret="<client-secret>"
)下载和安装
下载 azure-identity-py 中文版 Skill ZIP
解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md。
你可能还需要
暂无推荐