Pridáte verejnú adresu firemnej VPN do zoznamu povolených servera API AKS a kubectl funguje. O týždeň neskôr zlyhá navýšenie kapacity fondu uzlov, úloha CI sa nedostane ku klastru a portál zobrazí chybu, ktorá o rozsahoch IP nič nehovorí. Nikto zoznam povolených nezmenil. Zapnutá kontrola je filter verejných IP pred serverom API a nevie, kto volá, iba z akej adresy hovor prišiel. VPN je jedna z viacerých adries, ktoré klaster potrebuje, a málokedy je to tá, ktorá sa pokazí prvá.

Zoznam povolených zodpovedá adrese, nie osobe

--api-server-authorized-ip-ranges prijíma bloky CIDR, nie používateľov ani skupiny. Keď požiadavka vývojára opustí server VPN a smeruje do Azure, zdrojovou adresou na serveri API je verejný výstup servera VPN. Každý človek v tejto VPN teda zdieľa jeden záznam a ktokoľvek mimo VPN je odmietnutý ešte pred samotným overením.

To tiež znamená, že záznam prepúšťa viac ľudí, než možno zamýšľate. Dodávateľ s prístupom k VPN, osobný notebook na tom istom koncentrátore a napadnutý účet prichádzajú z rovnakej adresy. Autorizácia klastra sa nemení, takže riadenie prístupu na základe rolí stále rozhoduje, čo volajúci smie robiť, ale zoznam povolených nie je kontrola identity a nikdy by sa tak nemal opisovať.

To, čo sa pokazí prvé, zvyčajne nie je kubectl

Zoznam povolených platí pre verejný koncový bod servera API, takže všetko mimo uvedených adries okamžite prestane fungovať. Zjavnými obeťami sú druhá pobočka bez trasy VPN, bežec CI v hostovanom kanáli a notebook, ktorý sa zabudol pripojiť. Ľahko ich spoznáte, pretože čaká človek.

Menej zjavným prípadom je automatizácia riadená Azure alebo vašimi vlastnými nástrojmi. Niektoré operácie spustené platformou dosiahnu server API z adries, ktoré nie sú vašou VPN, a keď jedna z nich začne zlyhávať hneď po sprísnení zoznamu, čas je tou stopou. Nepredpokladajte, že zoznam je úplný, len preto že interaktívny prístup funguje; overte, čo funkcia vyžaduje pre váš región a predplatné, skôr než klaster vyhlásite za pokazený.

Podpis zlyhania pomáha. Ak sa požiadavka nikdy nedostane k overeniu, je to filter. Ak sa overí a potom dostane chybu oprávnenia, filter urobil svoju prácu a problémom je riadenie prístupu na základe rolí, ktorého sa zoznam povolených nikdy nedotkne.

Zostavte celý zoznam jediným príkazom

Parameter aktualizácie nahrádza celý zoznam, namiesto toho aby pridal záznam, takže príkaz, ktorý nesie iba adresu VPN, potichu zahodí všetko ostatné. Najprv prečítajte aktuálnu hodnotu, ponechajte ju a odošlite zjednotenie:

az aks show -g rg-app -n aks-prod \
  --query apiServerAccessProfile.authorizedIpRanges -o tsv

az aks update -g rg-app -n aks-prod \
  --api-server-authorized-ip-ranges 203.0.113.10/32,198.51.100.0/24

Použite rezervovanú verejnú IP pre server VPN, skôr než sa na to spoliehate. Dynamická adresa sa pri opätovnom pripojení mení a každá zmena potichu zamkne tím mimo klastra, kým niekto neaktualizuje zoznam zo siete, ktorá je stále povolená. Ak máte dva výstupy VPN pre redundanciu, uveďte oba, pretože filter nemá pojem preferovanej cesty.

Naplánujte zmenu tak, aby prvý povolený pokus bol zároveň testom. Oznímte nový zoznam, použite ho a okamžite sa pripojte cez VPN; v opačnom poradí zostáva okno, keď sa nikto nedostane k serveru API, aby opravil preklep v bloku CIDR.

Čo zoznam povolených nikdy nepokryl

Nezneprístupňuje server API. Privátny klaster používa privátny koncový bod a privátny DNS a zoznam autorizovaných rozsahov nie je kontrola, ktorá to nahrádza. Nemení ani to, čo smie pripustený volajúci robiť, takže uniknutý administrátorský kubeconfig stále funguje z akejkoľvek povolenej adresy. Považujte prihlasovacie údaje za bezpečnostnú hranicu a zoznam za sieťovú pohodlnosť.

S pracovnou záťažou to nemá nič spoločné. Pody a služby ďalej bežia so zapnutým zoznamom a dostať sa k aplikácii cez VPN je samostatný problém: služba, ktorá má len IP klastra, stále potrebuje interné vyrovnávanie záťaže, ingress alebo port-forward, kým ju notebook dokáže otvoriť. Miešanie týchto dvoch návrhov vytvára zmenový tiket, ktorý tvrdí, že obmedzuje vývojárov, a v skutočnosti na aplikáciách nič neobmedzuje.

Overte z oboch strán a potom vykonajte jednu skutočnú operáciu

Otestujte s čerstvým klientom vo VPN a s klientom mimo nej. Pokus zvonku by mal byť odmietnutý na serveri API, nie pri preklade názvov; ak sa názov nepreloží, testujete DNS a o filtri ste sa nič nedozvedeli. Potom vykonajte operáciu, ktorá nie je interaktívnym volaním kubectl, napríklad navýšenie kapacity fondu uzlov alebo kontrolu aktualizácie, a potvrďte, že sa skončí, namiesto toho aby ste to predpokladali.

Zaznamenajte predchádzajúcu hodnotu zoznamu vedľa zmeny a po aktualizácii znova prečítajte účinnú hodnotu, namiesto toho aby ste verili zadanému príkazu. Dokumentácia autorizovaných rozsahov IP v AKS uvádza podporované parametre a požiadavky platformy, ktoré patria do toho istého zoznamu, čo je časť, ktorú väčšina opisov tiketov vynecháva.

Súvisiace články