Questa pagina spiega come proteggere un'istanza Google Kubernetes Engine (GKE) con Identity-Aware Proxy (IAP).
Per proteggere le risorse non presenti su Google Cloud, consulta Protezione di app e risorse on-premise.
Panoramica
IAP è integrato tramite Ingress per GKE. Questa integrazione ti consente di controllare l'accesso alle risorse per i dipendenti anziché utilizzare una VPN.
In un cluster GKE, il traffico in entrata viene gestito dal bilanciamento del carico HTTP(S), un componente di Cloud Load Balancing. Il bilanciatore del carico HTTP(S) viene in genere configurato dal controller Ingress di Kubernetes. Il controller Ingress riceve le informazioni di configurazione da un oggetto Ingress Kubernetes associato a uno o più oggetti Service. Ogni oggetto Service contiene informazioni di routing utilizzate per indirizzare una richiesta in entrata a un pod e a una porta specifici.A partire dalla versione 1.10.5-gke.3 di Kubernetes, puoi aggiungere la configurazione per il bilanciatore del carico associando un servizio a un oggetto BackendConfig. BackendConfig è una definizione di risorsa personalizzata definita nel repository kubernetes/ingress-gce.
Il controller Ingress di Kubernetes legge le informazioni di configurazione da BackendConfig e configura il bilanciatore del carico di conseguenza. Un oggetto BackendConfig contiene informazioni di configurazione specifiche per Cloud Load Balancing e consente di definire una configurazione separata per ogni servizio di backend di bilanciamento del carico HTTP(S).Prima di iniziare
Per abilitare IAP per GKE, devi disporre di:
- Un progetto della console Google Cloud con fatturazione abilitata.
- Un gruppo di una o più istanze GKE, gestito da un bilanciatore del carico HTTPS. Il bilanciatore del carico deve essere creato automaticamente quando crei un oggetto Ingress in un cluster GKE.
- Scopri di più sulla creazione di una risorsa Ingress per HTTPS.
- Un nome di dominio registrato all'indirizzo del bilanciatore del carico.
- Il codice dell'app per verificare che tutte le richieste abbiano un'identità.
- Scopri di più sul recupero dell'identità dell'utente.
Abilitazione di IAP
Se non hai configurato la schermata per il consenso OAuth del progetto, ti verrà chiesto di farlo. Per configurare la schermata per il consenso OAuth, consulta Configurazione della schermata per il consenso OAuth.
Se utilizzi GKE 1.24 o versioni successive, puoi configurare IAP e GKE utilizzando l'API Kubernetes Gateway. Per farlo, completa i seguenti passaggi, quindi segui le istruzioni riportate in Configura IAP.
Non configurare BackendConfig.
Configurazione dell'accesso IAP
-
Vai alla pagina Identity-Aware Proxy.
Vai alla pagina Identity-Aware Proxy - Seleziona il progetto che vuoi proteggere con IAP.
-
Seleziona la casella di controllo accanto alla risorsa a cui vuoi concedere l'accesso.
Se non vedi una risorsa, assicurati che sia stata creata e che BackendConfig e il controller Ingress di Compute Engine siano sincronizzati.
Per verificare che il servizio di backend sia disponibile, esegui questo comando gcloud:
gcloud compute backend-services list - Nel riquadro laterale a destra, fai clic su Aggiungi entità.
-
Nella finestra di dialogo Aggiungi entità che viene visualizzata, inserisci gli indirizzi email dei gruppi o delle persone che devono avere il ruolo Utente app web con protezione IAP per il progetto.
I seguenti tipi di entità possono avere questo ruolo:
- Account Google: user@gmail.com
- Gruppo Google: admins@googlegroups.com
- Service account: server@example.gserviceaccount.com
- Dominio Google Workspace: example.com
Assicurati di aggiungere un Account Google a cui hai accesso.
- Seleziona Cloud IAP > Utente app web con protezione IAP dall'elenco a discesa Ruoli.
- Fai clic su Salva.
Configurazione di BackendConfig
Puoi configurare un BackendConfig per IAP aggiungendo un blocco iap.
Aggiunta di un blocco iap a BackendConfig
Per configurare BackendConfig per IAP, devi specificare il valore enabled. Assicurati di avere l'autorizzazione compute.backendServices.update e aggiungi il blocco iap a BackendConfig.
Per GKE 1.16.8-gke.3 e versioni successive, utilizza la versione API cloud.google.com/v1.
Se utilizzi una versione precedente di GKE, utilizza cloud.google.com/v1beta1.
apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
name: CONFIG_DEFAULT
namespace: my-namespace
spec:
iap:
enabled: trueAssocia una porta di servizio a un oggetto BackendConfig
Devi anche associare le porte del servizio al tuo BackendConfig per attivare IAP. Un modo per creare questa associazione è impostare tutte le porte del servizio in modo che utilizzino il valore predefinito di BackendConfig. Per farlo, aggiungi la seguente annotazione alla risorsa Service:
metadata:
annotations:
cloud.google.com/backend-config: '{"default": "CONFIG_DEFAULT"}'Verifica la risorsa BackendConfig
Per testare la configurazione, esegui kubectl get event. Se visualizzi il messaggio "no BackendConfig for service port exists", significa che hai associato correttamente una porta di servizio al tuo BackendConfig, ma la risorsa BackendConfig non è stata trovata. Questo errore può verificarsi se non hai creato la risorsa BackendConfig, se l'hai creata nello spazio dei nomi errato o se hai digitato in modo errato il riferimento nell'annotazione di servizio.
Disattivazione di IAP
Per disattivare IAP, devi impostare enabled su false in BackendConfig. Se elimini il blocco IAP da BackendConfig, le impostazioni rimarranno invariate. Ad esempio, se IAP è abilitato ed elimini il blocco, IAP rimarrà attivo.
Passaggi successivi
- Imposta regole di contesto più complete applicando i livelli di accesso.
- Vedi Log di accesso sensibile al contesto in Cloud Audit Logs.
- Scopri di più su IAP.
- [Scopri come configurare Cloud CDN su GKE][cdn].
- [Scopri come configurare Cloud Armor per GKE][armor].
- Scopri di più sulla risorsa BackendConfig.