La funzionalità mTLS di Apigee aggiunge sicurezza alle comunicazioni tra i componenti del cluster Edge for Private Cloud. Fornisce un modo standard del settore per configurare e installare il service mesh. Supporta la gestione dei pacchetti e l'automazione della configurazione.
Panoramica dell'architettura
Per fornire comunicazioni sicure tra i componenti, Apigee mTLS utilizza un service mesh 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 esempi. Per un elenco di intervalli che ogni componente può utilizzare, consulta Utilizzo delle porte.
Tieni presente che le porte indicate con una "M" vengono utilizzate per gestire il componente e devono essere aperte sul componente per l'accesso da parte del server di gestione.
Come puoi vedere nel diagramma precedente, 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 Edge | SMTP (solo per IdP esterni) | |
Postgres | Altri nodi Postgres, Zookeeper e Cassandra |
Crittografia/decrittografia dei messaggi
La service mesh Apigee mTLS è costituita da server Consul che vengono eseguiti su ogni nodo ZooKeeper del cluster e dai seguenti servizi Consul su ogni nodo del cluster:
- Un proxy di uscita che intercetta i messaggi in uscita sul nodo host. Questo servizio cripta i messaggi in uscita prima di inviarli alla destinazione.
- Un proxy di ingresso 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 per i componenti Edge: non sono a conoscenza del processo di crittografia e decrittografia eseguito dai servizi proxy 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 di topologia
- Utilità installate e attivate
- Account utente con il livello di autorizzazioni appropriato
- Una macchina di amministrazione (consigliata)
- Utilizzo porta
Le sezioni seguenti descrivono in dettaglio ciascuno di questi requisiti.
Requisiti di topologia
Apigee mTLS richiede che la topologia del tuo ambiente includa almeno tre nodi Zookeeper. Di conseguenza, puoi installare Apigee mTLS solo su topologie che utilizzano 5, 9, 12 (più data center) o 13 nodi. Per ulteriori informazioni, vedi Topologie di installazione.
Utility/pacchetti
Apigee mTLS richiede che i seguenti pacchetti siano installati e abilitati su ogni macchina del cluster, inclusa la macchina di amministrazione, prima di iniziare il processo di installazione:
Utilità/pacchetto | Descrizione | È possibile rimuovere il file dopo l'installazione? |
---|---|---|
base64 |
Verifica i dati all'interno degli 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 percorsi. |
|
openssl |
Firma i certificati localmente durante il processo di bootstrapping iniziale. |
Durante l'installazione, installi anche il pacchetto Consul sulla macchina di amministrazione in modo da 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 dell'installazione, crea un nuovo account utente o assicurati di avere accesso a uno con privilegi elevati.
L'account che esegue l'installazione di Apigee mTLS su ogni nodo del cluster deve essere in grado di:
- Avviare, arrestare, riavviare e inizializzare i componenti Apigee
- Imposta regole firewall
- Crea un nuovo account utente del sistema operativo/di sistema
- Attivare, disattivare, avviare, arrestare e mascherare 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:
- Installa HashiCorp Consul 1.6.2.
- Genera e distribuisci una coppia di chiavi/certificati e una chiave di crittografia gossip.
- Aggiorna e distribuisci il file di configurazione.
Quando configuri la macchina di amministrazione:
- Assicurati di disporre dell'accesso root.
- Scarica e installa le utilità
apigee-service
eapigee-setup
come descritto in Installare l'utilità apigee-setup di Edge�. - Assicurati di poter utilizzare
scp/ssh
per accedere a tutti i nodi del cluster dalla macchina di amministrazione. Questo passaggio è necessario per 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 delle porte: tutti i nodi che eseguono apigee-mtls
Tutti i nodi del cluster che utilizzano il servizio apigee-mtls
devono consentire le connessioni
dai servizi su localhost (127.0.0.1). In questo modo i proxy Consul possono comunicare con gli altri servizi durante l'elaborazione dei messaggi in entrata e in uscita.
Utilizzo porta: nodi server Consul (nodi che eseguono ZooKeeper)
Devi aprire la maggior parte delle seguenti porte sui nodi server Consul (i nodi che eseguono ZooKeeper) per accettare le richieste da tutti i nodi del cluster:
Nodo | Porta server Consul | Descrizione | Protocollo | Consenti mtls-agents esterni * |
---|---|---|---|---|
Server Consul (nodi ZooKeeper) | 8300 |
Connette tutti i server Consul nel cluster. | RPC | |
8301 |
Gestisce le iscrizioni e i messaggi di trasmissione all'interno del cluster. | UDP/TCP | ||
8302 |
Porta WAN che gestisce i messaggi di iscrizione e trasmissione in una configurazione multi-data center. | UDP/TCP | ||
8500 |
Gestisce le connessioni HTTP alle API del server Consul dai processi sullo stesso nodo.
Questa porta non viene utilizzata per la comunicazione o il coordinamento remoti; è in ascolto solo su localhost. |
HTTP | ||
8502 |
Gestisce le connessioni gRPC+HTTPS alle API del server Consul da altri nodi del cluster. | gRPC+HTTPS | ||
8503 |
Gestisce le connessioni HTTPS alle API del server Consul da altri nodi del 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 il datastore incrociato). Puoi farlo con iptables .
|
Come mostra questa tabella, i nodi che eseguono il componente consul-server
(nodi 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 delle porte per tutti i nodi Consul (inclusi i nodi che eseguono ZooKeeper)
Per supportare le comunicazioni di Consul, i nodi che eseguono i seguenti componenti Apigee devono consentire connessioni esterne alle porte all'interno dei seguenti intervalli:
Componente Apigee | Intervallo | Numero di porte richieste per nodo |
---|---|---|
mTLS di Apigee | Da 10700 a 10799 | 1 |
Cassandra | Da 10100 a 10199 | 2 |
processore di messaggi | Da 10500 a 10599 | 2 |
SymasLDAP | Da 10200 a 10299 | 1 |
Postgres | Da 10300 a 10399 | 3 |
Qpid | Da 10400 a 10499 | 2 |
Router | Da 10600 a 10699 | 2 |
ZooKeeper | Da 10000 a 10099 | 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 gli assegna le porte 10300 e 10301. Anche il secondo nodo utilizza due porte, quindi la console assegna 10302 e 10303 a questo 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 ciascuno).
Tieni presente quanto segue:
- I proxy Consul non possono ascoltare le stesse porte dei servizi Apigee.
- Consul ha un solo spazio di indirizzi delle porte. Le assegnazioni delle porte proxy Consul 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ò essere 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 procedere, vedi Personalizzazione dell'intervallo di porte proxy.
Limitazioni
Apigee mTLS presenta le seguenti limitazioni:
- Non cripta le comunicazioni tra nodi Cassandra (porta 7000)
- La configurazione e l'impostazione non sono idempotenti. Ciò significa che se apporti una modifica a un nodo, devi apportare la stessa modifica a tutti i nodi; il sistema non applica la modifica a nessun altro nodo. Per ulteriori informazioni, consulta la sezione Modificare una configurazione apigee-mtls esistente.
Terminologia
Questa sezione utilizza la seguente terminologia:
Termine | Definizione |
---|---|
cluster | Il gruppo di macchine che compongono l'installazione di Edge for Private Cloud. |
Consul | Il service mesh utilizzato da Apigee mTLS. Per informazioni su come Consul protegge le comunicazioni del tuo cloud privato, consulta il modello di sicurezza di Consul. |
mTLS | TLS autenticato reciprocamente. |
service mesh | Una rete overlay (o una rete all'interno di una rete). |
TLS | Transaction Layer Security. Un protocollo di autenticazione standard di settore per comunicazioni sicure. |