← Cloudflare One / cloudflare-one / traffic-policies / http-policies
Úprava hlaviček HTTP požadavků v Gateway
Zásady Gateway HTTP s akcemi Allow mohou před doručením na cíl upravit hlavičky odpovídajících požadavků. Pomocí dynamických hodnot můžete nastavit hlavičky tak, aby předávaly informace, například identitu uživatele, zdrojovou IP adresu a další vstupy pro upstream služby, vynucovaly kontrolu tenantů SaaS, odstraňovaly interní hlavičky nebo přepisovaly obsah hlaviček.
Manipulace s hlavičkami vyžaduje dešifrování TLS, protože hlavičky HTTP jsou viditelné pouze u provozu, který Gateway dokáže dešifrovat.
Operace s hlavičkami
Gateway podporuje tři operace s hlavičkami pro zásady HTTP. Když požadavek odpovídá zásadě Allow s nakonfigurovanými operacemi s hlavičkami, Gateway je použije v tomto pořadí:
- Smazat: Odeberte hlavičky z požadavku.
- Overwrite: Přepište hlavičky požadavku. Hlavičkám se shodujícím se názvem budou přepsány hodnoty. Pokud hlavička neexistuje, vytvoří se.
- Přidat: Přidejte hlavičky k požadavku. Pokud hlavička již existuje, přidaná hodnota se připojí ke stávající hodnotě.
V rámci jedné zásady můžete nakonfigurovat až 20 operací s hlavičkami. Názvy hlaviček jsou omezeny na 256 bajtů a hodnoty hlaviček na 4 KB.
Přidat hlavičky
Přidáním hlavičky se k požadavku připojí hodnota. Pokud hlavička už existuje, hodnota se přidá vedle stávající hodnoty, místo aby ji nahradila.
Přepsání hlaviček
Přepsání hlavičky nahradí jakoukoli existující hodnotu. Pokud hlavička v požadavku ještě neexistuje, vytvoří se. Tuto operaci použijte, když potřebujete zajistit konkrétní hodnotu hlavičky bez ohledu na to, co odeslal klient.
Odstraňte hlavičky
Odstraněním hlavičky se hlavička z požadavku zcela odebere. Pokud hlavička neexistuje, operace nemá žádný účinek.
Dynamické hodnoty hlaviček
Hodnoty hlaviček mohou obsahovat dynamické proměnné, které Gateway v okamžiku požadavku vyhodnotí na základě identity, zařízení a síťového kontextu aktuální relace. Dynamické proměnné používají @{...} syntaxi a lze ji kombinovat se statickým textem ve stejné hodnotě.
Například hodnota hlavičky user-@{identity.email} se překládá na [email protected] v době požadavku.
K dispozici jsou následující dynamické proměnné:
| Proměnná | Popis |
|---|---|
@{identity.email} |
E-mailová adresa uživatele od poskytovatele identity. |
@{identity.name} |
Zobrazované jméno uživatele od poskytovatele identity. |
@{identity.id} |
UUID identity uživatele v Cloudflare. |
@{identity.groups} |
Členství uživatele ve skupinách u poskytovatele identity. |
@{identity.SAML} |
Atributy SAML uživatele od poskytovatele identity, pokud jsou nakonfigurovány. |
@{identity.OIDC} |
OIDC claimy uživatele od poskytovatele identity, pokud jsou nakonfigurovány. |
@{source.ip} |
Zdrojová IP adresa připojení uživatele, jak ji vidí Gateway. |
@{destination.ip} |
Cílová IP adresa požadavku. |
@{device.id} |
UUID zařízení Cloudflare One Client. |
@{device.posture} |
Výsledky kontroly stavu zařízení (serializované jako řetězec JSON). |
Dynamické proměnné vyžadují aktivní relaci identity. Pokud Gateway nedokáže proměnnou přeložit (například uživatel není ověřen), nahradí se proměnná varovným řetězcem, například cf-unresolved nebo cf-invalid, a do protokolu HTTP se přidá upozornění.
Nakonfigurujte operace s hlavičkami
Dashboard
Chcete-li vytvořit zásadu HTTP s operacemi s hlavičkami:
- V Dashboard Cloudflare One ↗, přejděte na Zásady provozu > Zásady brány firewall > HTTP.
- Vyberte Přidat zásadu.
- Sestavte výraz, který odpovídá provozu, jenž chcete upravit.
- V Akce, vyberte Allow.
- V části Úprava hlaviček požadavků, vyberte Přidat nebo Overwrite a přidejte nebo přepište hlavičky, nebo vyberte Odebrat odstranit hlavičku.
- U operací Add a Overwrite zadejte název a hodnotu hlavičky. Chcete-li použít dynamickou proměnnou, zadejte
@{...}syntaxi v poli hodnoty, nebo vyberte{}tlačítko pro zobrazení seznamu dostupných hodnot. U operací Remove zadejte pouze název hlavičky. - Uložte svou zásadu.
API
Chcete-li vytvořit zásadu HTTP s operacemi s hlavičkami prostřednictvím rozhraní API, zahrňte add_headers, set_headers, a delete_headers v rule_settings objekt.
curl https://api.cloudflare.com/client/v4/accounts/{account_id}/gateway/rules \
--header "Authorization: Bearer {api_token}" \
--header "Content-Type: application/json" \
--data '{
"name": "Forward identity headers",
"action": "allow",
"enabled": true,
"filters": ["http"],
"traffic": "any(http.request.domains[*] in {\"app.example.com\"})",
"rule_settings": {
"add_headers": {
"X-User-Email": ["@{identity.email}"],
"X-User-Groups": ["@{identity.groups}"]
},
"set_headers": {
"X-Forwarded-User": ["@{identity.email}"]
},
"delete_headers": ["X-Debug-Token", "X-Internal-Only"]
}
}' rule_settings pole pro úpravu hlaviček jsou:
| Pole | Typ | Popis |
|---|---|---|
add_headers |
map<string, array<string>> |
Hlavičky, které se mají připojit. Každý klíč je název hlavičky, každá hodnota je seznam hodnot, které se mají přidat. |
set_headers |
map<string, array<string>> |
Hlavičky, které se mají přepsat. Každý klíč je název hlavičky, každá hodnota je seznam hodnot, které se mají nastavit. |
delete_headers |
array<string> |
Názvy hlaviček, které se mají odebrat z požadavku. |
Jedna hodnota hlavičky může obsahovat kombinaci statického textu a dynamických proměnných, například:
{
"add_headers": {
"X-Request-Context": ["user=@{identity.email}, device=@{device.id}, src=@{source.ip}"]
}
}Ověřte vlastní hlavičky
Pokud si za účelem analýzy webového provozu uložíte z prohlížeče soubor HAR (HTTP Archive), vlastní hlavičky definované v Gateway se v něm neobjeví. Je to proto, že Gateway hlavičku vkládá až poté, co požadavek opustí prohlížeč.
Ověření, že Gateway aplikuje vlastní hlavičku:
-
Do zásady s vlastními hlavičkami přidejte selektor, který bude odpovídat provozu pro HTTPBin ↗, open-source web pro testování požadavků HTTP. Například:
Selektor Operátor Hodnota Logika Akce Akce pro nedůvěryhodný certifikát Aplikace v Google Workspace Nebo Allow Block Doména v httpbin.org -
Na svém zařízení přejděte do
httpbin.org/anything↗. Vaše vlastní hlavička se zobrazí v seznamu hlaviček. -
(Volitelné) Odeberte ze své zásady výraz HTTPBin.
Případy použití
Kontrola tenanta SaaS
Tenant control umožňuje uživatelům přistupovat k firemním aplikacím SaaS a zároveň blokuje přístup k osobním účtům ve stejné službě. Můžete tak například povolit přístup ke službě Google Workspace vaší společnosti a zablokovat přihlašování do osobního Gmailu.
Gateway implementuje kontrolu tenantů vložením vlastních hlaviček HTTP do odpovídajících požadavků. Tyto hlavičky sdělují aplikaci SaaS, který tenant (organizace) je autorizován. Pokud se uživatel pokusí ověřit pomocí osobního účtu, aplikace SaaS hlavičku přečte a požadavek odmítne.
Microsoft 365
Řízení tenantu Microsoft 365 vyžaduje dvě zásady. Při řazení vašich zásad se ujistěte, že dodržují pořadí priority.
| Priorita | Selektor | Operátor | Hodnota | Akce | Akce pro nedůvěryhodný certifikát |
|---|---|---|---|---|---|
| 1 | Doména | je | login.live.com |
Allow | Block |
| Název vlastní hlavičky | Hodnota vlastní hlavičky |
|---|---|
Sec-Restrict-Tenant-Access-Policy |
restrict-msa |
| Priorita | Selektor | Operátor | Hodnota | Akce | Akce pro nedůvěryhodný certifikát |
|---|---|---|---|---|---|
| 2 | Aplikace | v | Microsoft Office365 | Allow | Block |
| Název vlastní hlavičky | Hodnota vlastní hlavičky |
|---|---|
Restrict-Access-To-Tenants, Restrict-Access-Context |
Doména vaší organizace |
Další informace naleznete v dokumentace Microsoft Entra ID ↗.
Google Workspace
| Selektor | Operátor | Hodnota | Akce | Akce pro nedůvěryhodný certifikát |
|---|---|---|---|---|
| Aplikace | v | Google Workspace | Allow | Block |
| Název vlastní hlavičky | Hodnota vlastní hlavičky |
|---|---|
X-GoogApps-Allowed-Domains |
Doména vaší organizace |
Další informace naleznete v dokumentace Google Workspace ↗.
Slack
| Selektor | Operátor | Hodnota | Akce | Akce pro nedůvěryhodný certifikát |
|---|---|---|---|---|
| Aplikace | v | Slack | Allow | Block |
| Název vlastní hlavičky | Hodnota vlastní hlavičky |
|---|---|
X-Slack-Allowed-Workspaces-Requester, X-Slack-Allowed-Workspaces |
Pracovní prostor vaší organizace |
Další informace naleznete v dokumentace Slacku ↗.
Dropbox
| Selektor | Operátor | Hodnota | Akce | Akce pro nedůvěryhodný certifikát |
|---|---|---|---|---|
| Aplikace | v | Dropbox | Allow | Block |
| Název vlastní hlavičky | Hodnota vlastní hlavičky |
|---|---|
X-Dropbox-allowed-Team-Ids |
ID vaší organizace |
Další informace naleznete v dokumentace Dropbox ↗.
ChatGPT
| Selektor | Operátor | Hodnota | Akce | Akce pro nedůvěryhodný certifikát |
|---|---|---|---|---|
| Aplikace | v | ChatGPT | Allow | Block |
| Název vlastní hlavičky | Hodnota vlastní hlavičky |
|---|---|
Chatgpt-Allowed-Workspace-Id |
ID pracovního prostoru vaší organizace |
Další informace naleznete v dokumentace OpenAI ↗.
Claude
| Selektor | Operátor | Hodnota | Akce | Akce pro nedůvěryhodný certifikát |
|---|---|---|---|---|
| Aplikace | v | Claude | Allow | Block |
| Název vlastní hlavičky | Hodnota vlastní hlavičky |
|---|---|
anthropic-allowed-org-ids |
UUID vaší organizace |
Chcete-li povolit přístup z více organizací, zadejte seznam UUID oddělených čárkami bez mezer (například <org-uuid-1>,<org-uuid-2>).
UUID své organizace najdete v Nastavení > Účet > Organization ID na claude.ai ↗.
Další informace naleznete v dokumentace Claude ↗.
Předávat identitu uživatele upstream službám
Pomocí dynamických hodnot hlaviček můžete předávat informace o identitě uživatele navazujícím aplikacím, aniž by se tyto aplikace musely přímo integrovat s Cloudflare Access.
| Název hlavičky | Hodnota hlavičky |
|---|---|
X-User-Email |
@{identity.email} |
X-User-Name |
@{identity.name} |
X-User-Groups |
@{identity.groups} |
X-Source-IP |
@{source.ip} |
Vaše upstream aplikace může tyto hlavičky přečíst a použít je k identifikaci uživatele, vynucení autorizační logiky nebo naplnění protokolů auditu.
Odstranit interní hlavičky
Abyste klientům zabránili podvrhnout interní hlavičky, použijte operaci delete a hlavičky před předáním požadavku odstraňte, poté je pomocí operace add nebo set znovu vložte s ověřenými hodnotami.
curl https://api.cloudflare.com/client/v4/accounts/{account_id}/gateway/rules \
--header "Authorization: Bearer {api_token}" \
--header "Content-Type: application/json" \
--data '{
"name": "Replace internal headers",
"action": "allow",
"enabled": true,
"filters": ["http"],
"traffic": "any(http.request.domains[*] in {\"internal.example.com\"})",
"rule_settings": {
"delete_headers": ["X-Internal-User"],
"set_headers": {
"X-Internal-User": ["@{identity.email}"]
}
}
}'Vyjmutí uživatelů v Cloudflare WAF
Do zásady HTTP můžete zahrnout vlastní hlavičky, které uživatelům umožní projít přes Cloudflare WAF. Hodí se to, pokud chcete přes svůj WAF propouštět pouze uživatele Cloudflare One Client.
-
Vytvořte zásadu povolení pro interní doménu za vaším WAF s vlastní hlavičkou.
Selektor Operátor Hodnota Akce Doména v internalapp.comAllow Název vlastní hlavičky Hodnota vlastní hlavičky X-Example-Headerexample-value -
V Cloudflare WAF, vytvořit vlastní pravidlo na vyžadování stejné HTTP hlavičky.
Použít vlastní hlavičky s Browser Isolation
Můžete nakonfigurovat Browser Isolation k odesílání vlastních hlaviček. To se hodí pro implementaci kontroly tenantů u izolovaných aplikací SaaS nebo pro odesílání libovolných vlastních hlaviček požadavků na izolované weby.
Chcete-li používat vlastní hlavičky s Browser Isolation, vytvořte dvě zásady HTTP zaměřené na stejnou doménu nebo skupinu aplikací. Můžete například vytvořit zásady pro HTTPBin ↗, open-source web pro testování požadavků HTTP:
-
Vytvořte zásadu Isolate pro
httpbin.org.Selektor Operátor Hodnota Akce Doména v httpbin.orgIsolate -
Vytvořte zásadu povolení pro
httpbin.orgs vlastní hlavičkou.Selektor Operátor Hodnota Akce Doména v httpbin.orgAllow Název vlastní hlavičky Hodnota vlastní hlavičky Example-Headerexample-value -
Přejděte na
httpbin.org/anything↗. Cloudflare vykreslí web v izolovaném prohlížeči. Vaše vlastní hlavička se zobrazí v seznamu hlaviček.