Dodate javnu adresu uredskog VPN-a na listu dozvoljenih AKS API servera i kubectl radi. Sedmicu kasnije skaliranje node pool-a ne uspije, CI posao ne može doći do klastera, a portal prikazuje grešku u kojoj se IP opsezi ne spominju. Niko nije promijenio listu. 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 rijetko je ona koja prva pukne.

Lista dozvoljenih uparuje adresu, ne osobu

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

To takođe znači da unos propušta više ljudi nego što namjeravate. Izvođač sa VPN pristupom, lični laptop na istom koncentratoru i kompromitovan račun dolaze sa iste adrese. Autorizacija klastera je nepromijenjena, pa kontrola pristupa zasnovana na ulogama i dalje odlučuje šta pozivalac smije raditi, ali lista dozvoljenih nije kontrola identiteta i nikada se tako ne smije 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 raditi. 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 čovjek č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 padati odmah nakon pooštravanja liste, vrijeme je trag. Ne pretpostavljajte da je lista kompletna zato što interaktivni pristup radi; provjerite šta funkcija zahtijeva za vaš region i pretplate prije nego zaključite da je klaster pokvaren.

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

Izgradite cijelu listu jednom komandom

Parametar za ažuriranje zamjenjuje cijelu listu umjesto da dodaje unos, pa komanda koja nosi samo VPN adresu tiho odbacuje sve ostalo što je bilo tamo. Prvo pročitajte trenutnu vrijednost, 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 prije nego se oslonite na ovo. Dinamička adresa se mijenja pri ponovnom povezivanju, a svaka promjena tiho zaključava tim izvan klastera dok neko ne ažurira listu sa mreže koja je još dozvoljena. Ako imate dvije VPN izlazne tačke za redundansu, navedite obje, jer filter nema pojam preferirane putanje.

Poredajte promjenu tako da prvi dozvoljeni pokušaj bude i test. Najavite novu listu, primijenite je i odmah se povežite sa VPN-a; suprotnim redoslijedom ostavljate prozor u kojem niko ne može doći 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 zamjenjuje. Takođe ne mijenja šta propušteni pozivalac može raditi, pa procurjeli admin kubeconfig i dalje radi sa bilo koje dozvoljene adrese. Tretirajte akreditive kao sigurnosnu granicu, a listu kao mrežnu pogodnost.

Ona nema nikakve veze sa radnim opterećenjima. Pods i Services nastavljaju raditi 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 prije nego laptop može da ga otvori. Miješanje ta dva dizajna proizvodi tiket za promjenu koji tvrdi da ograničava programere, a zapravo ne ograničava ništa u aplikacijama.

Provjerite sa obje strane, zatim izvedite jednu stvarnu operaciju

Testirajte svježim klijentom na VPN-u i klijentom izvan njega. Pokušaj spolja treba biti odbijen na API serveru, ne pri razrješavanju imena; ako se ime ne razriješ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 provjera nadogradnje, i potvrdite da se završava umjesto da pretpostavljate da hoće.

Zapišite prethodnu vrijednost liste pored promjene i ponovo pročitajte efektivnu vrijednost nakon ažuriranja umjesto da vjerujete otkucanoj komandi. AKS dokumentacija o dozvoljenim IP opsezima navodi podržane parametre i zahtjeve platforme koji pripadaju na istu listu, a to je dio koji većina opisa tiketa izostavlja.

Povezani članci