La funzionalità mTLS di Apigee aumenta la sicurezza delle comunicazioni tra i componenti nel tuo perimetro per il cluster Private Cloud. Fornisce un metodo standard di settore per configurare e installare il mesh di servizi. Supporta la gestione dei pacchetti e l'automazione della configurazione.
Panoramica dell'architettura
Per fornire comunicazioni sicure tra i componenti, Apigee mTLS utilizza un mesh di servizi che stabilisce connessioni TLS sicure e autenticate reciprocamente 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 di intervalli utilizzabili da ogni componente.
Tieni presente che le porte indicate con una "M" vengono utilizzate per gestire il componente e devono essere aperte sul componente per poter essere accessibili dal server di gestione.
Come vedi nel diagramma riportato sopra, Apigee mTLS aggiunge sicurezza alle connessioni tra la maggior parte dei componenti nel 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 di Zookeeper e di Cassandra | |
UI perimetrale | SMTP (solo per IdP esterno) | |
Postgres | Altri nodi Postgres, Zookeeper e Cassandra |
Crittografia/decrittografia dei messaggi
Il mesh di servizi mTLS Apigee è costituito 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 loro destinazione finale.
Ad esempio, quando il server di gestione invia un messaggio al router, il servizio di 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 decripta il messaggio e lo passa al componente router per l'elaborazione.
Tutto questo avviene in modo trasparente per i 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
Prima di poter installare Apigee mTLS, il tuo ambiente deve soddisfare i seguenti requisiti:
- Requisiti della topologia
- Utilità installata e attivata
- Account utente con il livello di autorizzazione appropriato
- Una macchina di amministrazione (opzione consigliata)
- Utilizzo delle porte
Le sezioni seguenti descrivono in dettaglio ciascuno di questi requisiti.
Requisiti della topologia
Apigee mTLS richiede che la topologia del tuo ambiente deve includere almeno tre nodi Zookeeper. 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.
Utilità/pacchetti
Prima di iniziare il processo di installazione, Apigee mTLS richiede che i pacchetti seguenti siano installati e abilitati su ogni macchina nel cluster, inclusa la macchina di amministrazione:
Utility/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, installerai 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
Prima di eseguire l'installazione, crea un nuovo account utente o assicurati di avere accesso a un account con privilegi elevati.
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 di Apigee
- Imposta regole firewall
- Creare un nuovo account utente di sistema/sistema operativo
- Attiva, disattiva, avvia, arresta e maschera i servizi con
systemctl
Macchina di amministrazione (consigliata)
Apigee consiglia di avere un nodo all'interno del cluster su cui puoi eseguire varie attività amministrative descritte in questo documento, tra cui:
- Installare HashiCorp Consul 1.6.2.
- Genera e distribuisci un certificato/coppia di chiavi e una chiave di crittografia gossip.
- Aggiorna e distribuisci il file di configurazione.
Quando configuri la macchina di amministrazione:
- Assicurati di avere accesso root.
- Scarica e installa le utilità
apigee-service
eapigee-setup
su di esso, come descritto in Installare l'utilità apigee-setup di Edge. - Assicurati di poter utilizzare
scp/ssh
per accedere a tutti i nodi nel cluster dalla macchina di amministrazione. Questa operazione è necessaria per poter distribuire il file di configurazione e le credenziali.
Utilizzo e assegnazione delle porte
Questa sezione descrive l'utilizzo delle porte e le assegnazioni delle porte per supportare le comunicazioni di Consul con Apigee mTLS.
Utilizzo 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). In questo modo i proxy di Consul possono comunicare con gli
altri servizi mentre elaborano i messaggi in entrata e in uscita.
Utilizzo delle porte: nodi del server di console (nodi che eseguono ZooKeeper)
Per accettare richieste da tutti i nodi del cluster, devi aprire la maggior parte delle porte seguenti sui nodi del server Consul (i nodi che eseguono ZooKeeper):
Nodo | Porta server di console | Descrizione | Protocollo | Consenti agenti-mtls esterni * |
---|---|---|---|---|
Server di console (nodi ZooKeeper) | 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 i messaggi di iscrizione e di trasmissione in una configurazione di 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 remoto; ascolta 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 per tutti i membri del cluster che eseguono il
servizio apigee-mtls
, anche nei data center. I nodi che non eseguono ZooKeeper
non devono aprire queste porte.
Assegnazioni delle porte per tutti i nodi di Consul (inclusi i nodi che eseguono ZooKeeper)
Per supportare le comunicazioni Consul, i nodi che eseguono i seguenti componenti Apigee devono consentire 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.000 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 rimanere in ascolto sulle stesse porte dei servizi Apigee.
- Il console ha un solo spazio di indirizzi delle porte. Le assegnazioni delle porte proxy del 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 di più 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 e l'impostazione non sono idempotenti. Ciò significa che se apporti una modifica su un nodo, devi apportare la stessa modifica a tutti i nodi; il sistema non applica la modifica per te su nessun altro nodo. Per maggiori informazioni, consulta Modificare una configurazione apigee-mtls esistente.
Terminologia
Questa sezione utilizza la seguente terminologia:
Termine | Definizione |
---|---|
cluster | Il gruppo di macchine che compongono il tuo perimetro per l'installazione del cloud privato. |
Console | Il mesh di servizi utilizzato da Apigee mTLS. Per informazioni su come Consul protegge le tue comunicazioni sul cloud privato, consulta la pagina sul modello di sicurezza di Consul. |
mTLS | TLS con autenticazione reciproca. |
mesh di servizi | Una rete overlay (o una rete all'interno di una rete). |
TLS | Sicurezza a livello di transazione. Un protocollo di autenticazione standard di settore per comunicazioni sicure. |