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:
- Client to Gateway: il traffico ha avuto origine dal client ed è terminato nel gateway.
- Gateway to Pod: il traffico ha avuto origine nel gateway e terminato nei pod di backend.
Il seguente diagramma mostra entrambi i percorsi per autenticare e criptare i gateway:
Questa pagina descrive come proteggere il percorso del client al gateway utilizzando i certificati caricati e gestiti a livello di gateway. Per scoprire come proteggere il traffico dal gateway ai pod, consulta Proteggere il bilanciatore del carico per il traffico delle applicazioni utilizzando TLS.
Vantaggi
Puoi proteggere un'applicazione in molti modi diversi utilizzando l'API Gateway, che offre flessibilità a diversi ruoli che interagiscono con Gateway.
A chi appartiene la configurazione del dominio e di TLS?
Il modello dell'API Gateway introduce due ruoli che utilizzano o eseguono il deployment di gateway:
- Amministratore della piattaforma: l'operatore del cluster è l'amministratore di interi cluster. Gestiscono criteri, accesso alla rete e autorizzazioni per le 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 influiscono su TLS e sulla proprietà del dominio per due applicazioni, store-v1
e
store-v2
.
Nel diagramma, l'operatore del cluster controlla:
- I domini che gli sviluppatori di app possono utilizzare per le loro app in ogni spazio dei nomi.
- I certificati specifici che terminano in domini diversi.
- Certificati forniti dal proprietario del gateway.
- Indica se i proprietari di HTTPRoute possono specificare i propri nomi host per la generazione del certificato.
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 consente 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 secret Kubernetes o 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, consulta la panoramica dei certificati SSL.
Kubernetes Secrets
La
specifica dell'API Gateway supporta
Kubernetes Secrets per archiviare e allegare i certificati ai gateway. Puoi associare uno o più secret Kubernetes a un gateway utilizzando il campoGateway.spec.tls.certificateRef
.
Le risorse del gateway protette tramite i secret di Kubernetes hanno i seguenti requisiti:
- Devi impostare l'ascoltatore del gateway
port
eprotocol
su443
eHTTPS
. - Devi impostare il campo
listener.tls.mode
suTerminate
. - Devi fare riferimento alle credenziali TLS nel blocco
listeners.tls
.
Le risorse del gateway protette utilizzando i secret di Kubernetes presentano le seguenti limitazioni:
- Solo gli ascoltatori HTTPS terminano il traffico utilizzando i secret specificati, anche se puoi specificare più ascoltatori con una combinazione di HTTP e HTTPS.
- Se hai più ascoltatori che utilizzano HTTPS sullo stesso gateway, ogni ascoltatore deve avere un nome host univoco.
- Puoi omettere un solo nome host o assegnare
*
per ogni coppia di porta e protocollo. - Puoi assegnare un solo certificato predefinito per ogni gateway.
Per scoprire come proteggere un gateway utilizzando un secret di Kubernetes, consulta Proteggere un gateway utilizzando un secret di Kubernetes.
Certificati SSL
I certificati SSL memorizzano e inviano i certificati ai bilanciatori del carico.
Un certificato SSL può essere autogestito o gestito da Google.
Per saperne di più sulle differenze tra questi due tipi di certificati, consulta la panoramica dei certificati SSL.
L'ambito e la posizione del certificato SSL devono corrispondere all'ambito e alla posizione 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 posizione dei certificati SSL per ogni GatewayClass:
GatewayClass | Ambito del certificato SSL | Posizione 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 trovarsi nella stessa regione del gateway |
gke-l7-regional-external-managed-mc |
||
gke-l7-rilb |
||
gke-l7-rilb-mc |
Per scoprire come proteggere un gateway utilizzando un certificato SSL, consulta Proteggere un gateway utilizzando un certificato SSL.
Gestione certificati
Gestione certificati è un punto di riferimento centralizzato per gestire i certificati TLS.
Quando proteggi un gateway utilizzando Certificate Manager, puoi svolgere le seguenti operazioni:
- Fai riferimento a un
CertificateMap
direttamente da un gateway che hai creato in Gestore dei certificati. - Gestisci i tuoi certificati.
- Migliorare i tempi di propagazione dei certificati.
- Utilizza Cloud Monitoring per i certificati scaduti e la propagazione dei certificati.
Certificate Manager supporta sia i certificati SSL autogestiti sia quelli gestiti da Google.
Per scoprire come proteggere un gateway utilizzando Certificate Manager, consulta 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-managed gke-l7-global-external-managed-mc gke-l7-gxlb gke-l7-gxlb-mc
|
gke-l7-regional-external-managed gke-l7-regional-external-managed-mc gke-l7-rilb gke-l7-rilb-mc
|
---|---|---|
TLS da client a gateway | Elemento supportato | Elemento supportato |
TLS dal gateway al backend | Elemento supportato | Elemento supportato |
RisorsaGoogle Cloud certificate | Certificato SSL globaleCertificateMap |
Certificato SSL a livello di regione |
Certificati autogestiti con Kubernetes Secrets | Elemento supportato | Elemento supportato |
Certificati SSL Compute Engine autogestiti | Elemento supportato | Elemento supportato |
Certificati SSL Compute Engine gestiti da Google | Elemento supportato | Non supportato |
Certificati SSL autogestiti con Certificate Manager | Elemento supportato | Elemento supportato |
Certificati SSL gestiti da Google con Certificate Manager | Elemento supportato | Elemento supportato |
Passaggi successivi
- Scopri come proteggere un gateway.