> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tryprofound.com/llms.txt
> Use this file to discover all available pages before exploring further.

# セキュリティとプライバシーの設定

> WordPress プラグインのデータ収集、フィルタリング、プライバシー設定を構成します

## プライバシーとコンプライアンス

このプラグインは、ユーザーのプライバシーを尊重しながらアナリティクスと連携するように設計されています。

* **Cookie なし**: 純粋なサーバーサイドの実装
* **JavaScript なし**: クライアントサイドのトラッキングコードなし
* **データの最小化**: HTTP メタデータのみで、コンテンツは含まない
* **自動秘匿化**: 機密性の高いパラメーターを削除
* **公開ページのみ**: 管理エリアとユーザーエリアを除外

<Warning>
  正確なボット検出とトラフィック分析に不可欠であるため、完全な IP アドレスが収集されます。お住まいの法域で IP の匿名化が求められる場合は、追加の設定が必要になることがあります。
</Warning>

## データ収集

プラグインは、公開ページから標準的な HTTP リクエストのメタデータを収集します。

### 必須フィールド

Agent Analytics に送信されるすべてのログエントリには、次のフィールドが**必須**です。

| フィールド | 形式 | 最大長 | 説明 |
| - | - | - | - |
| `timestamp` | ISO 8601 | - | リクエストの UTC タイムスタンプ |
| `method` | String | 10 文字 | HTTP メソッド (GET、POST など) |
| `host` | String | 255 文字 | リクエストのホスト名 |
| `path` | String | 2048 文字 | URL パス (クエリ文字列を除く) |
| `status_code` | Integer | 100-599 | HTTP レスポンスステータスコード |
| `ip` | String | 45 文字 | クライアントの IP アドレス (IPv4/IPv6 に対応) |
| `user_agent` | String | 1024 文字 | ユーザーエージェント文字列 |

<Note>
  ログを正常に取り込むには、すべての必須フィールドが存在する必要があります。フィールドが欠けていると、API 側で検証エラーになります。
</Note>

### 任意フィールド

次のフィールドは、利用可能な場合に含まれますが、必須ではありません。

| フィールド | 形式 | 最大長 | 説明 |
| - | - | - | - |
| `query_params` | Object | 100 キー | クエリ文字列のパラメーター (秘匿化後) |
| `referer` | String | 2048 文字 | HTTP Referer ヘッダー |
| `bytes_sent` | Integer | - | レスポンスのサイズ (バイト) |
| `duration_ms` | Integer | - | リクエストの処理時間 |

<Note>
  プラグインは、ページのコンテンツ、フォームデータ、WordPress のユーザー情報、管理アクティビティ、データベースクエリ、その他サーバーサイドのアプリケーションデータを**収集しません**。
</Note>

## パスの自動フィルタリング

### 常に除外されるパス

次のパスはログから**自動的に除外**され、上書きすることはできません。

```
wp-admin         # All admin pages and subdirectories
wp-login.php     # Login page
wp-cron.php      # Cron jobs
admin-ajax.php   # Admin AJAX calls
xmlrpc.php       # XML-RPC interface
wp-json/wp/*     # WordPress core REST API
```

<Warning>
  これらの除外は部分文字列の一致を使用するため、WordPress のインストールディレクトリに関係なく機能します (例: `/blog/wp-admin/` も除外されます)。
</Warning>

### リクエストタイプによる除外

プラグインは次のものを自動的にスキップします。

* **管理画面からの参照リクエスト**: Referer に `wp-admin` を含むすべてのリクエスト
* **REST API 呼び出し**: `rest_route=/wp/*` クエリパラメーターを含むリクエスト
* **CLI 操作**: WP-CLI コマンド
* **編集コンテキスト**: `context=edit` パラメーターを含む REST リクエスト

### パスフィルタリングの優先順位

パスは次の順序で評価されます。

1. **組み込みの除外** (wp-admin、wp-login.php など)
2. **カスタムの除外パス** (ユーザーが設定したパターン)
3. **Referer のチェック** (wp-admin からのリクエスト)
4. **REST API のチェック** (WordPress コア API)

最初に一致したものが優先されます。いずれかのチェックに一致した場合、そのリクエストは除外されます。

## クエリパラメーターの秘匿化

### デフォルトで秘匿化されるパラメーター

次のクエリパラメーターのキーは自動的に秘匿化されます (`[REDACTED]` に置き換えられます)。

```
password    # Password fields
pass        # Alternative password fields
token       # Authentication tokens
secret      # Secret keys
card        # Credit card fields
cc          # Credit card abbreviation
ssn         # Social security numbers
```

<Info>
  秘匿化には部分文字列の一致が使用されます。これらの文字列を含むパラメーターはすべて秘匿化されます (例: `user_password`、`api_token`、`card_number`)。
</Info>

### 秘匿化の例

元のクエリ文字列:

```
?username=john&password=secret123&product=widget&api_token=abc123
```

秘匿化後:

```json theme={null}
{
  "username": "john",
  "password": "[REDACTED]",
  "product": "widget",
  "api_token": "[REDACTED]"
}
```

## Log Ingestion Token のセキュリティ

### 保存方法

プラグインは、Log Ingestion Token の設定方法として 3 つの方法をサポートしています。セキュリティの観点で推奨される順に示します。

<Tabs>
  <Tab title="環境変数 (最も安全)">
    サーバーの環境に追加します。

    ```bash theme={null}
    WP_ENV_AGENT_ANALYTICS_API_KEY=bot_PROFOUND_LOG_INGESTION_TOKEN
    ```

    または `wp-config.php` に追加します。

    ```php theme={null}
    define('WP_ENV_AGENT_ANALYTICS_API_KEY', 'bot_PROFOUND_LOG_INGESTION_TOKEN');
    ```
  </Tab>

  <Tab title="WordPress 定数">
    `wp-config.php` に追加します。

    ```php theme={null}
    define('AGENT_ANALYTICS_API_KEY', 'bot_PROFOUND_LOG_INGESTION_TOKEN');
    ```
  </Tab>

  <Tab title="データベース (暗号化)">
    WordPress の管理画面から入力します。キーは次のように扱われます。

    * Sodium ライブラリを使用して暗号化されます (利用可能な場合)
    * 利用できない場合は WordPress のソルトを使用して暗号化されます
    * `wp_options` テーブルに保存されます
    * UI ではマスクされます (末尾 4 文字のみ表示)
  </Tab>
</Tabs>

<Warning>
  本番環境では、環境変数または定数を使用してください。データベースへの保存は、テスト時やファイルへのアクセスが制限されている場合にのみ使用してください。
</Warning>

## IP アドレスの取り扱い

### 検出の順序

プラグインは、次の順序で実際のクライアント IP の検出を試みます。

1. `HTTP_X_FORWARDED_FOR` - リスト内の最初の IP (プロキシ/ロードバランサー用)
2. `HTTP_CF_CONNECTING_IP` - Cloudflare の実 IP ヘッダー
3. `HTTP_X_REAL_IP` - 代替のプロキシヘッダー
4. `HTTP_TRUE_CLIENT_IP` - Cloudflare Enterprise のヘッダー
5. `REMOTE_ADDR` - 直接接続 (フォールバック)

<Info>
  プラグインは、マネージド WordPress ホスト (WP Engine、Kinsta など) や CDN (Cloudflare、Fastly) が使用するリバースプロキシを自動的に処理します。
</Info>

### IP のプライバシーに関する考慮事項

* **匿名化なし**: 正確なボット検出のため、完全な IP アドレスが取得されます
* **サービスに必須**: IP データは、地理的分析や逆引き DNS ルックアップに不可欠です
* **GDPR への準拠**: IP データの収集に関する法的要件を考慮してください

## 設定オプション

### 一般設定

| 設定 | デフォルト | 説明 |
| - | - | - |
| **Enable Logging** | Off | ログ収集のマスタースイッチ |
| **API Endpoint** | `https://artemis.api.tryprofound.com/v1/logs/wordpress` | ログの送信先 |
| **Batch Size** | 500 | 1 回の送信あたりのログ数 (50〜1000) |
| **Send Interval** | 60 秒 | キューを処理する頻度 (30〜600 秒) |

### プライバシー設定

| 設定 | デフォルト | オプション | 説明 |
| - | - | - | - |
| **Skip Admin** | On | On/Off | `/wp-admin/` リクエストを除外します |
| **Skip Cron** | On | On/Off | cron ジョブのリクエストを除外します |
| **Skip AJAX** | On | On/Off | 管理画面の AJAX 呼び出しを除外します |
| **Skip REST** | Off | On/Off | (コアだけでなく) すべての REST API リクエストを除外します |
| **Redact Query Keys** | `password,pass,token,secret,card,cc,ssn` | カンマ区切りのリスト | 秘匿化するパラメーター |

### 詳細設定

| 設定 | デフォルト | 説明 |
| - | - | - |
| **Custom Deny Paths** | 空 | 改行区切りのパスパターン (ワイルドカードに対応) |
| **Max Queue Size** | 100,000 | 古いエントリを破棄する前に保存するログの最大数 |
| **Retention Days** | 7 | 未送信のログを保持する日数 |
| **Circuit Breaker Threshold** | 3 | 一時停止するまでの連続失敗回数 |
| **Circuit Breaker Cooldown** | 30 分 | しきい値に達した後の一時停止時間 |

## カスタムパスフィルタリング

### ワイルドカードパターンの例

次のようなパターンを使用して、カスタムのパス除外を追加できます。

```
/private/*           # Exclude all paths starting with /private/
*/temp/*            # Exclude paths containing /temp/
*.pdf               # Exclude all PDF files
/api/v1/internal/*  # Exclude internal API endpoints
staging.*           # Exclude staging subdomains
```

## データ保持

### プラグイン側の保持

* **キューのエントリ**: 送信が成功すると削除されます
* **失敗したエントリ**: 指数バックオフで最大 6 回再試行されます
* **古いエントリ**: 保持期間 (デフォルトは 7 日) を過ぎると自動的にクリーンアップされます
* **キューの上限**: 上限 (100,000) に達すると、最も古いエントリから破棄されます

### API 側の処理

* **成功したログ**: Agent Analytics によって即座に処理されます
* **検証エラー**: 記録されますが、エントリはキューから削除されます
* **認証の失敗**: キューが一時停止され、サーキットブレーカーが作動します

## パフォーマンス特性

<AccordionGroup>
  <Accordion title="リクエストへの影響">
    * **処理のオーバーヘッド**: 1 リクエストあたり 1ms 未満
    * **メモリ使用量**: 最小限 (1 リクエストあたり 1 つの配列)
    * **データベース操作**: 1 リクエストあたり 1 回の INSERT
    * **出力バッファリングなし**: レスポンスの配信を遅延させません
  </Accordion>

  <Accordion title="バックグラウンド処理">
    * **送信間隔**: 60 秒ごと (設定可能)
    * **バッチサイズ**: 1 回の送信あたり最大 500 件のログ (設定可能)
    * **タイムアウト**: 1 バッチあたり最大 5 秒
    * **キューの上限**: 最大 100,000 エントリ
  </Accordion>

  <Accordion title="信頼性のための機能">
    * **自動再試行**: 失敗時に指数バックオフで再試行
    * **サーキットブレーカー**: 3 回連続で失敗すると一時停止
    * **キューの永続化**: 障害発生時もログを保持
    * **ロック機構**: 同時処理を防止
  </Accordion>
</AccordionGroup>

## セキュリティのベストプラクティス

* 本番サイトでは、Log Ingestion Token をデータベースではなく環境変数に保存してください。

* サイトのすべての機密エリアがログから除外されていることを確認してください。

* Status タブを定期的に確認し、ログが正しく送信されていることを確認してください。

* 「Send Test Event」機能を使用して、実際のデータに影響を与えずに接続を確認してください。

* サーバーへの転送中のデータを保護するため、WordPress サイトで HTTPS を使用してください。

<Note>
  セキュリティ上の問題を発見した場合や設定についてサポートが必要な場合は、直ちに [support@tryprofound.com](mailto:support@tryprofound.com) までお問い合わせください。
</Note>
