# Hashicorp Vault

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FdtnpGSGlSeWZK4nSqdOm%2Fimage.png?alt=media&#x26;token=d9d787ae-b140-4eea-ad29-5e70483287b7" alt=""><figcaption></figcaption></figure>

## 概説

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

## 機能

* HashiCorp Vaultスクリプトとコマンドを使用して、Keeperボルトのシークレットを使用します
* HashiCorp Vaultを使用してシークレット情報を読み取ります
* HashiCorp Vaultからシークレット情報を更新します

{% hint style="info" %}
Keeperシークレットマネージャー機能については、[概要のページ](/keeperpam/jp/secrets-manager/overview.md)をご参照ください。
{% endhint %}

## 要件

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

* Keeperシークレットマネージャーへのアクセス (詳しくは[クイックスタートガイド](/keeperpam/jp/secrets-manager/quick-start-guide.md)をご参照ください)
  * Keeperサブスクリプションのシークレットマネージャーアドオンの有効化
  * シークレットマネージャー関連ポリシーが有効化されたロールのメンバーシップ
* シークレットを共有するKeeper[シークレットマネージャーアプリケーション](/keeperpam/jp/secrets-manager/about/terminology.md)
  * アプリケーションの作成手順については、[クイックスタートガイド](/keeperpam/jp/secrets-manager/quick-start-guide.md)をご参照ください
* Keeper[シークレットマネージャー構成](/keeperpam/jp/secrets-manager/about/secrets-manager-configuration.md)の初期化
  * HashiCorp Vault連携では、Base64形式の設定を使用できます
* HashiCorp Vaultコマンドライン、およびVaultサーバーの稼働
  * インストール方法は、[HashiCorp Vaultのドキュメント](https://learn.hashicorp.com/collections/vault/getting-started)をご参照ください

## インストール

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

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

{% embed url="<https://github.com/Keeper-Security/secrets-manager/releases?q=vault-plugin-secrets-ksm>" %}

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

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

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

#### 開発モード

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

{% tabs %}
{% tab title="Windows" %}
**HashiCorp Vaultを開発モードで起動**

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

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

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

{% endtab %}

{% tab title="Linux / MacOS" %}
**HashiCorp Vaultを開発モードで起動**

```
vault server -dev -dev-plugin-dir=/etc/vault/vault_plugins
```

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

```
vault secrets enable -path=ksm vault-plugin-secrets-ksm
```

{% endtab %}
{% endtabs %}

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

#### 本番モード

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

{% tabs %}
{% tab title="Windows" %}
**シークレットマネージャープラグインの登録と有効化**

```
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
```

{% endtab %}

{% tab title="Linux / MacOS" %}
**シークレットマネージャープラグインの登録と有効化**

```
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
```

{% endtab %}
{% endtabs %}

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

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

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

シークレットマネージャーの構成は、KeeperコマンダーまたはシークレットマネージャーCLIを使用して作成できます。構成の作成方法については、[構成のページ](/keeperpam/jp/secrets-manager/about/secrets-manager-configuration.md)をご参照ください。

構成が生成されたら、その内容を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データをコマンドライン上で直接渡すことも可能ですが、その場合は引用符をエスケープする必要があります。

#### データファイルの例

{% code title="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"
}
```

{% endcode %}

{% hint style="info" %}
ヒント\
以下のコマンドを使用して、シークレットの現在の値をJSON形式で確認できます。\
`vault read -field=data -format=json ksm/record uid=<UID>`
{% endhint %}

### シークレットの作成

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

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

この例では、更新データをファイルから渡しています。CLIコマンドをより簡潔でわかりやすくするために、この方法が推奨されます。JSONデータをコマンドライン上で直接渡すことも可能ですが、その場合は引用符をエスケープする必要があります。

#### データファイルの例

{% code title="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"
}
```

{% endcode %}

### シークレットの削除

```
vault delete ksm/record uid=Oq3fFu14hZY00d7sp3EYNA
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.keeper.io/keeperpam/jp/secrets-manager/integrations/hashicorp-vault.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
