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,
)?;
凭据链顺序:
- AzureCliCredential —— 执行
az login - 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 |
适用场景
该技能适用于执行概述中描述的工作流或操作。