Azure Key Vaultでの暗号化
Azure Key Vault キーでシークレットマネージャーの接続情報を保護

KeeperシークレットマネージャーとAzure Key Vaultと連携することで、構成ファイルを暗号化できます。この連携により、接続情報をローカル環境で保護しつつ、すべての機密認証情報に対してKeeperのゼロ知識暗号化を活用できます。
機能
Keeperシークレットマネージャーの構成ファイルをAzure Key Vaultで暗号化および復号化
シークレットマネージャー接続への不正アクセスを防止
最小限のコード変更で即時に保護を実現。すべてのKeeperシークレットマネージャーSDK機能と連携
AzureのRSA非対称鍵に対応
要件
Java/Kotlin版シークレットマネージャーSDKに対応
Azureパッケージ (
azure-identityおよびazure-keyvault-keys) が必要WrapKeyおよびUnwrapKeyの権限を持つRSA鍵タイプのみに対応
Azure依存パッケージ (
@azure/identity、@azure/keyvault-keys) はバンドル済みのため、別途インストールは不要ですWrapKeyおよびUnWrapKeyの権限を持つRSA鍵タイプのみに対応
Python 3.9.2以降が必要 (Python 3.6〜3.8の場合は
<1.1.0に固定)azure-identity、azure-keyvault-keys、pycryptodomexのパッケージが必要WrapKeyおよびUnWrapKeyの権限を持つRSA鍵タイプのみに対応
バージョン
net9.0に対応Azureパッケージ (
Azure.IdentityおよびAzure.Security.KeyVault.Keys) が必要WrapKeyおよびUnWrapKeyの権限を持つRSA鍵タイプのみに対応
セットアップ
1. モジュールのインストール
GradleまたはMavenを使用してプロジェクトをセットアップ
Gradle
Maven
npmを使用してシークレットマネージャーとAzure Key Vaultモジュール統合をインストールします。
シークレットマネージャーストレージモジュールは、pipを使用してインストールできます。
Azureバックエンドには、以下の3つの追加パッケージが必要です。
KeeperシークレットマネージャーのKSMモジュールは、Keeperシークレットマネージャーのストレージモジュールに含まれており、dotnet を使用してインストールします。
シークレットマネージャーとAzure KSMモジュールの統合は、以下のコマンドでインストールします。
2. Azure Key Vaultの接続を構成
Azure Key Vaultインスタンスが利用可能であることを確認してください。Azure Key Vaultに接続するために必要な以下のパラメータが必要です。
AZURE_TENANT_ID: The Microsoft Entra tenant (directory) ID.
AZURE_CLIENT_ID: The client (application) ID of an App Registration in the tenant.
AZURE_CLIENT_SECRET: A client secret that was generated for the App Registration.
Azure Key Vault統合を使用するには、Azure Appディレクトリのアプリが必要です。
Azure Appディレクトリのアプリ登録および権限の詳細については、以下のAzureのドキュメントをご参照ください。
https://learn.microsoft.com/en-us/azure/key-vault/general/authentication
3. コードにAzure Key Vaultストレージを追加する
Azure接続が構成されたら、Azureキーを使用してKSM構成の暗号化/復号化を行うためにキーを取得できます。また、シークレットマネージャーSDKに対して、キー ボルトをストレージとして使用するよう指示する必要があります。
Azure Key Vault統合の使用
設定が完了すると、Secrets Manager Azure Key Vault統合はすべてのシークレットマネージャーSDK機能をサポートします。コードは、KSM構成ファイルの暗号化および復号化を管理するために、Azureキーにアクセスできる必要があります。 指定された接続認証情報の使用
この操作を行うには、AzureKeyValueStorage インスタンスを作成し、SecretManagerOptions コンストラクタで使用します。
AzureKeyValueStorage は、azure_key_id、azure_keyvault_URL、構成が含まれたシークレットマネージャー構成ファイルの名前を必要とします。
この操作を行うには、SecretsManager コンストラクタで、AzureKeyValueStorage をシークレットマネージャーのストレージとして使用します。
このストレージには、Azure Key ID と、Azure Key Vaultによって暗号化されるシークレットマネージャー構成ファイルの名前が必要となります。
この操作を行うには、SecretsManager コンストラクタで、トークンとともに AzureKeyValueStorage を構成として指定し、シークレットマネージャーのストレージとして使用します。
このストレージでは、Azure Key ID、Azure-KSM統合によって暗号化されるシークレットマネージャー構成ファイルの場所、そして以下のようなAzureセッション構成が必要です。
v1.0.xからのアップグレードについて
v1.1.0では、以下の動作が変わります。
AES-GCMノンスがNIST SP 800-38Dに従い16バイトから12バイトに修正されました。既存の暗号化済み構成は引き続き読み取り可能です。
decrypt_config()のデフォルトはautosave=Falseになりました。従来の動作を維持するにはdecrypt_config(autosave=True)を呼び出してください。暗号化および復号に失敗した場合、エラーを出さずにストレージ状態を破損させるのではなく、例外が発生します。
破損した、または非UTF8の構成ファイルは、
JSONDecodeErrorをそのまま返すのではなく、"is not a valid encrypted config file"の例外が発生します。構成の書き込みはアトミック (書き込み後にリネーム) になり、書き込み失敗時に既存の構成が0バイトに切り詰められることはありません。
delete_all()は空の暗号化ブロブを書き込むのではなく、暗号化された構成ファイルをディスクから削除します。AzureKeyValueStorageは、同時読み書きに対してスレッドセーフになりました。
この操作を行うには、SecretsManager コンストラクタで、AzureKeyValueStorage をシークレットマネージャーのストレージとして使用します。
このストレージでは、Azure Key ID と、Azure Key Vaultによって暗号化されるシークレットマネージャー構成ファイルの名前が必要です。オプションで AzureSessionConfig を指定することも可能です。認証情報が指定されていない場合は、既定の認証情報が使用されます。
この操作を行うには、SecretsManager コンストラクタで、NewAzureKeyValueStorage をシークレットマネージャーのストレージとして使用します。
NewAzureKeyVaultStorage でAzure Key Vaultを使用してKSM構成を暗号化するには、以下のパラメータが必要です:
ksmConfigFileName: KSM構成ファイルの名前keyURL: Azure KeyのURL
追加オプション
キーの変更
KSM構成の暗号化に使用するキーを変更することも可能です。以下の例は、そのために必要なコードとなります。
構成の復号化
現在の実装を別のクラウド環境へ移行する場合や、生の認証情報を取得したい場合には、構成の復号が可能です。この関数はブール値を受け取り、true に設定すると復号化された構成をファイルに保存し、false の場合は復号化された構成を返します。
v1.1.0では、decrypt_config() のデフォルトは autosave=False になりました。以前のデフォルトは True であり、暗号化された構成ファイルを平文で上書きしていました。ディスクに保存する場合は、明示的に autosave=True を指定してください。
KSM統合機能を使用する準備ができました。
その他の例と機能については、KSM SDKのドキュメントをご参照ください。
最終更新

