Quando crei un progetto Google Cloud, sei l'unico utente del progetto. Per impostazione predefinita, nessun altro utente ha accesso al tuo progetto o alle sue risorse, incluse le risorse Google Kubernetes Engine (GKE). GKE supporta più opzioni per gestire l'accesso alle risorse all'interno del progetto e dei suoi cluster utilizzando controllo dell'accesso basato sui ruoli (RBAC).
- Identity and Access Management (IAM)
- Controllo controllo dell'accesso basato su ruoli (RBAC) di Kubernetes
Questi meccanismi hanno alcune sovrapposizioni funzionali, ma sono mirati a diversi tipi di risorse. Ognuno di essi è spiegato in una sezione di seguito, ma in breve:
Kubernetes RBAC è integrato in Kubernetes e concede autorizzazioni granulari agli oggetti all'interno dei cluster Kubernetes. Le autorizzazioni esistono come oggetti ClusterRole o Role all'interno del cluster. Gli oggetti RoleBinding concedono ruoli autenti Kubernetes, utenti Google Cloud, account di servizio IAM o Google Gruppi.
Se usi principalmente GKE e hai bisogno di autorizzazioni granulari per ogni oggetto e operazione all'interno del tuo cluster, Kubernetes RBAC è la scelta migliore.
IAM gestisce le risorse Google Cloud, inclusi cluster e tipi di oggetti all'interno dei cluster. Le autorizzazioni vengono assegnate alle entità IAM.
Non esiste un meccanismo per concedere autorizzazioni per oggetti Kubernetes specifici all'interno di IAM. Ad esempio, puoi concedere a un utente l'autorizzazione per creare CustomResourceDefinitions (CRD), ma non puoi concedere l'autorizzazione per creare solo una specifica CustomResourceDefinition oppure limitare la creazione a uno spazio dei nomi specifico o a un cluster specifico nel progetto. Un ruolo IAM concede privilegi in tutti i cluster nel progetto o in tutti i cluster in tutti i progetti figlio se il ruolo viene applicato a livello di cartella.
Se utilizzi più componenti di Google Cloud e non hai bisogno di gestire autorizzazioni granulari specifiche di Kubernetes, IAM è un'ottima scelta.
Kubernetes RBAC
Kubernetes offre il supporto integrato per RBAC, che consente di creare ruoli granulari che esistono all'interno del cluster Kubernetes. Un Ruolo può avere come ambito un oggetto Kubernetes specifico o un tipo di oggetto Kubernetes e definisce quali azioni (chiamate verbi) concede il Ruolo in relazione a quell'oggetto. Un RoleBinding è anche un oggetto Kubernetes e concede ruoli agli utenti. Un utente GKE può essere:
- Utente Google Cloud
- Account di servizio IAM
- Account di servizio Kubernetes
- Utente Google Workspace
- Gruppo Google di Google Workspace
- Utenti autenticati mediante certificati client X509
Per scoprire di più, consulta la sezione Controllo degli accessi basato su ruoli.
IAM
IAM consente di concedere i ruoli alle entità. Un ruolo è una raccolta di autorizzazioni e, se concesso a un'entità, controlla l'accesso a una o più risorse Google Cloud. Puoi utilizzare i seguenti tipi di ruoli:
- I ruoli di base forniscono autorizzazioni generiche limitate a Proprietario, Editor e Visualizzatore.
- I ruoli predefiniti, ad esempio i ruoli predefiniti per GKE, forniscono un accesso più granulare rispetto ai ruoli di base e sono adatti a molti casi d'uso comuni.
- I ruoli personalizzati consentono di creare combinazioni univoche di autorizzazioni.
Un'entità può essere una delle seguenti:
- Account utente
- Account di servizio
- Gruppo Google di Google Workspace
- Dominio Google Workspace
- Dominio Cloud Identity
Tipi di criteri IAM
IAM supporta i seguenti tipi di criteri:
- Consenti criteri: concedi i ruoli alle entità. Per maggiori dettagli, consulta Criterio di autorizzazione.
- Criteri di negazione: impediscono alle entità di utilizzare autorizzazioni IAM specifiche, indipendentemente dai ruoli concessi. Per maggiori dettagli, consulta Criteri di negazione.
Utilizza i criteri di negazione per impedire a entità specifiche di eseguire azioni specifiche nel progetto, nella cartella o nell'organizzazione, anche se un criterio di autorizzazione IAM concede a queste entità un ruolo contenente le autorizzazioni pertinenti.
Suggerimenti IAM
Valuta l'utilizzo dei seguenti ruoli IAM predefiniti per facilitare gli scenari comuni:
- Visualizzatore cluster Kubernetes Engine (
roles/container.clusterViewer
): DevOps, tecnici e sviluppatori di applicazioni che devono solo connettersi al cluster. - Amministratore cluster Kubernetes Engine (
roles/container.clusterAdmin
): amministratori della piattaforma e operatori di cluster che devono gestire uno o più cluster in un progetto Google Cloud.
Per un elenco dei ruoli IAM predefiniti disponibili, consulta Ruoli GKE predefiniti.
Inoltre, valuta la possibilità di creare un account di servizio IAM personalizzato da utilizzare per i nodi al posto dell'account di servizio predefinito di Compute Engine. Concedi all'account di servizio personalizzato le autorizzazioni minime necessarie per il funzionamento di GKE. Per le istruzioni, consulta Utilizzare gli account di servizio IAM con privilegi minimi.
Interazione IAM con Kubernetes RBAC
IAM e Kubernetes RBAC collaborano per aiutarti a gestire l'accesso al cluster. RBAC controlla l'accesso a livello di cluster e spazio dei nomi, mentre IAM funziona a livello di progetto. Un'entità deve avere autorizzazioni sufficienti a entrambi i livelli per funzionare con le risorse del cluster.
Passaggi successivi
- Leggi la panoramica sulla sicurezza di GKE.
- Scopri come utilizzare Kubernetes RBAC.
- Scopri come creare criteri IAM per GKE.
- Scopri come utilizzare le condizioni IAM per i bilanciatori del carico.