INTEGRITY Dokumentace

Vlastní pole

Dataset HTTP requests ve výchozím nastavení obsahuje většinu standardních logových informací. Pokud ale potřebujete zachytit další hlavičky nebo cookies požadavku či odpovědi, můžete pomocí vlastních polí přizpůsobit logy svým potřebám

Vlastní pole se konfigurují pro každou zónu zvlášť. Po nastavení se zapnou pro všechny úlohy Logpush v dané zóně, které používají datovou sadu HTTP requests a zahrnují pole hlaviček požadavku, hlaviček odpovědi nebo cookies. Tato pole můžete zaznamenávat v jejich původní podobě, nebo jako transformované hodnoty.

Toto výchozí chování lze změnit. Podle potřeby můžete nastavit protokolování hlaviček požadavku nebo odpovědi v nezpracované nebo transformované podobě, nikdy však obojí najednou pro stejnou hlavičku.

Vlastní pole lze zapnout přes API nebo v Cloudflare dashboardu.

Povolení vlastních pravidel přes API

Použijte Rulesets API a vytvořte pravidlo, které nakonfiguruje vlastní pole. Další informace o konceptech, jako jsou fáze, sady pravidel a pravidla, a o dostupných operacích API najdete v Ruleset Engine dokumentace.

Chcete-li nakonfigurovat vlastní pole:

  1. Vytvořte pravidlo pro nastavení seznamu vlastních polí.
  2. Zahrňte Cookies, RequestHeaders, a/nebo ResponseHeaders ve vaší úloze Logpush.

1. Vytvořte pravidlo pro konfiguraci seznamu vlastních polí

Vytvořte pravidlo, které nastaví seznam vlastních polí v http_log_custom_fields fázi na úrovni zóny. Nastavte akci pravidla na log_custom_field a výraz pravidla na true.

action_parameters objekt, který musíte zahrnout do pravidla konfigurujícího seznam vlastních polí, by měl mít následující strukturu:

"action_parameters": {
//select raw (default) or transformed request header
  "request_fields": [
    { "name": "<http_request_header_raw>" }
  ],
  "transformed_request_fields": [
    { "name": "<http_request_header_transformed>" }
  ],
//select raw or transformed (default) response header
  "response_fields": [
    { "name": "<http_response_header_transformed>" }
  ],
  "raw_response_fields": [
    { "name": "<http_response_header_raw>" }
  ],
  "cookie_fields": [
    { "name": "<cookie_name>" }
  ]
}

Ujistěte se, že definice vašeho pravidla splňuje následující požadavky:

Pro vytvoření pravidla proveďte následující kroky:

  1. Použijte Seznam sad pravidel zóny operaci, kterou ověříte, zda již neexistuje vstupní sada pravidel pro http_log_custom_fields fázi na úrovni zóny (na fázi můžete mít pouze jeden vstupní ruleset):

    Seznam sad pravidel zóny
    curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets" \
    	--request GET \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

    Pokud existuje vstupní ruleset pro http_log_custom_fields fázi (tedy ruleset s "kind": "zone" a "phase": "http_log_custom_fields"), poznamenejte si ID sady pravidel.

  2. (Volitelné) Pokud odpověď neobsahovala sadu pravidel s "kind": "zone" a "phase": "http_log_custom_fields", vytvořte vstupní sadu pravidel fáze pomocí Vytvoření rulesetu zóny operace:

    Vytvoření rulesetu zóny
    curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets" \
    	--request POST \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    	--json '{
    		"name": "Zone-level phase entry point",
    		"kind": "zone",
    		"description": "This ruleset configures custom log fields.",
    		"phase": "http_log_custom_fields"
    	}'

    Poznamenejte si ID sady pravidel uvedené v odpovědi.

  3. Použijte Aktualizace sady pravidel zóny operaci k definování pravidel vstupního rulesetu, který jste našli (nebo vytvořili v předchozím kroku), a přidejte pravidlo s konfigurací vlastních polí. Pravidla, která zahrnete do požadavku, nahradí všechna pravidla v rulesetu.

    Následující příklad konfiguruje vlastní pole s názvy hlaviček HTTP požadavků, hlaviček HTTP odpovědí a cookies, které chcete zahrnout do protokolů Logpush:

    Aktualizace sady pravidel zóny
    curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID" \
    	--request PUT \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    	--json '{
    		"rules": [
    				{
    						"action": "log_custom_field",
    						"expression": "true",
    						"description": "Set Logpush custom fields for HTTP requests",
    						"action_parameters": {
    								"request_fields": [
    										{
    												"name": "content-type"
    										},
    										{
    												"name": "x-forwarded-for"
    										}
    								],
    								"transformed_request_fields": [
    										{
    												"name": "host"
    										}
    								],
    								"response_fields": [
    										{
    												"name": "server"
    										},
    										{
    												"name": "content-type"
    										}
    								],
    								"raw_response_fields": [
    										{
    												"name": "allow"
    										}
    								],
    								"cookie_fields": [
    										{
    												"name": "__ga"
    										},
    										{
    												"name": "accountNumber"
    										},
    										{
    												"name": "__cfruid"
    										}
    								]
    						}
    				}
    		]
    	}'
    {
    	"result": {
    		"id": "<RULESET_ID>",
    		"name": "Zone-level phase entry point",
    		"description": "This ruleset configures custom log fields.",
    		"kind": "zone",
    		"version": "2",
    		"rules": [
    			{
    				"id": "<RULE_ID_1>",
    				"version": "1",
    				"action": "log_custom_field",
    				"action_parameters": {
    					"request_fields": [
    						{ "name": "content-type" },
    						{ "name": "x-forwarded-for" }
    					],
    					"transformed_request_fields": [{ "name": "host" }],
    					"response_fields": [
    						{ "name": "server" },
    						{ "name": "content-type" }
    					],
    					"raw_response_fields": [{ "name": "allow" }],
    					"cookie_fields": [
    						{ "name": "__ga" },
    						{ "name": "accountNumber" },
    						{ "name": "__cfruid" }
    					]
    				},
    				"expression": "true",
    				"description": "Set Logpush custom fields for HTTP requests",
    				"last_updated": "2021-11-21T11:02:08.769537Z",
    				"ref": "<RULE_REF_1>",
    				"enabled": true
    			}
    		],
    		"last_updated": "2021-11-21T11:02:08.769537Z",
    		"phase": "http_log_custom_fields"
    	},
    	"success": true,
    	"errors": [],
    	"messages": []
    }

Zaznamenávejte duplicitní hodnoty hlaviček odpovědi

Některé hlavičky odesílané origin serverem, například set-cookie : může mít více hodnot, které chcete zachytit. Pomocí Rulesets API můžete určit, u kterých hlaviček se mají zaznamenávat všechny jejich hodnoty.

Aktualizace sady pravidel zóny
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID" \
	--request PUT \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"rules": [
				{
						"action": "log_custom_field",
						"expression": "true",
						"description": "Set Logpush custom fields for HTTP requests",
						"action_parameters": {
								"response_fields": [
										{
												"name": "set-cookie",
												"preserve_duplicates": true
										}
								]
						}
				}
		]
	}'

Upozorňujeme, že preserve_duplicates platí pro obojí response_fields a raw_response_fields. Pokud na hlavičku nepůsobí žádné pravidlo Transform Rules, včetně preserve_duplicates v jednom z response_fields nebo raw_response_fields by mělo vést ke stejnému výsledku.

V tomto příkladu jsou všechny hodnoty set-cookie hlavičky budou zaznamenány do protokolu. Zobrazí se jako pole řetězcových hodnot pod ResponseFields, například:

{
  // ...
  "ResponseFields": {
    "set-cookie": ["name1=val1", "name2=val2", ...]
  }
}

Tyto hodnoty můžete extrahovat pomocí workeru nebo vlastní logiky v cíli Logpush.

2. Zahrňte vlastní pole do úlohy Logpush

Dále zahrňte Cookies, RequestHeaders, ResponseHeaders, a/nebo ResponseFields, v závislosti na konfiguraci vlastních polí, v seznamu polí output_options parametr úlohy při vytváření nebo aktualizaci úlohy. Protokoly budou obsahovat nakonfigurovaná vlastní pole a jejich hodnoty v požadavku/odpovědi.

Jako příklad si představte následující požadavek, který vytvoří úlohu obsahující vlastní pole:

Požadovaná oprávnění API tokenu

Alespoň jeden z následujících oprávnění tokenu je povinné:
Vytvořit úlohu Logpush
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/logpush/jobs" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"name": "<DOMAIN_NAME>",
		"destination_conf": "s3://<BUCKET_PATH>?region=us-west-2",
		"dataset": "http_requests",
		"output_options": {
				"field_names": [
						"RayID",
						"EdgeStartTimestamp",
						"Cookies",
						"RequestHeaders",
						"ResponseHeaders"
				],
				"timestamp_format": "rfc3339"
		},
		"ownership_challenge": "<OWNERSHIP_CHALLENGE_TOKEN>"
	}'

Povolení vlastních polí přes dashboard

  1. V dashboardu Cloudflare přejděte na Logpush stránce.

    Přejděte na Logpush ↗
  2. V Vlastní pole protokolu sekci vyberte Upravit vlastní pole.

  3. Vyberte Nastavit nové vlastní pole.

  4. Z Typ pole rozbalovací nabídce vyberte Hlavička požadavku, Hlavička odpovědi nebo Cookies a zadejte Název pole.

  5. Až budete hotovi, vyberte Save.

Případ použití: protokolování hlaviček certifikátů mTLS

Chcete-li zaznamenávat podrobnosti certifikátu mTLS (například cf-cert-subject-dn nebo cf-cert-issuer-dn) ve službě Logpush musíte:

  1. Povolte Přidání hlaviček ověřování klienta TLS Managed Transform pro vložení hlaviček certifikátu.
  2. Vlastní pole Logpush nakonfigurujte pomocí transformed_request_fields (ne request_fields) pro zachycení těchto hlaviček vložených Cloudflare.
  3. Ujistěte se, že vaše úloha Logpush obsahuje RequestHeaders .

Hlavičky mTLS vkládá Cloudflare až po přijetí požadavku klienta, proto je nutné je zachytávat pomocí transformed_request_fields místo request_fields.

Další informace o konfiguraci klientských certifikátů najdete v ověřování pomocí mTLS.

Omezení