Die Apigee mTLS-Funktion erhöht die Sicherheit der Kommunikation zwischen Komponenten in Ihrem Edge for Private Cloud-Cluster. Sie bietet eine branchenübliche Methode zum Konfigurieren und Installieren des Service Mesh. Es unterstützt die Paketverwaltung und die Konfigurationsautomatisierung.
Architekturübersicht
Für eine sichere Kommunikation zwischen Komponenten verwendet Apigee mTLS ein Service Mesh, das sichere, gegenseitig authentifizierte TLS-Verbindungen zwischen Komponenten herstellt.
Die folgende Abbildung zeigt Verbindungen zwischen Apigee-Komponenten, die durch Apigee mTLS gesichert werden (in red). Die in der Abbildung gezeigten Ports sind Beispiele. Eine Liste der Bereiche, die jede Komponente verwenden kann, finden Sie unter Portnutzung.

(Beachten Sie, dass mit einem „M“ gekennzeichnete Ports zur Verwaltung der Komponente verwendet werden und auf der Komponente für den Zugriff durch den Management Server geöffnet sein müssen.)
Wie Sie im Diagramm oben sehen können, erhöht Apigee mTLS die Sicherheit von Verbindungen zwischen den meisten Komponenten im Cluster, einschließlich:
| Quelle | Ziel | |
|---|---|---|
| Verwaltungsserver | Router-, MP-, QPid-, LDAP-, Postgres-, Zookeeper- und Cassandra-Knoten | |
| Router | Loopback; Qpid-, Zookeeper- und Cassandra-Knoten | |
| Message Processor | Loopback; Qpid-, Zookeeper- und Cassandra-Knoten | |
| ZooKeeper und Cassandra | Andere ZooKeeper- und Cassandra-Knoten | |
| Edge-UI | SMTP (nur für externen IdP) | |
| Postgres | Andere Postgres-, Zookeeper- und Cassandra-Knoten |
Verschlüsselung/Entschlüsselung von Nachrichten
Das Apigee mTLS-Service-Mesh besteht aus Consul-Servern, die auf jedem ZooKeeper-Knoten in Ihrem Cluster ausgeführt werden, und den folgenden Consul-Diensten auf jedem Knoten im Cluster:
- Als Egress-Proxy, der ausgehende Nachrichten auf dem Hostknoten abfängt. Dieser Dienst verschlüsselt ausgehende Nachrichten, bevor sie an ihr Ziel gesendet werden.
- Ein Ingress-Proxy, der eingehende Nachrichten auf dem Hostknoten abfängt. Dieser Dienst entschlüsselt eingehende Nachrichten, bevor sie an ihr endgültiges Ziel gesendet werden.
Wenn der Management Server beispielsweise eine Nachricht an den Router sendet, fängt der Proxy-Dienst für ausgehenden Traffic die ausgehende Nachricht ab, verschlüsselt sie und sendet sie dann an den Router. Wenn der Knoten des Routers die Nachricht empfängt, entschlüsselt der Ingress-Proxy-Dienst die Nachricht und übergibt sie dann zur Verarbeitung an die Router-Komponente.
Dies geschieht transparent für die Edge-Komponenten: Sie sind sich des Verschlüsselungs- und Entschlüsselungsprozesses, der von den Consul-Proxy-Diensten ausgeführt wird, nicht bewusst.
Darüber hinaus verwendet Apigee mTLS das Dienstprogramm iptables, einen Linux-Firewall-Dienst, der die Traffic-Weiterleitung verwaltet.
Voraussetzungen
Bevor Sie Apigee mTLS installieren können, muss Ihre Umgebung die folgenden Anforderungen erfüllen:
- Anforderungen an Version, Plattform und Topologie
- Dienstprogramme installiert und aktiviert
- Nutzerkonto mit der entsprechenden Berechtigungsstufe
- Einen Administrationscomputer (empfohlen)
- Portnutzung
In den folgenden Abschnitten werden die einzelnen Anforderungen im Detail beschrieben.
Version, Plattform und Topologie
In der folgenden Tabelle sind die mTLS-Anforderungen aufgeführt:
| Anforderung | Beschreibung | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Versionen |
|
||||||||||||
| Topologie | Muss mindestens drei ZooKeeper-Knoten enthalten. Daher können Sie Apigee mTLS nur auf Topologien mit 5, 9, 12 (mehrere Rechenzentren) oder 13 Knoten installieren. Weitere Informationen finden Sie unter Installationstopologien. | ||||||||||||
| Plattformen/Betriebssysteme | Anhand der folgenden Werte können Sie feststellen, ob Apigee mTLS auf einem bestimmten Betriebssystem unterstützt wird:
Beachten Sie, dass Apigee mTLS nicht unbedingt alle Betriebssysteme unterstützt, die von der entsprechenden Version von Apigee Edge for Private Cloud unterstützt werden, auf der es ausgeführt wird. Wenn beispielsweise v4.19.06 CentOS x und y unterstützt, bedeutet das nicht unbedingt, dass Apigee mTLS unter CentOS x und y für v4.19.06 unterstützt wird. |
||||||||||||
Dienstprogramme/Pakete
Für Apigee mTLS müssen die folgenden Pakete auf jedem Computer in Ihrem Cluster, einschließlich Ihres Administrationscomputers, installiert und aktiviert sein, bevor Sie mit der Installation beginnen:
| Dienstprogramm/Paket | Beschreibung | Kann ich den Aufkleber nach der Installation entfernen? |
|---|---|---|
base64 |
Prüft Daten in den Installationsskripts. | |
gnu-bashgnu-sedgnu-grep |
Wird vom Installationsskript und anderen gängigen Tools verwendet. | |
iptables |
Ersetzt die Standardfirewall firewalld. |
|
iptables-services |
Stellt Funktionen für das Dienstprogramm iptables bereit. |
|
lsof |
Wird vom Installationsskript verwendet. | |
nc |
Prüft iptables-Routen. |
|
openssl |
Signiert Zertifikate während des ersten Bootstrapping-Prozesses lokal. |
Während der Installation installieren Sie auch das Consul-Paket auf dem Administrationscomputer, damit Sie Anmeldedaten und den Verschlüsselungsschlüssel generieren können.
Mit dem Paket apigee-mtls werden die Consul-Server einschließlich der Proxys für eingehenden und ausgehenden Traffic auf ZooKeeper-Knoten im Cluster installiert und konfiguriert.
Nutzerkontoberechtigungen
Erstellen Sie vor der Installation ein neues Nutzerkonto oder sorgen Sie dafür, dass Sie Zugriff auf ein Konto mit erhöhten Berechtigungen haben.
Das Konto, das die Apigee mTLS-Installation auf jedem Knoten im Cluster ausführt, muss Folgendes können:
- Apigee-Komponenten starten, beenden, neu starten und initialisieren
- Firewallregeln festlegen
- Neues Betriebssystem-/Systemnutzerkonto erstellen
- Dienste mit
systemctlaktivieren, deaktivieren, starten, beenden und maskieren
Administrationsmaschine (empfohlen)
Apigee empfiehlt, einen Knoten im Cluster zu haben, auf dem Sie verschiedene in diesem Dokument beschriebene Verwaltungsaufgaben ausführen können, darunter:
- Installieren Sie HashiCorp Consul 1.6.2.
- Generieren und verteilen Sie ein Zertifikat/Schlüssel-Paar und einen Gossip-Verschlüsselungsschlüssel.
- Aktualisieren und verteilen Sie die Konfigurationsdatei.
Beachten Sie beim Einrichten der Administrationsmaschine Folgendes:
- Sie benötigen Root-Zugriff darauf.
- Laden Sie die Dienstprogramme
apigee-serviceundapigee-setupherunter und installieren Sie sie, wie unter Edge-Dienstprogramm „apigee-setup“ installieren beschrieben. - Prüfen Sie, ob Sie mit
scp/sshvon der Verwaltungsmaschine aus auf alle Knoten im Cluster zugreifen können. Dies ist erforderlich, damit Sie Ihre Konfigurationsdatei und Ihre Anmeldedaten verteilen können.
Portnutzung und -zuweisung
In diesem Abschnitt werden die Portnutzung und die Portzuweisungen zur Unterstützung der Consul-Kommunikation mit Apigee mTLS beschrieben.
Portnutzung: Alle Knoten, auf denen apigee-mtls ausgeführt wird
Alle Knoten im Cluster, die den Dienst apigee-mtls verwenden, müssen Verbindungen von Diensten auf dem Localhost (127.0.0.1) zulassen. So können die Consul-Proxys mit den anderen Diensten kommunizieren, während sie eingehende und ausgehende Nachrichten verarbeiten.
Portnutzung: Consul-Serverknoten (Knoten, auf denen ZooKeeper ausgeführt wird)
Sie müssen die meisten der folgenden Ports auf den Consul-Serverknoten (den Knoten, auf denen ZooKeeper ausgeführt wird) öffnen, um Anfragen von allen Knoten im Cluster zu akzeptieren:
| Knoten | Consul-Serverport | Beschreibung | Protokoll | Externe mTLS-Agents zulassen * |
|---|---|---|---|---|
| Consul-Server (ZooKeeper-Knoten) | 8300 |
Verbindet alle Consul-Server im Cluster. | RPC | |
8301 |
Verarbeitet Mitgliedschafts- und Broadcast-Nachrichten innerhalb des Clusters. | UDP/TCP | ||
8302 |
WAN-Port, der Mitgliedschafts- und Broadcast-Nachrichten in einer Konfiguration mit mehreren Rechenzentren verarbeitet. | UDP/TCP | ||
8500 |
Verarbeitet HTTP-Verbindungen zu den Consul-Server-APIs von Prozessen auf demselben Knoten.
Dieser Port wird nicht für die Remote-Kommunikation oder -Koordination verwendet. Er überwacht nur Localhost. |
HTTP | ||
8502 |
Verarbeitet gRPC+HTTPS-Verbindungen zu den Consul Server APIs von anderen Knoten im Cluster. | gRPC+HTTPS | ||
8503 |
Verarbeitet HTTPS-Verbindungen zu den Consul-Server-APIs von anderen Knoten im Cluster. | HTTPS | ||
8600 |
Verarbeitet das DNS des Consul-Servers. | UDP/TCP | ||
* Apigee empfiehlt, eingehende Anfragen nur auf Clustermitglieder zu beschränken (einschließlich datenspeicherübergreifend). Das geht mit iptables.
|
||||
Wie diese Tabelle zeigt, müssen die Knoten, auf denen die Komponente consul-server ausgeführt wird (ZooKeeper-Knoten), die Ports 8301, 8302, 8502 und 8503 für alle Mitglieder des Clusters öffnen, auf denen der Dienst apigee-mtls ausgeführt wird, auch über Rechenzentren hinweg. Knoten, auf denen ZooKeeper nicht ausgeführt wird, müssen diese Ports nicht öffnen.
Portzuweisungen für alle Consul-Knoten (einschließlich Knoten, auf denen ZooKeeper ausgeführt wird)
Zur Unterstützung der Consul-Kommunikation müssen Knoten, auf denen die folgenden Apigee-Komponenten ausgeführt werden, externe Verbindungen zu Ports in den folgenden Bereichen zulassen:
| Apigee-Komponente | Bereich | Anzahl der erforderlichen Ports pro Knoten |
|---|---|---|
| Apigee-mTLS | 10700 bis 10799 | 1 |
| Cassandra | 10100 bis 10199 | 2 |
| Message Processor | 10.500 bis 10.599 | 2 |
| OpenLDAP | 10200 bis 10299 | 1 |
| Postgres | 10300 bis 10399 | 3 |
| Qpid | 10400 bis 10499 | 2 |
| Router | 10600 bis 10699 | 2 |
| ZooKeeper | 10001 bis 10099 | 3 |
Consul weist Ports auf einfache lineare Weise zu. Wenn Ihr Cluster beispielsweise zwei Postgres-Knoten hat, verwendet der erste Knoten zwei Ports. Consul weist ihm daher die Ports 10300 und 10301 zu. Der zweite Knoten verwendet ebenfalls zwei Ports, daher weist Consol diesem Knoten 10302 und 10303 zu. Dies gilt für alle Komponententypen.
Wie Sie sehen, hängt die tatsächliche Anzahl der Ports von der Topologie ab: Wenn Ihr Cluster zwei Postgres-Knoten hat, müssen Sie vier Ports öffnen (zwei Knoten mal zwei Ports).
Wichtige Hinweise:
- Consul-Proxys können nicht dieselben Ports wie Apigee-Dienste überwachen.
- Consul hat nur einen Portadressraum. Consul-Proxy-Portzuweisungen müssen im gesamten Cluster, einschließlich Rechenzentren, eindeutig sein. Wenn also Proxy A auf Host A Port 15000 überwacht, kann Proxy B auf Host B nicht Port 15000 überwachen.
- Die Anzahl der verwendeten Ports variiert je nach Topologie, wie oben beschrieben.
In einer Konfiguration mit mehreren Rechenzentren müssen alle Hosts, auf denen mTLS ausgeführt wird, auch Port 8302 öffnen.
Sie können die von Apigee mTLS verwendeten Standardports anpassen. Informationen dazu finden Sie unter Proxy-Portbereich anpassen.
Beschränkungen
Für Apigee mTLS gelten die folgenden Einschränkungen:
- Die Cassandra-Kommunikation zwischen Knoten (Port 7000) wird nicht verschlüsselt.
- Konfiguration und Einrichtung sind nicht idempotent. Das bedeutet, dass Sie, wenn Sie eine Änderung an einem Knoten vornehmen, dieselbe Änderung an allen Knoten vornehmen müssen. Das System übernimmt diese Änderung nicht für Sie auf anderen Knoten. Weitere Informationen finden Sie unter Vorhandene apigee-mtls-Konfiguration ändern.
Terminologie
In diesem Abschnitt wird die folgende Terminologie verwendet:
| Begriff | Definition |
|---|---|
| Cluster | Die Gruppe von Maschinen, die Ihre Edge for Private Cloud-Installation bilden. |
| Consul | Das von Apigee mTLS verwendete Service Mesh. Informationen dazu, wie Consul Ihre Private Cloud-Kommunikation schützt, finden Sie im Sicherheitsmodell von Consul. |
| mTLS | Gegenseitig authentifiziertes TLS. |
| Service Mesh | Ein Overlay-Netzwerk (oder ein Netzwerk innerhalb eines Netzwerks). |
| TLS | Transaction Layer Security. Ein branchenübliches Authentifizierungsprotokoll für die sichere Kommunikation. |