AWS KMSでの暗号化

AWS KMSによるシークレットマネージャー接続情報の保護

KeeperシークレットマネージャーをAWS KMSと組み合わせると、構成ファイルを暗号化できます。マシン上の接続情報を保護しつつ、ボルト内のシークレットについてもKeeperのゼロ知識暗号化を利用できます。

comment-question

AWS Secrets Managerをバックエンドとするストレージについて

AWS Secrets Managerストレージをご参照ください。この連携ではKSM構成をAWS Secrets Managerのシークレット内に保持し、ローカルファイルは不要です。2つのAWS連携は目的が異なり、使用するAWSサービスも異なります。運用に合った方を選択してください。

機能

  • AWS KMSを使い、Keeperシークレットマネージャーの構成ファイルを暗号化・復号化する

  • シークレットマネージャー接続情報への不正アクセスを防ぐ

  • わずかなコード変更で保護を有効化でき、すべてのKeeperシークレットマネージャーSDKの機能をそのまま利用できる

要件

セットアップ

1. モジュールのインストール

GradleまたはMavenでプロジェクトをセットアップします。

Gradle

Maven

2. AWS接続を構成

デフォルトでは、boto3は、aws configure で設定したAWS CLIの既定セッションを使います。接続内容を独自に指定する場合は、~/.aws/config~/.aws/credentials の2ファイルを手動で編集します。

aws configure やセッションの扱いの詳細については、以下のAWS CLIリファレンスにまとまっています。https://docs.aws.amazon.com/cli/latest/reference/configure/

あるいは、AwsSessionConfig データクラスを使い、aws_access_key_idaws_secret_access_keyaws_session_token にアクセスキー情報を渡して明示的に指定します。

AWS KMS連携には、AWSアクセスキーが必要です。

AWSアクセスキーについて詳しくは、以下のドキュメントをご参照ください。https://aws.amazon.com/premiumsupport/knowledge-center/create-access-key/

3. AWS KMSストレージをコードに追加

AWS接続の構成が完了すると、連携を通じてKSM構成ファイルの暗号化と復号に使うキーを取得できます。シークレットマネージャーSDKでは、KMSをストレージとして使うよう指定する必要があります。

指定された接続認証情報の使用

この操作を行うには、SecretsManager コンストラクタで、AwsKeyValueStorage をシークレットマネージャーのストレージとして使用します。

このストレージには、AWSキーID、AwsSessionConfig、AWS KMSによって暗号化されるシークレットマネージャー構成ファイルの名前が必要です。

デフォルトの接続を使用

この操作を行うには、SecretsManager コンストラクタで、AwsKeyValueStorage をシークレットマネージャーのストレージとして使用します。

このストレージには、AWSキーID、およびAWS KMSによって暗号化されるシークレットマネージャー構成ファイルの名前が必要です。

AWS KMS連携の使用

セットアップが完了すると、シークレットマネージャーとAWS KMSの連携により、シークレットマネージャーSDKの機能をすべて利用できます。実行時に構成ファイルを復号するには、コードからAWS KMSのAPIにアクセスできる必要があります。

追加オプション

キーの変更

構成の暗号化に使うキーは変更できます。以下にコード例を示します。

構成の復号化

実装を別のクラウド環境へ移す場合や、平文の認証情報が必要な場合は、構成ファイルを復号できます。この関数はブール値を取り、true では復号結果をファイルに書き出し、false では復号した構成の内容だけを返します。

その他の例と機能については、KSM SDKのドキュメントをご参照ください。

最終更新