# 高度な設定

## 高度な構成

### レート制限ルール

指定した時間枠内で許可する最大APIリクエスト数を定義します。

デフォルト値: `60/minute、600/hour、6000/day`

入力形式: `X/[minute|hour|day]` または `X per [minute|hour|day]`

有効な例: `100/minute`, `50/hour`, `1000 per day`

補足: 大文字・小文字は区別しません

### IP Allow / IP Denyリスト

IPアドレスまたはIPネットワーク範囲に基づいてアクセス制御を行います。

IP許可リスト (ホワイトリスト)

* 指定されている場合、このリストに含まれるIPのみがアクセス可能
* 拒否リストより許可リストが優先
* デフォルト: `0.0.0.0/0` (未指定の場合はすべて許可)

IP拒否リスト (ブラックリスト)

* このリストに含まれるIPはアクセスが拒否されます
* Allowリストが未指定、またはAllow対象外のIPの場合に適用

判定ロジック

1. 許可リストが存在する場合\
   IPが許可リストに含まれるかを確認 → 許可/拒否
2. 許可リストが空の場合\
   拒否リストを確認 → 該当する場合は拒否、該当しない場合は許可

入力形式: IPアドレスまたはCIDRブロックをカンマ区切りで指定

検証ルール: IPv4アドレスまたはCIDRブロックとして有効であること

有効な例: `192.168.1.1,10.0.0.0/24`、`172.16.0.0/16`

補足: 空リストも許可されます (検証スキップ)

### 暗号化設定

REST APIレスポンスに対してAES-256( GCM) 暗号化をオプションで適用できます。

入力形式: `y` または `n`

秘密鍵の検証ルール

* 32文字であること
* 使用可能文字: 英数字および `@#$%^&+=`
* 空欄不可

補足: APIレスポンスの復号には秘密鍵が必要です。

### トークン有効期限

REST APIトークンの有効期間を指定します。

入力形式: `Xm`, `Xh`, `Xd` (Xは正の数、m=分、h=時間、d=日)

検証ルール

* 正の数であること
* 単位は m / h / d のいずれか
* 有効な例: `30m`、`24h`、`7d`

補足: 空欄の場合、トークンは期限なしになります

### コマンドリスト

API経由で公開するコマンドの一覧を指定します。

入力形式: Keeperコマンダーの有効なコマンドをカンマ区切りで指定

検証ルール

* コマンダーCLIの `help` で表示される有効なコマンドであること
* 空欄不可
* 個々のコマンドにスペースを含めないこと
* 有効な例: `whoami,tree,list`

#### 構成形式

入力形式: `json` または `yaml`

検証ルール: 大文字・小文字を区別せず、`json` か `yaml` のいずれかであること

#### 実行モード

入力形式: `foreground` または `background`

* Foregroundモード: 現在のターミナルセッションでサービスを実行
* Backgroundモード: バックグラウンドプロセスとして実行し、ログをファイルに出力

検証ルール: 大文字・小文字を区別せず、`foreground` または `background`

***

## 複数APIトークンのサポート

ボルトに保存される `service_config.yaml` にはサービスのプロパティが記述されており、その中の `records` セクションで、特定のコマンドや有効期限を持つAPIキーを複数定義できます。

```
encryption: ''
encryption_private_key: ''
ip_allowed_list: 0.0.0.0/0
ip_denied_list: ''
is_advanced_security_enabled: n
ngrok: y
ngrok_auth_token: XXXXXXXXXX
ngrok_custom_domain: myname
ngrok_public_url: ''
cloudflare: n
cloudflare_tunnel_token:
cloudflare_custom_domain:
cloudflare_public_url: ''
tls_certificate: n
certfile: ''
certpassword: ''
port: 9090
rate_limiting: ''
queue_enabled: y
run_mode: foreground
fileformat: yaml
records:
- api-key: XXXXXXXX
  command_list: tree,record-add
  expiration_timestamp: '9999-12-31T23:59:59'
- api-key: XXXXXXXX
  command_list: get
  expiration_timestamp: '9999-12-31T23:59:59'
```

***

## 構成セキュリティ

重要なセキュリティ機能として、ローカルのサービス構成ファイルは自動的に秘密鍵で暗号化されます。これにより、APIキー、トークン、セキュリティ設定などの機密性の高い構成情報が保護されます。


---

# 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/commander-cli/service-mode-rest-api/advanced-settings.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.
