mcpField
A
azure-keyvault-secrets-rust

azure-keyvault-secrets-rust

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

关于 azure-keyvault-secrets-rust

面向 Rust 开发者的 Azure Key Vault Secrets SDK 使用指南,介绍机密的读取、写入、属性管理、列出和删除,并强调版本与访问控制。

主要功能

  1. 01读取指定机密及版本
  2. 02创建或更新机密
  3. 03更新机密属性与标签
  4. 04列出和删除机密
  5. 05使用 Entra ID 身份验证

适用场景

  1. 01从 Key Vault 获取应用机密
  2. 02更新机密内容类型或标签
  3. 03列出机密以管理资源
  4. 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()?;

最佳实践

  1. 使用 Entra ID 身份验证 — 开发环境使用 DeveloperToolsCredential,生产环境使用 ManagedIdentityCredential
  2. 使用 into_model()? — 反序列化响应
  3. 使用 ResourceExt trait — 从 ID 中提取名称
  4. 处理软删除 — 在保留期限内可以恢复已删除的机密
  5. 设置内容类型 — 帮助识别机密格式
  6. 使用标签 — 用于整理和筛选机密
  7. 对机密进行版本控制 — 新值会自动创建新版本

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 审查不等同于编译或实时服务测试。

参考链接

资源链接
API 参考https://docs.rs/azure_security_keyvault_secrets
源代码https://github.com/Azure/azure-sdk-for-rust/tree/main/sdk/keyvault/azure_security_keyvault_secrets
crates.iohttps://crates.io/crates/azure_security_keyvault_secrets

适用场景

当 Rust 应用需要从指定的 Key Vault 中检索指定机密或版本,或执行经授权的机密创建、元数据更新、列出或删除操作时使用。

限制

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

评论

支持 Markdown