Crea criteri di autorizzazione IAM


Questa pagina spiega come creare criteri di autorizzazione Identity and Access Management (IAM) per l'autorizzazione in Google Kubernetes Engine (GKE).

Panoramica

Ogni chiamata all'API Google Cloud, GKE e Kubernetes richiede che l'account che effettua la richiesta disponga delle autorizzazioni necessarie. Per impostazione predefinita, nessuno tranne te può accedere al tuo progetto o alle sue risorse. Puoi utilizzare IAM per gestire chi può accedere al tuo progetto e cosa può fare. Le autorizzazioni IAM funzionano 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 di organizzazione, anche se fornisce diversi ruoli predefiniti specifici per GKE.

Per concedere agli utenti e agli account di servizio l'accesso al tuo progetto Google Cloud, li aggiungi come membri del team di progetto, quindi assiegna i ruoli ai membri del team. I ruoli definiscono a quali risorse Google Cloud può accedere un account e quali operazioni 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 operazioni:

  • Attiva l'API Google Kubernetes Engine.
  • Attiva l'API Google Kubernetes Engine
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installa e poi inizializza 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, il controllo degli 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 funzionare insieme. Un'entità deve disporre di autorizzazioni RBAC e IAM sufficienti per lavorare con le risorse del cluster.

Ruoli IAM

Le sezioni seguenti descrivono i ruoli IAM disponibili in Google Cloud.

Ruoli GKE predefiniti

IAM fornisce ruoli predefiniti che consentono 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/container.admin 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/iam.serviceAccountUser) on the user-managed service account that your nodes will use.

  • Project
roles/container.cloudKmsKeyUser Kubernetes Engine KMS Crypto Key User Allow the Kubernetes Engine service agent in the cluster project to call KMS with user provided crypto keys to sign payloads.
roles/container.clusterAdmin 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/iam.serviceAccountUser) on the user-managed service account that your nodes will use.

  • Project
roles/container.clusterViewer Kubernetes Engine Cluster Viewer

Provides access to get and list GKE clusters.

roles/container.defaultNodeServiceAccount Kubernetes Engine Default Node Service Account Least privilege role to use as the default service account for GKE Nodes.
roles/container.developer Kubernetes Engine Developer

Provides access to Kubernetes API objects inside clusters.

  • Project
roles/container.hostServiceAgentUser 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/container.viewer Kubernetes Engine Viewer

Provides read-only access to resources within GKE clusters, such as nodes, pods, and GKE API objects.

  • Project

Per un elenco completo delle singole autorizzazioni in ogni ruolo, consulta Ruoli di Google Kubernetes Engine. Puoi anche visualizzare le autorizzazioni in ogni ruolo IAM utilizzando la 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 per tutte le risorse Google Cloud. Per mantenere il progetto e i cluster al sicuro, utilizza ruoli predefiniti, se possibile.

Per scoprire di più sui ruoli di base, consulta Ruoli di base nella documentazione IAM.

Ruolo Utente account di servizio

Utente account di servizio concede a un account utente Google Cloud l'autorizzazione per eseguire azioni come se fosse un account di servizio.

  • La concessione del ruolo iam.serviceAccountUser a un utente per un progetto assegna 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 un account di servizio specifico consente all'utente di disporre di tutti i ruoli concessi a quell'account di servizio.

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 di IAM.

Il seguente comando 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 servizio host

Il ruolo Utente agente di servizio host viene utilizzato solo nei cluster VPC condiviso. 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 che definisci.

Per scoprire come creare e assegnare ruoli personalizzati, consulta Creare e gestire ruoli personalizzati.

Visualizzare le autorizzazioni concesse dai ruoli IAM

Puoi visualizzare le autorizzazioni concesse da ciascun ruolo utilizzando la gcloud CLI o la console Google Cloud.

gcloud

Per visualizzare le autorizzazioni concesse da un ruolo specifico, esegui il seguente comando:

gcloud iam roles describe roles/ROLE

Sostituisci ROLE con qualsiasi 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, svolgi i seguenti passaggi:

  1. Vai alla sezione Ruoli della pagina IAM e amministrazione nella console Google Cloud.

    Vai a IAM e amministrazione

  2. Per visualizzare i ruoli per GKE, inserisci Kubernetes Engine nel campo Filtra tabella.

  3. Seleziona il ruolo che vuoi visualizzare. Viene visualizzata la descrizione del ruolo e un elenco delle autorizzazioni assegnate.

Gestione dei ruoli IAM

Per scoprire come gestire i ruoli e le autorizzazioni IAM per gli utenti umani, consulta Concedere, modificare e revocare l'accesso ai membri del progetto nella documentazione IAM.

Per gli account di servizio, consulta Concedere ruoli agli account di servizio.

Esempi

Ecco alcuni esempi di come funziona IAM con GKE:

  • Un nuovo dipendente si è unito a un'azienda. Devono essere aggiunti al progetto Google Cloud, ma devono solo visualizzare i cluster del progetto e altre risorse Google Cloud. Il proprietario del progetto assegna loro 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 lavora in operazioni e deve aggiornare un cluster utilizzando gcloud o la console Google Cloud. Questa operazione richiede l'autorizzazione container.clusters.update, pertanto il proprietario del progetto assegna il ruolo Amministratore di cluster Kubernetes Engine. Ora il dipendente dispone delle autorizzazioni concesse sia dal ruolo Amministratore cluster di Kubernetes Engine sia dal ruolo Visualizzatore Compute.
  • Il dipendente deve verificare il motivo per cui un deployment presenta problemi. Deve eseguire kubectl get pods per visualizzare i pod in esecuzione nel cluster. Il lavoratore dispone già del ruolo Visualizzatore Compute, che non è sufficiente per elencare i pod. Il dipendente deve disporre del ruolo Visualizzatore Kubernetes Engine.
  • Il dipendente deve creare un nuovo cluster. Il proprietario del progetto concede al dipendente il ruolo Utente account di servizio nell'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. Per impostazione predefinita, GKE collega questo account di servizio ai nodi in modo che i carichi di lavoro di sistema possano inviare dati come log e metriche a Google Cloud.

Passaggi successivi