mcpField
A
azure-keyvault-certificates-rust

azure-keyvault-certificates-rust

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

关于 azure-keyvault-certificates-rust

面向 Rust 开发者的 Azure Key Vault 证书客户端库,用于证书存储和生命周期管理,涵盖策略配置与可恢复删除。

主要功能

  1. 01获取并列出证书
  2. 02创建和导入证书
  3. 03更新证书策略
  4. 04可恢复地删除证书

适用场景

  1. 01从保管库获取证书
  2. 02导入 PFX 或 PEM 证书
  3. 03设置证书续订策略

安装

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

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

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

详细介绍

Azure Key Vault Certificates SDK for Rust

用于 Azure Key Vault Certificates 的客户端库,可安全存储和管理证书。

版本和执行范围

示例仅为 API 草图:请先检查 Cargo.lock 和对应的 SDK 文档,确认签名、功能、异步运行时和响应模型。使用测试保管库并遵循最小权限原则;导入 PFX/私钥或更改/删除证书策略,需要具备相应的授权范围。请将导入密码/私钥保存在机密存储中,切勿放入源代码或日志。删除响应并不能证明已清除,也不能证明所有相关密钥/机密版本都已移除;请检查实际生命周期状态。

安装

cargo add azure_security_keyvault_certificates azure_identity

环境变量

AZURE_KEYVAULT_URL=https://<vault-name>.vault.azure.net/

身份验证

use azure_identity::DeveloperToolsCredential;
use azure_security_keyvault_certificates::CertificateClient;

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

核心操作

获取证书
use azure_core::base64;

let certificate = client
    .get_certificate("certificate-name", None)
    .await?
    .into_model()?;

println!(
    "Thumbprint: {:?}",
    certificate.x509_thumbprint.map(base64::encode_url_safe)
);
创建证书
use azure_security_keyvault_certificates::models::{
    CreateCertificateParameters, CertificatePolicy,
    IssuerParameters, X509CertificateProperties,
};

let policy = CertificatePolicy {
    issuer_parameters: Some(IssuerParameters {
        name: Some("Self".into()),
        ..Default::default()
    }),
    x509_certificate_properties: Some(X509CertificateProperties {
        subject: Some("CN=example.com".into()),
        ..Default::default()
    }),
    ..Default::default()
};

let params = CreateCertificateParameters {
    certificate_policy: Some(policy),
    ..Default::default()
};

let operation = client
    .create_certificate("cert-name", params.try_into()?, None)
    .await?;
导入证书
use azure_security_keyvault_certificates::models::ImportCertificateParameters;

let params = ImportCertificateParameters {
    base64_encoded_certificate: Some(base64_cert_data),
    password: Some("optional-password".into()),
    ..Default::default()
};

let certificate = client
    .import_certificate("cert-name", params.try_into()?, None)
    .await?
    .into_model()?;
删除证书
client.delete_certificate("certificate-name", None).await?;
列出证书
use azure_security_keyvault_certificates::ResourceExt;
use futures::TryStreamExt;

let mut pager = client.list_certificate_properties(None)?.into_stream();
while let Some(cert) = pager.try_next().await? {
    let name = cert.resource_id()?.name;
    println!("Certificate: {}", name);
}
获取证书策略
let policy = client
    .get_certificate_policy("certificate-name", None)
    .await?
    .into_model()?;
更新证书策略
use azure_security_keyvault_certificates::models::UpdateCertificatePolicyParameters;

let params = UpdateCertificatePolicyParameters {
    // Update policy properties
    ..Default::default()
};

client
    .update_certificate_policy("cert-name", params.try_into()?, None)
    .await?;

证书生命周期

  1. 创建 — 根据策略生成新证书
  2. 导入 — 导入现有 PFX/PEM 证书
  3. 获取 — 检索证书(仅限公钥)
  4. 更新 — 修改证书属性
  5. 删除 — 软删除(可恢复)
  6. 清除 — 永久删除

最佳实践

  1. 使用 Entra ID 身份验证 — 开发时使用 DeveloperToolsCredential
  2. 使用托管证书 — 由受支持的颁发者自动续订
  3. 设置适当的有效期 — 平衡安全性和维护需求
  4. 使用证书策略 — 定义续订和密钥属性
  5. 监控到期时间 — 为即将到期的证书设置警报
  6. 启用软删除 — 生产环境的保管库必须启用

RBAC 权限

分配以下 Key Vault 角色:

  • Key Vault Certificates Officer — 对证书拥有完整的 CRUD 权限
  • Key Vault Reader — 读取证书元数据

参考链接

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

适用场景

当任务与上述概述中描述的工作流或操作明确匹配时,可使用此技能。

限制

  • 仅当任务与上述描述的范围明确匹配时,才使用此技能。
  • 请勿将输出视为环境特定验证、测试或专家审查的替代品。
  • 如果缺少必要的输入、权限、安全边界或成功标准,请暂停并请求澄清。

评论

支持 Markdown