← Cloudflare Workers / workers / configuration
Cloudflare Access
S Cloudflare Access můžete omezit, kdo smí přistupovat k vaší aplikaci. Sami určujete, kdo je schválen, a každý požadavek se ověří ještě předtím, než se spustí váš Worker. Schválení návštěvníci projdou dál, ostatním se zobrazí přihlašovací stránka, nebo jsou zablokováni.
Můžete chránit:
- Jedna aplikace: vyžadovat přihlášení pro náhledové adresy URL, produkční adresy URL, nebo obojí.
- Všechny Workery ve vašem účtu: ve výchozím nastavení chrání každý existující i nově vytvořený Worker.
- Konkrétní vlastní domény a hostname: omezit přístup na úrovni hostname nebo trasy.
Než začnete
Chcete-li používat Access s Workers, potřebujete:
- Zero Trust povolený na vašem účtu. Pokud Zero Trust není zapnutý, dokončete Nastavení Zero Trust nejprve a poté se vraťte do dashboardu Workers.
- Oprávnění ke správě Workers a aplikací Access.
Zvolte, co chcete chránit
| Chci chránit... | Sekce | Typ cíle API |
|---|---|---|
| Náhledová nasazení pro všechny Workers | Ochrana všech Workers | all_preview_workers |
| Produkční a preview nasazení pro všechny Workers | Ochrana všech Workers | all_workers |
| Náhledová nasazení pro jeden Worker | Ochrana jednoho Workeru | preview_worker |
| Produkční a preview nasazení pro jeden Worker | Ochrana jednoho Workeru | worker |
Konkrétní hostname: může to být workers.dev, Custom Domain nebo cestu |
Ochrana konkrétního hostname, Custom Domain nebo cesty | Doména samostatně hostované aplikace |
Ochrana všech Workers
Vyžadujte přihlášení na každém Workeru ve vašem účtu, včetně Workers, které nasadíte v budoucnu. Přihlášení můžete vyžadovat pouze u náhledových nasazení, nebo současně u produkčních i náhledových nasazení.
Cesta v dashboardu: Workers & Pages stránka Overview > Ochrana všech Workers.

-
V dashboardu Cloudflare přejděte na Workers & Pages stránce.
Přejděte na Workers & Pages ↗ -
Najděte Ochrana všech Workers kartě.
-
Pokud je na kartě uvedeno Není povoleno, vyberte Povolení Access.
-
Vyberte Pouze náhledy nebo All traffic.
-
V části Zásada ověřování, vyberte existující zásadu nebo nakonfigurujte jednu z možnosti zásad.
-
Vyberte Povolení Access.
-
(Optional) Review the session duration.
-
Vyberte Aplikovat Access.
Chcete-li chránit pouze preview nasazení všech Workerů, vytvořte self-hosted aplikaci Access s all_preview_workers cíl:
"destinations": [
{
"type": "all_preview_workers"
}
]Chcete-li chránit produkční i preview nasazení všech Workerů, použijte all_workers místo toho:
"destinations": [
{
"type": "all_workers"
}
]Odešlete tyto destinations v POST /accounts/{account_id}/access/apps požadavek. Úplné schéma požadavku, včetně možnosti zásad, nastavení relace a pokročilé možnosti Access naleznete v API pro aplikace Access.
Ochrana jednoho Workeru
Vyžadujte přihlášení na jednom Workeru. Tím se automaticky ochrání každá doména přiřazená k danému Workeru, včetně jeho tras, Custom Domains, workers.dev hostname a náhledy. Přihlášení můžete vyžadovat jen u náhledových nasazení, nebo jak u produkčních, tak u náhledových nasazení.
Cesta v dashboardu: Workers & Pages > vyberte svůj Worker > Access.

-
V dashboardu Cloudflare přejděte na Workers & Pages stránce.
Přejděte na Workers & Pages ↗ -
Vyberte svůj Worker ze seznamu aplikací.
-
Vyberte Access kartě.
-
Vyberte Ochrana tohoto Workeru pomocí Access.
-
Vyberte Pouze náhledy nebo All traffic.
-
V části Zásada ověřování, vyberte existující zásadu nebo nakonfigurujte jednu z možnosti zásad.
-
(Optional) Review the session duration.
-
Vyberte Aplikovat Access.
Chcete-li chránit pouze preview nasazení jednoho Workeru, vytvořte self-hosted aplikaci Access s preview_worker cíl. Nastavte worker_id na ID vašeho Workeru:
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/apps" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"type": "self_hosted",
"name": "Access for my-worker",
"destinations": [
{
"type": "preview_worker",
"worker_id": "c81a2d22c29840ed9d61681a3270dbff"
}
],
"policies": [
{
"decision": "allow",
"include": [
{
"email_domain": {
"domain": "example.com"
}
}
]
}
]
}'Chcete-li chránit produkční i preview nasazení Workeru, použijte worker místo toho:
"destinations": [
{
"type": "worker",
"worker_id": "c81a2d22c29840ed9d61681a3270dbff"
}
]Úplné schéma požadavku, včetně možnosti zásad a nastavení relace, viz API pro aplikace Access.
Ochrana konkrétního hostname, Custom Domain nebo cesty
Access na základě hostname použijte tehdy, když přihlášení má vyžadovat pouze konkrétní URL směrující na váš Worker, například workers.dev hostname, Custom Domain, subdoménu nebo cestu. Access založený na hostname chrání jen přesně tuto URL, zatímco ochrana Workeru chrání celý Worker bez ohledu na to, jak je k němu přistupováno. Například u Access založeného na hostname můžete chránit my-worker.example.workers.dev, admin.example.com, nebo jedinou cestu, například example.com/login abyste učinili soukromou pouze část vašeho Workeru.
V dashboardu i v API chráníte hostname nebo cestu vytvořením self-hosted aplikace a použití hostitelského názvu nebo cesty jako domény aplikace.
Vytvořte self-hosted aplikaci v Zero Trust > Access > Aplikace. Chcete-li shodovat subdomény, více cest nebo zástupné znaky, přečtěte si Cesty aplikace.
Vytvořte self-hosted aplikaci s POST /accounts/{account_id}/access/apps požadavek, přičemž doménu aplikace nastavíte na hostname nebo cestu. Úplné schéma požadavku najdete v API pro aplikace Access.
Zpřístupněte Worker veřejně, i když jsou všechny Workery chráněné
Pokud Access na úrovni účtu chrání všechny Workery, můžete konkrétní Worker zveřejnit přidáním bypassu na úrovni Workeru. Bypass znamená, že Access pro daný Worker nevyžaduje přihlášení.
Cesta v dashboardu: Workers & Pages > vyberte svůj Worker > Access.

-
V dashboardu Cloudflare přejděte na Workers & Pages stránce.
Přejděte na Workers & Pages ↗ -
Vyberte svůj Worker ze seznamu aplikací.
-
Vyberte Access kartě.
-
Vyberte možnost, jak Worker zveřejnit nebo obejít Access na úrovni účtu.
-
Potvrďte změnu.
Vytvořte aplikaci Access na úrovni Workeru se zásadou Bypass. Použijte worker cíl nastavte worker_id na ID vašeho Workeru a nastavte politiku decision na bypass s include pravidlo, které odpovídá všem:
"policies": [
{
"decision": "bypass",
"include": [
{
"everyone": {}
}
]
}
]Možnosti zásad
Při zapnutí Access zvolte, kdo se může přihlásit. Stejné možnosti zásad jsou k dispozici bez ohledu na to, zda chráníte všechny Workery, nebo jen jeden Worker.
| Možnost zásady | Výsledek |
|---|---|
| účet Cloudflare | Umožňuje přihlášení členům tohoto účtu Cloudflare. Tuto možnost použijte, pokud má být přístup omezen jen na osoby, které již k účtu patří. |
| E-mailová doména | Umožňuje přístup komukoli, kdo má ověřenou e-mailovou adresu v doméně, kterou zadáte, například example.com. Tuto možnost použijte, pokud má být přístup dostupný lidem z firmy nebo organizace, i když nejsou členy účtu Cloudflare. |
Můžete přidat jednu nebo více zásad. Přihlásit se mohou návštěvníci, kteří odpovídají libovolné vybrané zásadě.
Pro pokročilou konfiguraci zásad, jako je více poskytovatelů identity, pravidla stavu zařízení, service tokeny, složité řazení zásad nebo vlastní přihlašovací či blokovací stránky, upravte aplikaci Access v Zero Trust po jejím vytvoření. Úplný seznam možností najdete v Zásady Access.
Čtení identity ověřeného uživatele pomocí ctx.access
Když Cloudflare Access ověří požadavek, který přímo vyvolá váš Worker, může Worker číst identitu přihlášeného uživatele, včetně e-mailu, skupin, stavu zařízení a další identifikační pole, through ctx.access. Není potřeba žádná další konfigurace ani parsování JWT.
Toho můžete využít k personalizaci odpovědí, vynucení jemně odstupňovaných oprávnění nebo logování aktivity jednotlivých uživatelů.
ctx.access je undefined pokud Access požadavek neověřil.
export default {
async fetch(request, env, ctx) {
if (!ctx.access) {
return new Response("Access required", { status: 403 });
}
const identity = await ctx.access.getIdentity();
const email = identity?.email ?? "unknown";
return new Response(`Hello, ${email}`);
},
};export default {
async fetch(request, env, ctx) {
if (!ctx.access) {
return new Response("Access required", { status: 403 });
}
const identity = await ctx.access.getIdentity();
const email = identity?.email ?? "unknown";
return new Response(`Hello, ${email}`);
},
};ctx.access omezení
Otestujte ctx.access lokálně
Při lokálním vývoji s wrangler dev nebo Cloudflare Vite Plugin můžete simulovat autentizované identity Cloudflare Access, aniž byste museli aplikaci nasadit nebo projít přihlašovacím procesem Access.
Přidejte dev blok uvnitř access konfigurace ve vašem wrangler.jsonc:
{
"access": {
"dev": {
"aud": "my-app",
"identity": { "email": "[email protected]" }
}
}
}[access.dev]
aud = "my-app"
[access.dev.identity]
email = "[email protected]"aud(povinné): tag cílové skupiny (audience) vaší aplikace Access, dostupný jakoctx.access.aud. Bez toho se Wrangler nespustí.identity(volitelné): simuluje deklarace identity ověřeného uživatele (e-mail, jméno, skupiny a podobně) vrácenéctx.access.getIdentity(). Zahrňte ho, pokud váš Worker čte identitu uživatele. Vynechte ho, pokud Worker pouze kontroluje, zda je Access povolený.
Chcete-li testovat jako jiný uživatel, změňte pole identity a restartujte aplikaci. Chcete-li testovat neověřené požadavky, odeberte dev blok: ctx.access bude undefined, stejně jako by tomu bylo u požadavku, který v produkci neprošel přes Access.
Příklad Workeru
export default {
async fetch(request, env, ctx) {
if (!ctx.access) {
return new Response("Not authenticated", { status: 403 });
}
const identity = await ctx.access.getIdentity();
const email = identity?.email ?? "unknown";
return new Response(`Hello, ${email}`);
},
};export default {
async fetch(request, env, ctx) {
if (!ctx.access) {
return new Response("Not authenticated", { status: 403 });
}
const identity = await ctx.access.getIdentity();
const email = identity?.email ?? "unknown";
return new Response(`Hello, ${email}`);
},
};S touto konfigurací návštěva localhost:8787 by vrátilo Hello, [email protected].
Pole identity
Objekt identity přijímá jakákoli pole odpovídající tvaru identity Access v produkčním prostředí. Úplný seznam najdete v Application token: identita uživatele.
Zakázat Access
Chcete-li vypnout Access na úrovni Workeru nebo účtu, otevřete u Workeru Access kartě nebo Ochrana všech Workers kartu a vypněte příslušné pravidlo Access.
Odstraňte aplikaci Access, která chrání Worker, všechny Workers, nebo hostname či cestu, které na Worker směrují.
Seznamte se s hierarchií Access
Worker může být chráněn více než jedním pravidlem Access. Pokud se na stejný požadavek může vztahovat více pravidel, jako první se uplatní to nejkonkrétnější:
- Access založený na hostname nebo cestě: Použije se jako první, pokud požadavek odpovídá danému názvu hostitele nebo cestě, například
admin.example.comneboexample.com/login. - Access na úrovni Workeru: Platí dále pro vybraného Workera napříč jeho trasami, Custom Domains,
workers.devhostname a náhledy. - Access pro Worker na úrovni účtu: Použije se jako poslední, jako záložní možnost pro všechny Workery nebo všechny náhledy Workerů na účtu.
Pokud má například Worker jak Access na úrovni účtu, tak pravidlo na úrovni Workeru, řídí daný Worker pravidlo na úrovni Workeru. Pokud navíc existuje odpovídající aplikace Access založená na hostname nebo cestě, řídí odpovídající URL toto pravidlo pro hostname nebo cestu.
Pokud odstraníte konkrétnější pravidlo, Worker může být stále chráněn širším pravidlem. Například odstranění nastavení Access na úrovni Workeru může odhalit nastavení Access na úrovni účtu, které je pod ním.