azure-keyvault-secrets-rust について
Rust開発者向けのAzure Key Vault Secrets SDKガイドです。シークレットの取得、設定、プロパティ管理、一覧表示、削除に加え、バージョンとアクセス制御を扱います。
主な機能
- 01シークレットまたは特定バージョンの取得
- 02シークレットの作成・更新
- 03プロパティとタグの更新
- 04シークレットの一覧表示と削除
- 05Entra IDによる認証
活用シーン
- 01Key Vaultからアプリケーションのシークレットを取得
- 02シークレットのコンテンツタイプやタグを更新
- 03リソース管理のためにシークレットを一覧表示
- 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()?;
ベストプラクティス
- Entra ID 認証を使用する — 開発環境では
DeveloperToolsCredential、本番環境ではManagedIdentityCredentialを使用します into_model()?を使用する — レスポンスをデシリアライズしますResourceExtトレイトを使用する — ID から名前を抽出します- 論理削除を処理する — 削除されたシークレットは保持期間内であれば復元できます
- コンテンツタイプを設定する — シークレットの形式を識別しやすくなります
- タグを使用する — シークレットの整理とフィルタリングに役立ちます
- シークレットにバージョンを付ける — 新しい値を設定すると、新しいバージョンが自動的に作成されます
RBAC のアクセス許可
次の Key Vault ロールを割り当ててください。
Key Vault Secrets User— 取得と一覧表示Key Vault Secrets Officer— CRUD 全般
レビュー済みのサンプルセットでは、azure_security_keyvault_secrets 1.0.1 と互換性のある Azure コア/認証クレートを使用しています。Cargo.lock を記録してコミットしてください。ソースと API のレビューは、コンパイルや実サービスでのテストを意味するものではありません。
参考リンク
使用する場面
Rust アプリケーションで、特定の Key Vault から指定したシークレット/バージョンを取得する場合、または認可されたシークレットの作成、メタデータの更新、一覧表示、削除を行う場合に使用します。
制限事項
- 例は非同期アプリケーションコード内に置く断片です。互換性のあるバージョンを固定した Azure クレートと、必要な Tokio/Serde/Futures の依存関係を使用してください。使用する前に、選択したバージョンの API を確認してください。ここでは公式のソース/リファレンスに照らしてレビューしていますが、コンパイルやクラウドアカウントに対する実行は行っていません。
- 最小権限の原則に従い、認可されたテナント、リソース、ID を使用してください。書き込み、上書き、削除、バックアップの取得、アカウントの変更には、それぞれに対応するスコープが必要です。クリーンアップでは、明示的に特定された破棄可能なリソースのみを削除してください。リクエスト、再試行、ダウンロードするバイト数に上限を設け、ペイロード、認証情報、シークレット値をログに記録しないでください。
- 出力を、環境に応じた検証、テスト、専門家によるレビューの代わりとして扱わないでください。
- 必要な入力、アクセス許可、安全上の境界、または成功基準が不足している場合は、作業を中断して確認してください。
コメント
Markdown 対応