Azure Rust 身份认证技能
为 Rust Azure SDK 客户端配置 Microsoft Entra ID 身份认证。
文档限定使用官方 azure_* crates,建议避免硬编码凭据、使用环境变量并遵循 RBAC,降低了依赖和权限风险;但示例直接调试输出 secret.value,可能泄露敏感数据,且未说明用户确认、日志脱敏、最小权限细化或恢复策略,因此扣分。
安装命令、凭据类型和主要代码路径基本自洽,并使用 Rust 错误传播;但未固定版本、未提供针对关键路径的测试或静态可复现证据,示例依赖的 Key Vault service crate 也未列入安装命令,异常反馈主要是通用错误,因此受静态上限约束并扣分。
目标受众、场景、触发词和本地开发/生产区分较清楚,也明确指出不提供 DefaultAzureCredential;但非适用边界、输入输出契约、版本兼容范围及中文支持不足,Azure/CLI 可达性和中国大陆网络适配未说明,因此扣分。
结构包含元数据、安装、环境变量、认证示例、类型表、最佳实践和参考链接,且 MIT 许可与 Microsoft 署名清楚;但缺少版本策略、变更记录、明确维护责任/更新路径、FAQ 和故障排查,且示例依赖说明不完整,因此扣分。
内容可直接指导常见 Rust Azure 身份认证选择和基础代码编写,具有明显的手工查找节省价值;但关键示例完整性有限、依赖未全列、版本/API 正确性未通过文件内测试证据验证,仍需较多人工复核,因此按静态上限保守扣分。
提供 crates.io、docs.rs 和 Azure SDK 源码等可审计引用,并给出明确的官方 crate 约束;但本评估未执行,技能路径没有提交的专属测试、CI 覆盖或版本锁定证据,交叉 corroboration 有限,因此扣分。
- 不要在生产代码或日志中输出 secret.value;应进行日志脱敏并使用最小 RBAC 权限。
- 示例使用的 Key Vault service crate 未出现在安装命令中,且未固定 azure_identity/API 版本;实施前应核对对应版本文档并补齐依赖。
- 文档未说明 Azure CLI、azd 和 Azure 服务在中国大陆网络环境下的可达性与替代方案。
它能做什么 & 适用场景
该技能面向使用 Rust 开发 Azure 应用的开发者,指导通过官方 Azure Rust crate 为 Azure SDK 客户端配置身份认证。它涵盖本地开发、Azure 托管工作负载、服务主体、工作负载身份和 Azure CLI 等凭据类型。内容特别说明 Rust SDK 不提供 DefaultAzureCredential,应分别使用 DeveloperToolsCredential 或 ManagedIdentityCredential。技能还提供依赖安装、环境变量、凭据选择和客户端复用建议。
指导使用 cargo add 安装 azure_identity、azure_core 和 tokio;配置 AZURE_TENANT_ID、AZURE_CLIENT_ID 与 AZURE_CLIENT_SECRET;编写 DeveloperToolsCredential、ManagedIdentityCredential 和 ClientSecretCredential;使用 az login 或 azd auth login 完成本地登录;为多个 Azure 客户端克隆并复用凭据;根据目标服务分配 RBAC 角色。
- Rust 开发者需要在本地通过 Azure CLI 或 Azure Developer CLI 访问 Azure 服务时,使用 DeveloperToolsCredential。
- 在 VM、App Service、Functions 或 AKS 上运行 Rust 应用并需要托管身份时,使用 ManagedIdentityCredential。
- CI/CD 流水线或服务账户需要以客户端密钥进行服务主体认证时,使用 ClientSecretCredential。
- Kubernetes 工作负载需要联邦身份认证时,参考 WorkloadIdentityCredential。
- 应用需要为多个 Azure SDK 客户端共享认证状态时,按照技能建议克隆并复用凭据。
优缺点一览
- 覆盖本地开发、托管身份和服务主体等多种 Rust Azure 认证场景。
- 明确区分 DeveloperToolsCredential 与 ManagedIdentityCredential,避免假设 Rust SDK 存在 DefaultAzureCredential。
- 提供官方 crate 选择、环境变量、凭据复用和 RBAC 建议。
- 包含可直接参考的 Key Vault SecretClient 示例和 Cargo 安装命令。
- 只聚焦 Azure 身份认证,不覆盖具体 Azure 服务客户端的完整使用方法。
- 本资料未显示该技能专属的测试场景或测试结果。
- 本地 DeveloperToolsCredential 依赖已登录的 Azure CLI 或 Azure Developer CLI;生产认证仍需正确配置 Azure 身份和权限。
- 服务主体示例使用客户端密钥,技能要求通过环境变量提供,未给出证书认证示例。
如何安装
将整个集合安装到代理环境:npx skills add microsoft/skills,然后在安装向导中选择 azure-identity-rust。该技能位于 .github/plugins/azure-sdk-rust/skills/azure-identity-rust/SKILL.md。Rust 项目中执行:cargo add azure_identity azure_core tokio。若代码不直接使用 azure_core 类型,可不添加直接的 azure_core 依赖。
如何使用
可用触发词包括“azure identity rust”“DeveloperToolsCredential”“authentication rust”“managed identity rust”“credential rust”和“Entra ID rust”。本地开发先执行 az login 或 azd auth login,再使用 DeveloperToolsCredential::new(None)?;生产环境使用 ManagedIdentityCredential::new(None)?;服务主体认证使用 ClientSecretCredential::new(<tenant-id>, <client-id>, <client-secret>, None)?。仅使用 crates.io 的 azure-sdk 用户发布的 azure_* crate,不要使用已弃用的 azure_sdk_* crate 或社区 crate。
对比同类
相较于已弃用的 azure_sdk_* crate 和社区 crate,该技能要求使用 azure-sdk crates.io 用户发布的官方 azure_* crate。相较于其他 Azure SDK 语言中的 DefaultAzureCredential,Rust SDK 不提供同名的单一凭据类型;本地开发应使用 DeveloperToolsCredential,生产环境应使用 ManagedIdentityCredential。