> For the complete documentation index, see [llms.txt](https://docs.keeper.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.keeper.io/keeperpam/jp/endpoint-privilege-manager/user-guides/security-hardening.md).

# セキュリティ強化

<figure><img src="/files/jkNo2avjULDLsjTAsJ7r" alt=""><figcaption></figcaption></figure>

本ページでは、KEPM展開におけるセキュリティのベストプラクティスと強化の推奨事項を取り扱います。デフォルト構成は最初から安全になるよう設計されていますが、本ガイドの設定は、エンタープライズや規制対象環境でより厳格なセキュリティ要件を満たすのに役立ちます。

## ネットワークセキュリティ <a href="#network-security" id="network-security"></a>

**すべての通信はlocalhost上に留まります。** KEPMエージェントは `127.0.0.1` にのみバインドします。HTTPサーバー (ポート6888および6889) と内部MQTTブローカー (ポート8675) はネットワークに公開されません。インバウンドアクセス用のファイアウォールルールは不要で、ネットワークレベルのアクセス制御も不要です。

**ローカルAPIをネットワークに公開しないでください。** APIはローカルプロセス間通信専用に設計されています。リモート管理のためにネットワークインターフェースへバインドすることを検討している場合は、実行前にKeeperにお問い合わせください。認可モデルはネットワークからアクセス可能なエンドポイント向けに設計されていません。

**展開後にlocalhostのみのバインドを確認**

```bash
# Windows
netstat -an | findstr :6889
# Expected: TCP 127.0.0.1:6889 ... LISTENING

# Linux / macOS
netstat -an | grep :6889
# Expected: 127.0.0.1:6889 ... LISTEN
```

**TLSは常に有効です。** すべてのHTTPS通信はTLS 1.2またはTLS 1.3を使用します。エージェントはlocalhost利用向けに起動時に自己署名証明書を生成します。これは正しく想定どおりの動作です。証明書はlocalhost通信を保護し、この文脈では自己署名証明書が適切です。

## サービスアカウントの構成 <a href="#service-account-configuration" id="service-account-configuration"></a>

**SYSTEMまたはrootとして実行。** KeeperPrivilegeManagerサービスは、Windowsでは `SYSTEM`、Linux/macOSでは `root` として実行する必要があります。これは必須要件です。権限の低いアカウントで実行すると、エージェントが昇格リクエストをインターセプトし、ポリシーを適用できなくなります。

**インストールパスはサービスアカウントのみが所有し、書き込み可能である必要があります。** インストールディレクトリとすべてのサブディレクトリはサービスアカウントが所有し、標準ユーザーは書き込み不可である必要があります。非特権ユーザーがインストールディレクトリ内の実行可能ファイルやプラグインファイルを変更できる場合、改ざんされたプラグインから保護する暗号検証が無効化されます。

**Linux/macOSでパスセキュリティを確認**

```bash
# Check that /opt/keeper/sbin and all parent directories are root-owned
# and not world-writable
ls -la /opt/keeper/
stat /opt/keeper/sbin/KeeperPrivilegeManager
```

Windowsでは、インストールディレクトリのACLを確認します。

```powershell
Get-Acl "C:\Program Files\Keeper Security\Endpoint Privilege Management" | Format-List
```

標準ユーザーには読み取りと実行権限があればよく、書き込みや変更権限は不要です。

## 証明書と署名の管理 <a href="#certificate-and-signature-management" id="certificate-and-signature-management"></a>

**特定の必要がない限り `AlternativeSignatures` は空のままにしてください。** `appsettings.json` の `AlternativeSignatures` 設定では、プラグイン署名用に追加の証明書サムプリントを信頼できます。デフォルト (空) 構成では、Keeper署名済みプラグインのみが読み込まれます。ここにサムプリントを追加すると、サードパーティまたはカスタムプラグインが許可されます。エントリを追加する前に必要性を慎重に検討してください。

```json
{
  "Settings": {
    "AlternativeSignatures": []
  }
}
```

**証明書パスワードを構成ファイルに保存しないでください。** カスタム証明書を展開する場合は、Windows証明書ストアまたはプラットフォームの認証情報マネージャーで認証情報を保存してください。構成の `CertPassword` フィールドは常に空にしてください。

**カスタム証明書は定期的にローテーションしてください。** 組織がKEPM HTTPSエンドポイント用にカスタム証明書を使用している場合、PKIポリシー (通常は年次、または有効期限が近づいたとき) に沿ったローテーションスケジュールを確立してください。カスタム証明書が構成されていない場合、エージェントは再起動のたびに新しい自己署名証明書を自動生成します。

## ファイル権限 <a href="#file-permissions" id="file-permissions"></a>

以下の権限モデルをすべてのプラットフォームで適用してください。

<table data-header-hidden="false" data-header-sticky><thead><tr><th width="154.6666259765625">ディレクトリ</th><th>推奨アクセス</th></tr></thead><tbody><tr><td>インストールルート</td><td>サービスアカウント: フルコントロール; 管理者: 読み取り/実行; ユーザー: なし</td></tr><tr><td><code>Plugins/</code></td><td>サービスアカウント: フルコントロール; 管理者: 読み取り/実行; ユーザー: なし</td></tr><tr><td><code>Jobs/</code></td><td>サービスアカウント: フルコントロール; 管理者: 読み取り/実行; ユーザー: なし</td></tr><tr><td><code>KeeperStorage/</code></td><td>サービスアカウント: フルコントロール; 管理者: 読み取りのみ; ユーザー: なし</td></tr><tr><td><code>policies/</code></td><td>サービスアカウント: フルコントロール; 管理者: 読み取りのみ; ユーザー: なし</td></tr></tbody></table>

**Linux**では、`/opt/keeper/sbin/` ディレクトリツリーがroot所有であり、グループおよびその他への書き込み権限がないことを確認します。

```bash
find /opt/keeper/sbin -perm /o+w -o -perm /g+w | head
# Should return nothing
```

## 許可ホスト <a href="#allowed-hosts" id="allowed-hosts"></a>

`appsettings.json` の `AllowedHosts` 設定は、受け付けるHTTP `Host` ヘッダーを制御します。デフォルト値 `"*"` は任意のホストヘッダーを受け付けます。localhostのみの展開では許容できますが、厳格化できます。

```json
{
  "AllowedHosts": "localhost;127.0.0.1"
}
```

ローカルプロセスのみがAPIとやり取りする本番展開では、`localhost;127.0.0.1` に設定してください。`AllowedHosts` の変更にはサービスの再起動が必要です。

## 監査ログ <a href="#audit-logging" id="audit-logging"></a>

**監査ログはデフォルトで有効であり、無効化できません。** すべてのポリシー評価、特権昇格、ファイルアクセス試行、構成変更、管理アクションは、MQTT `AuditMessage` トピックと統合ストレージへ自動的に記録されます。

{% hint style="info" %}
監査ログは、コンプライアンスレビュー、インシデント対応、ポリシー有効性分析の主要な証拠源です。
{% endhint %}

**ログを定期的に確認してください。** 最低でも週次で監査ログを確認し、以下をチェックしてください。

* **単一ユーザーからの高頻度ポリシー評価の繰り返し:** ポリシー回避の試みを示す可能性
* **管理アクション:** 管理者レベルのAPI呼び出しは、ローカル認可モデルで最高特権を持ちます。実行者とタイミングを記録することで、特権乱用の検出とコンプライアンス要件の充足に必要な監査証跡が得られます
* **ポリシー評価の拒否:** 拒否の急増は、正当な業務をブロックする誤構成のポリシー、または許可範囲を試すユーザー/プロセスのいずれかを示し、どちらも調査が必要です
* **構成変更:** `appsettings.json`、プラグイン構成、ジョブ定義の変更は、エージェントが信頼し適用する内容に直接影響します。不正または予期しない変更は、改ざんやサプライチェーン型攻撃の強い指標です
* **認証失敗:** ローカルAPIに対する繰り返しの失敗は、エンドポイント上のプロセスが不正アクセスを試みていることを示し、マルウェア、侵害されたアプリケーション、誤構成の統合によるアクセス試行の可能性があります
  * `AUTHORIZATION_FAILED` と `PROCESS_AUTHENTICATION_FAILED` は監査イベントタイプとして定義され記録されますが、これらは *ローカルAPI認可失敗* であり、エンドポイントレベルのログイン失敗ではありません。特定の失敗シナリオが監査イベントとして記録されるかは、スタック内の発生位置によります
* **ポリシー回避の試み:** ポリシーエンジンは `SessionId` または `UserName+MachineName` の組み合わせをキーに、ソースごとの評価リクエストを追跡し、設定されたレート制限 (デフォルト: 1分あたり100リクエスト) を超えるリクエストをキューイングします。同一ソースから10回連続で失敗するとサーキットブレーカーが開き、自動リセットまで5分間開いたままになります。監査ログでは、単一の `user_info` 値が短時間に同一 `target_info` に対して異常な量の `policy_evaluation_status` DENYイベントを生成している、またはレート制限キューをトリガーするバーストのいずれも、正当な業務ではなく許可的な実行パスを探るユーザーまたは自動化プロセスを示します

**コンプライアンス要件の期間分ログを保持してください。** ログファイルはデフォルトで15日間保持されます。コンプライアンスフレームワーク (SOC 2、ISO 27001、FedRAMPなど) でより長い保持が必要な場合は、15日期間が切れる前にSIEMまたは中央ログストアへのログ転送を実装してください。ログファイルのパスについては、[ログの確認](/keeperpam/jp/endpoint-privilege-manager/user-guides/reading-logs.md)をご参照ください。

## セキュリティ監視の推奨事項 <a href="#security-monitoring-recommendations" id="security-monitoring-recommendations"></a>

以下の条件を監視し、インフラで可能な場合はアラートを設定してください。

<table><thead><tr><th width="167.33331298828125">領域</th><th>推奨事項</th></tr></thead><tbody><tr><td>エージェント可用性</td><td>予期しないサービス停止やエージェントのオフラインを監視し、計画外の停止は除外されるまで改ざんの可能性として扱う</td></tr><tr><td>監査ログ（構成変更）</td><td><code>appsettings.json</code> の変更をアラート; プラグインおよびジョブ構成ファイルはファイル整合性監視で別途監視</td></tr><tr><td>監査ログ（拒否）</td><td>定期的にSIEMへエクスポート; 短時間に同一 <code>user_info</code> からの繰り返しDENYイベントをアラート</td></tr><tr><td>監査ログ（登録）</td><td>計画された展開期間外のエージェント登録イベントをアラート</td></tr><tr><td>証明書</td><td>構成にパスワードを保存しない; <code>AlternativeSignatures</code> は空または最小限に保つ</td></tr><tr><td>ファイル権限</td><td>構成、ストレージ、ポリシーパスは管理者のみ読み書き</td></tr><tr><td>ログレベル</td><td>本番では <code>Warning</code> または <code>Information</code> ( <code>Debug</code> ではない)</td></tr><tr><td>ネットワーク</td><td>localhostのみのバインドを維持; <code>AllowedHosts</code> を特定ホスト名に設定</td></tr><tr><td>プロセス認証</td><td>KEPMが起動していないプロセスに関するプロセス認証イベントをサービスログで確認; <code>PROCESS_AUTHENTICATION_FAILED</code> として表示され、正常な展開では稀であるべき</td></tr><tr><td>サービスアカウント</td><td>WindowsではSYSTEM、Linux/macOSではrootとして実行</td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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/endpoint-privilege-manager/user-guides/security-hardening.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.
