Sicurezza del gateway


Questa pagina descrive i diversi metodi per proteggere i gateway in Google Kubernetes Engine (GKE). Scopri anche 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: traffico proveniente dal client e terminato a livello di gateway.
  • Gateway al pod: traffico proveniente dal gateway e terminato ai pod di backend.

Il seguente diagramma mostra entrambi i percorsi per autenticare e criptare i gateway:

Questa pagina descrive come proteggere il percorso client al gateway utilizzando i certificati caricati e gestiti a livello di gateway. Per scoprire come proteggere il traffico dal gateway al pod, consulta Proteggere il traffico dal bilanciatore del carico al 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 il gateway.

Chi è il proprietario del dominio e della configurazione TLS?

Il modello API Gateway introduce due ruoli che utilizzano o eseguono il deployment dei gateway:

  • Amministratore piattaforma: l'operatore del cluster è l'amministratore di interi cluster. Gestisci i criteri, l'accesso alla rete e le autorizzazioni delle applicazioni.
  • Sviluppatore di applicazioni: lo sviluppatore dell'applicazione definisce l'applicazione e la configurazione 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:

  • Quali domini gli sviluppatori di applicazioni possono utilizzare per le proprie app in ogni spazio dei nomi.
  • I certificati specifici che terminano diversi domini.
  • Certificati forniti dal proprietario del gateway.
  • Indica se i proprietari 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 la propria HTTPRoute per un controllo più distribuito e permette agli amministratori di piattaforma di eseguire il deployment e gestire i gateway per il controllo centralizzato di TLS.

Gestione dei certificati del gateway

Puoi proteggere i gateway con uno dei seguenti metodi:

Se utilizzi i secret di Kubernetes o le risorse SslCertificate dell'API Compute Engine, puoi collegare un massimo di 15 certificati a un singolo gateway.

Gestore certificati consente di collegare fino a 10.000.000 di certificati per bilanciatore del carico, se richiedi un aumento della quota.

Per scoprire di più sui certificati SSL di Google Cloud, consulta la panoramica dei certificati SSL.

Secret di Kubernetes

La specifica dell'API Gateway supporta i Secret di Kubernetes per l'archiviazione e il collegamento di certificati ai gateway. Puoi associare uno o più secret di Kubernetes a un gateway utilizzando il campo Gateway.spec.tls.certificateRef.

Le risorse gateway protette tramite i secret di Kubernetes hanno i seguenti requisiti:

  • Devi impostare il listener del gateway port e protocol su 443 e HTTPS.
  • Devi impostare il campo listener.tls.mode su Terminate.
  • Devi fare riferimento alle credenziali TLS nel blocco listeners.tls.

Le risorse gateway protette tramite secret di Kubernetes hanno le seguenti limitazioni:

  • Solo i listener HTTPS terminano il traffico utilizzando i secret specificati, anche se puoi specificare più listener con una combinazione 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 di porte e protocolli.
  • 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 archiviano e inviano i certificati ai bilanciatori del carico.

Un certificato SSL può essere autogestito o gestito da Google.

Per scoprire di più sulle differenze tra questi due tipi di certificati, consulta la 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 a livello di regione.

La seguente tabella elenca i requisiti di ambito e località dei certificati SSL per ogni GatewayClass:

GatewayClass Ambito del certificato SSL Posizione del certificato SSL
gke-l7-global-external-managed Certificato SSL globale A livello mondiale
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
I certificati SSL gestiti da Google non sono compatibili con i gateway a livello di regione.

Per scoprire come proteggere un gateway utilizzando un certificato SSL, consulta Proteggere un gateway utilizzando un certificato SSL.

Gestore certificati

Certificate Manager è una località centralizzata per la gestione dei certificati TLS.

Quando proteggi un gateway utilizzando Gestore certificati, puoi procedere come segue:

  • Fai riferimento a un CertificateMap direttamente da un gateway che hai creato in Gestore certificati.
  • Gestire i tuoi certificati.
  • Migliora i tempi di propagazione del certificato.
  • Utilizza Cloud Monitoring per i certificati scaduti e la propagazione dei certificati.

Gestore certificati supporta sia i certificati SSL autogestiti che quelli gestiti da Google.

Gestore certificati non è compatibile con i gateway a livello di regione.

Per scoprire come proteggere un gateway con Gestore certificati, consulta Proteggere un gateway con Gestore certificati.

Supporto TLS per GatewayClass

La tabella seguente descrive i metodi di terminazione TLS che GKE supporta 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 dal client al gateway Supportato Supportato
Gateway per il backend TLS Supportato Supportato
Risorsa certificato Google Cloud Certificato SSL globale
CertificateMap
Certificato SSL a livello di regione
Certificati autogestiti con secret di Kubernetes Supportato Supportato
Certificati SSL di Compute Engine autogestiti Supportato Supportato
Certificati SSL di Compute Engine gestiti da Google Supportato Non supportati
Certificati SSL autogestiti con gestore certificati Supportato Non supportati
Certificati SSL gestiti da Google con Gestore certificati Supportato Non supportati

Passaggi successivi