Questa pagina descrive diversi metodi per proteggere i gateway in Google Kubernetes Engine (GKE). Puoi anche scoprire come proteggere un gateway.
Come funziona la sicurezza del gateway
Un gateway rappresenta il frontend di un bilanciatore del carico. Esistono due percorsi che puoi proteggere con l'autenticazione e la crittografia per i gateway:
- Da client a gateway: il traffico ha avuto origine sul client e si è concluso sul gateway.
- Da gateway a pod: il traffico ha avuto origine sul gateway e si è concluso sui pod di backend.
Il seguente diagramma mostra entrambi i percorsi per autenticare e criptare i gateway:
Questa pagina descrive come proteggere il percorso da client a gateway utilizzando i certificati caricati e gestiti a livello di gateway. Per scoprire come proteggere il traffico da gateway a pod, vedi Proteggere il traffico dal bilanciatore del carico all'applicazione utilizzando TLS.
Vantaggi
Puoi proteggere un'applicazione in molti modi diversi utilizzando l'API Gateway, che offre flessibilità a diversi ruoli che interagiscono con il gateway.
Chi possiede il dominio e la configurazione TLS?
Il modello dell'API Gateway introduce due ruoli che utilizzano o eseguono il deployment dei gateway:
- Amministratore della piattaforma: l'operatore del cluster è l'amministratore di interi cluster. Gestisce policy, accesso alla rete e autorizzazioni delle applicazioni.
- Sviluppatore di applicazioni: lo sviluppatore di applicazioni definisce la configurazione dell'applicazione e del servizio.
Il seguente diagramma mostra i campi nelle risorse Gateway e HTTPRoute che influenzano la proprietà del dominio e TLS per due applicazioni, store-v1 e store-v2.
Nel diagramma, l'operatore del cluster controlla:
- I domini che gli sviluppatori di applicazioni possono utilizzare per le loro app in ogni spazio dei nomi.
- I certificati specifici che terminano domini diversi.
- I certificati forniti dal proprietario del gateway.
- Se i proprietari di HTTPRoute possono specificare i propri nomi host per la generazione dei certificati.
Gli sviluppatori di applicazioni controllano il nome host che genera un certificato, se la definizione del gateway lo consente.
Questa separazione delle attività operative consente agli sviluppatori di applicazioni di eseguire il deployment e gestire il proprio HTTPRoute per un controllo più distribuito e agli amministratori della piattaforma di eseguire il deployment e gestire i gateway per il controllo centralizzato di TLS.
Gestione dei certificati del gateway
Puoi proteggere i gateway utilizzando uno dei seguenti metodi:
Se utilizzi i secret Kubernetes o le risorse SslCertificate dell'API Compute Engine, puoi collegare al massimo 15 certificati a un singolo gateway.
Certificate Manager ti consente di collegare fino a 10.000.000 di certificati per bilanciatore del carico, se richiedi un aumento della quota.
Per saperne di più sui Google Cloud certificati SSL, vedi Panoramica dei certificati SSL.
Secret Kubernetes
La specifica dell'API
Gateway
supporta i
secret Kubernetes
per archiviare e collegare i certificati ai gateway. Puoi associare uno o più secret Kubernetes a un gateway utilizzando il campo Gateway.spec.tls.certificateRef.
Le risorse del gateway protette tramite i secret Kubernetes hanno i seguenti requisiti:
- Devi impostare
porteprotocoldel listener del gateway su443eHTTPS. - Devi impostare il campo
listener.tls.modesuTerminate. - Devi fare riferimento alle credenziali TLS nel blocco
listeners.tls.
Le risorse del gateway protette tramite i secret Kubernetes hanno le seguenti limitazioni:
- Solo i listener HTTPS terminano il traffico utilizzando i secret specificati, anche se puoi specificare più listener con un mix di HTTP e HTTPS.
- Se hai più listener che utilizzano HTTPS sullo stesso gateway, ogni listener deve avere un nome host univoco.
- Puoi omettere un solo nome host o assegnare
*per ogni coppia porta e protocollo. - Puoi assegnare un solo certificato predefinito per ogni gateway.
Per scoprire come proteggere un gateway utilizzando un secret Kubernetes, vedi Proteggere un gateway utilizzando un secret Kubernetes.
Certificati SSL
I certificati SSL archiviano e forniscono i certificati ai bilanciatori del carico. Un certificato SSL può essere autogestito o gestito da Google.
- I certificati SSL autogestiti sono certificati che ottieni, di cui esegui il provisioning e che rinnovi autonomamente.
- I certificati SSL gestiti da Google sono certificati che Google Cloud ottiene, gestisce e rinnova automaticamente.
Per saperne di più sulle differenze tra questi due tipi di certificati, vedi Panoramica dei certificati SSL.
L'ambito e la località del certificato SSL devono corrispondere all'ambito e alla località del gateway che lo utilizza. Ad esempio, un certificato SSL globale non può essere utilizzato da un gateway regionale.
La tabella seguente elenca i requisiti di ambito e località dei certificati SSL per ogni GatewayClass:
| GatewayClass | Ambito del certificato SSL | Località del certificato SSL |
|---|---|---|
gke-l7-global-external-managed |
Certificato SSL globale | Globale |
gke-l7-global-external-managed-mc |
||
gke-l7-gxlb |
||
gke-l7-gxlb-mc |
||
gke-l7-regional-external-managed |
Certificato SSL a livello di regione | Deve essere la stessa regione del gateway |
gke-l7-regional-external-managed-mc |
||
gke-l7-cross-regional-internal-managed-mc |
||
gke-l7-rilb |
||
gke-l7-rilb-mc |
I certificati SSL gestiti da Google non sono compatibili con i gateway regionali. Per proteggere i gateway regionali, utilizza invece Certificate Manager.
Per scoprire come proteggere un gateway utilizzando un certificato SSL, vedi Proteggere un gateway utilizzando un certificato SSL.
Certificate Manager
Certificate Manager è una posizione centralizzata per gestire i certificati TLS.
Quando proteggi un gateway utilizzando Certificate Manager, puoi:
- Fai riferimento a un
CertificateMapdirettamente da un gateway creato in Certificate Manager. - Gestisci i tuoi certificati.
- Migliora i tempi di propagazione dei certificati.
- Utilizza Cloud Monitoring per i certificati scaduti e la propagazione dei certificati.
Certificate Manager supporta i certificati SSL autogestiti e gestiti da Google. Per scoprire come proteggere un gateway utilizzando Certificate Manager, vedi Proteggere un gateway utilizzando Certificate Manager.
Supporto TLS di GatewayClass
La tabella seguente descrive i metodi di terminazione TLS supportati da GKE per ogni GatewayClass:
| GatewayClass |
gke-l7-global-external-managedgke-l7-global-external-managed-mcgke-l7-gxlbgke-l7-gxlb-mc
|
gke-l7-regional-external-managedgke-l7-regional-external-managed-mcgke-l7-rilbgke-l7-rilb-mc
|
gke-l7-cross-regional-internal-managed-mc
|
|---|---|---|---|
| TLS da client a gateway | Supportato | Supportato | |
| TLS da gateway a backend | Supportato | Supportato | |
| Google Cloud risorsa del certificato | Certificato SSL globaleCertificateMap |
Certificato SSL a livello di regione | |
| Certificati autogestiti con secret Kubernetes | Supportato | Supportato | Non supportato |
| Certificati SSL autogestiti di Compute Engine | Supportato | Supportato | Non supportato |
| Certificati SSL gestiti da Google di Compute Engine | Supportato | Non supportato | Non supportato |
| Certificati SSL autogestiti con Certificate Manager | Supportato | Supportato | Supportato |
| Certificati SSL gestiti da Google con Certificate Manager | Supportato | Supportato | Supportato |
Passaggi successivi
- Scopri come proteggere un gateway.
- Scopri come eseguire il deployment dei gateway.
- Scopri di più sui concetti dell'API Gateway.
- Scopri come configurare le risorse del gateway.
- Scopri come utilizzare le funzionalità di GatewayClass.