INTEGRITY Dokumentace

Cloudflare Access

A veřejný koncový bod je záměrně neautentizovaný. Kdokoli, kdo zná URL adresu, může dotazovat váš indexovaný obsah.

Vložte vlastní doména před veřejný endpoint a chránit jej pomocí Cloudflare Access. Uživatelé se poté ověří u vašeho poskytovatele identity, než jakýkoli požadavek dorazí k AI Search. Tím se z veřejné znalostní báze stane interní, aniž byste museli psát vlastní autentizační vrstvu.

Jak to funguje

Vlastní doména je hostitelský název v zóně, kterou vlastníte. Když CNAME záznam pro tento hostitelský název je Proxováno, požadavky projdou přes vaši vlastní zónu, než se dostanou k AI Search:

flowchart LR
  A[Client] --> B["Your zone<br/>Access, WAF, Bots"]
  B --> C["AI Search<br/>public endpoint"]
  C --> D[Your indexed content]

Access běží ve vaší zóně, takže vyhodnocuje každý požadavek jako první. Požadavky, které neprojdou zásadou, se k AI Search vůbec nedostanou. AI Search k tomu nepotřebuje žádnou konfiguraci a uplatňuje vlastní rate limity poté.

Toto směrování se nazývá orange-to-orange. Vyžaduje CNAME záznam, aby byl proxovaný. DNS only záznam zcela obchází vaši zónu a Access se vůbec nespustí.

Předpoklady

1. Vypněte výchozí hostitelský název

Access chrání pouze vaši vlastní doménu. Výchozí <PUBLIC_ENDPOINT_ID>.search.ai.cloudflare.com hostitelský název neprochází přes vaši zónu, takže i nadále odpovídá na neautentizované požadavky a maří zásadu, kterou se chystáte vytvořit.

Nastavte default_domain_enabled na false před vytvořením aplikace Access.

curl -X PUT "https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/ai-search/namespaces/default/instances/<INSTANCE_ID>" \
  -H "Authorization: Bearer <API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "public_endpoint_params": {
      "enabled": true,
      "custom_domains": ["access.search.example.com"],
      "default_domain_enabled": false
    }
  }'

Výchozí hostitelský název nyní vrací 404 s chybou 60018.

2. Vytvořte aplikaci Access

  1. V Cloudflare dashboard ↗, přejděte na Zero Trust > Řízení přístupu > Aplikace.
  2. Vyberte Přidejte aplikaci > Self-hosted.
  3. Pojmenujte aplikaci, například AI Search.
  4. Přidejte veřejný hostitelský název vaší vlastní domény, například access.search.example.com.
  5. Uložte aplikaci.

Úplný přehled možností najdete v Publikování self-hosted aplikace.

3. Přidejte zásady

Aplikace bez zásady odmítá všechny požadavky. Přidejte alespoň jednu Zásada povolení který popisuje, kdo smí váš obsah prohledávat.

Akce Typ pravidla Selektor Hodnota
Allow Include E-maily končící na @example.com

Použijte e-mail, zemi, rozsah IP adres nebo skupinu poskytovatele identity selektory které odpovídají vaší organizaci. Další příklady najdete v Časté zásady pro další příklady.

4. Ověřte klienty mimo prohlížeč

Prohlížeče se řídí přesměrováním na přihlášení Access a obdrží CF_Authorization cookie. Klienti MCP, backendové služby a skripty nemohou dokončit interaktivní přihlášení, a proto potřebují token služby.

  1. Přejděte na Zero Trust > Řízení přístupu > Přihlašovací údaje služby > Service Tokens.

  2. Vyberte Create Service Token, pojmenujte ji a zvolte dobu platnosti.

  3. Zkopírujte Client ID a Client Secret. Secret se zobrazí pouze jednou.

  4. Vraťte se do aplikace Access a přidejte druhou zásadu:

    Akce Typ pravidla Selektor Hodnota
    Service Auth Include Service Token ai-search-client

Odesílejte oba přihlašovací údaje jako hlavičky v každém požadavku.

curl https://access.search.example.com/search \
  --header "Content-Type: application/json" \
  --header "CF-Access-Client-Id: <CLIENT_ID>" \
  --header "CF-Access-Client-Secret: <CLIENT_SECRET>" \
  --data '{
    "messages": [
      {
        "content": "How do I configure AI Search?",
        "role": "user"
      }
    ]
  }'
{
	"mcpServers": {
		"ai-search": {
			"url": "https://access.search.example.com/mcp",
			"headers": {
				"CF-Access-Client-Id": "<CLIENT_ID>",
				"CF-Access-Client-Secret": "<CLIENT_SECRET>"
			}
		}
	}
}

Podpora hlaviček se u jednotlivých klientů MCP liší. Pokud váš klient neumí odesílat vlastní hlavičky, přejděte na Zabezpečení serverů MCP pro alternativy založené na identitě, nebo použijte cloudflared access curl pro požadavky z příkazové řádky.

5. Ověřte

Požadavek bez přihlašovacích údajů vrátí přihlašovací stránku Access místo výsledků vyhledávání:

curl --include https://access.search.example.com/search \
  --header "Content-Type: application/json" \
  --data '{"messages":[{"content":"test","role":"user"}]}'

Ověřte, že je výchozí hostitelský název uzavřen:

curl https://<PUBLIC_ENDPOINT_ID>.search.ai.cloudflare.com/search \
  --header "Content-Type: application/json" \
  --data '{"messages":[{"content":"test","role":"user"}]}'

Odpověď je 404 s chybovým kódem 60018.

Omezení

Alternativy

Jakmile CNAME záznam je proxovaný, na daný hostitelský název se vztahují i další produkty Cloudflare:

Produkt Použijte ho k
WAF custom rules Povolení konkrétních zemí, ASN, rozsahů IP adres nebo hlaviček
Rate limiting rules Uplatnění limitů pro jednotlivé klienty nad rámec limitu veřejného endpointu
Bot Management Ohodnocení a prověření automatizovaného provozu
Turnstile Ověřte lidi, než klient v prohlížeči zavolá endpoint

Další kroky

Vlastní domény

Zpřístupnění veřejného endpointu z hostitelského názvu, který vlastníte.

Nastavení veřejného koncového bodu

Omezení počtu požadavků, povolené originy a ovládací prvky pro jednotlivé endpointy.