关于 azure-keyvault-secrets-rust
面向 Rust 开发者的 Azure Key Vault Secrets SDK 使用指南,介绍机密的读取、写入、属性管理、列出和删除,并强调版本与访问控制。
主要功能
- 01读取指定机密及版本
- 02创建或更新机密
- 03更新机密属性与标签
- 04列出和删除机密
- 05使用 Entra ID 身份验证
适用场景
- 01从 Key Vault 获取应用机密
- 02更新机密内容类型或标签
- 03列出机密以管理资源
- 04按授权删除指定机密
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill azure-keyvault-secrets-rust安装后在 Claude Code 中输入/azure-keyvault-secrets-rust确认已加载。
详细介绍
Azure Key Vault Secrets SDK for Rust
Azure Key Vault Secrets 客户端库,用于安全存储密码、API 密钥和其他机密。
以下示例需要经过审查的兼容 crate 集,并替换所有资源占位符。演示写入时请勿使用生产数据。
安装
cargo add azure_security_keyvault_secrets@=1.0.1 azure_identity@=1.0.0 azure_core@=1.1.0
环境变量
export AZURE_KEYVAULT_URL="https://<vault-name>.vault.azure.net/"
身份验证
use azure_identity::DeveloperToolsCredential;
use azure_security_keyvault_secrets::SecretClient;
let credential = DeveloperToolsCredential::new(None)?;
let client = SecretClient::new(
"https://<vault-name>.vault.azure.net/",
credential.clone(),
None,
)?;
核心操作
获取机密
let secret = client
.get_secret("secret-name", None)
.await?
.into_model()?;
let secret_value = secret.value.ok_or("Secret has no value")?;
// Pass directly to the authorized consumer; never print the value.
设置机密
use azure_security_keyvault_secrets::models::SetSecretParameters;
let params = SetSecretParameters {
value: Some("secret-value".into()),
..Default::default()
};
let secret = client
.set_secret("secret-name", params.try_into()?, None)
.await?
.into_model()?;
更新机密属性
use azure_security_keyvault_secrets::models::UpdateSecretPropertiesParameters;
use std::collections::HashMap;
let params = UpdateSecretPropertiesParameters {
content_type: Some("text/plain".into()),
tags: Some(HashMap::from([("env".into(), "prod".into())])),
..Default::default()
};
client
.update_secret_properties("secret-name", params.try_into()?, None)
.await?;
删除机密
client.delete_secret("secret-name", None).await?;
列出机密
use azure_security_keyvault_secrets::ResourceExt;
use futures::TryStreamExt;
let mut pager = client.list_secret_properties(None)?;
while let Some(secret) = pager.try_next().await? {
let name = secret.resource_id()?.name;
println!("Secret: {}", name);
}
获取特定版本
use azure_security_keyvault_secrets::models::SecretClientGetSecretOptions;
let options = SecretClientGetSecretOptions {
secret_version: Some("version-id".into()),
..Default::default()
};
let secret = client
.get_secret("secret-name", Some(options))
.await?
.into_model()?;
最佳实践
- 使用 Entra ID 身份验证 — 开发环境使用
DeveloperToolsCredential,生产环境使用ManagedIdentityCredential - 使用
into_model()?— 反序列化响应 - 使用
ResourceExttrait — 从 ID 中提取名称 - 处理软删除 — 在保留期限内可以恢复已删除的机密
- 设置内容类型 — 帮助识别机密格式
- 使用标签 — 用于整理和筛选机密
- 对机密进行版本控制 — 新值会自动创建新版本
RBAC 权限
分配以下 Key Vault 角色:
Key Vault Secrets User— 获取和列出Key Vault Secrets Officer— 完整的 CRUD 权限
经过审查的示例集使用 azure_security_keyvault_secrets 1.0.1 及兼容的 Azure core/credential crate。记录并提交 Cargo.lock;源码/API 审查不等同于编译或实时服务测试。
参考链接
适用场景
当 Rust 应用需要从指定的 Key Vault 中检索指定机密或版本,或执行经授权的机密创建、元数据更新、列出或删除操作时使用。
限制
- 示例是异步应用代码中的片段,需搭配兼容且固定版本的 Azure crate,以及必需的 Tokio/Serde/Futures 依赖项;使用前请确认所选版本的 API。这里仅依据官方源码/参考资料进行了审查,未进行编译,也未连接云账户运行。
- 使用经过授权且遵循最小权限原则的租户、资源和身份。写入、覆盖、删除、检索备份及账户更改均需要相应权限范围;清理操作只能移除已明确指定的可丢弃资源。限制请求、重试次数和下载字节数,且不要记录负载、凭据或机密值。
- 请勿将输出视为环境特定验证、测试或专家审查的替代品。
- 如果缺少必要的输入、权限、安全边界或成功标准,请停止并请求澄清。
评论
支持 Markdown