# 構成ファイル

## コマンダー構成ファイル <a href="#commander-configuration-file" id="commander-configuration-file"></a>

コマンダーに初めてログインすると、設定ファイルが作成されます。macOSおよびLinuxでは `~/.keeper/config.json`、Windowsでは `C:\Users\[USERNAME]\.keeper` に作成されます。このファイルの保存場所は、`--config` パラメータを指定することで変更できます。

### **構成ファイルの例**

```
{
    "server": "keepersecurity.eu",
    "user": "services@company.com",
    "password": "your_password_here",
    "private_key": "yaeK4jMeIGNkSR2pi4xf2XGmYM094YMUoE8-QEW9CAA",
    "device_token": "g6RDMxr1t-bcVdBeBpz-xQ",
    "mfa_duration": "forever",
    "proxy": "http://proxy_user:proxy_password@host:port",
    "sso_master_password": false,
    "skip_records": false,
    "debug": false,
    "plugins": [],
    "commands": [],
    "timedelay":0
}
```

### 構成ファイルのオプション

* `server` Keeperデータセンターのリージョン

  \
  コマンダーはデフォルトで米国リージョンを使用します。そのため、他のリージョンにホストされているお客様は、設定ファイルでサーバーを指定する必要があります。

  | リージョン | 「server」のプロパティ設定                     |
  | ----- | ------------------------------------ |
  | US    | <https://keepersecurity.com>         |
  | EU    | <https://keepersecurity.eu>          |
  | AU    | <https://keepersecurity.com.au>      |
  | GOV   | <https://govcloud.keepersecurity.us> |
  | CA    | <https://keepersecurity.ca>          |
  | JP    | <https://keepersecurity.jp>          |
* `debug` 詳細な暗号出力とネットワークロギングを有効または無効にします。
  * `true` または `false` に設定<br>
* `plugins` 読み込むパスワードローテーションプラグインを設定します。
  * コマンダーのパスワードローテーションプラグインの詳細については[こちら](https://github.com/Keeper-Security/Commander/tree/master/keepercommander/plugins)をご参照ください。<br>
* `commands` 実行するKeeperコマンドのカンマ区切りリスト<br>
* `timedelay` 指定したコマンドをX秒ごとに実行します。
  * 例: `"timedelay":600` は10分ごとにコマンドを実行します。<br>
* `private_key` 新しいデバイスでコマンダーによって生成されたデバイスの秘密鍵。 この鍵は、ボルトデータの暗号化と復号化に使用されます。<br>
* `device_token` 新しいデバイスごとにバックエンドによって生成されるデバイストークン。デバイストークンは、デバイスを一意に識別するために使用され、セッションの動作を制御します。<br>
* `proxy` プロキシURL: `schema://[user:password@]host:port` ここでスキーマは以下のとおりです。
  * `http` HTTPプロキシ
  * `socks5` ローカルDNSを使用したSOCKS5プロキシ
  * `socks4` ローカルDNSを使用したSOCKS4プロキシ
  * `socks4a` リモートDNSを使用したSOCKS4プロキシ
  * `socks5h` リモートDNSを使用したSOCKS5プロキシ<br>
* `sso_master_password` エンタープライズSSOアカウントのマスターパスワードログインを強制します。<br>
* `skip_records` 値が `true` に設定されている場合、レコードの同期を防ぎます。\
  非常に大きなボールトを持つユーザーでは、ログイン後に全レコードを同期せずにコマンドを実行できるようになります。ログイン後にレコードの同期を強制するには、`sync-down --force` を使用してください。

  config.jsonの例: `"skip_records": true,`
* `config_storage` 構成情報を[AWS Secrets Manager](https://docs.keeper.io/jp/keeperpam/commander-cli/commander-installation-setup/configuration/aws-secrets-manager)または[AWS Key Management Service](https://docs.keeper.io/jp/keeperpam/commander-cli/commander-installation-setup/configuration/aws-key-management-service)で保護することができます。

### 構成ファイルからのコマンドの実行

`commands` フィールドを使用すると、ログイン時に所定のコマンドを実行できます。

以下のように、実行するKeeperコマンダーコマンドのカンマ区切りリストを入力します。

```
config.json
{
 ...
 "commands": ["sync-down", "file-report -d"]
 ...
}
```

この例では、同期してから、ボルト内の利用可能なファイルのレポートをダウンロードします。

### 構成ファイルの場所

バイナリインストーラーからコマンダーを起動した場合、設定ファイルはユーザーのホームディレクトリ内の `.keeper` フォルダに作成されます。

**Mac環境:** `~/.keeper/config.json`\
**Windows環境:** `/Users/{Username}/Documents/.keeper/config.json`

pip3またはソースからコマンダーを使用する場合、設定ファイルはコマンダー実行ファイルを起動したカレントフォルダに作成されます。

以下のように、コマンダー起動時に使用する設定ファイルを指定することもできます。

```bash
$ keeper shell --config /path/to/config.json
```

## マルチサーバー環境での認証

複数のサーバーや動的に生成されるサーバー環境では、すべてのフィールドが入力され、デバイス識別子が「承認」されていれば、同じ `config.json` ファイルを各インスタンスで使用できます。

`config.json` ファイルの例

```json
{
    "user": "service@company.com",
    "password":"RANDOM_LONG_PASSWORD",
    "server": "https://keepersecurity.com",
    "private_key": "yaeK4jMeIGNkSR2pi4xf2XGmYM094YMUoE8-QEW9CAA",
    "device_token": "g6RDMxr1t-bcVdBeBpz-xQ"
}
```

少なくとも1度デバイス承認を行っていれば、この構成ファイルは任意の数のサーバーで読み込むことができます。

このファイルを複数のインスタンスに配布する場合は、クラウドインフラが提供する安全なストレージ機能で保護することを推奨します。また、Keeper管理コンソールでユーザーアカウントをIP範囲で制限されたロール適用ポリシーに割り当てることも推奨されます。

### ログイン状態を維持

ログイン状態を維持を使用すると、コマンダーのデバイスが構成ファイルに「パスワード」を入力せずに Keeperに認証できるようになります。これは、自動化スクリプトや他のソフトウェアからコマンダーを呼び出す場合に便利です。

この機能を有効にするには、まずデバイスを登録し、ログイン状態を維持設定をオンにする必要があります。設定が完了すると、指定した構成ファイルで次回ログインした際にセッションが再開され、ユーザーは自動的にログインされます。セッションを自動的に再開するために、いくつかのトークンが `config.json` ファイルに保存されます。

### ログイン状態維持の構成を作成 <a href="#creating-a-persistent-login-config" id="creating-a-persistent-login-config"></a>

以下はデバイスで365日間 (最大) の永続ログインを有効にするコマンドです。

```
My Vault> this-device register
My Vault> this-device persistent-login on
My Vault> this-device ip-auto-approve on
My Vault> this-device timeout 365d
My Vault> quit
```

{% hint style="info" %}
値として秒 (たとえば、60秒は60) または数字と文字 (たとえば、1分は1m、5時間は5h、7日は7d) を使用できます。

また、「logout」と入力するとセッションが無効になることにもご留意ください。終了するには、コマンダーセッションを「quit」します。
{% endhint %}

デバイスにログイン状態の維持を設定すると、ローカルフォルダの `config.json` は以下のようになります。

```json
{
    "private_key":"8n0OqFi9o80xGh06bPzxTV1yLeKa5BdWc7f7CffZRQ",
    "device_token":"R2O5wkajo5UjVmbTmvWnwzf7DK1g_Yf-zZ3dWIbKPOng",
    "clone_code": "retObD9F0-WDABaUUGhP0Q",
    "user": "me@company.com",
    "server": "keepersecurity.com"
}
```

{% hint style="info" %}
構成ファイルを変更して、コマンドの自動実行などの機能を利用することもできます。詳細については、[こちらのページ](#commanderfairu)をご参照ください。
{% endhint %}

ログイン状態を維持セッションは任意の数作成できます。ただし、ログイン状態を維持のオプションは動的なマルチサーバー環境向けではありません。複数のサーバーで同じ構成ファイルを共有すると、2台目のサーバーにログインしようとした際にログイン状態を維持は失敗します。

動的なマルチサーバー環境の場合は、前述の、すべての項目が入力された構成ファイルを各インスタンスに配布する方法をご参照ください。

### ログイン状態を維持を使用してコマンドを実行

異なる構成を維持したい場合は、指定した構成ファイルを使ってコマンダーを実行できます。例えば、以下のコマンドを使用すると、ログインを求められることなくCLIが起動します。

```
$ keeper --config=my_config.json shell
```

CLI を終了する場合は、「logout」ではなく「quit」と入力します。「logout」と入力するとセッションが期限切れとなり、新しいログイン状態を維持構成を作成する必要があります。

ログインを求められることなく特定のコマンドを実行することができます。以下の例では、1 行のコマンドで新しいレコードが自動的に作成されます。

{% code overflow="wrap" %}

```
$ keeper --config=config_demo.json "add --login myuser -g --url https://google.com -t 'Google'"
```

{% endcode %}

## STDINを使用したバッチモード <a href="#batch-mode-through-stdin" id="batch-mode-through-stdin"></a>

一連のコマンドをまとめて実行し、作成したファイルをコマンダーのSTDINにパイプすることができます。例えば、次の内容で `test.cmd` というテキストファイルを作成します。

{% code overflow="wrap" %}

```
add --login=user@gmail.com --pass=somemasterpass --url=https://google.com --force "Some Record Title"
upload-attachment --file="/path/to/some/file.txt" "Some Record Title"
share-record --email="user@company.com" --write "Some Record Title"
```

{% endcode %}

このファイルをバッチモードで実行するには以下を行います。

```
cat test.cmd | keeper --batch-mode -
```

または

```
keeper test.cmd
```

**エラー処理**

いずれかのコマンドが失敗すると、バッチ実行は中断されます。コマンドのエラーを無視したい場合は、コマンドの前に `@` を付けて実行してください。

{% code overflow="wrap" %}

```
record-add --title="Sample Login 123" --record-type=login --folder="Personal Folder" login=username password=$GEN url=https://www.google.com "License ID"="9ACB123" url.AlternateURL=https://amazon.com
upload-attachment --file="/path/to/some/file.txt" "Sample Login 123"
share-record --email="user@company.com" --write "Sample Login 123"
```

{% endcode %}

**Windowsのバッチモード**

以下は、Windowsのコマンドラインで3つのコマンドを実行する例です。

```
(echo ls -l && echo whoami && echo tree) | keeper --batch-mode -
```

## バッチモードとログイン状態を維持の組み合わせ

[前述](#persistent-login-sessions)のように、ログイン状態を維持構成を設定すると、以下のようにログインのプロンプトを表示せずに一連のバッチコマンドを実行できます。

```
$ keeper --config=my_config.json bunch_of_commands.cmd
```

## CLIからのバッチモード

CLI内からコマンドを手軽に逐次実行できるバッチモードに対応しています。

このコマンドは「run-batch」と呼ばれ、以下のように実行します。

```
My Vault> run-batch -d 10 "C:\My Drive\Keeper\commands.txt"
```

この例では、各コマンドは10秒の遅延を挟んで実行されます。

Linux環境では、以下のようにパスを指定することもできます。

```
My Vault> run-batch -d 5 "/path/to/file.txt"
```

## HTTP REST API サービスモード

コマンダーでは、最小限のセットアップで導入できるネイティブの REST API統合が利用可能です。このモジュールを使用すると、REST APIインターフェイスを通じてコマンダーCLIコマンドを実行しながら、セキュリティと構成の柔軟性を維持できます。サービスはローカルで実行でき、必要に応じてNgrokやCloudflareトンネルと統合してルーティング可能なアドレスを作成することも可能です。

サービスモードREST APIの詳細については[こちらのページ](https://docs.keeper.io/keeperpam/commander-cli/service-mode-rest-api)をご覧ください。

***

## 保護されたストレージに設定を保存

機密性の高い設定ファイルのパラメータ (user、password、server、device\_token、private\_key、clone\_code) は、サードパーティ製のシークレットマネージャまたはハードウェアセキュリティモジュールにオプションで保存できます。

保護されたストレージを使用するには、`config_storage` プロパティを設定ファイルに追加します。`config_storage` の値はURL形式です。ストレージのURL形式については、以下の各ページをご参照ください。

コマンダーでは、以下のストレージがサポートされています。

* [AWS Secrets Manager](https://docs.keeper.io/jp/keeperpam/commander-cli/commander-installation-setup/configuration/aws-secrets-manager)
* [AWS Key Management Service](https://docs.keeper.io/jp/keeperpam/commander-cli/commander-installation-setup/configuration/aws-key-management-service)

***

## 作業ディレクトリの設定

デフォルトでは、コマンダーは設定ファイルやログファイルを `~/.keeper` に保存します。環境変数を使用してシステム全体の設定を行ったり、コマンドラインパラメータでセッションごとに上書きしたりすることで、この保存場所をカスタマイズできます。

* [デフォルト作業ディレクトリの構成](https://docs.keeper.io/jp/keeperpam/commander-cli/commander-installation-setup/configuration/configure-default-working-directory)

***

## 自動化

コマンダーには以下のような自動化機能が備わっています。

* [Windowsタスクによる自動化](https://docs.keeper.io/jp/keeperpam/commander-cli/commander-installation-setup/configuration/automating-with-windows-task)
* [AWS Lambdaによる自動化](https://docs.keeper.io/jp/keeperpam/commander-cli/commander-installation-setup/configuration/using-commander-with-aws-lambda)
