Azure Identity Rust SDK

azure-identity-rust
分类通用
作者Agentic Awesome Skills 社区
许可MIT
评分4.70/5
使用14.2K

Azure Identity SDK for Rust

为使用 Microsoft Entra ID(原 Azure AD)的 Azure SDK 客户端提供的身份验证库。

安装

sh
cargo add azure_identity

环境变量

bash
# 服务主体 (用于生产环境/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):

rust
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 托管资源:

rust
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

用于带有密钥的服务主体:

rust
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 |

使用场景

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

限制

注意事项
  • 仅在任务明确符合上述范围时使用此技能。
  • 不要将输出结果视为环境特定验证、测试或专家评审的替代方案。
  • 如果缺少必要的输入、权限、安全边界或成功标准,请停止操作并请求澄清。