← Cloudflare API Shield / api-shield / reference
Terraform
Začněte s API Shield pomocí Terraformu podle níže uvedených příkladů. Další informace o používání Terraformu s Cloudflare najdete v Dokumentace Terraform.
Prostřednictvím Terraformu lze konfigurovat následující zdroje:
Identifikátory relace
api_shield↗ pro konfiguraci identifikátory relace v API Shield.
Operace Web Assets
api_shield_operation↗ pro konfiguraci operace.
Ověřování schématu
cloudflare_schema_validation_schemas↗ pro konfiguraci schématu v Ověřování schématu.je zastaralé a v budoucí verzi Terraform provideru bude odstraněno.api_shield_schema↗
Ověřování JWT
cloudflare_token_validation_config↗ pro nastavení ověřování JWT s konkrétním klíčovým materiálem a umístěním tokenu.cloudflare_token_validation_rules↗ pro nastavení pravidel reagujících na výsledek ověření.
Správa identifikátorů relací API Shield
Řiďte se níže uvedeným příkladem konfigurace pro nastavení identifikátory relace ve vaší zóně.
resource "cloudflare_api_shield" "session_identifiers" {
zone_id = var.zone_id
auth_id_characteristics = [{
name = "authorization"
type = "header"
}]
}Správa operací Web Assets
Spravujte operace podle metody, hostname a cesty. Operace se zobrazují v inventáři Web Assets.
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}"
}Správa validace schématu
Prostředek schema slouží k nahrání schématu OpenAPI. Nastavení validation_enabled na true zpřístupňuje vyhodnocení nahraného profilu.
# Upload an OpenAPI schema for Schema Validation
resource "cloudflare_schema_validation_schemas" "example_schema" {
zone_id = var.zone_id
kind = "openapi_v3"
name = "example-schema.yaml"
# In this example, we assume that the `example-schema.yaml` includes `get_image` and `post_image` operations from above
source = file("./schemas/example-schema.yaml")
validation_enabled = true
}Aktivace nekonfiguruje zmírnění. Použijte cf.schema_validation.uploaded.violated v WAF Custom Rules.
Ověřit JWT
Řiďte se níže uvedeným příkladem konfigurace pro provedení Ověřování JWT ve vaší zóně.
# Setting up JWT validation with specific keying material and location of the token
resource "cloudflare_token_validation_config" "example_es256_config" {
zone_id = var.zone_id
token_type = "JWT"
title = "ES256 Example"
description = "An example configuration that validates ES256 JWTs with `b0078548-c9bc-46e5-a678-06fb72443427` key ID in the authorization header"
token_sources = ["http.request.headers[\"authorization\"][0]"]
credentials = {
keys = [
{
alg = "ES256"
kid = "b0078548-c9bc-46e5-a678-06fb72443427"
kty = "EC"
crv = "P-256"
x = "yl_BZSxUG5II7kJCMxDfWImiU6zkcJcBYaTgzV3Jgnk"
y = "0qAzLQe_YGEdotb54qWq00k74QdiTOiWnuw_YzuIqr0"
}
]
}
}
# Setting up JWT rules for all configured endpoints on `example.com` except for `get_image`
resource "cloudflare_token_validation_rules" "example_com" {
zone_id = var.zone_id
title = "Validate JWTs on example.com"
description = "This actions JWT validation results for requests to example.com except for the get_image endpoint"
action = "block"
enabled = true
# Require that the JWT described through the example_es256_config is valid.
# Reference the ID of the generated token config, this constructs: is_jwt_valid("<id>")
# If the expression is >not true<, Cloudflare will perform the configured action on the request
expression = format("(is_jwt_valid(%q))", cloudflare_token_validation_config.example_es256_config.id)
selector = {
# all current and future operations matching this include selector will perform the described action when the expression fails to match
include = [
{
host = ["example.com"]
}
]
exclude = [
{
# reference the ID of the get_image operation to exclude it
operation_ids = ["${cloudflare_api_shield_operation.get_image.id}"]
}
]
}
}
# With JWT validation, we can also refine session identifiers to use claims from the JWT
resource "cloudflare_api_shield" "session_identifiers" {
zone_id = var.zone_id
auth_id_characteristics = [{
# select the JWT's `sub` claim as an extremely stable session identifier
# this is "<token_config_id:json_path>" format
name = "${cloudflare_token_validation_config.example_es256_config.id}:$.sub"
type = "jwt"
}]
}