INTEGRITY Dokumentace

Povolení Google BigQuery

Cloudflare Logpush umožňuje odesílat protokoly přímo do Google BigQuery (pomocí Legacy Streaming API) prostřednictvím Cloudflare dashboardu nebo přes API.

Vytvoření tabulky BigQuery a získání přístupu k ní

Cloudflare používá Google Application Credentials uvedené v úloze Logpush destination_conf a získejte oprávnění k zápisu do tabulky. Zadaný servisní účet potřebuje mít oprávnění k zápisu do dané tabulky.

Chcete-li povolit Logpush do BigQuery:

  1. Přejděte do Google Cloud Console pro svůj účet.
  2. Přejděte na IAM & Admin > Servisní účty, a vytvořte nový servisní účet.
  3. Přidejte BigQuery Data Editor roli v části Permissions. Vyžaduje minimálně bigquery.tables.updateData oprávnění.
  4. Přidejte klíč v sekci Keys.
    1. Klikněte na Přidat klíč.
    2. Klikněte na Vytvořit nový klíč.
    3. Vyberte Key type JSON.
    4. Klikněte na Vytvořit.
    5. Uložte soubor Application Credentials JSON. Budete ho potřebovat při nastavování nové úlohy Logpush.
  5. V BigQuery vytvořte datovou sadu a tabulku. Viz pokyny od BigQuery ↗. Pokud například použijete schema.json a bq příkaz:
gcloud auth activate-service-account --key-file=${KEY_FILE}

PROJECT_ID=<PROJECT_ID>
DATASET_ID=<DATASET_ID>
TABLE_ID=<TABLE_ID>

bq mk --table "${PROJECT_ID}:${DATASET_ID}.${TABLE_ID}" schema.json

Správa přes dashboard Cloudflare

  1. V dashboardu Cloudflare přejděte na Logpush stránku na úrovni účtu nebo domény (známé také jako zóna).

    Pro účet: Přejděte na Logpush ↗

    Pro doménu (známou také jako zóna): Přejděte na Logpush ↗

  2. Podle vaší volby máte přístup k datové sady v rozsahu účtu a datové sady s rozsahem zóny, v uvedeném pořadí.

  3. Vyberte Vytvoření úlohy Logpush.

  1. V Vyberte cíl, vyberte Google BigQuery.

  2. Zadejte následující údaje o cíli:

    • Project ID - ID vašeho projektu Google Cloud
    • ID datové sady - dataset BigQuery obsahující vaši tabulku
    • ID tabulky - tabulka BigQuery, do které se mají odesílat protokoly
    • Service Account Credentials - vložte JSON klíče servisního účtu Google. Tento údaj se ukládá zašifrovaně a znovu se už nezobrazí.

Jakmile zadáte podrobnosti cíle, vyberte Pokračovat.

  1. Vyberte datovou sadu, kterou chcete odesílat do úložné služby.

  2. V dalším kroku musíte nakonfigurovat úlohu Logpush:

    • Zadejte Název úlohy.
    • V části Pokud se protokoly shodují, můžete vybrat, které události chcete do protokolů zahrnout nebo z nich odstranit. Více informací najdete v Filtry s dalšími informacemi. Tato možnost není dostupná u všech datových sad.
    • V Odešlete následující pole, můžete se rozhodnout, zda chcete do cílového úložiště odesílat všechny protokoly, nebo si vybrat, které protokoly chcete odesílat.
  3. V Advanced Options, můžete:

    • Zvolte formát polí s časovým razítkem ve svých protokolech (RFC3339 (výchozí), Unix, nebo UnixNano).
    • Vyberte míra vzorkování pro vaše protokoly, nebo odesílejte náhodně vzorkované procento protokolů.
    • Povolte maskování pro CVE-2021-44228. Tato možnost nahradí každý výskyt ${ hodnotou x{.
  4. Vyberte Odeslat jakmile dokončíte konfiguraci úlohy Logpush.

Správa přes API

Chcete-li nastavit úlohu Logpush pro BigQuery:

  1. Vytvořte úlohu s příslušnou URL adresou koncového bodu a autentizačními parametry.
  2. Povolte úlohu, aby mohla začít odesílat protokoly.

Zajistěte, že Log Share oprávnění povolena, než se pokusíte přečíst nebo nakonfigurovat úlohu Logpush. Další informace najdete na Sekce Role.

1. Vytvořte úlohu

Chcete-li vytvořit úlohu, proveďte POST požadavek na koncový bod úloh Logpush s následujícími poli:

"bq://projects/<PROJECT_ID>/datasets/<DATASET_ID>/tables/<TABLE_ID>?credentials=<ENCODED_VALUE>"

Příklad požadavku pomocí cURL:

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": "bq://projects/<PROJECT_ID>/datasets/<DATASET_ID>/tables/<TABLE_ID>?credentials=<ENCODED_VALUE>",
		"output_options": {
				"field_names": [
						"ClientIP",
						"ClientRequestHost",
						"ClientRequestMethod",
						"ClientRequestURI",
						"EdgeEndTimestamp",
						"EdgeResponseBytes",
						"EdgeResponseStatus",
						"EdgeStartTimestamp",
						"RayID"
				],
				"timestamp_format": "rfc3339"
		},
		"max_upload_bytes": 5000000,
		"max_upload_records": 50000,
		"dataset": "http_requests",
		"enabled": true
	}'

Odpověď:

{
  "errors": [],
  "messages": [],
  "result": {
    "id": <JOB_ID>,
    "dataset": "http_requests",
    "kind": "",
    "max_upload_bytes": 5000000,
    "max_upload_records": 50000,
    "enabled": true,
    "name": "<DOMAIN_NAME>",
    "output_options": {
      "field_names": ["ClientIP", "ClientRequestHost", "ClientRequestMethod", "ClientRequestURI", "EdgeEndTimestamp", "EdgeResponseBytes", "EdgeResponseStatus" ,"EdgeStartTimestamp", "RayID"],
      "timestamp_format": "rfc3339"
    },
    "destination_conf": "bq://projects/<PROJECT_ID>/datasets/<DATASET_ID>/tables/<TABLE_ID>?credentials=<ENCODED_VALUE>",
    "last_complete": null,
    "last_error": null,
    "error_message": null
  },
  "success": true
}

Tímto provedete testovací nahrání s prázdným obsahem, abyste ověřili, že Logpush může nahrávat data, a může se zobrazit řádek s prázdnými daty.

Viz Spravovat Logpush pomocí cURL k aktualizaci úlohy (včetně jejího zapnutí a vypnutí).

Omezení

Vezměte na vědomí následující výchozí kvótu a limity, jak je popsáno v dokumentace BigQuery ↗.

Pro streamované vkládání do BigQuery platí následující limity:

Jedná se o výchozí kvótu/limit. Úlohy Logpush byste měli přizpůsobit tomuto limitu, případně v případě potřeby požádat Google o jeho navýšení.

Integrace se službou Google Cloud Storage

Cloudflare Logpush umožňuje odesílat protokoly do Google Cloud Storage.

BigQuery podporuje načtení až 1,500 úloh na tabulku za den (včetně chyb), přičemž každé načtení může obsahovat až 10 milionů souborů. To znamená, že do BigQuery můžete načítat data jednou za minutu a zahrnout do jednoho načtení až 10 milionů souborů. Další informace najdete v kvótách BigQuery pro úlohy načítání.

Logpush doručuje dávky protokolů co nejdříve, což znamená, že můžete za minutu obdržet i více než jednu dávku souborů. Zajistěte, aby vaše úloha BigQuery byla nastavena na příjem souborů v daném časovém intervalu, například každou minutu, a ne při každém přijetí souboru. Import souborů do BigQuery ihned po přijetí každého souboru Logpush by mohl rychle vyčerpat vaši kvótu BigQuery.

Příklad nastavení plánovaného načítání úlohy pomocí BigQuery podporovaný komunitou najdete v Cloudflare + Google Cloud | Repozitář integrací ↗. Mějte na paměti, že tento repozitář je poskytován podle možností a není pravidelně udržován.