Dodate javnu adresu kancelarijskog VPN-a na listu dozvoljenih AKS API servera i kubectl radi. Nedelju dana kasnije skaliranje node pool-a ne uspe, CI posao ne može da dođe do klastera, a portal prikazuje grešku u kojoj se IP opsezi uopšte ne spominju. Niko nije promenio listu dozvoljenih. Kontrola koju ste uključili je javni IP filter ispred API servera i ona ne zna ko zove, samo sa koje adrese poziv dolazi. VPN je jedna adresa među nekoliko koje klaster treba i retko je ona koja prva pukne.

Lista dozvoljenih uparuje adresu, ne osobu

--api-server-authorized-ip-ranges prihvata CIDR blokove, ne korisnike ili grupe. Kada zahtev programera napusti VPN server prema Azure-u, izvorna adresa na API serveru je javni izlaz VPN servera. Zato svaka osoba na tom VPN-u deli jedan unos, a svakome izvan VPN-a odbija se pristup pre nego što se autentifikacija uopšte dogodi.

To takođe znači da unos propušta više ljudi nego što nameravate. Izvođač sa VPN pristupom, lični laptop na istom koncentratoru i kompromitovan nalog dolaze sa iste adrese. Autorizacija klastera nije promenjena, pa kontrola pristupa zasnovana na ulogama i dalje odlučuje šta pozivalac sme da radi, ali lista dozvoljenih nije kontrola identiteta i nikada se tako ne sme opisivati.

Ono što prvo pukne obično nije kubectl

Lista dozvoljenih važi za javni endpoint API servera, pa sve izvan vaših navedenih adresa odmah prestaje da radi. Očigledne žrtve su druga kancelarija bez VPN rute, CI runner u hostovanom pipeline-u i laptop koji je zaboravio da se poveže. Njih je lako prepoznati jer čovek čeka.

Manje očigledan slučaj je automatizacija koju pokreću Azure ili vaši alati. Neke operacije koje inicira platforma dolaze do API servera sa adresa koje nisu vaš VPN, a kada jedna od njih počne da pada odmah nakon pooštravanja liste, vreme je trag. Ne pretpostavljajte da je lista kompletna zato što interaktivni pristup radi; proverite šta funkcija zahteva za vaš region i pretplate pre nego što zaključite da je klaster pokvaren.

Potpis kvara pomaže. Ako zahtev nikada ne stigne do autentifikacije, to je filter. Ako se autentifikuje i zatim dobije grešku dozvole, filter je odradio svoj posao i problem je u kontroli pristupa zasnovanoj na ulogama, koju lista dozvoljenih nikada ne dira.

Izgradite celu listu jednom komandom

Parametar ažuriranja zamenjuje celu listu umesto da dodaje unos, pa komanda koja nosi samo VPN adresu tiho odbacuje sve ostalo što je bilo tamo. Prvo pročitajte trenutnu vrednost, zadržite je i pošaljite uniju:

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

Koristite rezervisanu javnu IP adresu za VPN server pre nego što se oslonite na ovo. Dinamička adresa se menja pri ponovnom povezivanju, a svaka promena tiho zaključava tim izvan klastera dok neko ne ažurira listu sa mreže koja je još dozvoljena. Ako imate dve VPN izlazne tačke za redundansu, navedite obe, jer filter nema pojam preferirane putanje.

Poredajte promenu tako da prvi dozvoljeni pokušaj bude i test. Najavite novu listu, primenite je i odmah se povežite sa VPN-a; suprotnim redosledom ostavljate prozor u kojem niko ne može da dođe do API servera da ispravi grešku u kucanju CIDR bloka.

Šta lista dozvoljenih nikada nije pokrivala

Ona ne čini API server privatnim. Privatni klaster koristi privatni endpoint i privatni DNS, a lista dozvoljenih opsega nije kontrola koja ga zamenjuje. Takođe ne menja šta propušteni pozivalac može da radi, pa procurili admin kubeconfig i dalje radi sa bilo koje dozvoljene adrese. Tretirajte akreditive kao bezbednosnu granicu, a listu kao mrežnu pogodnost.

Ona nema nikakve veze sa radnim opterećenjima. Pods i Services nastavljaju da rade sa uključenom listom, a dolazak do aplikacije preko VPN-a je odvojen problem: Service koji ima samo klaster IP i dalje treba interni load balancer, ingress ili port-forward pre nego laptop može da ga otvori. Mešanje ta dva dizajna proizvodi tiket za promenu koji tvrdi da ograničava programere, a zapravo ne ograničava ništa u aplikacijama.

Proverite sa obe strane, zatim izvedite jednu stvarnu operaciju

Testirajte svežim klijentom na VPN-u i klijentom izvan njega. Pokušaj spolja treba biti odbijen na API serveru, ne pri razrešavanju imena; ako se ime ne razreši, testirate DNS i niste naučili ništa o filteru. Zatim izvedite operaciju koja nije interaktivni kubectl poziv, kao što je skaliranje node pool-a ili provera nadogradnje, i potvrdite da se završava umesto da pretpostavljate da hoće.

Zapišite prethodnu vrednost liste pored promene i ponovo pročitajte efektivnu vrednost nakon ažuriranja umesto da verujete otkucanoj komandi. AKS dokumentacija o dozvoljenim IP opsezima navodi podržane parametre i zahteve platforme koji pripadaju na istu listu, a to je deo koji većina opisa tiketa izostavlja.

Povezani članci