第 23 章 / 全 27 章
IP 制限管理
管理画面と加盟店 API への接続元 IP アドレスのルール を管理します。ルールには 2 つの種別があります。
| 種別 | 動作 |
|---|---|
| ブロック | 一致する接続元は、ルールが有効な間 管理画面と API から実際に遮断 されます(画面は「アクセスがブロックされています」、API は 403 ip_blocked) |
| 許可 | 許可リストの項目。対象ごとの 許可リストモード が OFF のときは判定表示のみ、ON のときは許可ルールのいずれにも一致しない接続元を遮断します(403 ip_blocked、理由 not_in_allowlist)。ブロックルールは常に優先されます |
「IP を入力したらその IP からのアクセスを止めたい」場合は、種別 ブロック でルールを追加してください(追加フォームの既定値です)。
対象
| 対象 | 意味 |
|---|---|
| 管理画面 | この管理画面へのアクセス元。ブロックが実際に適用されます |
| 加盟店API | 特定の加盟店が API を呼び出すサーバーのアクセス元。加盟店の指定が必須。有効なブロックルールに一致する接続元からの /api/v1/*・/api/merchant-api/* は 403 ip_blocked で拒否されます |
ルールの書き方
- 単一の IPv4 アドレス:
203.0.113.10 - CIDR 表記:
198.51.100.0/24(/0〜/32)
ホスト部のビットは保存時に正規化されます(198.51.100.77/24 → 198.51.100.0/24)。IPv6 は現在サポートしていません(判定対象外=遮断されません)。
許可リストモード
一覧上部の「許可リストモード」で対象(管理画面 / 加盟店API)ごとに切り替えます(既定 OFF、権限 ip_restriction.update、全体設定に保存され操作ログ global_setting.update)。
| モード | 動作 |
|---|---|
| OFF | ブロックルールのみ遮断。許可ルールは判定表示のみ |
| ON | 有効な許可ルールが 1 件以上あれば、いずれにも一致しない接続元を遮断。許可ルールが 0 件なら何も遮断しない(0 件のときは ON にできない) |
- 管理画面を ON にするには、現在の接続元 IP が有効な許可ルールに含まれている必要があります(
ip_self_block)。ON の間は、自分の IP を許可リストから外すことになる許可ルールの変更・無効化・削除も拒否されます。 - 加盟店API の ON は、加盟店ごとの「加盟店API」許可ルールに適用されます。許可ルールを持たない加盟店には影響しません。
/api/merchant-api/*と公開 API/api/v1/*の両方が対象です。 - API:
GET/PUT /api/ip-restrictions/allowlist{ target, enabled }(allowlist_no_rules/ip_self_block)。
自分をブロックしないための保護
現在の接続元 IP を含む「管理画面 / ブロック / 有効」のルールは保存できません(ip_self_block)。無効のまま保存しておき、別の接続元から有効にすることはできます。許可リストモード ON 中の許可ルールの変更については上記を参照してください。
現在の接続元 IP と判定
一覧上部に 現在の接続元 IP と、有効な「管理画面」ルールに対する判定を表示します。
| 判定 | 意味 |
|---|---|
| ブロック対象です | 有効なブロックルールに一致(この画面自体が見えている場合は起こりません) |
| 許可リストに含まれています | いずれかの許可ルールに一致(一致したルールを表示) |
| 許可リストに含まれていません | 許可ルールはあるが一致しない。許可リストモード OFF では遮断されず、ON では遮断される(この画面が見えている場合は OFF) |
| 許可リストは未設定です | 許可ルールが無い |
| IPv6 のため判定対象外 | 接続元が IPv6 |
遮断の判定は Prisma を使うため Edge middleware ではなく、ページは app/layout.tsx、API は withApiHandler で行います。PSP からの Webhook と入金通知 API は管理画面のトラフィックではないため対象外です。
追加・編集・削除
- + ルール追加 からフォームを開き、対象・種別・(加盟店)・IP / CIDR・ラベル・有効/無効を入力します。入力中に正規化後の値が表示されます。
- 一覧の 編集 でフォームを開き、削除 は確認ダイアログの後に削除されます。
- 種別・対象・有効/無効で一覧を絞り込めます。