Hai costruito Kubernetes? Ora prova questi 5 strumenti RBAC per controllare le autorizzazioni

Pubblicato: 2022-03-14

Kubernetes RBAC è un metodo di autorizzazione efficiente basato sui ruoli utilizzato per fornire un accesso granulare alle risorse in un cluster Kubernetes.

Tuttavia, se non viene utilizzato correttamente, può facilmente causare una catastrofe di conformità. Ecco perché abbiamo bisogno di strumenti RBAC per controllare e individuare le autorizzazioni rischiose in Kubernetes.

In questo articolo, discuteremo cos'è Kubernetes RBAC, perché è importante controllare le autorizzazioni rischiose e scoprire gli strumenti che possono aiutarci al meglio nel controllo delle autorizzazioni rischiose!

Cos'è l'RBAC?

Il controllo dell'accesso basato sui ruoli (RBAC) è un meccanismo di sicurezza in cui ogni autorizzazione di accesso si basa su ruoli assegnati a un utente. Con questo sistema è quindi possibile limitare l'accesso alle risorse di un cluster Kubernetes (namespace, pod, job) alle applicazioni o agli utenti.

In Kubernetes, i criteri RBAC possono essere utilizzati per gestire i diritti di accesso di un utente del sistema (Utente o Gruppo) nonché quelli degli account di servizio (Account di servizio).

Esistono altri modi per autorizzare gli utenti in Kubernetes come ABAC (controllo dell'accesso basato sugli attributi), tramite Webhook o Node Authorization, ma il meccanismo di autorizzazione nativo più utilizzato e disponibile nella versione stabile è RBAC.

Praticamente tutta l'interazione con le risorse avviene tramite il suo server API, il che significa che, alla fine, tutto si limita a fare richieste HTTP a detto server (componente essenziale del nodo/i master o del Pannello di controllo).

Kubernetes dispone di quattro oggetti relativi a RBAC che possono essere combinati per impostare le autorizzazioni di accesso alle risorse del cluster. Questi sono Role, ClusterRole, RoleBinding e ClusterRoleBinding. Per lavorare con questi oggetti, come tutti gli oggetti Kubernetes, è necessario utilizzare l'API Kubernetes.

Ruoli in Kubernetes

In Kubernetes esistono due tipi di ruoli chiamati Role e ClusterRole. La più grande differenza tra i due è che il ruolo appartiene a uno spazio dei nomi concreto, mentre il ClusterRole è globale per il cluster. Quindi, nel caso di ClusterRole, il suo nome deve essere univoco poiché appartiene al cluster. Nel caso del ruolo, due spazi dei nomi diversi possono avere un ruolo con lo stesso nome.

Un'altra differenza che dovrebbe essere menzionata è che Role consente l'accesso a risorse che si trovano all'interno dello stesso namespace, mentre ClusterRole, oltre a poter dare accesso a risorse in qualsiasi namespace, può anche dare accesso a risorse nello stesso namespace come i nodi tra gli altri.

Ora che conosciamo i tipi di ruoli, la cosa successiva è sapere a chi possiamo assegnare questi ruoli. In questo caso, abbiamo Account utente, Account di servizio e Gruppi. Gli account utente sono account assegnati a un determinato utente, mentre gli account di servizio vengono utilizzati dai processi. Ad esempio, immagina che la nostra applicazione debba accedere a livello di codice alle risorse dal cluster, per questo utilizzeremmo un account di servizio.

Infine, abbiamo bisogno della "colla" che leghi un ruolo a un account (utente o servizio) o gruppo. Ci sono due risorse in Kubernetes per questo: RoleBinding e ClusterRoleBinding. RoleBinding può fare riferimento a un ruolo che si trova nello stesso spazio dei nomi, mentre ClusterRoleBinding può fare riferimento a qualsiasi ruolo in qualsiasi spazio dei nomi e assegnare autorizzazioni a livello globale.

Ricordiamo che i permessi consentono solo l'accesso alle risorse, perché “di default tutto è negato” ed è possibile assegnare più ruoli allo stesso utente

L'unico prerequisito per l'utilizzo di RBAC è che sia abilitato sul nostro cluster utilizzando l'opzione " –authorization-mode=RBAC ". Possiamo verificarlo usando il comando:

 kubectl api-versions

Quali sono le autorizzazioni RBAC rischiose e come risolverle?

Qualsiasi autorizzazione che consente o può consentire l'accesso non autorizzato alle risorse del pod è considerata un'autorizzazione rischiosa. Ad esempio, se un utente dispone dell'autorizzazione di modifica, può modificare il proprio ruolo e accedere a risorse a cui non è altrimenti consentito accedere. Ciò può causare un problema di conformità. Allo stesso modo, se le vecchie autorizzazioni vengono lasciate deselezionate, alcuni utenti possono accedere a risorse di cui non hanno più bisogno.

È difficile e dispendioso in termini di tempo trovare manualmente tali autorizzazioni rischiose quando si dispone di un numero elevato di ruoli. Per eseguire questo processo sono disponibili numerosi strumenti di controllo delle autorizzazioni RBAC che consentono di eseguire la scansione dell'intero cluster per individuare eventuali autorizzazioni rischiose. È anche importante comprendere che l'efficacia di RBAC dipende da un criterio RBAC aggiornato che a sua volta richiede un controllo regolare delle autorizzazioni.

Di seguito sono riportati alcuni dei migliori strumenti RBAC per controllare le autorizzazioni in base a diverse lingue e interfacce utente.

KubiScan

KubiScan è uno strumento RBAC basato su Python per la scansione di autorizzazioni rischiose in un cluster Kubernetes. Lo strumento deve essere eseguito all'interno del nodo Master e quindi può essere eseguito direttamente dal terminale per fornire un elenco di autorizzazioni rischiose. Kubiscan può essere utilizzato per trovare ruoli rischiosi, ClusterRoles, RoleBindings, ClusterBindings, Soggetti, Pod e persino Container.

Krane

Krane di Appvia è uno strumento di analisi e visualizzazione statica Kubernetes RBAC basato su Ruby. Può essere eseguito sia localmente come CLI che in una pipeline CI/CD. Inoltre, può funzionare anche come servizio autonomo all'interno di un container Kubernetes. Krane offre la funzionalità per analizzare le autorizzazioni RBAC attraverso viste di rete ad albero e grafico a faccette. Fornisce anche avvisi per eventuali autorizzazioni rischiose attraverso la sua integrazione Slack.

Strumento RBAC

Lo strumento RBAC di InsightCloudSec è uno strumento autonomo di controllo delle autorizzazioni creato con Go. Non solo ti consente di scansionare ed evidenziare le autorizzazioni RBAC rischiose, ma ti consente anche di generare criteri RBAC dal controllo delle autorizzazioni attraverso la sua funzione Auditgen. Lo strumento RBAC offre anche la funzionalità di visualizzazione RBAC.

Vento favorevole

Fairwinds Insight è uno strumento autonomo che fornisce una serie di funzionalità di sicurezza e conformità di Kubernetes. La sua funzione di applicazione dei criteri consente di controllare le autorizzazioni RBAC e di scansionarle rispetto ai criteri standard e personalizzati. Fairwinds offre una demo su richiesta.

Gestore delle autorizzazioni

Permission Manager di Sighup è uno strumento di gestione delle autorizzazioni Kubernetes basato su Javascript. Offre un modo semplice e di iniziativa per gestire le autorizzazioni degli utenti all'interno di un cluster Kubernetes. Permission Manager offre anche un'edizione aziendale dello strumento che consente di eseguire il controllo delle autorizzazioni RBAC di base.

Conclusione

Kubernetes RBAC è un modo efficiente per gestire l'accesso alle risorse in un cluster Kubernetes. Tuttavia, se non implementato correttamente, può causare problemi di sicurezza e conformità. Questo, tuttavia, può essere evitato controllando continuamente le autorizzazioni tramite gli strumenti di controllo RBAC.

Potresti anche essere interessato alle migliori pratiche di Kubernetes.