Azure Keyvault Secrets Rust

作者 microsoft354361d83247MIT收錄於 2026年10月8日更新於 2026年10月8日

Azure Key Vault Secrets library for Rust. Store and retrieve secrets, passwords, and API keys. Triggers: "keyvault secrets rust", "SecretClient rust", "get secret rust", "set secret rust", "list secrets rust".

AI 產生的概覽

指導 Rust 開發者使用 Azure Key Vault Secrets 程式庫來儲存、取得、更新、列出和刪除祕密。

功能
此技能提供使用 azure_security_keyvault_secrets 程式庫的 Rust 程式碼模式,涵蓋身分驗證、設定和取得祕密、更新祕密屬性、刪除祕密,以及分頁列出祕密屬性。它也涵蓋錯誤處理、RBAC 角色,以及使用 cargo add 和避免硬編碼認證等最佳實務。它產出程式碼片段和指引,而非可執行指令碼。
適用情境
當建置需要從 Azure Key Vault 儲存或取得祕密、密碼、API 金鑰或連接字串的 Rust 應用程式時使用此技能。當需要在 Rust 中管理祕密生命週期操作或處理祕密遺漏錯誤時也適用。
執行需求
需要 Rust 工具鏈以及 azure_security_keyvault_secrets、azure_identity、tokio 和 futures 程式庫,還需要 AZURE_KEYVAULT_URL 環境變數和適當的 Azure 認證或 RBAC 角色。需要存取 Azure Key Vault 的網路。不附帶指令碼。

Azure Key Vault Secrets library for Rust

Secure storage for passwords, API keys, and connection strings.

Use this skill when:

  • An app needs to store or retrieve secrets from Azure Key Vault in Rust
  • You need to set, get, update, or delete secrets
  • You need to list secret properties with pagination
  • You need error handling for missing secrets

IMPORTANT: Only use the official azure_security_keyvault_secrets crate published by the azure-sdk crates.io user. Do NOT use unofficial or community crates. Official crates use underscores in names and none have version 0.21.0.

Installation

sh
cargo add azure_security_keyvault_secrets azure_identity tokio futures

If your code uses azure_core types directly, add azure_core to Cargo.toml. If you only use azure_security_keyvault_secrets re-exports, direct azure_core dependency is optional.

Environment Variables

bash
AZURE_KEYVAULT_URL=https://<vault-name>.vault.azure.net/ # Required for all operations

Authentication

Rust Azure SDK code must not use DefaultAzureCredential. The Rust identity crate does not provide that type.

rust
use azure_identity::DeveloperToolsCredential;use azure_security_keyvault_secrets::SecretClient;
#[tokio::main]async fn main() -> Result<(), Box<dyn std::error::Error>> {    // Local dev: DeveloperToolsCredential. Production: use ManagedIdentityCredential.    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()?;    println!("Secret: {:?}", secret.value);    Ok(())}

Prefer the crate README/examples when checking whether pagers yield items directly and how ResourceExt is used in public examples.

Core Workflow

Set Secret

rust
use azure_security_keyvault_secrets::{models::SetSecretParameters, ResourceExt};
let params = SetSecretParameters {    value: Some("secret-value".into()),    ..Default::default()};
let secret = client    .set_secret("secret-name", params.try_into()?, None)    .await?    .into_model()?;
println!(    "Name: {:?}, Version: {:?}",    secret.resource_id()?.name,    secret.resource_id()?.version);

Update Secret Properties

rust
use azure_security_keyvault_secrets::models::UpdateSecretPropertiesParameters;use std::collections::HashMap;
#[allow(clippy::needless_update)]let params = UpdateSecretPropertiesParameters {    content_type: Some("text/plain".into()),    tags: Some(HashMap::from_iter(vec![(        "env".into(),        "prod".into(),    )])),    ..Default::default()};
client    .update_secret_properties("secret-name", params.try_into()?, None)    .await?    .into_model()?;

Delete Secret

rust
client.delete_secret("secret-name", None).await?;

List Secrets (Pagination)

list_secret_properties returns a Pager<T> — iterate items directly:

rust
use azure_security_keyvault_secrets::ResourceExt;use futures::TryStreamExt as _;
let mut pager = client.list_secret_properties(None)?;while let Some(secret) = pager.try_next().await? {    println!("Found: {}", secret.resource_id()?.name);}

Error Handling

rust
match client.get_secret("secret-name", None).await {    Ok(response) => println!("Secret Value: {:?}", response.into_model()?.value),    Err(err) => println!("Error: {:#?}", err.into_inner()?),}
// Error output includes structured ErrorResponse with code and message

RBAC Roles

For Entra ID auth, assign one of these roles:

RoleAccess
Key Vault Secrets UserRead secrets
Key Vault Secrets OfficerFull secret management

Best Practices

  1. Use cargo add to manage dependencies, never edit Cargo.toml directly. Add and remove Rust SDK dependencies with cargo commands instead of manual manifest edits.
  2. Add azure_core only when importing azure_core types directly. If your code imports azure_core::http::Url, azure_core::http::RequestContent, or azure_core::error::ErrorKind, include azure_core; otherwise a direct dependency is optional.
  3. Use DeveloperToolsCredential for local dev, ManagedIdentityCredential for production — Rust does not provide a single DefaultAzureCredential type
  4. Never hardcode credentials — use environment variables or managed identity
  5. Use ..Default::default() with #[allow(clippy::needless_update)] for model struct updates
  6. Use ResourceExt to extract resource name/version from secret IDs
  7. Reuse clients — SecretClient is thread-safe; create once, share across tasks
  8. Run cargo clippy -- -D warnings when the prompt, eval, or CI expects lint-clean output

Reference Links

來源與署名

來源:microsoft/skills位於.github/plugins/azure-sdk-rust/skills/azure-keyvault-secrets-rust提交354361d

授權條款: MIT

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架