Gateway では、ポリシーから参照する IP、ホスト名、その他のエントリの リスト を作成できます。
Cloudflare プラットフォームへオンボードするときは、あらかじめ決めた一連のセキュリティポリシーがあることが多いです。ホスト名、IP、または個々のユーザーに紐づく別の指標に基づく明示的な拒否リストがある場合もあります。一部のネットワークだけが特定の apex レコードへアクセスでき、ほかはできない、といった構成もあるでしょう。
継続的な運用を簡単にする形で Cloudflare へ移行するには、再利用できるオブジェクトをできるだけ多く作るのが最善です。ポリシー作成が簡単になるだけでなく、アプリケーション、ネットワーク、サービスが自然に変化・成長したとき、リストを更新すれば、そのリストを適用している場所すべてに反映されます。
CSV リストのアップロードを試すには、IP アドレス範囲の サンプル CSV ファイル をダウンロードするか、次の内容をファイルにコピーします。
value,description
192.0.2.0/24,This is an IP address range in CIDR format
198.51.100.0/24,This is also an IP address range
203.0.113.0/24,This is the third IP address rangeアップロード用に CSV ファイルを整形するときは、次の点に注意してください。
- 各行は、値と任意の説明を含む 1 件のエントリにします。
- 説明を Zero Trust が認識するには、ヘッダー行が必要です。
- 末尾の空白文字は使えません。
- 改行は CRLF(Windows)と LF(Unix)のどちらも使えます。
Cloudflare ダッシュボードにリストをアップロードする手順です。
- Cloudflare ダッシュボード ↗ で Zero Trust > Reusable components > Lists を開きます。
- Upload CSV を選びます。
- List name を指定し、任意で説明を入力して、List type を選びます。
- CSV file ウィンドウにファイルをドラッグ&ドロップするか、ファイルを選びます。
- Create を選びます。
-
cloudflare_api_token↗ に次の権限を追加します。Zero Trust Write
-
CSV ファイルの内容をデコードし、ローカル値として保存します。
locals { ip_list = csvdecode(file("${path.module}/list-test.csv")) } -
cloudflare_zero_trust_list↗ リソースでリストを作成します。resource "cloudflare_zero_trust_list" "ips_from_csv" { account_id = var.cloudflare_account_id name = "IPs imported from CSV" description = "Managed by Terraform" type = "IP" items = local.ip_list }
これで、ポリシービルダーで in list 演算子を選んで、このリストを使えます。
- Cloudflare ダッシュボード ↗ で Zero Trust > Reusable components > Lists を開きます。
- Create manual list を選びます。
- List name を指定し、任意で説明を入力して、List type を選びます。
- Add entry フィールドにリスト要素を手動で入力し、Add を選びます。
- Save を選びます。
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/lists" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"description": "Private application IPs",
"items": [
{
"value": "10.226.0.177/32"
},
{
"value": "10.226.1.177/32"
}
],
"name": "Corporate IP list",
"type": "IP"
}'-
cloudflare_api_token↗ に次の権限を追加します。Zero Trust Write
-
cloudflare_zero_trust_list↗ リソースでリストを作成します。IP のリストの例:
resource "cloudflare_zero_trust_list" "wiki_IPs" { account_id = var.cloudflare_account_id name = "Company Wiki IP addresses" description = "Managed by Terraform" type = "IP" items = [ { description = "Example IP address range" value = "192.0.2.0/24", }, { value = "198.51.100.0/24" } ] }ドメインのリストの例:
resource "cloudflare_zero_trust_list" "wiki_domains" { account_id = var.cloudflare_account_id name = "Company Wiki Domains" description = "Managed by Terraform" type = "DOMAIN" items = [ { value = "wiki.example.com" }, { value = "wiki2.example.com" }] }
これで、ポリシービルダーで in list 演算子を選んで、このリストを使えます。