
关于
Azure Identity SDK 的 Rust 认证实现。适用于 DeveloperToolsCredential、ManagedIdentityCredential、ClientSecretCredential 和基于令牌的认证。
name: azure-identity-rust description: Azure Identity SDK for Rust 认证。用于 DeveloperToolsCredential、ManagedIdentityCredential、ClientSecretCredential 和基于令牌的认证。 risk: unknown source: community date_added: '2026-02-27'
Azure Identity SDK for Rust
使用 Microsoft Entra ID(前身为 Azure AD)为 Azure SDK 客户端提供认证的库。
安装
cargo add azure_identity
环境变量
# Service Principal (for production/CI)
AZURE_TENANT_ID=<your-tenant-id>
AZURE_CLIENT_ID=<your-client-id>
AZURE_CLIENT_SECRET=<your-client-secret>
# User-assigned Managed Identity (optional)
AZURE_CLIENT_ID=<managed-identity-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;
// System-assigned managed identity
let credential = ManagedIdentityCredential::new(None)?;
// User-assigned managed identity
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特性 —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 |
何时使用
此技能适用于执行概述中描述的工作流或操作。
限制
- 仅在任务明确匹配上述范围时使用此技能。
- 不要将输出视为特定环境验证、测试或专家审查的替代品。
- 如果缺少所需输入、权限、安全边界或成功标准,请停下来要求澄清。

