Skip to content

如何在 Rust 项目中集成 Azure Identity 实现身份验证

解决 Rust 应用接入 Azure 云服务时的权限认证问题:通过 azure-identity 库快速实现从本地开发(CLI 登录)到生产环境(托管标识、服务主体)的无缝身份切换。

为什么需要这个技能

在构建 Azure 云原生应用时,身份验证是所有操作的入口。如果手动处理 Token 刷新、请求头构建或硬编码密钥,会带来巨大的安全风险且维护成本高。

azure-identity-rust 提供了标准化的凭据管理方案。它允许开发者在本地使用 az login 的上下文,而在部署到 Azure 虚拟机或 AKS 时自动切换到托管标识(Managed Identity),无需修改代码逻辑即可完成环境迁移。

适用场景

  • 本地开发阶段:需要快速调用 Azure 资源(如 Key Vault、Storage Account)且不想在代码中写死密钥。
  • 生产环境部署:应用运行在 Azure VM、App Service 或 AKS 中,需要使用安全且无密钥的托管身份验证。
  • 自动化 CI/CD 流水线:在 GitHub Actions 或 Azure Pipelines 中使用服务主体(Service Principal)进行资源操作。

核心工作流

1. 安装依赖

sh
cargo add azure_identity

2. 选择凭据类型

根据运行环境选择最合适的凭据类:

  • 本地开发 DeveloperToolsCredential:会自动按顺序尝试 Azure CLI 和 Azure Developer CLI 的登录状态。
  • 云端生产 ManagedIdentityCredential:适用于 Azure 托管资源,无需管理密钥。
  • 外部系统/CI ClientSecretCredential:通过租户 ID、客户端 ID 和密钥进行认证。

3. 核心代码实现

以调用 Key Vault 为例:

rust
use azure_identity::DeveloperToolsCredential;
use azure_security_keyvault_secrets::SecretClient;

// 1. 创建凭据(本地开发推荐)
let credential = DeveloperToolsCredential::new(None)?;

// 2. 将凭据注入到具体的服务客户端中
let client = SecretClient::new(
    "https://my-vault.vault.azure.net/",
    credential.clone(),
    None,
)?;

4. 环境配置(针对服务主体)

若使用 ClientSecretCredential,请确保环境变量已设置:

bash
AZURE_TENANT_ID=<your-tenant-id>
AZURE_CLIENT_ID=<your-client-id>
AZURE_CLIENT_SECRET=<your-client-secret>

下载和安装

下载 azure-identity-rust 中文版 Skill ZIP

解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md

你可能还需要

暂无推荐