概説
KeeperシークレットマネージャーとHashiCorp Vaultの連携により、KeeperボルトのシークレットをHashiCorp Vault のデータストアとして使用できます。
機能
HashiCorp Vaultスクリプトとコマンドを使用して、Keeperボルトのシークレットを使用します
HashiCorp Vaultを使用してシークレット情報を読み取ります
HashiCorp Vaultから機密情報を更新します
Keeperシークレットマネージャー機能の完全なリストについては、概要 をご参照ください。
前提条件
このページでは、シークレットマネージャーとHashiCorp Vaultとの連携について説明します。 この連携を利用するための必要条件は以下のとおりです。
Keeperシークレットマネージャーへのアクセス (詳細は、クイックスタートガイド をご参照ください)
Keeperサブスクリプションのシークレットマネージャーアドオンの有効化
シークレットマネージャー強制ポリシーが有効化されたロールを割り当てられたメンバーシップ
HashiCorp Vaultコマンドライン、およびVaultサーバーの稼働
インストール
1. シークレットマネージャープラグインのダウンロード
以下のKSM GitHubのページから最新のインテグレーションリリースをダウンロードします。
シークレットマネージャーリリース ご利用のプラットフォームに適合するリリースの一覧でvault-pluginのリリースを探します。
プラグインを解凍し、HashiCorp Vaultのpluginsディレクトリに配置します。 この例では、フォルダはC:\vault\plugins
(Windows) または/etc/vault/vault_plugins
(MacOS/ Linux) にあります。
2. HashiCorp Vaultにプラグインを登録
開発モード
プラグインをテストしたり、迅速な開発を可能にしたりするために、開発モードを使用して、HashiCorp Vault CLIをすばやく起動できます。
Windows Linux / MacOS
HashiCorp Vaultを開発モードで起動
コピー vault server -dev -dev-plugin-dir=C:\vault\plugins
シークレットマネージャープラグインを有効化
コピー vault secrets enable -path=ksm vault-plugin-secrets-ksm.exe
HashiCorp Vaultを開発モードで起動
コピー vault server -dev -dev-plugin-dir=/etc/vault/vault_plugins
シークレットマネージャープラグインを有効化
コピー vault secrets enable -path=ksm vault-plugin-secrets-ksm
HashiCorp Vault CLI開発モードでは、揮発性インメモリストレージを利用します。 Keeperボルトのシークレットに対して実行されるアクションはすべて即時に実行されますが、HashiCorp Vaultを開発モードで起動するたびにプラグインを再度有効にする必要があります。
本番モード
本番環境に移行する準備ができたら、プラグインのSHA256ハッシュを使用して、プラグインを登録する必要があります。
Windows Linux / MacOS
シークレットマネージャープラグインの登録と有効化
コピー 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
シークレットマネージャープラグインの登録と有効化
コピー vault plugin register -sha256=<SHA256> secret vault-plugin-secrets-ksm
vault secrets enable -path=ksm vault-plugin-secrets-ksm
SHA256ハッシュの生成
本番環境のHashiCorp Vaultサーバーでプラグインを有効にするには、プラグインファイルのハッシュが必要です。 このハッシュは、シークレットマネージャープラグイン用に生成できます。
組み込みのshasumコマンドを使用すると、以下のように生成できます。
コピー shasum -a 256 /etc/vault/vault_plugins/vault-plugin-secrets-ksm
OSによっては、代わりにsha256sum
コマンドを使用できます
コピー sha256sum /etc/vault/vault_plugins/vault-plugin-secrets-ksm
3. Secrets Manager接続を設定
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データはコマンドラインで渡すことができますが、引用符はエスケープする必要があります。
データファイルの例:
コピー {
"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データはコマンドラインで渡すことができますが、引用符はエスケープする必要があります。
データファイルの例:
コピー {
"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"
}