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. 05Entra IDによる認証

活用シーン

  1. 01Key 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 キー、その他のシークレットを安全に保管できます。

以下の例を使用するには、互換性が確認されたクレートのセットが必要です。また、すべてのリソースのプレースホルダーを置き換えてください。デモでの書き込みに本番データを使用しないでください。

インストール

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 トレイトを使用する — 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 コア/認証クレートを使用しています。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 クレートと、必要な Tokio/Serde/Futures の依存関係を使用してください。使用する前に、選択したバージョンの API を確認してください。ここでは公式のソース/リファレンスに照らしてレビューしていますが、コンパイルやクラウドアカウントに対する実行は行っていません。
  • 最小権限の原則に従い、認可されたテナント、リソース、ID を使用してください。書き込み、上書き、削除、バックアップの取得、アカウントの変更には、それぞれに対応するスコープが必要です。クリーンアップでは、明示的に特定された破棄可能なリソースのみを削除してください。リクエスト、再試行、ダウンロードするバイト数に上限を設け、ペイロード、認証情報、シークレット値をログに記録しないでください。
  • 出力を、環境に応じた検証、テスト、専門家によるレビューの代わりとして扱わないでください。
  • 必要な入力、アクセス許可、安全上の境界、または成功基準が不足している場合は、作業を中断して確認してください。

コメント