← Přehled / ai-search / configuration / retrieval / public-endpoint
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
- A vlastní doména na instanci nebo jmenném prostoru, které chcete chránit, s Proxováno
CNAMEzáznam. - Cloudflare Access povolený ve vašem účtu.
- poskytovatel identity připojený k Cloudflare Access, nebo jednorázový PIN Cloudflare.
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
- V Cloudflare dashboard ↗, přejděte na Zero Trust > Řízení přístupu > Aplikace.
- Vyberte Přidejte aplikaci > Self-hosted.
- Pojmenujte aplikaci, například
AI Search. - Přidejte veřejný hostitelský název vaší vlastní domény, například
access.search.example.com. - 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.
-
Přejděte na Zero Trust > Řízení přístupu > Přihlašovací údaje služby > Service Tokens.
-
Vyberte Create Service Token, pojmenujte ji a zvolte dobu platnosti.
-
Zkopírujte Client ID a Client Secret. Secret se zobrazí pouze jednou.
-
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í
- Úryvky UI na veřejném webu přestanou fungovat. Úryvky UI volají veřejný endpoint z prohlížeče návštěvníka. Za Access je mohou používat pouze návštěvníci, kteří splní vaše zásady. Access použijte pro interní weby a u veřejných marketingových webů ponechte endpoint otevřený.
- Požadavky prohlížeče mezi různými zdroji vyžadují konfiguraci CORS v Access. Pokud na chráněný hostitelský název přistupuje stránka z jiného originu, nastavte CORS na aplikaci Access navíc k povolené originy na veřejném endpointu.
- Rate limity platí i nadále. Nad rámec Access uplatňuje AI Search vlastní omezení počtu požadavků, které je sdílené mezi všemi ověřenými volajícími.
- Povolené originy nejsou autentizace.
authorized_hostsnastavení nastavuje hlavičky odpovědi CORS, které respektují jen prohlížeče. Nezabrání přímému požadavku zcurlnebo skript.
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 |