mcpField
A
azure-keyvault-keys-rust

azure-keyvault-keys-rust

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

关于 azure-keyvault-keys-rust

Azure Key Vault Keys SDK for Rust 是访问 Azure Key Vault 密钥的客户端库,适合需要在 Rust 应用中管理密钥或执行加密操作的开发者。它支持 RSA、椭圆曲线及 HSM 密钥,并可在不暴露私钥的情况下使用密钥执行密码操作。

主要功能

  1. 01获取、创建与列出密钥
  2. 02删除密钥
  3. 03备份与还原密钥
  4. 04支持 RSA、EC 和 HSM 密钥
  5. 05使用密钥执行加密操作

适用场景

  1. 01在 Rust 应用中读取密钥元数据
  2. 02创建或管理 Key Vault 密钥
  3. 03备份并恢复密钥
  4. 04在不导出私钥的情况下签名或加密

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill azure-keyvault-keys-rust

安装后在 Claude Code 中输入/azure-keyvault-keys-rust确认已加载。

详细介绍

Azure Key Vault Keys SDK for Rust

Azure Key Vault Keys 的客户端库——用于安全存储和管理加密密钥。

以下示例需要经过审核且兼容的 crate 集,并且必须替换所有资源占位符。请勿在演示写入操作中使用生产数据。

安装

cargo add azure_security_keyvault_keys@=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_keys::KeyClient;

let credential = DeveloperToolsCredential::new(None)?;
let client = KeyClient::new(
    "https://<vault-name>.vault.azure.net/",
    credential.clone(),
    None,
)?;

密钥类型

类型说明
RSARSA 密钥(2048、3072、4096 位)
EC椭圆曲线密钥(P-256、P-384、P-521)
RSA-HSM受 HSM 保护的 RSA 密钥
EC-HSM受 HSM 保护的 EC 密钥

核心操作

获取密钥
let key = client
    .get_key("key-name", None)
    .await?
    .into_model()?;

println!("Key ID: {:?}", key.key.as_ref().map(|k| &k.kid));
创建密钥
use azure_security_keyvault_keys::models::{CreateKeyParameters, KeyType};

let params = CreateKeyParameters {
    kty: Some(KeyType::Rsa),
    key_size: Some(2048),
    ..Default::default()
};

let key = client
    .create_key("key-name", params.try_into()?, None)
    .await?
    .into_model()?;
创建 EC 密钥
use azure_security_keyvault_keys::models::{CreateKeyParameters, KeyType, CurveName};

let params = CreateKeyParameters {
    kty: Some(KeyType::Ec),
    curve: Some(CurveName::P256),
    ..Default::default()
};

let key = client
    .create_key("ec-key", params.try_into()?, None)
    .await?
    .into_model()?;
删除密钥
client.delete_key("key-name", None).await?;
列出密钥
use azure_security_keyvault_keys::ResourceExt;
use futures::TryStreamExt;

let mut pager = client.list_key_properties(None)?;
while let Some(key) = pager.try_next().await? {
    let name = key.resource_id()?.name;
    println!("Key: {}", name);
}
备份密钥
let backup = client.backup_key("key-name", None).await?.into_model()?;
// Store the returned encrypted backup securely; do not print it.
还原密钥
use azure_security_keyvault_keys::models::RestoreKeyParameters;

let params = RestoreKeyParameters {
    key_bundle_backup: backup_bytes,
};

client.restore_key(params.try_into()?, None).await?;

加密操作

Key Vault 可在不暴露私钥的情况下执行加密操作:

// For cryptographic operations, use the key's operations
// Available operations depend on key type and permissions:
// - encrypt/decrypt (RSA)
// - sign/verify (RSA, EC)
// - wrapKey/unwrapKey (RSA)

最佳实践

  1. 使用 Entra ID 身份验证 — 开发环境使用 DeveloperToolsCredential,生产环境使用 ManagedIdentityCredential
  2. 敏感工作负载使用 HSM 密钥 — 受硬件保护的密钥
  3. 使用 EC 进行签名 — 效率高于 RSA
  4. 使用信封加密 — RSA 可包装对称数据密钥;请勿直接使用 RSA 加密任意大量数据
  5. 备份密钥 — 用于灾难恢复
  6. 启用软删除 — 生产密钥保管库必须启用
  7. 轮换密钥 — 定期创建新版本

RBAC 权限

分配以下 Key Vault 角色:

  • Key Vault Crypto User — 使用密钥执行加密操作
  • Key Vault Crypto Officer — 对密钥拥有完整的 CRUD 权限

经过审核的示例集使用 azure_security_keyvault_keys 1.0.1 及兼容的 Azure 核心和凭据 crate。请记录并提交 Cargo.lock;源码/API 审核不等同于编译或实时服务测试。

参考链接

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

适用场景

当 Rust 应用需要获取公钥元数据,或执行经授权的 Key Vault 密钥创建、版本管理、备份、还原或加密操作时使用。

限制

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

评论

支持 Markdown