Hashicorp Vault

KeeperシークレットマネージャーとHashiCorp Vaultを連携させてデータソースとして使用

概説

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

機能

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

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

  • HashiCorp Vaultからシークレット情報を更新します

Keeperシークレットマネージャー機能については、概要のページをご参照ください。

要件

この統合機能を利用するには以下が必要となります。

インストール

1. シークレットマネージャープラグインのダウンロード

以下の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

シークレットマネージャープラグインを有効化

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

本番モード

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

シークレットマネージャープラグインの登録と有効化

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サーバーでプラグインを有効にするには、プラグインファイルのハッシュが必要です。このハッシュは、シークレットマネージャープラグインに対して生成できます。

Windows 7以降の環境には、SHA256ハッシュを生成するための組み込みツールとして CertUtil が含まれています。以下は、CertUtilを使ってSHAハッシュを生成する方法の例です。ただし、SHA256形式でファイルのハッシュを生成できるツールであれば、他のツールを使用しても問題ありません。

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

3. シークレットマネージャー接続の構成

HashiCorp Vaultプラグインがインストールされたので、シークレット認証情報へアクセスできるよう、Keeperボルトとのセキュアな接続を確立します。この接続を作成するには、シークレットマネージャー構成を作成し、それをプラグインに割り当てる必要があります。

シークレットマネージャー構成を作成

シークレットマネージャーの構成は、Keeperコマンダーまたはシークレットマネージャー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"
}

シークレットの削除

vault delete ksm/record uid=Oq3fFu14hZY00d7sp3EYNA

最終更新