Questo documento descrive le differenze tra Identity and Access Management (IAM) e controllo dell'accesso basato su ruoli (RBAC) di Kubernetes in Google Kubernetes Engine per aiutarti a gestire l'accesso alle risorse all'interno del tuo progetto. Questo documento presuppone che tu conosca i seguenti concetti:
Questo documento è rivolto agli esperti di sicurezza che controllano l'accesso alle autorizzazioni e vogliono comprendere le differenze e le sovrapposizioni tra IAM e RBAC. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti diGoogle Cloud , consulta Ruoli e attività comuni degli utenti GKE.
Gestisci l'accesso alle risorse GKE
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 di Google Kubernetes Engine (GKE). GKE supporta più opzioni per la gestione dell'accesso alle risorse all'interno del progetto e dei relativi cluster utilizzando controllo dell'accesso basato su ruoli (RBAC).
Questi meccanismi hanno una certa sovrapposizione funzionale, ma sono destinati a tipi di risorse diversi. Ognuno di questi è spiegato in una sezione dedicata di questa pagina, 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 agli utenti Kubernetes Utenti Kubernetes, account utente federati o service account IAM.
Se utilizzi principalmente GKE e hai bisogno di autorizzazioni granulari per ogni oggetto e operazione all'interno del cluster, RBAC di Kubernetes è la scelta migliore.
IAM gestisce le risorse Google Cloud , inclusi i cluster e i 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 CustomResourceDefinition (CRD), ma non puoi concedergli l'autorizzazione per creare una sola CustomResourceDefinition specifica o limitare la creazione a uno spazio dei nomi specifico o a un cluster specifico nel progetto. Un ruolo IAM concede privilegi a tutti i cluster del progetto o a tutti i cluster di tutti i progetti figlio se il ruolo viene applicato a livello di cartella.
Se utilizzi più componenti Google Cloud e non hai bisogno di gestire autorizzazioni granulari specifiche di Kubernetes, IAM è una buona scelta.
Kubernetes RBAC
Kubernetes ha un supporto integrato per RBAC che ti consente di creare ruoli granulari, che esistono all'interno del cluster Kubernetes. Un ruolo può essere limitato a un oggetto Kubernetes specifico o a un tipo di oggetto Kubernetes e definisce le azioni (chiamate verbi) che il ruolo concede in relazione a quell'oggetto. Anche un RoleBinding è un oggetto Kubernetes e concede i ruoli agli utenti. Un utente GKE può essere:
- Account utente federato
- Account di servizio IAM
- ServiceAccount Kubernetes
- Utenti autenticati utilizzando certificati client X509
Per saperne di più, consulta Controllo degli accessi basato su ruoli.
IAM
IAM ti consente di concedere ruoli alle entità. Un ruolo è una raccolta di autorizzazioni e, se concesso a un'entità, consente a quest'ultima di accedere a una o più Google Cloud risorse. Per saperne di più su entità, ruoli e altra terminologia IAM, consulta Panoramica di IAM.
In GKE, un'entità può essere una delle seguenti:
- Account utente
- Service account
Per saperne di più sull'utilizzo di IAM per controllare l'accesso in GKE, consulta Crea policy di autorizzazione IAM.
Tipi di policy IAM
IAM supporta i seguenti tipi di policy:
- Policy di autorizzazione: concedono ruoli alle entità. Per i dettagli, consulta Policy di autorizzazione.
- Policy di negazione: impediscono alle entità di utilizzare autorizzazioni IAM specifiche, indipendentemente dai ruoli concessi alle entità. Per i dettagli, consulta Policy di negazione.
Utilizza le policy di negazione per impedire a entità specifiche di eseguire azioni specifiche nel progetto, nella cartella o nell'organizzazione, anche se una policy di autorizzazione IAM concede a queste entità un ruolo che contiene le autorizzazioni pertinenti.
Suggerimenti IAM
Prendi in considerazione l'utilizzo dei seguenti ruoli IAM predefiniti per facilitare gli scenari comuni:
- Visualizzatore di cluster Kubernetes Engine (
roles/container.clusterViewer): DevOps, ingegneri e sviluppatori di applicazioni che devono solo connettersi al cluster. - Kubernetes Engine Cluster Admin (
roles/container.clusterAdmin): amministratori della piattaforma e operatori dei 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.
GKE utilizza i service account IAM collegati ai nodi per eseguire attività di sistema come il logging e il monitoraggio. Come minimo, questi service account dei nodi devono avere il ruolo Kubernetes Engine Default Node Service Account (roles/container.defaultNodeServiceAccount) nel tuo progetto. Per impostazione predefinita, GKE utilizza l'account di servizio predefinito di Compute Engine, che viene creato automaticamente nel tuo progetto, come service account del nodo.
Interazione di IAM con RBAC di Kubernetes
IAM e RBAC di Kubernetes interagiscono per aiutarti a gestire l'accesso al tuo cluster. RBAC controlla l'accesso a livello di cluster e spazio dei nomi, mentre IAM opera a livello di progetto. Un'entità deve disporre di autorizzazioni sufficienti a entrambi i livelli per lavorare con le risorse nel tuo cluster.
Passaggi successivi
- Leggi la panoramica della sicurezza di GKE.
- Scopri come utilizzare il RBAC di Kubernetes.
- Scopri come creare policy IAM per GKE.
- Scopri come utilizzare le condizioni IAM per i bilanciatori del carico.