Kubernetes construit? Acum Încercați aceste 5 instrumente RBAC pentru a audita permisiunile
Publicat: 2022-03-14Kubernetes RBAC este o metodă eficientă de autorizare bazată pe roluri, utilizată pentru a oferi acces granular la resurse dintr-un cluster Kubernetes.
Cu toate acestea, dacă nu este utilizat în mod corespunzător, poate provoca cu ușurință o catastrofă a conformității. De aceea avem nevoie de instrumente RBAC pentru a audita și a localiza permisiunile riscante în Kubernetes.
În acest articol, vom discuta despre ce este RBAC Kubernetes, de ce este important să audităm permisiunile riscante și să descoperim instrumentele care ne pot ajuta cel mai bine în auditarea permisiunilor riscante!
Ce este RBAC?
Controlul accesului bazat pe roluri (RBAC) este un mecanism de securitate în care fiecare autorizație de acces se bazează pe roluri care sunt atribuite unui utilizator. Cu acest sistem, este, așadar, posibil să restricționați accesul la resursele unui cluster Kubernetes (spații de nume, poduri, joburi) la aplicații sau utilizatori.
În Kubernetes, politicile RBAC pot fi utilizate pentru a gestiona drepturile de acces ale unui utilizator de sistem (Utilizator sau Grup), precum și cele ale conturilor de serviciu (Cont de serviciu).
Există și alte modalități de autorizare a utilizatorilor în Kubernetes precum ABAC (controlul accesului bazat pe atribute), prin Webhook sau Node Authorization, dar cel mai utilizat și nativ mecanism de autorizare disponibil în versiunea stabilă este RBAC.
Practic, toată interacțiunea cu resursele se face prin serverul său API, ceea ce înseamnă că, în final, totul se limitează la a face cereri HTTP către serverul menționat (o componentă esențială a nodului/nodurilor master sau a panoului de control).
Kubernetes are patru obiecte legate de RBAC care pot fi combinate pentru a seta permisiunile de acces la resursele clusterului. Acestea sunt Role, ClusterRole, RoleBinding și ClusterRoleBinding. Pentru a lucra cu aceste obiecte, ca toate obiectele Kubernetes, trebuie utilizat API-ul Kubernetes.
Roluri în Kubernetes
În Kubernetes, există două tipuri de roluri numite Rol și ClusterRole. Cea mai mare diferență între cele două este că Rolul aparține unui spațiu de nume concret, în timp ce ClusterRole este global pentru cluster. Deci, în cazul ClusterRole, numele acestuia trebuie să fie unic, deoarece aparține clusterului. În cazul Rol, două spații de nume diferite pot avea un Rol cu același nume.
O altă diferență care trebuie menționată este că Role permite accesul la resurse care se află în același spațiu de nume, în timp ce ClusterRole, pe lângă faptul că poate oferi acces la resurse în orice spațiu de nume, poate oferi și acces la resurse din același spațiu de nume, cum ar fi nodurile printre alții.
Acum că știm tipurile de roluri, următorul lucru este să știm cui îi putem atribui aceste roluri. În acest caz, avem Conturi de utilizator, Conturi de servicii și Grupuri. Conturile de utilizator sunt conturi atribuite unui anumit utilizator, în timp ce conturile de serviciu sunt utilizate de procese. De exemplu, imaginați-vă că aplicația noastră trebuie să acceseze programatic resurse din cluster, pentru aceasta am folosi un cont de serviciu.
În cele din urmă, avem nevoie de „cleiul” care leagă un rol de un cont (utilizator sau serviciu) sau de grup. Există două resurse în Kubernetes pentru aceasta: RoleBinding și ClusterRoleBinding. RoleBinding poate face referire la un rol care se află în același spațiu de nume, în timp ce ClusterRoleBinding poate face referire la orice rol din orice spațiu de nume și poate atribui permisiuni la nivel global.
Ca o notă, permisiunile permit doar accesul la resurse, deoarece „în mod implicit, totul este refuzat” și este posibil să atribuiți mai multe roluri aceluiași utilizator
Singura condiție prealabilă pentru utilizarea RBAC este ca acesta să fie activat pe clusterul nostru folosind opțiunea „ –authorization-mode=RBAC
”. Putem verifica acest lucru folosind comanda:
kubectl api-versions
Care sunt permisiunile RBAC riscante și cum să le remediați?
Orice permisiune care permite sau poate permite accesul neautorizat la resursele pod este considerată permisiune riscantă. De exemplu, dacă un utilizator are permisiunea de editare, acesta își poate edita propriul Rol și poate accesa resurse pe care altfel nu are voie să le acceseze. Acest lucru poate duce la o problemă de conformitate. În mod similar, dacă permisiunile vechi sunt lăsate nebifate, atunci unii utilizatori pot accesa resurse de care nu mai au nevoie.

Este dificil și consumator de timp să găsiți manual o astfel de permisiune riscantă atunci când aveți un număr mare de roluri. Pentru a face acest proces, există o serie de instrumente de auditare a permisiunilor RBAC care vă ajută să vă scanați întregul Cluster pentru a găsi orice permisiuni riscante. De asemenea, este important să înțelegem că eficacitatea RBAC depinde de o politică actualizată RBAC care, la rândul său, necesită auditarea periodică a permisiunii.
Următoarele sunt unele dintre cele mai bune instrumente RBAC pentru a audita permisiunile bazate pe diferite limbi și interfețe cu utilizatorul.
KubiScan
KubiScan este un instrument RBAC bazat pe Python pentru scanarea permisiunilor riscante într-un cluster Kubernetes. Instrumentul trebuie să fie executat în nodul Master și apoi poate fi rulat direct din terminal pentru a oferi o listă de permisiuni riscante. Kubiscan poate fi folosit pentru a găsi roluri riscante, ClusterRoles, RoleBindings, ClusterBindings, Subjects, Pods și chiar Container.
Krane
Krane de Appvia este un instrument de analiză și vizualizare statică Kubernetes RBAC bazat pe Ruby. Poate fi rulat atât local ca CLI, cât și într-o conductă CI/CD. Mai mult, poate funcționa și ca un serviciu independent într-un container Kubernetes. Krane oferă caracteristica de a analiza permisiunile RBAC prin vederi de rețea cu fațete și grafice. De asemenea, oferă alerte pentru orice permisiuni riscante prin integrarea sa Slack.

Instrumentul RBAC
Instrumentul RBAC de la InsightCloudSec este un instrument autonom de auditare a permisiunilor construit cu Go. Nu vă permite doar să scanați și să evidențiați permisiunile RBAC riscante, dar vă permite, de asemenea, să generați o politică RBAC din auditul permisiunilor prin caracteristica Auditgen. Instrumentul RBAC oferă, de asemenea, caracteristica de vizualizare RBAC.
Vânturi fainoase
Fairwinds Insight este un instrument independent care oferă o serie de caracteristici de securitate și conformitate Kubernetes. Caracteristica sa de aplicare a politicii vă permite să auditați permisiunile RBAC și să le scanați în raport cu politicile standard și personalizate. Fairwinds oferă o demonstrație la cerere.

Manager de permisiuni
Permission Manager by Sighup este un instrument de gestionare a permisiunilor Kubernetes bazat pe Javascript. Oferă o modalitate simplă și inițiativă de a gestiona permisiunile utilizatorilor într-un cluster Kubernetes. Permission Manager oferă, de asemenea, o ediție de întreprindere a instrumentului, care vă permite să efectuați auditarea de bază a permisiunilor RBAC.
Concluzie
Kubernetes RBAC este o modalitate eficientă de a gestiona accesul la resurse dintr-un cluster Kubernetes. Cu toate acestea, dacă nu este implementat corespunzător, poate duce la probleme de securitate și de conformitate. Acest lucru, totuși, poate fi evitat prin auditarea continuă a permisiunilor prin instrumentele de audit RBAC.
Ați putea fi, de asemenea, interesat de Cele mai bune practici Kubernetes.