关于 azure-identity-rust
面向 Rust 开发者的 Azure Identity SDK 使用指南,说明如何为 Azure SDK 客户端选择 Entra ID 凭据,覆盖本地开发、托管身份和服务主体场景。
主要功能
- 01开发工具凭据链
- 02托管身份与工作负载身份
- 03客户端密钥和证书凭据
- 04Azure CLI 与 Azure Pipelines 凭据
- 05复用凭据实例
适用场景
- 01使用本地 Azure CLI 登录
- 02为 Azure 托管资源配置身份
- 03为 Kubernetes 配置工作负载身份
- 04为 CI 服务主体配置凭据
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill azure-identity-rust安装后在 Claude Code 中输入/azure-identity-rust确认已加载。
详细介绍
Azure Identity SDK for Rust
面向使用 Microsoft Entra ID(以前称为 Azure AD)进行身份验证的 Azure SDK 客户端的身份验证库。
以下示例需要经过审查且兼容的 crate 集合,并且必须替换所有资源占位符。演示性写入操作不得使用生产数据。
安装
cargo add azure_identity@=1.0.0 azure_core@=1.1.0
环境变量
# Service Principal (for production/CI)
export AZURE_TENANT_ID="<your-tenant-id>"
export AZURE_CLIENT_ID="<your-client-id>"
: "${AZURE_CLIENT_SECRET:?Inject through the approved host or CI secret manager}"
export AZURE_CLIENT_SECRET
# User-assigned Managed Identity (optional)
export 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, ManagedIdentityCredentialOptions, UserAssignedId};
// System-assigned managed identity
let credential = ManagedIdentityCredential::new(None)?;
// User-assigned managed identity
let options = ManagedIdentityCredentialOptions {
user_assigned_id: Some(UserAssignedId::ClientId("<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;不要假定存在 crate 专属的
tokio功能
经过审查的示例集使用 azure_identity 1.0.0 以及兼容的 Azure 核心/凭据 crate。请记录并提交 Cargo.lock;源码/API 审查不等同于编译或实时服务测试。
参考链接
| 资源 | 链接 |
|---|---|
| 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 |
适用场景
在为 Rust Azure SDK 客户端选择或配置 Entra ID 凭据时使用:本地开发工具、托管身份/工作负载身份,或经过审查的服务主体。
限制
- 示例是异步应用代码中的片段,需搭配兼容且固定版本的 Azure crate,以及所需的 Tokio/Serde/Futures 依赖项;使用前请核实所选版本的 API。此处依据官方源码/参考资料进行了审查,但未编译,也未在云账户上运行。
- 使用经过授权的租户、资源和身份,并遵循最小权限原则。写入、覆盖、删除、备份检索和账户变更都需要相应的作用域;清理操作只能移除明确标识的临时资源。限制请求、重试次数和下载字节数,不要记录负载、凭据或机密值。
- 请勿将输出视为可替代特定环境验证、测试或专家审查的内容。
- 如果缺少必需的输入、权限、安全边界或成功标准,请停止并请求澄清。
评论
支持 Markdown