Terraform
以下の例を使用して、Terraformを使ったAPI Shieldの開始方法を説明します。CloudflareでTerraformを使用する方法についての詳細は、Terraformのドキュメントを参照してください。
Terraformを通じて構成可能なリソースは以下の通りです:
セッション識別子
api_shield↗は、API Shieldにおけるセッション識別子を構成するためのものです。
エンドポイント管理
api_shield_operation↗は、エンドポイント管理におけるエンドポイントを構成するためのものです。
スキーマ検証 2.0
api_shield_schema↗は、スキーマ検証 2.0におけるスキーマを構成するためのものです。api_shield_schema_validation_settings↗は、ゾーンレベルのスキーマ検証 2.0設定を構成するためのものです。api_shield_operation_schema_validation_settings↗は、操作レベルのスキーマ検証 2.0設定を構成するためのものです。
以下の例の構成を参照して、ゾーンにセッション識別子を設定してください。
resource "cloudflare_api_shield" "my_api_shield" { zone_id = var.zone_id auth_id_characteristics { name = "authorization" type = "header" }}以下の例の構成を参照して、ゾーンでエンドポイントを管理してください。
resource "cloudflare_api_shield_operation" "get_image" { zone_id = var.zone_id method = "GET" host = "example.com" endpoint = "/api/images/{var1}"}
resource "cloudflare_api_shield_operation" "post_image" { zone_id = var.zone_id method = "POST" host = "example.com" endpoint = "/api/images/{var1}"}以下の例の構成を参照して、ゾーンでスキーマ検証 2.0を管理してください。
# スキーマ検証 2.0に使用するスキーマresource "cloudflare_api_shield_schema" "example_schema" { zone_id = var.zone_id name = "example-schema" kind = "openapi_v3" validation_enabled = true source = file("./schemas/example-schema.json")}
# スキーマに違反するリクエストをデフォルトでブロックresource "cloudflare_api_shield_schema_validation_settings" "zone_level_settings" { zone_id = var.zone_id validation_default_mitigation_action = "block"}
# エンドポイントpost_image - スキーマに違反するリクエストのみをログに記録resource "cloudflare_api_shield_operation_schema_validation_settings" "post_image_log_only" { zone_id = var.zone_id operation_id = cloudflare_api_shield_operation.post_image.id mitigation_action = "log"}