Google Cloud Secret Managerとの同期

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

概説

KeeperシークレットマネージャーCLIツールのsyncコマンドを使用すると、Keeperボルトにあるシークレットを、対象のGCP Secret Managerプロジェクトへ上書きして転送できます。これにより、GCP上のサービスやスクリプトで使用するシークレットの信頼できる唯一の情報源としてKeeperボルトを利用できます。

機能

  • KeeperボルトのシークレットをGCP Secret Managerの信頼できる情報源として利用

  • GCP で使用中のスクリプトやサービスに、Keeperボルトのシークレットをシームレスに統合

要件

  • Keeperシークレットマネージャーへのアクセス (詳細は、クイックスタートガイドをご参照ください)

    • Keeperサブスクリプションでシークレットマネージャーアドオンが有効化されていること

    • シークレットマネージャー関連ポリシーが有効化されたロールを割り当てられたメンバーシップ

  • シークレットが共有されたKeeperシークレットマネージャーアプリケーション

  • GCP Secret Managerを使用するGCPアカウント、オプションでIAMサービスアカウントの認証情報を作成する権限

セットアップ

1. KeeperシークレットマネージャーCLIを設定

KSM CLIがすでにマシンに設定済みの場合は、この手順を省略します。

KSM CLIツールを構成するには、Keeperシークレットマネージャーのワンタイムアクセストークンを使用してプロファイルを作成します。

以下のコマンドでデフォルトプロファイルを初期化できます。

ksm profile init <TOKEN>

複数のプロファイルの作成およびその他のオプションについては、プロファイルのドキュメントをご参照ください。

2. GCPのアクセス権限を設定

KSMとGCPを同期するには、GCP Secret Manager側で、Secret Manager Adminロールが割り当てられたIAM認証情報が必要です (プロジェクトまたはサービスアカウント単位)。

アクセス制御の詳細

サービスアカウント認証情報の作成方法 (任意)

3. GCP認証情報レコードの作成

KSM CLIは、シークレットの設定に使用するGCPサービスアカウントの認証情報を必要とします。 これらの認証情報はKeeperレコードに保存され、CLIからSecrets Manager経由で参照されます。

必要なフィールドラベル

  • Google Cloud Project ID

  • Google Application Credentials (オプション)

Google Application Credentialsフィールドはオプションで、サービスアカウントのクレデンシャルを使用する場合にのみ必要です。デフォルトでは、GCPクライアントはgcloud CLIを使用して作成できるアプリケーションのデフォルト認証情報を使用します。

gcloud auth application-default login

これらの認証情報が不要になった場合は、取り消すことができます。

gcloud auth application-default revoke

方法 1: GCP認証情報カスタムレコードタイプの作成

必要なフィールドを使用してカスタムのレコードタイプを作成できるため、レコードの作成が簡単かつシンプルになります。

Keeperボルトで [カスタムレコードタイプ] タブに移動して、[タイプの作成] をクリックします。 正しいフィールドラベルを持つ伏せ字項目を使用して新しいレコードタイプを作成し、[発行] をクリックします。

GCP認証情報レコードタイプの定義

GCP認証情報タイプのレコードを新規作成し、対応するフィールドに詳細情報を入力します。

GCP認証情報レコードの作成

この新しいレコードを、シークレットマネージャーアプリケーションに関連付けられた共有フォルダに入れます。

方法 2: カスタムフィールドを追加

新しいレコードタイプを作成せずに認証情報レコードを作成するには、必要なフィールドをカスタムフィールドとして標準レコードに追加します。

任意のタイプの新しいレコードを作成し、必要なGCPフィールドごとに [伏せ字項目] タイプのカスタムフィールドを追加します。[ラベルの編集] をクリックして、対応するフィールド名のラベルを変更します。

どのレコードタイプでも利用できますが、[添付ファイル] の標準レコードタイプにはフィールドがないため、カスタムフィールドを追加したときの見た目がすっきりします。

カスタムフィールドとしてのGCP認証情報フィールド

次に、各カスタムフィールドに入力し、[保存] をクリックしてレコードを保存します。

4. 値のマッピングを作成

KSM CLI のsyncコマンドでは、コマンドに指定したマッピングをもとに、どのシークレットをどの名前でGCPに登録するかを判断します。マッピングごとに、Keeperボルトにある値が対応する名前でGCP Secret Managerに設定されます。

これらのマッピングは次の形式に従っています。

--map "VALUE KEY" "KEEPER NOTATION"
  • VALUE KEY: GCP Secret Managerで値が割り当てられるキー名

  • KEEPER NOTATION: Keeperレコードから値を取得するための記法

Keeper表記法は、Keeperシークレットマネージャーが特定のレコードの値を指定するために使う記述方法です。 基本形式は以下のようになります。

UID/[field または custom_field]/フィールド名

以下の例では、指定されたUIDのレコード内にある「password」という名前の標準フィールドの値を参照しています。

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"

同期の実行

同期を実行するには、クレデンシャルレコードと値のマッピングを指定して、KSM CLIのsyncコマンドを使用します。

1. コマンドを構成

KSM syncコマンドをGCPタイプと組み合わせます。 以下のような形式になります。

ksm sync --type gcp --credentials [UID] --map [...] --map [...]

2. ドライランを実行

syncコマンドはドライラン (dry-run) に対応しており、GCP Secret Manager に対して実際の値を反映させずに、どの値が変更されるかを事前に確認できます。マッピングの記述が正しくできているかを確認するために、まずはドライランを実行することをおすすめします。

ksm sync --type gcp --credentials [UID] --map [...] --map [...] --dry-run

3. 同期を実行

準備ができたら、dry-runオプションを指定せずにsyncコマンドを実行します。 これにより、KeeperボルトからGCPシークレットマネージャーに値がプッシュされます

--mapの短縮形として、-mを使用できます。

ksm sync --type gcp --credentials [UID] -m [...] -m [...]

最終更新