AWSシークレットマネージャー同期
KeeperボルトのシークレットをAWSシークレットマネージャーと同期

概説
KeeperシークレットマネージャーCLIツールの sync コマンドを使用すると、Keeperボルトから目的のAWSシークレットマネージャーアカウントにシークレットをプッシュし、目的の場所にある既存の値を上書きできます。これにより、Keeperボルトが、AWSシークレットマネージャーを利用するAWSのすべてのサービスまたはスクリプトにとっての唯一の信頼できる情報源となります。
機能
KeeperボルトのシークレットをAWSシークレットマネージャーにとっての信頼できる情報源として使用します。
AWSの既存のスクリプトとサービスでKeeperボルトのシークレットがシームレスに使用できるようになります。
要件
Keeperシークレットマネージャーへのアクセス (詳細は、クイックスタートガイドをご参照ください)
Keeperサブスクリプションのシークレットマネージャーアドオンの有効化
シークレットマネージャー強制ポリシーが有効化されたロールを割り当てられたメンバーシップ
シークレットを共有するKeeperシークレットマネージャーアプリケーション
アプリケーションの作成手順については、クイックスタートガイドをご参照ください。
AWSシークレットマネージャーのAWSアカウント、およびIAMセキュリティクレデンシャルの作成機能
セットアップ
1. KeeperシークレットマネージャーCLIを設定
KSM CLIがすでにマシンに設定済みの場合は、この手順を省略します。
KSM CLIツールを設定するには、Keeperシークレットマネージャーのワンタイムアクセストークンを使用してプロファイルを作成する必要があります。
プロファイルを作成するには、ksm profile init <TOKEN> コマンドを使用してデフォルトのプロファイルを初期化します。
複数のプロファイルの作成およびその他のオプションについては、profileコマンドのページをご参照ください。
2. AWSのアクセス権限を設定
AWSにKSMの同期機能を使用するには、AWS Secrets Managerに標準のIAMセキュリティ認証情報が必要です。この認証情報には、ボルト全体または個別のキーに対して有効な SecretsManagerReadWrite 権限が含まれている必要があります。
arn:aws:iam::aws:policy/SecretsManagerReadWrite
アクセスキーの作成については、こちらのAmazonの手順をご参照ください。
3. AWSクレデンシャルレコードの作成
KSM CLIでは、シークレットを設定するためにAWSアカウントのクレデンシャルが必要です。 これらのクレデンシャルはKeeperのレコードに保存されており、CLIツールからは、Keeperシークレットマネージャーを使用してアクセスできます。
クレデンシャルレコードには、以下のラベルを持つレコードフィールドが必要です。
AWS Access Key ID
AWS Secret Access Key
AWS Region Name
方法1. AWSクレデンシャルのカスタムのレコードタイプを作成
必要なフィールドを使用してカスタムのレコードタイプを作成できるため、レコードの作成が簡単かつシンプルになります。
カスタムのレコードタイプを作成するには、Keeperボルトで [カスタムのレコードタイプ] タブに移動して、[タイプの作成] をクリックします。 正しいフィールドラベルが設定された伏せ字項目を使用して新しいレコードタイプを作成し、[発行] をクリックして新しいレコードタイプを作成します。

AWSクレデンシャルタイプのレコードを新規作成し、対応するフィールドに詳細情報を入力します。

この新しいレコードが、シークレットマネージャーアプリケーションに関連付けられた共有フォルダに移動されていることを確認します。
方法2. カスタムフィールドを追加
新しいレコードタイプを作成せずにクレデンシャルレコードを作成するには、必要なフィールドをカスタムフィールドとして標準レコードに追加します。
任意のタイプの新しいレコードを作成し、必要なAWSフィールドごとに [伏せ字項目] タイプのカスタムフィールドを追加します。[ラベルの編集] をクリックして、ラベルを対応するフィールド名に変更します。
どのレコードタイプでも問題ありませんが、「添付ファイル」の標準レコードタイプにはフィールドがないため、カスタムフィールドを追加したときの見た目がすっきりします。

次に、各カスタムフィールドに入力し、[保存] をクリックしてレコードを保存します。
4. 値のマッピングを作成
KSM CLIの sync コマンドは、コマンド呼び出しで定義されたマッピングを使用して、設定する値を識別します。各マッピングには、指定された名前の値がKeeper Vaultから取得した対応する値で埋められます。
これらのマッピングは以下の形式に従っています。
--map "VALUE KEY" "KEEPER NOTATION"
VALUE KEY は、AWSシークレットマネージャーで値が割り当てられるキーの名前です。
KEEPER NOTATION は、キーに設定するKeeperのレコードの値を取得するKeeper表記法を使用したクエリです。
Keeper表記法は、Keeperシークレットマネージャーが特定のレコードの値を識別するために使用するクエリの表記法です。 この表記法は、以下の一般的な形式に従います。UID/[field|custom]/fieldname
例: ae3d[...]d22e/field/password
詳細は、Keeper表記法のページをご参照ください。
これらの例では、完全なレコードUIDが指定されていないことにご注意ください。
完全なマッピング例:
--map "MySQL_PWD" "jd3[...]i-fd/field/password"
複数のマッピングを1つのsyncコマンドに追加できます。
--map "MySQL_PWD" "jd3[...]i-fd/field/password" --map "MySQL_Login" "jd3[...]i-fd/field/login"
5. レコードマッピングを作成する(JSON値)
AWSでは、Secrets ManagerにJSON形式の値を保存できます。これらは複数の方法で設定でき、マッピングされるAWS KMSキーが重複しない限り、それらを組み合わせて使用することも可能です。レコードやフォルダを同期する際、AWS側のキー名はレコードのタイトルとして扱われ、JSONキーはフィールドタイプまたはラベルとして扱われます。
拡張マッピング形式を使用する場合は、以下の形式を使用します。
--map "AWS_KEY+JSON_KEY" "KEEPER NOTATION"
以下のいずれかのレコード形式またはフォルダ形式を使用します。
タイトルまたはUIDを指定して、個別のレコードを同期します。複数回指定できます。
指定したフォルダ内のすべてのレコードを同期します(再帰なし)。
指定したフォルダおよびそのすべてのサブフォルダ内のレコードを再帰的に同期します。
KSM syncコマンドでは、レコードのタイトルがキー名として使用されます。そのため、AWSの制限に準拠している必要があります。
AWS Secrets Managerのキー名には、以下の制約があります。
一意であること
文字数は1〜512文字
使用できる文字は、英数字および次の記号のみ
デフォルトでは、AWSのウェブUIは、キーと値の両方が単純な文字列で構成された非常にシンプルなJSON形式を扱います。
--raw-json オプションを使用すると、内容はプレーンテキストとして表示されるため、レコード全体のJSONを解析して利用するには、外部の関数やSDKを使用する必要があります。
このフラグを指定しない場合、JSONのキーにはフィールドタイプまたはラベルが使用され、値には、電話番号や住所などの複合フィールドについて JSON.stringify() 形式の値が格納されます。
Keeper表記法を使用したクエリによって参照されるレコードが、シークレットマネージャーアプリケーションと共有されている共有フォルダに格納されているようにします。
これで、KSM同期を実行する準備ができました
同期の実行
同期を実行するには、クレデンシャルレコードと値のマッピングを指定して、KSM CLIの sync コマンドを使用します。
1. コマンドを構成
KSM syncコマンドをAWSタイプと組み合わせて、以下のような形式になります。
2. ドライランを実行
syncコマンドは、実際に値をプッシュすることも変更を加えることもせずに、AWSシークレットマネージャーの値に加えられるすべての変更を確認するドライランがサポートされています。 ドライランで、マッピングクエリが正しく構成されていることを確認します。
3. 同期を実行
準備ができたら、dry-run オプションを指定せずにsyncコマンドを実行します。 これにより、KeeperボルトからAWSシークレットマネージャーに値がプッシュされます
--map の短縮形として、-m を使用できます
最終更新

