Questa pagina spiega come creare criteri di autorizzazione per Identity and Access Management (IAM) in Google Kubernetes Engine (GKE).
Panoramica
Ogni chiamata API Google Cloud, GKE e Kubernetes richiede che l'account che effettua la richiesta disponga delle autorizzazioni necessarie. Per impostazione predefinita, solo tu puoi accedere al tuo progetto o alle sue risorse. Puoi utilizzare IAM per gestire chi può accedere al tuo progetto e quali operazioni è consentito. Le autorizzazioni IAM operano insieme a Kubernetes RBAC, che fornisce controlli di accesso granulari per oggetti specifici all'interno di un cluster o di uno spazio dei nomi. IAM si concentra maggiormente sulle autorizzazioni a livello di progetto e organizzazione, sebbene offra diversi ruoli predefiniti specifici di GKE.
Per concedere agli utenti e agli account di servizio l'accesso al tuo progetto Google Cloud, aggiungili come membri del team di progetto, quindi assegna i ruoli ai membri del team. I ruoli definiscono le risorse Google Cloud a cui un account può accedere e le operazioni che può eseguire.
In GKE puoi anche utilizzare IAM per gestire gli utenti e gli account di servizio che possono accedere ai tuoi cluster ed eseguire operazioni al loro interno.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti attività:
- Abilita l'API Google Kubernetes Engine. Abilita l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività, installa e quindi initialize gcloud CLI. Se hai già installato gcloud CLI, ottieni la versione più recente eseguendo
gcloud components update
.
Interazione con Kubernetes RBAC
Kubernetes dispone di un meccanismo di controllo dell'accesso integrato di controllo controllo dell'accesso basato sui ruoli (RBAC). RBAC controlla l'accesso a livello di cluster e spazio dei nomi, mentre IAM funziona a livello di progetto.
IAM e RBAC possono interagire. Un'entità deve avere autorizzazioni RBAC e IAM sufficienti per lavorare con le risorse nel cluster.
Ruoli IAM
Le seguenti sezioni descrivono i ruoli IAM disponibili in Google Cloud.
Ruoli GKE predefiniti
IAM fornisce ruoli predefiniti che concedono l'accesso a risorse Google Cloud specifiche e impediscono l'accesso non autorizzato ad altre risorse.
IAM offre i seguenti ruoli predefiniti per GKE.
Role | Title | Description | Lowest resource |
---|---|---|---|
roles/ |
Kubernetes Engine Admin |
Provides access to full management of clusters and their Kubernetes API objects.
To set a service account on nodes, you must also have the Service Account User role
( |
|
roles/ |
Kubernetes Engine Cluster Admin |
Provides access to management of clusters.
To set a service account on nodes, you must also have the Service Account User role
( |
|
roles/ |
Kubernetes Engine Cluster Viewer |
Provides access to get and list GKE clusters. |
|
roles/ |
Kubernetes Engine Default Node Service Account Beta | Least privilege role to use as the default service account for GKE Nodes. | |
roles/ |
Kubernetes Engine Developer |
Provides access to Kubernetes API objects inside clusters. |
|
roles/ |
Kubernetes Engine Host Service Agent User |
Allows the Kubernetes Engine service account in the host project to configure shared network resources for cluster management. Also gives access to inspect the firewall rules in the host project. |
|
roles/ |
Kubernetes Engine Viewer |
Provides read-only access to resources within GKE clusters, such as nodes, pods, and GKE API objects. |
|
Per un elenco completo delle singole autorizzazioni in ciascun ruolo, consulta la pagina relativa ai ruoli di Google Kubernetes Engine. Puoi anche visualizzare le autorizzazioni in ciascun ruolo IAM utilizzando gcloud CLI o la console Google Cloud. Per le istruzioni, consulta Visualizzare le autorizzazioni concesse dai ruoli IAM.
Ruoli IAM di base
I ruoli IAM di base concedono agli utenti un accesso globale a livello di progetto a tutte le risorse Google Cloud. Per proteggere il progetto e i cluster, utilizza i ruoli predefiniti quando possibile.
Per saperne di più sui ruoli di base, consulta Ruoli di base nella documentazione di IAM.
Ruolo Utente account di servizio
L'Utente account di servizio concede a un account utente Google Cloud l'autorizzazione a eseguire azioni come se fossero eseguite da un account di servizio.
La concessione del ruolo
iam.serviceAccountUser
a un utente per un progetto fornisce all'utente tutti i ruoli concessi a tutti gli account di servizio del progetto, inclusi gli account di servizio che potrebbero essere creati in futuro.La concessione del ruolo
iam.serviceAccountUser
a un utente per uno specifico account di servizio fornisce all'utente tutti i ruoli concessi a quell'account.
Questo ruolo include le seguenti autorizzazioni:
iam.serviceAccounts.actAs
iam.serviceAccounts.get
iam.serviceAccounts.list
resourcemanager.projects.get
resourcemanager.projects.list
Per ulteriori informazioni sul ruolo ServiceAccountUser, consulta ServiceAccountUser nella documentazione IAM.
Il comando seguente mostra la sintassi per concedere il ruolo Utente account di servizio:
gcloud iam service-accounts add-iam-policy-binding \
SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
--member=user:USER \
--role=roles/iam.serviceAccountUser
Sostituisci quanto segue:
SA_NAME
: il nome dell'account di servizio.PROJECT_ID
: l'ID del tuo progetto Google Cloud.USER
: l'indirizzo email dell'utente.
Ruolo Utente agente di servizi host
Il ruolo Utente Agente di servizio Host viene utilizzato solo nei cluster VPC condivisi. Questo ruolo include le seguenti autorizzazioni:
compute.firewalls.get
container.hostServiceAgent.*
dns.networks.bindDNSResponsePolicy
dns.networks.bindPrivateDNSPolicy
dns.networks.bindPrivateDNSZone
Ruoli personalizzati
Se i ruoli predefiniti non soddisfano le tue esigenze, puoi creare ruoli personalizzati con le autorizzazioni da te definite.
Per informazioni su come creare e assegnare ruoli personalizzati, consulta Creazione e gestione di ruoli personalizzati.
Visualizza le autorizzazioni concesse dai ruoli IAM
Puoi visualizzare le autorizzazioni concesse da ciascun ruolo utilizzando gcloud CLI o la console Google Cloud.
gcloud
Per visualizzare le autorizzazioni concesse da un ruolo specifico, esegui questo comando:
gcloud iam roles describe roles/ROLE
Sostituisci ROLE
con un ruolo IAM.
I ruoli GKE hanno il prefisso roles/container
, ad esempio
gcloud iam roles describe roles/container.admin
.
Console
Per visualizzare le autorizzazioni concesse da un ruolo specifico, segui questi passaggi:
Vai alla sezione Ruoli della pagina IAM e amministrazione nella console Google Cloud.
Per visualizzare i ruoli per GKE, nel campo Filtra tabella, inserisci
Kubernetes Engine
.Seleziona il ruolo che vuoi visualizzare. Vengono visualizzati la descrizione del ruolo e un elenco di autorizzazioni assegnate.
Gestione dei ruoli IAM
Per informazioni su come gestire i ruoli e le autorizzazioni IAM per gli utenti umani, consulta Concessione, modifica e revoca dell'accesso ai membri del progetto nella documentazione di IAM.
Per gli account di servizio, consulta l'articolo Concessione di ruoli agli account di servizio.
Esempi
Ecco alcuni esempi di come funziona IAM con GKE:
- Un nuovo dipendente è entrato in un'azienda. Devono essere aggiunti al progetto Google Cloud, ma devono solo visualizzare i cluster del progetto e le altre risorse Google Cloud. Il proprietario del progetto assegna il ruolo Visualizzatore Compute a livello di progetto. Questo ruolo fornisce l'accesso di sola lettura per recuperare ed elencare i nodi, che sono risorse Compute Engine.
- Il dipendente sta lavorando nel reparto operativo e deve aggiornare un cluster utilizzando
gcloud
o la console Google Cloud. Questa operazione richiede l'autorizzazionecontainer.clusters.update
, quindi il proprietario del progetto gli assegna il ruolo Amministratore cluster Kubernetes Engine. Il dipendente ora dispone delle autorizzazioni concesse dai ruoli Amministratore cluster di Kubernetes Engine e Visualizzatore Compute. - Il dipendente deve cercare di capire perché un deployment ha problemi. Deve eseguire
kubectl get pods
per vedere i pod in esecuzione nel cluster. Il dipendente dispone già del ruolo Visualizzatore Compute, che non è sufficiente per elencare i pod. Il dipendente deve avere il ruolo Visualizzatore Kubernetes Engine. - Il dipendente deve creare un nuovo cluster. Il proprietario del progetto concede al dipendente il ruolo Utente account di servizio per l'account di servizio
PROJECT_NUMBER-compute@developer.gserviceaccount.com
, in modo che l'account del dipendente possa accedere all'account di servizio predefinito di Compute Engine. Questo account di servizio ha il ruolo Editor, che fornisce un ampio set di autorizzazioni.
Passaggi successivi
- Leggi la controllo dell'accesso dell'accesso
- Scopri come gestire l'accesso alle risorse Google Cloud
- Scopri di più sui criteri di autorizzazione
- Scopri di più sui criteri di negazione