Hashicorp Vault

Keeper Secrets ManagerとHashiCorp Vaultを連携させてデータソースとして使用

概説

Keeper Secrets ManagerとHashiCorp Vaultの連携により、KeeperボルトのシークレットをHashiCorp Vaultのデータストアとして使用できます。

機能

  • HashiCorp Vaultスクリプトとコマンドを使用して、Keeperボルトのシークレットを使用します

  • HashiCorp Vaultを使用してシークレット情報を読み取ります

  • HashiCorp Vaultから機密情報を更新します

Keeper Secrets Manager機能の完全なリストについては、概要をご参照ください。

前提条件

このページでは、Secrets ManagerとHashiCorp Vaultとの連携について説明します。 この連携を利用するための必要条件は以下のとおりです。

インストール

1. Secrets Managerプラグインのダウンロード

以下のKSM GitHubのページから最新のインテグレーションリリースをダウンロードします。

ご利用のプラットフォームに適合するリリースの一覧でvault-pluginのリリースを探します。

プラグインを解凍し、HashiCorp Vaultのpluginsディレクトリに配置します。 この例では、フォルダはC:\vault\plugins (Windows) または/etc/vault/vault_plugins (MacOS/ Linux) にあります。

2.HashiCorp Vaultにプラグインを登録

開発モード

プラグインをテストしたり、迅速な開発を可能にしたりするために、開発モードを使用して、HashiCorp Vault CLIをすばやく起動できます。

HashiCorp Vaultを開発モードで起動

vault server -dev -dev-plugin-dir=C:\vault\plugins

Secrets Managerプラグインを有効化

vault secrets enable -path=ksm vault-plugin-secrets-ksm.exe

HashiCorp Vault CLI開発モードでは、揮発性インメモリストレージを利用します。 Keeperボルトのシークレットに対して実行されるアクションはすべて即時に実行されますが、HashiCorp Vaultを開発モードで起動するたびにプラグインを再度有効にする必要があります。

本番モード

本番環境に移行する準備ができたら、プラグインのSHA256ハッシュを使用して、プラグインを登録する必要があります。

Secrets Managerプラグインの登録と有効化

vault plugin register -command=vault-plugin-secrets-ksm.exe -sha256=<SHA256> secret vault-plugin-secrets-ksm
vault secrets enable -path=ksm vault-plugin-secrets-ksm

SHA256ハッシュの生成

本番環境のHashiCorp Vaultサーバーでプラグインを有効にするには、プラグインファイルのハッシュが必要です。 このハッシュは、Secrets Managerプラグイン用に生成できます。

Windows 7以降には、SHA256ハッシュの生成に使用できるCertUtilという組み込みツールが付属しています。この例では、CertUtilを使用してSHAハッシュを生成する方法を示しますが、SHA256でファイルハッシュを生成できるツールであればどれでも使用できます。

CertUtil -hashfile C:\vault\plugins\vault-plugin-secrets-ksm.exe SHA256

3. Secrets Manager接続を設定

HashiCorp Vaultプラグインがインストールされたので、シークレットのクレデンシャルにアクセスできるように、Keeperボルトへの安全な接続を確立する必要があります。 この接続を作成するには、Secrets Managerの設定を作成し、プラグインに割り当てる必要があります。

Secrets Managerの設定を作成

Secrets Managerの設定は、Keeper CommanderまたはSecrets Manager CLIを使用して作成できます。 設定の作成について詳しくは、設定のドキュメントをご参照ください。

設定が生成されたら、Vaultプラグインで使用する変数に設定します。

vault write ksm/config ksm_config=<BASE64_CONFIG...>

プラグインの使用

シークレットを一覧表示

vault list ksm/records

記録は以下の形式で表示されます。

Keys
----
UID RECORDTYPE:RECORDTITLE

例:

C:\Vault> vault list ksm/records
Keys
----
Hf6of4uo_2aD7IMjn4VPuA  login: My Record
Lv3B9ObAjxdpdBl0IJ3oow  folder:4 record(s)
Oq3fFu14hZY00d7sp3EYNA  MyCustomType: My New Record (Custom record type)
YDx58Q94dE1k9B367ZVz1w  databaseCredentials:   MySQL Credentials
qe3EWYn840uR0bOMyZ2b0Q  login: Dropbox Login

個々のシークレットを取得

vault read ksm/record uid=<UID>

例:

C:\Vault> vault read ksm/record uid=Hf6r5Zuo_2aD7IMjn4VPuA
Key       Value
---       -----
fields    [map[type:login value:[username@email.com]] map[type:password value:[Pd08fi@1]]]
notes     Example Login Record
title     Sample KSM Record
type      login

TOTPコードの読み取り

vault read ksm/record/totp uid=<UID>

例:

C:\Vault> vault read ksm/record/totp uid=32t82-oRu-79yplIAZ6jmA 
Key    Value
---    ---
TOTP   [map[token:392528 ttl:22 url:otpauth://totp/Generator:?secret=JBSWY3DPEZAK3PXP&issuer=Generator&algorithm=SHA1&digits=6&period=30]] 
UID    32t82-oRu-79yplIAZ6jmA

シークレットを更新

既存のシークレットを更新するには、以下のコマンドを使用して、更新されたシークレットの情報を表すJSONデータを渡します。 Keeperボルト内の対応する記録は、渡されたJSONデータと一致するように更新されます。

vault write -format=json ksm/record uid=<UID> data=@update.json

この例では、更新されたデータはファイルから渡されます。この方法は、よりシンプルですっきりしたCLIコマンドにお勧めです。 JSONデータはコマンドラインで渡すことができますが、引用符はエスケープする必要があります。

データファイルの例:

update.json
{
  "fields": [
    {
      "type": "login",
      "value": [
        "username@email.com"
      ]
    },
    {
      "type": "password",
      "value": [
        "kjh4j3245DCD!d"
      ]
    }
  ],
  "notes": "\tThis record was updated with the Vault KSM plugin",
  "title":"Sample Updated Record",
  "type": "login"
}

ヒント 次のコマンドを使用して、シークレットの現在の値をJSON形式で確認できます。 vault read -field=data -format=json ksm/record uid=<UID>

シークレットの作成

シークレットの更新と同様に、次のコマンドにJSONデータを渡して新しいシークレットを作成します。

vault write -format=json ksm/record/create folder_uid=<UID> data=@data.json

この例では、更新されたデータはファイルから渡されます。この方法は、よりシンプルですっきりしたCLIコマンドにお勧めです。 JSONデータはコマンドラインで渡すことができますが、引用符はエスケープする必要があります。

データファイルの例:

data.json
{
      "fields": [
             {
      "type": "login",
      "value": [
       "username@email.com"
      ]
    },
    {
      "type": "oneTimeCode",
      "value": [
        "otpauth://totp/Generator:?secret=JBSWY3JP9HPK3PXP\u0026issuer=Generator\u0026algorithm=SHA1\u0026digits=6\u0026period=30"
      ]
    }
  ],
  "notes": "\tExample Record wth TOTP",
  "title":"Sample TOTP SECRET",
  "type": "login"
}

最終更新