Azure Identity Rust SDK
Azure Identity SDK for Rust
为使用 Microsoft Entra ID(原 Azure AD)的 Azure SDK 客户端提供的身份验证库。
安装
cargo add azure_identity环境变量
# 服务主体 (用于生产环境/CI)
AZURE_TENANT_ID=<your-tenant-id>
AZURE_CLIENT_ID=<your-client-id>
AZURE_CLIENT_SECRET=<your-client-secret>
用户分配的托管标识 (可选)
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;
// 系统分配的托管标识
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,
)?;
最佳实践
1. 本地开发使用 DeveloperToolsCredential — 自动识别 Azure CLI。
2. 生产环境使用 ManagedIdentityCredential — 无需管理密钥。
3. 克隆凭据 — 凭据由 Arc 包装,克隆成本极低。
4. 复用凭据实例 — 同一个凭据可用于多个客户端。
5. 使用 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 |
使用场景
此技能适用于执行概览中描述的工作流或操作。限制
注意事项- 仅在任务明确符合上述范围时使用此技能。
- 不要将输出结果视为环境特定验证、测试或专家评审的替代方案。
- 如果缺少必要的输入、权限、安全边界或成功标准,请停止操作并请求澄清。