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. 04RSA、EC、HSM キー対応
  5. 05キーを使った暗号操作

活用シーン

  1. 01Rust アプリケーションでのキー情報の取得
  2. 02Key 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 用のクライアントライブラリです。暗号鍵を安全に保存、管理できます。

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

インストール

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

コメント