Cloudflare-első hálózatépítés mint kód Pulumi segítségével
Megosztás
Összefoglalót olvas. A teljes tartalom itt érhető el: pulumi.com.
A többfelhős alkalmazásokat kezelő platformcsapatok komoly láthatósági hiányosságokkal néznek szembe. Míg az alapinfrastruktúra szigorúan ellenőrzött, a peremkonfiguráció gyakran manuális konzoleszközökkel eltér. A DNS-rekordok elavult eredetekre mutatnak, a WAF-szabályok következetlenek a környezetek között, és a Zero Trust politikák nem tartanak lépést a csapatváltozásokkal. Ez a peremeltolódás alkalmazáskihez áramlási hibákat vagy kitettséget eredményez, amelyeket az alapcsapatok csak azután észlelnek, hogy a felhasználók jelentik őket. Mivel az alkalmazások több felhőn terjednek el, a perem gyakran a legkonzisztensebb réteg a biztonsági és forgalmi politikák érvényesítésére. A várakozás egy egységes peremstratégiára magas költségekkel jár. Minden manuális változás potenciális biztonsági rés vagy teljesítménybeli szűk keresztmetszet, amely megkerüli a szabványos CI/CD szigorát. Amit építeni fogsz Ebben a bejegyzésben egy standardizált Cloudflare perem alapot fogsz létrehozni. A Pulumit használod a következők meghatározására: DNS-rekordok, amelyek a többfelhős eredetekre mutatnak. A WAF saját szabályai, amelyek blokkolják a rosszindulatú forgalmat, mielőtt az elérné a hálózatodat. Egy Worker kannás, amely kezeli a perem logikáját és a header érvényesítést. Zero Trust Access politikák az belső eszközök és az alap hozzáférés biztosítására. A végére egy verziókezelés alatt álló perem alapot kapsz, amelyet validálhatsz és telepíthetsz bármely környezetbe. A Pulumi program Megépítünk egy Pulumi programot, amely beállít egy teljes peremkörnyezetet. Ez a megközelítés biztosítja, hogy a perem biztonsága és irányítása mindig szinkronban legyen az alkalmazáskódoddal. A szolgáltató beállítása Először győződj meg róla, hogy telepítve van a @pulumi/cloudflare csomag, és a hitelesítési adataid be vannak állítva. Az alábbi példák a @pulumi/cloudflare@6.15.0 verzióval lettek ellenőrizve, amely a Pulumi Registry API aktuális v6-os verziója a írás idején. npm install @pulumi/cloudflare@6.15.0 pulumi config set --secret cloudflare:apiToken "$CLOUDFLARE_API_TOKEN" Az infrastruktúra meghatározása Itt van a teljes Pulumi program TypeScript-ben. Ha a zónád már rendelkezik egy egyedi WAF-szabálykészlettel ugyanazon fázisra, importáld ezt a szabálykészletet vagy add hozzá a szabályt a meglévő szabálykészletedhez, ahelyett, hogy létrehozol egy másik fázis-szintű szabálykészletet, amely esetleg nem működik vagy ütközik. import * as cloudflare from "@pulumi/cloudflare"; const accountId = "<your-cloudflare-account-id>"; const trustedAdminIp = "198.51.100.10"; const zone = new cloudflare.Zone("my-zone", { account: { id: accountId, }, name: "example.com", }); const www = new cloudflare.DnsRecord("www", { zoneId: zone.id, name: "www", content: "1.2.3.4", ttl: 1, type: "A", proxied: true, }); const admin = new cloudflare.DnsRecord("admin", { zoneId: zone.id, name: "admin", content: "1.2.3.4", ttl: 1, type: "A", proxied: true, }); const wafRule = new cloudflare.Ruleset("waf-rule", { zoneId: zone.id, name: "Gyanús forgalom blokkolása", description: "Egyedi WAF szabály az adott minták blokkolására", kind: "zone", phase: "http_request_firewall_custom", rules: [{ action: "block", expression: `(http.request.uri.path contains "/admin" and not ip.src in {${trustedAdminIp}})`, description: "Blokkolás nem engedélyezett admin hozzáférés esetén", }], }); const worker = new cloudflare.WorkersScript("canary-worker", { accountId: accountId, scriptName: "edge-canary", compatibilityDate: "2026-01-01", mainModule: "worker.js", content: ` export default { async fetch(request) { return new Response("Perem alap érvényesítve", { headers: { "x-edge-baseline": "aktív" }, }); }, }; `, }); const workerRoute = new cloudflare.WorkersRoute("canary-route", { zoneId: zone.id, pattern: "www.example.com/*", script: worker.scriptName, }); const adminGroup = new cloudflare.ZeroTrustAccessGroup("admin-group", { accountId: accountId, name: "Adminisztrátorok", includes: [{ email: { email: "admin@example.com", }, }], }); const accessApp = new cloudflare.ZeroTrustAccessApplication("internal-tool", { accountId: accountId, name: "Belső Admin Eszköz", domain: "admin.example.com", type: "self_hosted", policies: [{ name: "Adminisztrátorok engedélyezése", precedence: 1, decision: "allow", includes: [{ group: { id: adminGroup.id, }, }], }], }); Érvényesítés Miután futtattad a pulumi up parancsot, validálhatod a perem alapodat a következő lépésekkel: DNS ellenőrzés: Futass dig www.example.com parancsot, hogy megerősítsd, a rekord Cloudflare proxied IP-ire mutat. WAF teszt: Próbálj hozzáférni a www.example.com/admin címhez nem engedélyezett IP-ről, és ellenőrizd, hogy 403 Forbidden választ kapsz-e. Worker kannás: Használj curl -I https://www.example.com parancsot és ellenőrizd az x-edge-baseline: aktív header jelenlétét. Hozzáférési politika: Navigálj az admin.example.com címre, és ellenőrizd, hogy átirányítanak-e a Cloudflare Access bejelentkezési oldalára. Ezeknek az erőforrásoknak a kódként való kezelése megszünteti a manuális eltérés kockázatát és biztosítja, hogy minden környezet egy biztonságos, validált perem alap kialakításával kezdődjön.
Külső link: pulumi.com
Kapcsolódó cikkek
devops
Hét stabil kernel szombatra, köztük két biztonsági javítással.
devops
Miért nem mentik meg az olcsóbb modellek az AI költségvetését?
devops
