INTEGRITY Dokumentace

Rozšiřte ZTNA o externí autorizaci a bezserverové výpočty

Úvod

Firmy využívající služby Zero Trust Network Access (ZTNA) vytvářejí politiky, které určují, zda má uživatel přístup k chráněnému zdroji, například k privátně hostovanému Wiki serveru nebo repozitáři zdrojového kódu. Politiky obvykle vycházejí z členství ve skupinách, metod autentizace a bezpečnostního stavu zařízení, na základě kterých se určuje, kteří uživatelé mají přístup ke kterým zdrojům.

Zabezpečený přístup vyžaduje, aby měl policy engine k dispozici řadu atributů pro vyhodnocení. Se službou Cloudflare ZTNA Access, je možné do zásady zahrnout externí požadavek na jiné API, které poskytne část dat potřebných pro rozhodnutí o přístupu.

Můžete mít například zásadu, podle které mají přístup k samostatně hostovanému repozitáři zdrojového kódu všichni členové skupiny "Engineers", kteří se ověřili pomocí přihlašovacích údajů vyžadujících hardwarový token. Zároveň ale chcete povolit přístup pouze inženýrům, kteří absolvovali bezpečnostní školení. Tato data mohou být dostupná v jiném systému, a proto vám Cloudflare v rámci kontroly zásad umožňuje provést volání pomocí Workers ↗ do školicího systému, aby se zjistilo, zda tento uživatel absolvoval bezpečnostní školení.

Jakmile jsou autentizace a kontroly politiky úspěšné, Cloudflare navíc předá provoz chráněnému origin serveru. Je důležité mít na paměti, že by měl i origin server ověřovat, že příchozí požadavky byly autentizovány Cloudflare, aby se předešlo neoprávněnému přístupu. Cloudflare do provozu směřujícího na origin server vkládá token JWT, který kryptograficky prokazuje, že byl požadavek úspěšně autentizován, a origin server může tato data využít jako součást své autorizační logiky.

Pro usnadnění integrace těchto typů případů použití má Cloudflare celá vývojářská platforma na kterém můžete navrhnout a spustit vlastní obchodní logiku. Znamená to, že strávíte méně času skládáním řešení dohromady a více času samotnou integrací.

Tento dokument popisuje, jak obě řešení zkombinovat a rozšířit tak možnosti Cloudflare Access, pokud jde o autorizace a ověřování ↗.

Prezentované produkty

Workers

Vytvářejte bezserverové aplikace a okamžitě je nasazujte po celém světě, dosáhnete tak výjimečného výkonu, spolehlivosti a škálovatelnosti.

Access

Cloudflare Zero Trust nahrazuje starší bezpečnostní perimetry globální sítí Cloudflare, díky čemuž je internet rychlejší a bezpečnější pro týmy po celém světě

Případy užití

Obrázek 1: Znázornění požadavku na privátní prostředek a míst, kde lze přizpůsobit Access pro AuthZ a AuthN
Obrázek 1: Znázornění požadavku na privátní prostředek a míst, kde lze přizpůsobit Access pro AuthZ a AuthN

Začínáme

Následující část popisuje, jak mohou organizace provozovat vlastní obchodní logiku a přizpůsobit tak procesy autentizace a autorizace prakticky jakémukoli požadavku. Každý případ použití níže odpovídá jednomu kroku ve výše uvedeném diagramu.

1. Vlastní proces autorizace podle vlastních pravidel

Během vyhodnocování zásad externí hodnocení pravidlo umožňuje při vyhodnocování přístupové politiky spustit vlastní kód. V tomto příkladu přijímá rozhraní API zpřístupněné pomocí Cloudflare Workers údaje o uživateli, který požadavek odesílá, přičemž důležité je zejména jeho uživatelské jméno.

Kód obvykle volá buď databáze nebo jiné API, které vyhodnotí, zda má zadané uživatelské jméno přístup k aplikaci. Pravidlo externího vyhodnocení vyžaduje, aby volání vrátilo hodnotu True nebo False, což se kombinuje se zásadou pro určení přístupu.

Zjistit více

Externí autorizace pomocí funkce external evaluation od Cloudflare

2. Analýza a ověření autentizačních údajů (JWT)

Když se uživatel úspěšně ověří a získá oprávnění k přístupu k chráněné aplikaci, Cloudflare vloží JSON Web Token (JWT) do provozu HTTP odesílaného na origin. Tento token slouží jako cenný prostředek pro rozšíření vlastní obchodní logiky prostřednictvím zabezpečeného zpracování. Formát tohoto JWT je deterministický a poměrně nenáročný, aby nedocházelo ke zbytečnému zatěžování požadavků směřujících na origin.

Zde je příklad JWT odeslaného na origin (použijte JWT.io ↗ k přečtení obsahu JWT)

Obsah JWT
{
	"aud": ["264063895705477af73bfbaed1bf401981f4812eefcdb9fea33f5e10e666e282"],
	"email": "[email protected]",
	"exp": 1728551137,
	"iat": 1728464737,
	"nbf": 1728464737,
	"iss": "https://myorg.cloudflareaccess.com",
	"type": "app",
	"identity_nonce": "IA0hPRvwILtbUXSQ",
	"sub": "ce40d564-c72f-475f-a9b8-f395f19ad986",
	"device_id": "8469d7c4-83a9-11ee-b559-76e6e80876db",
	"country": "FR"
}

Cloudflare zpřístupňuje konkrétní koncový bod aby mohl kdokoli ověřit a rozšířit JWT podepsaný Cloudflare.

Cloudflare Workers jsou skvělou volbou pro práci s příchozími JSON Web Tokeny (JWT), protože umožňují další zpracování přímo v rámci serverless platformy, aniž by to přinášelo jakoukoli další latenci.

Zjistit více

Jak ověřovat a zobrazovat tokeny Cloudflare Access JWT

3. Doplnění autentizačních údajů (JWT) o další ověřovací informace

V některých situacích je vhodné tento JWT rozšířit, aby bylo možné provádět další zpracování na chráněné cílové aplikaci (například přidat zařízení podrobnosti o stavu zabezpečení jako součást příchozího požadavku).

V následujícím příkladu chceme zajistit, aby publikovaná aplikace znala stav firewallu zařízení a šifrování disku (pro sběr těchto signálů je třeba mít na klientském počítači nainstalovaný Cloudflare One Client).

Obrázek 2: Upravený požadavek na origin server obsahující podrobnosti device posture
Obrázek 2: Upravený požadavek na origin server obsahující podrobnosti device posture

Po rozbalení tokenu JSON Web Token (JWT) se zobrazí podrobnosti o přiložené ověřovací události. Toto rozbalení odhalí mnohem víc informací, než kolik je standardně obsaženo v samotném JWT. Příklad najdete níže.

Expanded JWT
{
  "id": "P51Tuu01fWHMBjIBvrCK1lK-eUDWs2aQMv03WDqT5oY",
  "name": "John Doe",
  "email": "[email protected]",
  "amr": [
    "pwd"
  ],
  "oidc_fields": {
    "principalName": "john.doe_cloudflare.com#EXT#@XXXXXXcloudflare.onmicrosoft.com"
  },
  "groups": [
    {
      "id": "fdaedb59-e9be-4ab7-8001-3e069da54185",
      "name": "Security Team"
    }
  ],
  "idp": {
    "id": "b9f4d68e-dac1-48b0-b728-ae05a5f0d4b2",
    "type": "azureAD"
  },
  "geo": {
    "country": "FR"
  },
  "user_uuid": "ce40d564-c72f-475f-a9b8-f395f19ad986",
  "account_id": "121287a0c6e6260ec930655e6b39a3a8",
  "iat": 1724056537,
  "devicePosture": {
    "f6f9391e-6776-4878-9c60-0cc807dc7dc8": {
      "id": "f6f9391e-6776-4878-9c60-0cc807dc7dc8",
      "schedule": "5m",
      "timestamp": "2024-08-19T08:31:59.274Z",
      "description": "",
      "type": "disk_encryption",
      "check": {
        "drives": {
          "C": {
            "encrypted": true
          }
        }
      },
      "success": false,
      "rule_name": "Disk Encryption - Windows",
      "input": {
        "requireAll": true,
        "checkDisks": []
    },
    "a0a8e83d-be75-4aa6-bfa0-5791da6e9186": {
      "id": "a0a8e83d-be75-4aa6-bfa0-5791da6e9186",
      "schedule": "5m",
      "timestamp": "2024-08-19T08:31:59.274Z",
      "description": "",
      "type": "firewall",
      "check": {
        "firewall": false
      },
      "success": false,
      "rule_name": "Local Firewall Check - Windows",
      "input": {
        "enabled": true
      }
    }
    ...
  }

Na základě údajů v JWT můžete pomocí Workeru extrahovat informace o stavu zařízení (device posture) a následně je vložit zpět do HTTP hlaviček, které aplikace využívá pro vlastní autorizační logiku. Níže najdete podrobný návod, jak tuto úpravu požadavku provést pomocí platformy Cloudflare Developer.

Tutoriál

Jak rozšířit Cloudflare Access JWT pomocí Cloudflare Workers