Introduzione ad Apigee mTLS

La funzionalità mTLS di Apigee aumenta la sicurezza delle comunicazioni tra i componenti in Edge per il cluster Private Cloud.

Panoramica dell'architettura

Per fornire comunicazioni sicure tra i componenti, Apigee mTLS utilizza un mesh di servizi che stabilisce connessioni TLS sicure e reciprocamente autenticate tra i componenti.

L'immagine seguente mostra le connessioni tra i componenti Apigee protetti da Apigee mTLS (in red). Le porte mostrate nell'immagine sono degli esempi; consulta la sezione Utilizzo delle porte per un elenco degli intervalli utilizzabili da ciascun componente.

Tieni presente che le porte indicate con una "M" vengono utilizzate per gestire il componente e devono essere aperte sul componente per consentire l'accesso al server di gestione.

Come puoi vedere nel diagramma sopra, Apigee mTLS aggiunge sicurezza alle connessioni tra la maggior parte dei componenti del cluster, tra cui:

Origine Destinazione
Server di gestione Router, MP, QPid, LDAP, Postgres, Zookeeper e nodi Cassandra
Router Loopback; nodi Qpid, Zookeeper e Cassandra
processore di messaggi Loopback; nodi Qpid, Zookeeper e Cassandra
ZooKeeper e Cassandra Altri nodi Zookeeper e Cassandra
UI perimetrale SMTP (solo per IdP esterno)
Postgres Altri nodi Postgres, Zookeeper e Cassandra

Crittografia/decrittografia dei messaggi

La rete mesh di servizi Apigee mTLS è composta da server Consul in esecuzione su ciascun nodo ZooKeeper nel cluster e dai seguenti servizi Consul su ogni nodo nel cluster:

  • Un proxy in uscita che intercetta i messaggi in uscita sul nodo host. Questo servizio cripta i messaggi in uscita prima di inviarli alla loro destinazione.
  • Un proxy in entrata che intercetta i messaggi in arrivo sul nodo host. Questo servizio decripta i messaggi in arrivo prima di inviarli alla destinazione finale.

Ad esempio, quando il server di gestione invia un messaggio al router, il servizio proxy in uscita intercetta il messaggio in uscita, lo cripta e lo invia al router. Quando il nodo del router riceve il messaggio, il servizio proxy in entrata lo decripta e lo passa al componente Router per l'elaborazione.

Tutto questo avviene in modo trasparente ai componenti Edge: questi non sono a conoscenza del processo di crittografia e decriptazione eseguito dai servizi proxy di Consul.

Inoltre, Apigee mTLS utilizza l'utilità iptables, un servizio firewall Linux che gestisce il reindirizzamento del traffico.

Requisiti

Apigee mTLS fornisce un metodo standard di settore per configurare e installare il mesh di servizi. Supporta la gestione dei pacchetti e l'automazione della configurazione.

Poiché i servizi proxy di Consul sono caratterizzati dall'alto accoppiamento come assegnazioni di porte per i singoli processi, una modifica a un nodo interessa tutti gli altri nodi. Di conseguenza, se la topologia cambia, devi riconfigurare e reinizializzare i servizi su ogni nodo del cluster.

Prima di poter installare Apigee mTLS, il tuo ambiente deve soddisfare i seguenti requisiti descritti in questa sezione.

Questi requisiti includono:

  • Edge per la versione del cloud privato
  • Un insieme di utilità installate e abilitate
  • Un account utente con il livello di autorizzazioni appropriato
  • Un computer di amministrazione (consigliato)

Requisiti perimetrali per il cloud privato

Apigee mTLS supporta la seguente versione di Edge per il cloud privato (ma non su tutte le piattaforme supportate, come descritto nei requisiti del sistema operativo):

  • 4.19.06
  • 4.19.01

Apigee mTLS richiede che il cluster di cloud privato utilizzi una topologia che includa almeno tre nodi Zoookeeper. Di conseguenza, puoi installare Apigee mTLS solo su topologie che utilizzano 5, 9, 12 (multi-data center) o 13 nodi. Per maggiori informazioni, consulta Topologie di installazione.

Requisiti del sistema operativo

Apigee mTLS supporta le seguenti piattaforme per il tuo cluster Private Cloud (il sistema operativo supportato per mTLS dipende dalla versione del Private Cloud):

Sistema operativo Versione del cloud privato supportata
v4.19.06 v4.50.00 v4.51.00
CentOS
RedHat Enterprise Linux (RHEL)
Oracle Linux
7,5; 7,6, 7,7 7,5; 7,6; 7,7; 7,8; 7,9 7,5; 7,6; 7,7; 7,8; 7,9; 8,0

Utilità/pacchetti

Prima di iniziare il processo di installazione, Apigee mTLS richiede che i seguenti pacchetti siano installati e abilitati su ogni macchina nel cluster, inclusa la macchina di amministrazione:

Utilità/pacchetto Descrizione Rimuovere dopo l’installazione?
base64 Verifica i dati contenuti negli script di installazione.
gnu-bash
gnu-sed
gnu-grep
Utilizzato dallo script di installazione e da altri strumenti comuni.
iptables Sostituisce il firewall predefinito, firewalld.
iptables-services Fornisce funzionalità all'utilità iptables.
lsof Utilizzato dallo script di installazione.
nc Verifica iptables route.
openssl Firma i certificati localmente durante il processo di bootstrap iniziale.

Durante l'installazione, installi anche il pacchetto Consul sulla macchina di amministrazione per poter generare le credenziali e la chiave di crittografia.

Il pacchetto apigee-mtls installa e configura i server Consul, inclusi i proxy in entrata e in uscita sui nodi ZooKeeper nel cluster.

Autorizzazioni account utente

L'account che esegue l'installazione di Apigee mTLS su ciascun nodo nel cluster deve essere in grado di:

  • Avvia, arresta, riavvia e inizializza i componenti Apigee
  • Imposta regole firewall
  • Creare un nuovo account utente di sistema/sistema operativo
  • Attiva, disattiva, avvia, arresta e maschera i servizi con systemctl

Computer di amministrazione (consigliato)

Apigee consiglia di avere un nodo all'interno del cluster che può essere utilizzato per eseguire varie attività descritte in questo documento, tra cui:

  1. Installare HashiCorp Consul 1.6.2.
  2. Genera e distribuisci un certificato/coppia di chiavi e una chiave di crittografia gossip.
  3. Aggiorna e distribuisci il file di configurazione.

Il computer di amministrazione richiede quanto segue:

  • Hai scaricato e installato le utilità apigee-service e apigee-setup, come descritto in Installare l'utilità apigee-setup di Edge.
  • Ha accesso scp/ssh a tutti i nodi nel cluster. Per distribuire le credenziali e il file di configurazione, devi avere accesso scp/ssh a tutti gli host all'interno del cluster.
  • Disponi dell'accesso root al computer di amministrazione.

Utilizzo e assegnazione delle porte

Questa sezione descrive l'utilizzo delle porte e l'assegnazione delle porte per supportare le comunicazioni di Consul con Apigee mTLS.

Utilizzo delle porte: tutti i nodi che eseguono apigee-mtls

Tutti i nodi nel cluster che utilizzano il servizio apigee-mtls devono consentire le connessioni dai servizi su localhost (127.0.0.1). Ciò consente ai proxy di Consul di comunicare con gli altri servizi mentre elaborano i messaggi in entrata e in uscita.

Utilizzo delle porte: nodi server di Consul (nodi che eseguono ZooKeeper)

Devi aprire la maggior parte delle seguenti porte sui nodi del server Consul (i nodi che eseguono ZooKeeper) per accettare richieste da tutti i nodi nel cluster:

Nodo Porta server di Consul Descrizione Protocollo Consenti agenti mtls esterni
*
Server Consul (nodi ZoooKeeper) 8300 Connette tutti i server Consul nel cluster. RPC
8301 Gestisce i messaggi di appartenenza e gli annunci all'interno del cluster. UDP/TCP
8302 Porta WAN che gestisce l'appartenenza e i messaggi trasmessi in una configurazione con più data center. UDP/TCP
8500 Gestisce le connessioni HTTP alle API Consul Server dai processi sullo stesso nodo.

Questa porta non viene utilizzata per la comunicazione o il coordinamento da remoto; è in ascolto solo su localhost.

HTTP
8502 Gestisce le connessioni gRPC+HTTPS alle API Consul Server da altri nodi nel cluster. gRPC+HTTPS
8503 Gestisce le connessioni HTTPS alle API Consul Server da altri nodi nel cluster. HTTPS
8600 Gestisce il DNS del server Consul. UDP/TCP
* Apigee consiglia di limitare le richieste in entrata solo ai membri del cluster (incluso cross-datastore). Puoi farlo con iptables.

Come mostra la tabella, i nodi che eseguono il componente consul-server (nodi di ZooKeeper) devono aprire le porte 8301, 8302, 8502 e 8503 a tutti i membri del cluster che eseguono il servizio apigee-mtls, anche tra i data center. I nodi che non eseguono ZooKeeper non devono aprire queste porte.

Assegnazioni di porte per tutti i nodi Consul (inclusi i nodi che eseguono ZooKeeper)

Per supportare le comunicazioni Consul, i nodi che eseguono i seguenti componenti Apigee devono consentire le connessioni esterne alle porte comprese negli intervalli seguenti:

Componente Apigee Intervallo Numero di porte richieste per nodo
mTLS Apigee Da 10.700 a 10.799 1
Cassandra Da 10.100 a 10.199 2
processore di messaggi Da 10.500 a 10.599 2
OpenLDAP Da 10.200 a 10.299 1
Postgres Da 10.300 a 10.399 3
Qpid Da 10.400 a 10.499 2
Router Da 10.600 a 10.699 2
ZooKeeper Da 10.001 a 10.099 3

Consul assegna le porte in modo semplice e lineare. Ad esempio, se il cluster ha due nodi Postgres, il primo nodo utilizza due porte, quindi Consul assegna le porte 10300 e 10301. Anche il secondo nodo utilizza due porte, quindi Consol assegna 10302 e 10303 a quel nodo. Questo vale per tutti i tipi di componenti.

Come puoi vedere, il numero effettivo di porte dipende dalla topologia: se il cluster ha due nodi Postgres, devi aprire quattro porte (due nodi per due porte ciascuna).

Tieni presente quanto segue:

  • I proxy di console non possono essere in ascolto sulle stesse porte dei servizi Apigee.
  • Consul ha un solo spazio di indirizzi di porta. Le assegnazioni delle porte proxy di console devono essere univoche in tutto il cluster, inclusi i data center. Ciò significa che se il proxy A sull'host A è in ascolto sulla porta 15000, il proxy B sull'host B non può rimanere in ascolto sulla porta 15000.
  • Il numero di porte utilizzate varia in base alla topologia, come descritto in precedenza.

In una configurazione multi-data center, tutti gli host che eseguono mTLS devono aprire anche la porta 8302.

Puoi personalizzare le porte predefinite utilizzate da Apigee mTLS. Per informazioni su come eseguire questa operazione, consulta Personalizzazione dell'intervallo di porte del proxy.

Limitazioni

Apigee mTLS presenta le seguenti limitazioni:

  • Non cripta le comunicazioni Cassandra tra nodi (porta 7000)
  • La configurazione non è idempotente. Ciò significa che se apporti una modifica su un nodo, devi apportare la stessa modifica a tutti i nodi; il sistema non rileva la modifica e la applica automaticamente agli altri nodi. Per maggiori informazioni, consulta Modificare una configurazione apigee-mtls esistente.

Terminologia

Questa sezione utilizza la seguente terminologia:

Termine Definizione
del cluster Il gruppo di macchine che compongono il tuo Edge per l'installazione del cloud privato.
Console Il mesh di servizi utilizzato da Apigee mTLS. Per informazioni su come Consul protegge le tue comunicazioni nel cloud privato, consulta l'articolo sul modello di sicurezza di Consul.
mTLS TLS autenticato reciprocamente.
mesh di servizi Una rete overlay (o una rete all'interno di una rete).
TLS Sicurezza del livello di transazione. Protocollo di autenticazione standard del settore per comunicazioni sicure.