Proxy s API pro nastavení přístupu uživatelem

Proxy s API pro nastavení přístupu uživatelem
« kdy: 03. 06. 2022, 09:23:33 »
Ahoj,

mam tu takovy specificky use-case - nova aplikace (vicemene webova) by potrebovala pristupovat na externi webove sluzby tak, jak si to nastavi zakaznik. Vzhledem k tomu, ze zatim jedeme politiku, kdy se ze serveru externi sluzby povoluji na vyzadani, tak to koliduje s tim, aby to nemusel nastavovat dev/sys. Nastaveni proxy s neomezenym pristupem do internetu a vyuziti v ramci aplikace zatim nekterym nevoni (vidi v tom bezpecnostni riziko).

Hledal jsem neco ve stylu proxy, ktere se da nastavovat pres api, ale snad krome par zminek, ze by squid umel db, jsem nenasel nic? Dalsi navrh byl, zda cast te aplikace nevystrcit mimo nasi infrastrukturu, tim bychom ze serveru povolili pristup jen na tu cast, a dal uz by to mohlo byt neomezene. Je to samozrejme slozitejsi na spravu apod. Treti variantou bylo pouzit proxy s dodatecnym konfig souborem, ktery se bude "aplikacne" upravovat a nejaky planovac by pak zavolal rekonfiguraci proxy.

Nevi nekdo nejake realne moznosti, ktere by takovyhle use case dobre resilo? Jde o to, ze zde neni automatizace, ktera by umoznovala uzivatelsky menit veci, ktere vyzaduji root pristup (sudo cestu zatim ponechme stranou).

Diky
« Poslední změna: 03. 06. 2022, 10:45:23 od Petr Krčmář »


CPU

  • *****
  • 869
    • Zobrazit profil
    • E-mail
Re:Proxy s API pro nastavení přístupu uživatelem
« Odpověď #1 kdy: 03. 06. 2022, 12:42:35 »
No a co tam prostě uploadovat pravidla firewallu?
Tj. mít systém, kde vedeš co kam může a tohle ládovat do FW? Třeba na té proxy?
Pokud systém k proxy může, ale ta od něj zahazuje data...tak to je stejně dobré, jako jiné ověření.

Re:Proxy s API pro nastavení přístupu uživatelem
« Odpověď #2 kdy: 03. 06. 2022, 13:52:22 »
No a co tam prostě uploadovat pravidla firewallu?
Tj. mít systém, kde vedeš co kam může a tohle ládovat do FW? Třeba na té proxy?
Pokud systém k proxy může, ale ta od něj zahazuje data...tak to je stejně dobré, jako jiné ověření.

Asi mi neco unika, ale jestli se bude rekonfigurovat firewall (iptables a novejsi) ci proxy (squid apod) je defacto to same (pomineme-li, ze proxy umi jen nektere typy protokolu), oboji by vyzadovalo akci na urovni root prav, pokud by nebylo nejake SW reseni, kere umi i "uzivatelskou" uroven.

Re:Proxy s API pro nastavení přístupu uživatelem
« Odpověď #3 kdy: 03. 06. 2022, 14:14:10 »
máme squid, pravidla v vault/consul, do těch máš api/cli/ui s podrobnými oprávněními a při změně přes consul-template se změna okamžitě propaguje (squid -k reconfigure pomůže k změně nastavení bez restartu).

Pokud je to pro tebe přílišný overkill, tak nahoď nějakou databázi, nad ní adminer, udělej cron, který z databáze bude generovat konfiguraci a refreshovat squid. Asi bych v tom nějaké složitosti nehledal, těhle udělátek máme všude tuny, vždy je vhodné to hodit do TODO, aby se to do budoucna udělalo systémově a do wiki, že něco takového existuje.

API moc rád nemám, pořád preferuji textové konfigurace a nějaké rozhraní nad nimi. Nestane se ti totiž, že máš nekonzistentní stav (které api dneska mají bulk nebo transakce?), máš přesný otisk nastavení v konfiguračním souboru, je možné notifikovat a auditovat změny, dokumentovat to a postavit kolem toho pěkný životní cyklus. Ošetřovat api je někdy šílenost (blbě se dělá retry, špatně se zpětně kontroluje co tam je a co tam není, generuje to příliš logů na hlídání atd.).

Re:Proxy s API pro nastavení přístupu uživatelem
« Odpověď #4 kdy: 03. 06. 2022, 14:50:00 »
máme squid, pravidla v vault/consul, do těch máš api/cli/ui s podrobnými oprávněními a při změně přes consul-template se změna okamžitě propaguje (squid -k reconfigure pomůže k změně nastavení bez restartu).

Pokud je to pro tebe přílišný overkill, tak nahoď nějakou databázi, nad ní adminer, udělej cron, který z databáze bude generovat konfiguraci a refreshovat squid. Asi bych v tom nějaké složitosti nehledal, těhle udělátek máme všude tuny, vždy je vhodné to hodit do TODO, aby se to do budoucna udělalo systémově a do wiki, že něco takového existuje.

Jn, asi jednodussi cesta ted nebude, nez to generovat cronem, spis me prekvapilo, ze neexistuje nejaky reseni typu proxy/gateway, ktere by slo modifikovat uzivatelsky (jako pouzivaji hostingy/cloudy)


Re:Proxy s API pro nastavení přístupu uživatelem
« Odpověď #5 kdy: 03. 06. 2022, 20:25:05 »
proxy nebo gateway?

Existují jich tuny, spíše tedy popiš k čemu to chceš.

Api má třeba Apache knox, Caddy, Traefik, IBM WebSEAL, f5 (iControl), Citrix atd. atd. Zpravidla open source nástroje jsou chudé s textovou konfigurací, u placených bývají vymazelné UI, protože to prodává, těžko asi budeš ukazovat na presell swagger a terminal.

Re:Proxy s API pro nastavení přístupu uživatelem
« Odpověď #6 kdy: 04. 06. 2022, 13:42:35 »
Priznam se ze sem uplne nepochopil Vas case, nicmene mozne reseni bych videl v libovolne gw/proxy s podporou oidc tokenu. Zakaznik si bude vydavat tokeny jak uzna za vhodne a vy je budete validovat na gw a dle claimu ridit pristup. Kde bude IdP (mue byt provazano s jeho ad) je uz vcelku fuk, jen Vase gw mu bude muset verit (mit public cast klice ktera tokeny overi). Dal se muzeme bavit jake schema pouzit, zda je mozne oidc codeflow ci jen overovat tokeny na gw. Na to jste dal malo informaci. Kouknete se na projekty typu nginx, oidc proxy, keycloak, dex apod.

Re:Proxy s API pro nastavení přístupu uživatelem
« Odpověď #7 kdy: 06. 06. 2022, 10:24:05 »
proxy nebo gateway?

Existují jich tuny, spíše tedy popiš k čemu to chceš.

Api má třeba Apache knox, Caddy, Traefik, IBM WebSEAL, f5 (iControl), Citrix atd. atd. Zpravidla open source nástroje jsou chudé s textovou konfigurací, u placených bývají vymazelné UI, protože to prodává, těžko asi budeš ukazovat na presell swagger a terminal.

Ja nevim, jak lepe to popsat. Mame inhouse aplikaci, kterou nabizime zakaznikum, bezi na nasich serverech. Z nasich serveru je bezne pristup smerem do internetu blokovany by default. A ted bychom potrebovali, aby zakaznici mohli v dane aplikace si sami nastavit nejakou externi sluzbu s kterou potrebuji komunikovat. A tuto externi sluzbu potrebuji povolit na proxy/gw bez toho, aby to musel nekdo rucne nastavovat. A vzhledem k tomu, ze mame oddelene sysops/devel konfiguracni stavy, tak nelze momentalne vyuzit napr. ansible CI/CD (sysops CI/CD ani nemame), kdy by "uzivatelske zmeny" sly prohnat sysops playbooky pro tu proxy/gw.

Re:Proxy s API pro nastavení přístupu uživatelem
« Odpověď #8 kdy: 06. 06. 2022, 11:22:55 »
Jn, asi jednodussi cesta ted nebude, nez to generovat cronem, spis me prekvapilo, ze neexistuje nejaky reseni typu proxy/gateway, ktere by slo modifikovat uzivatelsky (jako pouzivaji hostingy/cloudy)
Proxy/gateway jsou dvě různé aplikace. Hostingy/cloudy používají gateway, což je reverzní proxy – přijímá to požadavky pro omezený počet domén a gateway je rozhazuje mezi různé backendy. Vy píšete o proxy, která zprostředkovává komunikaci obecně pro libovolné domény. Mohl byste pro své účely použít i reverzní proxy (gateway), ale nevím, zda nenarazíte na nějaký problém.

Re:Proxy s API pro nastavení přístupu uživatelem
« Odpověď #9 kdy: 07. 06. 2022, 10:03:38 »
reverzní proxy ale při komunikaci ven s https bude dělat problémy s certifikáty a DNS. Tady bude opravdu nejlépe fungovat proxy server.

Mrkni třeba na mitmproxy, má to web ui i api, výkon trochu horší než squid, ale umíš v tom udělat skoro to stejné. Stejně tak by pro tvoje účaly mohlo sloužit Envoy (má api), je sice pro service mesh a k8s, ale http proxy protokol umí.