SuperAPI AI 工具集

azure-identity-rust

部署与运维

查看项目

更新于 10-16 10:48

技能介绍

Azure Identity SDK for Rust 是 Azure SDK 客户端使用的身份认证库,基于 Microsoft Entra ID(原 Azure AD)进行身份验证。

安装

通过 Cargo 添加依赖:

cargo add azure_identity

如需 tokio 支持:

cargo add azure_identity --features tokio

环境变量

服务主体(用于生产环境/CI):

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

用户分配的托管标识(可选):

AZURE_CLIENT_ID=

DeveloperToolsCredential

本地开发推荐的凭据类型,会按顺序尝试开发者工具(Azure CLI、Azure Developer CLI):

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

let credential = DeveloperToolsCredential::new(None)?;
let client = SecretClient::new(
    "https://my-vault.vault.azure.net/",
    credential.clone(),
    None,
)?;

凭据链顺序:

  1. AzureCliCredential —— 执行 az login
  2. AzureDeveloperCliCredential —— 执行 azd auth login

凭据类型

凭据 用途
DeveloperToolsCredential 本地开发,尝试 CLI 工具
ManagedIdentityCredential Azure VM、App Service、Functions、AKS
WorkloadIdentityCredential Kubernetes 工作负载标识
ClientSecretCredential 带密钥的服务主体
ClientCertificateCredential 带证书的服务主体
AzureCliCredential 直接使用 Azure CLI 认证
AzureDeveloperCliCredential 直接使用 azd CLI 认证
AzurePipelinesCredential Azure Pipelines 服务连接
ClientAssertionCredential 自定义断言(联合身份)

ManagedIdentityCredential

用于 Azure 托管资源:

use azure_identity::ManagedIdentityCredential;

// 系统分配的托管标识
let credential = ManagedIdentityCredential::new(None)?;

// 用户分配的托管标识
let options = ManagedIdentityCredentialOptions {
    client_id: Some("<user-assigned-mi-client-id>".into()),
    ..Default::default()
};
let credential = ManagedIdentityCredential::new(Some(options))?;

ClientSecretCredential

用于带密钥的服务主体:

use azure_identity::ClientSecretCredential;

let credential = ClientSecretCredential::new(
    "<tenant-id>".into(),
    "<client-id>".into(),
    "<client-secret>".into(),
    None,
)?;

最佳实践

  • 本地开发使用 DeveloperToolsCredential,自动读取 Azure CLI 凭据
  • 生产环境使用 ManagedIdentityCredential,无需管理密钥
  • 克隆凭据:凭据由 Arc 包装,克隆开销低
  • 复用凭据实例:同一凭据可用于多个客户端
  • 启用 tokio feature:cargo add azure_identity --features tokio

参考链接

资源 链接
API 参考 https://docs.rs/azure_identity
源代码 https://github.com/Azure/azure-sdk-for-rust/tree/main/sdk/identity/azure_identity
crates.io https://crates.io/crates/azure_identity

适用场景

该技能适用于执行概述中描述的工作流或操作。