Zabezpečení mikroslužeb pomocí rolí a privilegií

Zabezpečení mikroslužeb pomocí rolí a privilegií
« kdy: 28. 09. 2020, 17:43:57 »
Ahojte, predstavte si biznis mikrosluzby, ktore su schovane v internej sieti, a niesu teda viditelne pre vonkajsi svet. Pristup k nim je cez springovu gateway, ktora smeruje requesty na pozadovane sluzby. Obcas sa moze stat situacia, ze jedna mikrosluzba, potrebuje volat inu mikrosluzbu. Potrebujeme tuto architekturu zabezpecit pomocou roli, a privilegii. Klienti ktory pristupuju k tymto mikrosluzbam su SPA aplikacie, a teda na autorizaciu uzivatelov pouzivame jwt.

Je podla vas ok mat tieto skryte mikrosluzby nezabezpecene, a riesit autorizaciu uz v gateway, alebo by ste gateway pouzili len na smerovanie requestov na konkretne mikrosluzby?

Ak by gateway sluzila len ako routovaci nastroj, mam druhy otazku, a to ako zabezpecit mikrosluzby, ak niekedy jedna mikrosluzba potrebuje volat inu? Poviem priklad:

Mikrosluzba A obsahuje zabezpeceny endopint pre rolu ADMIN, ktory vrati citlivejsie data. Takze z FE by tento endpoint nemal pravo zavolat uzivatel s inou rolou.
Na druhu stranu existuje mikrosluzba B, ktora ma endpoint pouzivatela s rolou USER. V ramci toho request potrebuje prevolat mikrosluzbu A kde su citlivejsie data, a z nich vytiahnut niektore udaje. V skratke, volanie medzi mikrosluzbami by nemalo byt obmedzovane ziadnymi rolami, a malo by to byt v kompetencii developera co zobrazi a co nie.
« Poslední změna: 28. 09. 2020, 18:25:04 od Petr Krčmář »


AoK

  • ***
  • 160
    • Zobrazit profil
Re:Zabezpečení mikroslužeb pomocí rolí a privilegií
« Odpověď #1 kdy: 28. 09. 2020, 18:47:35 »
zabezpečení by mělo být nedílnou součástí tvojí logické infrastruktury a nemělo by záležet na implementaci v jednotlivých mikroslužbách.

Osobně bych volil to co se mi již osvětčilo, kerberos (např. kerberos over ssl ala spnego) pro hlídání komunikace mezi jednotlivými službami a řešení primárně autentizace. Pro autorizace kerberos funguje jen částečně (na základně získávání SPN podle rolí), pro detailnější práva bych nasadil něco jako shiro v javě, v jiném prostředí třeba Apache Ranger.

Pak se dostaneš do situace, kdy služba kdykoliv je schopná navázat spojení s jinou mikroservisou, zároveň to implikuje jejích oprávnění.

Cest je ale spousta, tohle je jedna z možností, která se mi osvědčila a mám jí rád.