IP許可リスト管理
概要
IP許可リストAPIは、管理コンソールへのアクセスを許可されたIPアドレスのみに制限するためのエンドポイントを提供します。ホワイトリスト方式で動作し、セキュリティを強化します。
必要権限
| 操作 | 必要権限 |
|---|---|
| 読み取り | admin:ip_allowlist:read |
| 書き込み | admin:ip_allowlist:write |
エンドポイント一覧
| メソッド | エンドポイント | 説明 |
|---|---|---|
| GET | /api/admin/ip-allowlist | IP許可リスト取得 |
| GET | /api/admin/ip-allowlist/:id | IPエントリ詳細取得 |
| POST | /api/admin/ip-allowlist | IPエントリ追加 |
| PATCH | /api/admin/ip-allowlist/:id | IPエントリ更新 |
| DELETE | /api/admin/ip-allowlist/:id | IPエントリ削除 |
| POST | /api/admin/ip-allowlist/:id/enable | エントリ有効化 |
| POST | /api/admin/ip-allowlist/:id/disable | エントリ無効化 |
| POST | /api/admin/ip-allowlist/check | IP許可チェック |
IP許可リスト取得
IP許可リストの一覧を取得します。
エンドポイント
GET /api/admin/ip-allowlist
クエリパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
include_disabled | boolean | - | 無効なエントリも含める(デフォルト: false) |
リクエスト例
curl -X GET "https://{tenant-domain}/api/admin/ip-allowlist?include_disabled=true" \ -H "Authorization: Bearer {token}"レスポンス例
{ "items": [ { "id": "ip_abc123", "ip_range": "192.168.1.0/24", "description": "オフィスネットワーク", "enabled": true, "created_at": 1705881600000, "updated_at": 1706140800000 }, { "id": "ip_def456", "ip_range": "10.0.0.0/8", "description": "VPNネットワーク", "enabled": true, "created_at": 1705968000000, "updated_at": null }, { "id": "ip_ghi789", "ip_range": "203.0.113.50", "description": "リモートワーク - 山田", "enabled": false, "created_at": 1706054400000, "updated_at": 1706140800000 } ], "total": 3, "restriction_active": true}IPエントリ詳細取得
指定されたIPエントリの詳細情報を取得します。
エンドポイント
GET /api/admin/ip-allowlist/:id
パスパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
id | string | ○ | エントリID |
リクエスト例
curl -X GET "https://{tenant-domain}/api/admin/ip-allowlist/ip_abc123" \ -H "Authorization: Bearer {token}"レスポンス例
{ "id": "ip_abc123", "ip_range": "192.168.1.0/24", "description": "オフィスネットワーク", "enabled": true, "created_by": "admin_xyz789", "created_at": 1705881600000, "updated_at": 1706140800000}IPエントリ追加
新しいIPエントリを追加します。
エンドポイント
POST /api/admin/ip-allowlist
リクエストボディ
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
ip_range | string | ○ | IPアドレスまたはCIDR形式 |
description | string | - | 説明 |
enabled | boolean | - | 有効/無効(デフォルト: true) |
リクエスト例
curl -X POST "https://{tenant-domain}/api/admin/ip-allowlist" \ -H "Authorization: Bearer {token}" \ -H "Content-Type: application/json" \ -d '{ "ip_range": "192.168.1.0/24", "description": "オフィスネットワーク", "enabled": true }'レスポンス例
{ "id": "ip_abc123", "ip_range": "192.168.1.0/24", "description": "オフィスネットワーク", "enabled": true, "created_at": 1706227200000}サポートされる形式
| 形式 | 例 | 説明 |
|---|---|---|
| 単一IP | 192.168.1.100 | 1つのIPアドレス |
| CIDR | 192.168.1.0/24 | サブネット範囲 |
| IPv6 | 2001:db8::1 | IPv6アドレス |
| IPv6 CIDR | 2001:db8::/32 | IPv6サブネット |
IPエントリ更新
既存のIPエントリを更新します。
エンドポイント
PATCH /api/admin/ip-allowlist/:id
リクエストボディ
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
ip_range | string | - | IPアドレスまたはCIDR形式 |
description | string | - | 説明 |
enabled | boolean | - | 有効/無効 |
リクエスト例
curl -X PATCH "https://{tenant-domain}/api/admin/ip-allowlist/ip_abc123" \ -H "Authorization: Bearer {token}" \ -H "Content-Type: application/json" \ -d '{ "description": "本社オフィスネットワーク" }'レスポンス例
{ "id": "ip_abc123", "ip_range": "192.168.1.0/24", "description": "本社オフィスネットワーク", "enabled": true, "updated_at": 1706313600000}IPエントリ削除
IPエントリを削除します。
エンドポイント
DELETE /api/admin/ip-allowlist/:id
リクエスト例
curl -X DELETE "https://{tenant-domain}/api/admin/ip-allowlist/ip_ghi789" \ -H "Authorization: Bearer {token}"レスポンス例
{ "deleted": true, "id": "ip_ghi789"}エントリ有効化
無効化されたIPエントリを有効化します。
エンドポイント
POST /api/admin/ip-allowlist/:id/enable
リクエスト例
curl -X POST "https://{tenant-domain}/api/admin/ip-allowlist/ip_ghi789/enable" \ -H "Authorization: Bearer {token}"レスポンス例
{ "id": "ip_ghi789", "enabled": true, "enabled_at": 1706400000000}エントリ無効化
IPエントリを無効化します(削除せずに一時的に無効にする)。
エンドポイント
POST /api/admin/ip-allowlist/:id/disable
リクエスト例
curl -X POST "https://{tenant-domain}/api/admin/ip-allowlist/ip_ghi789/disable" \ -H "Authorization: Bearer {token}"レスポンス例
{ "id": "ip_ghi789", "enabled": false, "disabled_at": 1706486400000}IP許可チェック
指定されたIPアドレスが許可されているかチェックします。
エンドポイント
POST /api/admin/ip-allowlist/check
リクエストボディ
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
ip_address | string | ○ | チェックするIPアドレス |
リクエスト例
curl -X POST "https://{tenant-domain}/api/admin/ip-allowlist/check" \ -H "Authorization: Bearer {token}" \ -H "Content-Type: application/json" \ -d '{ "ip_address": "192.168.1.100" }'レスポンス例(許可)
{ "ip_address": "192.168.1.100", "allowed": true, "matched_entry": { "id": "ip_abc123", "ip_range": "192.168.1.0/24", "description": "オフィスネットワーク" }, "restriction_active": true, "total_entries": 5}レスポンス例(拒否)
{ "ip_address": "203.0.113.200", "allowed": false, "matched_entry": null, "restriction_active": true, "total_entries": 5}レスポンス例(制限なし)
{ "ip_address": "203.0.113.200", "allowed": true, "matched_entry": null, "restriction_active": false, "total_entries": 0}ベストプラクティス
- オフィスネットワーク: CIDRブロックで広めに設定
- VPN: VPNゲートウェイのIPアドレス範囲を登録
- リモートワーク: 個別のIPアドレスで管理し、不要になったら無効化
- 緊急時対応: 少なくとも1つのバックアップIPを常に有効にしておく