mcpField
A
azure-identity-rust

azure-identity-rust

github.com/sickn33安全48.7k58 次安装今天更新
代码仓库

关于 azure-identity-rust

面向 Rust 开发者的 Azure Identity SDK 使用指南,说明如何为 Azure SDK 客户端选择 Entra ID 凭据,覆盖本地开发、托管身份和服务主体场景。

主要功能

  1. 01开发工具凭据链
  2. 02托管身份与工作负载身份
  3. 03客户端密钥和证书凭据
  4. 04Azure CLI 与 Azure Pipelines 凭据
  5. 05复用凭据实例

适用场景

  1. 01使用本地 Azure CLI 登录
  2. 02为 Azure 托管资源配置身份
  3. 03为 Kubernetes 配置工作负载身份
  4. 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,
)?;
凭据链顺序
顺序凭据环境
1AzureCliCredentialaz login
2AzureDeveloperCliCredentialazd auth login

凭据类型

凭据用途
DeveloperToolsCredential本地开发——尝试 CLI 工具
ManagedIdentityCredentialAzure VM、App Service、Functions、AKS
WorkloadIdentityCredentialKubernetes 工作负载身份
ClientSecretCredential使用密钥的服务主体
ClientCertificateCredential使用证书的服务主体
AzureCliCredential直接使用 Azure CLI 进行身份验证
AzureDeveloperCliCredential直接使用 azd CLI 进行身份验证
AzurePipelinesCredentialAzure 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,
)?;

最佳实践

  1. 本地开发使用 DeveloperToolsCredential — 自动使用 Azure CLI
  2. 生产环境使用 ManagedIdentityCredential — 无需管理密钥
  3. 克隆凭据 — 凭据由 Arc 包装,克隆开销很小
  4. 复用凭据实例 — 同一凭据可用于多个客户端
  5. 提供异步运行时 — 添加应用所需功能的 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.iohttps://crates.io/crates/azure_identity

适用场景

在为 Rust Azure SDK 客户端选择或配置 Entra ID 凭据时使用:本地开发工具、托管身份/工作负载身份,或经过审查的服务主体。

限制

  • 示例是异步应用代码中的片段,需搭配兼容且固定版本的 Azure crate,以及所需的 Tokio/Serde/Futures 依赖项;使用前请核实所选版本的 API。此处依据官方源码/参考资料进行了审查,但未编译,也未在云账户上运行。
  • 使用经过授权的租户、资源和身份,并遵循最小权限原则。写入、覆盖、删除、备份检索和账户变更都需要相应的作用域;清理操作只能移除明确标识的临时资源。限制请求、重试次数和下载字节数,不要记录负载、凭据或机密值。
  • 请勿将输出视为可替代特定环境验证、测试或专家审查的内容。
  • 如果缺少必需的输入、权限、安全边界或成功标准,请停止并请求澄清。

评论

支持 Markdown