# APIキー IP Allowlist

Treasure APIを使用することで、お客様はAPIキーに対する追加のIP Allowlistアクセス制御を利用できます。これにより、APIキーのアクセスを信頼できるIP範囲に制限し、アカウントとキーをより強力に保護できます。

## 制限スコープ

restriction_scopeパラメータは、IP Allowlistエントリがトラフィックにどのように適用されるかを定義します。

- all: ブラウザアクセスとAPIキーアクセスの両方を、リストされたIPに制限します。これは、Webコンソールを通じてIP Allowlistを設定した場合のIP Allowlist設定です。API呼び出しを通じても設定できます。
- api_key_only: APIキーアクセスのみを制限し、ユーザーのブラウザアクセスには影響しません。この設定はAPI呼び出しを通じてのみ設定できます。


このパラメータは、すべてのユーザーに影響するアカウント/ネットワークレベル、および/または個々のユーザーレベルで設定できます。両方の設定が存在する場合、特定のユーザーに対してはユーザーレベルの設定が常にアカウントレベルのIP Allowlistを置き換えます。

## 優先順位ルール

1. IP AllowlistエントリでallとAPI_key_onlyの両方が設定されている場合のIPアクセス


| restriction_scope = all & restriction_scope = api_key_only | IPがallとapi_key_onlyの両方に一致 | IPがallのみに一致 | IPがapi_key_onlyのみに一致 | 一致するIPなし |
|  --- | --- | --- | --- | --- |
| ユーザーのブラウザアクセス | ✅ | ✅ | ✅¹ | ❌ |
| ユーザーのAPIキーアクセス | ✅ | ❌² | ✅ | ❌ |


注意 :

1. restriction_scope = allには、デフォルトの拒否アクセスルールは存在しません。
2. restriction_scope = api_key_onlyが設定されている場合、デフォルトの拒否アクセスがトリガーされます。


1. IP Allowlistエントリでallのみが設定されている場合のIPアクセス


| restriction_scope = all | IPが一致 | IPが一致しない |
|  --- | --- | --- |
| ユーザーのブラウザアクセス | ✅ | ❌ |
| ユーザーのAPIキーアクセス | ✅ | ❌ |


1. IP Allowlistエントリでapi_key_onlyのみが設定されている場合のIPアクセス


| restriction_scope = api_key_only | IPが一致 | IPが一致しない |
|  --- | --- | --- |
| ユーザーのブラウザアクセス | ✅ | ✅ |
| ユーザーのAPIキーアクセス | ✅ | ❌ |


1. IP Allowlist機能が設定されていない場合のユーザーアクセス


| restriction_scopeが未設定 | すべてのアカウントユーザー |
|  --- | --- |
| ユーザーのブラウザアクセス | ✅ |
| ユーザーのAPIキーアクセス | ✅ |


## アカウントレベルまたはユーザーレベルのAPIキー IP Allowlistの作成

コンソールでのIP Allowlist設定と同様に、API呼び出しを使用して、すべてのユーザーを対象とするアカウントレベル、または個々のユーザーレベルでAPIキー用のIP Allowlistを設定できます。ユーザー固有のエントリはアカウントレベルのエントリよりも優先されます。

IP AllowlistのAPIエンドポイントは`/v4/ip_whitelist_entries`です。
以下は、単一ユーザーに対するAPIキー IP Allowlistエントリを作成する例です。


```http
POST /v4/ip_whitelist_entries
{
  "ip": "192.168.100.0/24",
  "user_id": "test_user_id",
  "restriction_scope": "api_key_only"
}
```

顧客アカウントのすべてのユーザーにAPIキー IP Allowlistを適用するには、POSTリクエストにaccount_idを含めます：


```http
POST /v4/ip_whitelist_entries

{
  "ip": "192.168.200.0/24",
  "account_id": "test_account_id",
  "restriction_scope": "api_key_only"
}
```

## IP Allowlistエントリの取得

すべてのIP Allowlistエントリを取得するには、/v4/ip_whitelist_entriesにGETリクエストを送信します。レスポンスには各エントリのrestriction_scopeが含まれます。


```http
GET /v4/ip_whitelist_entries
```

## IP Allowlistエントリの更新

既存のIP Allowlistエントリを更新するには、エントリのIDと新しいrestriction_scope値を指定して/v4/ip_whitelist_entries/{id}にPATCHリクエストを送信します。


```http
PATCH /v4/ip_whitelist_entries/{id}

{
  "restriction_scope": "all"
}
```

## IP Allowlistエントリの削除

IP Allowlistエントリを削除するには、エントリのIDを指定して`/v4/ip_whitelist_entries/{id}`にDELETEリクエストを送信します。


```http
DELETE /v4/ip_whitelist_entries/{id}
```