Das Apigee mTLS-Feature erhöht die Sicherheit der Kommunikation zwischen Komponenten in Ihrem Edge für den Private Cloud-Cluster.
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 Apigee mTLS sichert (in red). Die in der Abbildung gezeigten Ports sind Beispiele. Eine Liste der Bereiche, die jede Komponente verwenden kann, finden Sie unter Portnutzung.
Mit einem „M“ gekennzeichnete Ports werden zum Verwalten der Komponente verwendet und müssen auf der Komponente für den Zugriff durch den Verwaltungsserver geöffnet sein.
Wie Sie im obigen Diagramm sehen können, erhöht Apigee mTLS die Sicherheit von Verbindungen zwischen den meisten Komponenten im Cluster, darunter:
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-Benutzeroberfläche | SMTP (nur für externen IdP) | |
Postgres | Andere Postgres-, Zookeeper- und Cassandra-Knoten |
Ver-/Entschlüsselung von Nachrichten
Das Service Mesh von Apigee mTLS 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:
- Einen Proxy für ausgehenden Traffic, der ausgehende Nachrichten auf dem Hostknoten abfängt. Dieser Dienst verschlüsselt ausgehende Nachrichten, bevor sie an ihr Ziel gesendet werden.
- Einen 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 Verwaltungsserver beispielsweise eine Nachricht an den Router sendet, fängt der Proxydienst 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 Routerkomponente.
Dies alles geschieht transparent für die Edge-Komponenten: Sie kennen den Ver- und Entschlüsselungsprozess, der von den Consul-Proxy-Diensten ausgeführt wird, nicht.
Darüber hinaus verwendet Apigee mTLS das Dienstprogramm iptables
, einen Linux-Firewalldienst, der die Traffic-Weiterleitung verwaltet.
Voraussetzungen
Apigee mTLS bietet eine branchenübliche Möglichkeit zum Konfigurieren und Installieren des Service Mesh. Die Paketverwaltung und Konfigurationsautomatisierung werden unterstützt.
Da die Consul-Proxydienste eng als Portzuweisungen für einzelne Prozesse gekoppelt sind, wirkt sich eine Änderung an einem Knoten auf jeden anderen Knoten aus. Wenn sich Ihre Topologie ändert, müssen Sie daher Dienste auf jedem Knoten im Cluster neu konfigurieren und neu initialisieren.
Bevor Sie Apigee mTLS installieren können, muss Ihre Umgebung die folgenden in diesem Abschnitt beschriebenen Anforderungen erfüllen.
Diese Anforderungen umfassen:
- Edge für die Private Cloud-Version
- Eine Reihe von Dienstprogrammen, die installiert und aktiviert sind
- Ein Nutzerkonto mit der entsprechenden Berechtigungsstufe
- Einen Verwaltungscomputer (empfohlen)
Edge für die Private Cloud-Anforderungen
Apigee mTLS unterstützt die folgende Version von Edge für die Private Cloud (jedoch nicht auf allen unterstützten Plattformen, wie unter Betriebssystemanforderungen beschrieben):
- 4.19.06
- 4.19.01
Apigee mTLS erfordert, dass Ihr Private Cloud-Cluster eine Topologie verwendet, die mindestens drei Zookeeper-Knoten enthält. Daher können Sie Apigee mTLS nur auf Topologien installieren, die 5, 9, 12 (mehrere Rechenzentren) oder 13 Knoten verwenden. Weitere Informationen finden Sie unter Installationstopologien.
Anforderungen an das Betriebssystem
Apigee mTLS unterstützt die folgenden Plattformen für Ihren Private Cloud-Cluster (das unterstützte Betriebssystem für mTLS hängt von der Version der Private Cloud ab):
Betriebssystem | Unterstützte Version der privaten Cloud | ||
---|---|---|---|
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 |
Dienstprogramme/Pakete
Apigee mTLS setzt voraus, dass Sie die folgenden Pakete auf jeder Maschine in Ihrem Cluster, einschließlich Ihres Verwaltungscomputers, installiert und aktiviert haben, bevor Sie mit der Installation beginnen:
Dienstprogramm/Paket | Beschreibung | Nach Installation entfernen? |
---|---|---|
base64 |
Verifiziert Daten innerhalb der Installationsskripts. | |
gnu-bash gnu-sed gnu-grep |
Wird vom Installationsskript und anderen gängigen Tools verwendet. | |
iptables |
Ersetzt die Standardfirewall firewalld . |
|
iptables-services |
Bietet Funktionen für das Dienstprogramm iptables . |
|
lsof |
Wird vom Installationsskript verwendet. | |
nc |
Verifiziert iptables Routen. |
|
openssl |
Signiert Zertifikate lokal während des ersten Bootstrapping-Prozesses. |
Während der Installation installieren Sie auch das Consul-Paket auf dem Verwaltungscomputer, damit Sie Anmeldedaten und den Verschlüsselungsschlüssel generieren können.
Das Paket apigee-mtls
installiert und konfiguriert die Consul-Server, einschließlich der Proxys für eingehenden und ausgehenden Traffic auf ZooKeeper-Knoten im Cluster.
Nutzerkontoberechtigungen
Das Konto, das die Apigee mTLS-Installation auf jedem Knoten im Cluster ausführt, muss folgende Berechtigungen haben:
- Apigee-Komponenten starten, stoppen, neu starten und initialisieren
- Firewallregeln festlegen
- Neues Betriebssystem-/Systemnutzerkonto erstellen
- Dienste mit
systemctl
aktivieren, deaktivieren, starten, stoppen und maskieren
Verwaltungscomputer (empfohlen)
Apigee empfiehlt, dass Sie im Cluster einen Knoten haben, mit dem Sie verschiedene in diesem Dokument beschriebene Aufgaben ausführen können, darunter:
- Installieren Sie HashiCorp Consul 1.6.2.
- Generieren und verteilen Sie ein Zertifikat/Schlüsselpaar und einen Klatsch-Verschlüsselungsschlüssel.
- Aktualisieren und verteilen Sie die Konfigurationsdatei.
Für den Verwaltungscomputer ist Folgendes erforderlich:
- Sie haben die Dienstprogramme
apigee-service
undapigee-setup
heruntergeladen und installiert, wie unter Edge-Dienstprogramm für Apigee-Einrichtung installieren beschrieben. - Hat
scp/ssh
-Zugriff auf alle Knoten im Cluster. Zum Verteilen der Konfigurationsdatei und der Anmeldedaten benötigen Siescp/ssh
-Zugriff auf alle Hosts im Cluster. - Sie haben Root-Zugriff auf den Verwaltungscomputer.
Portnutzung und -zuweisung
In diesem Abschnitt werden die Portnutzung und Portzuweisungen beschrieben, um die Consul-Kommunikation mit Apigee mTLS zu unterstützen.
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 lokalen Host (127.0.0.1) zulassen. Dadurch können die Consul-Proxys mit den anderen Diensten kommunizieren, wenn 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 | Port des Consul-Servers | Beschreibung | Protokoll | Externe mtls-Agents zulassen * |
---|---|---|---|---|
Consul Server (ZooKeeper-Knoten) | 8300 |
Verbindet alle Consul-Server im Cluster. | RPC | |
8301 |
Verarbeitet Mitgliedschaften und Broadcast-Nachrichten innerhalb des Clusters. | UDP/TCP | ||
8302 |
WAN-Port, der Mitgliedschaften 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 Remotekommunikation oder -koordination verwendet. Er überwacht nur den Localhost. |
HTTP | ||
8502 |
Verarbeitet gRPC- und 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, dass Sie eingehende Anfragen auf Clustermitglieder beschränken (einschließlich datenspeicherübergreifender). Dazu können Sie iptables verwenden.
|
Wie diese Tabelle zeigt, müssen die Knoten, auf denen die consul-server
-Komponente ausgeführt wird (ZooKeeper-Knoten), die Ports 8301, 8302, 8502 und 8503 für alle Mitglieder des Clusters öffnen, die den Dienst apigee-mtls
ausführen, 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 Kommunikation mit Consul 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 | 10.700 bis 10.799 | 1 |
Cassandra | 10.100 bis 10.199 | 2 |
Message Processor | 10.500 bis 10.599 | 2 |
OpenLDAP | 10.200 bis 10.299 | 1 |
Postgres | 10.300 bis 10.399 | 3 |
QPID | 10.400 bis 10.499 | 2 |
Router | 10.600 bis 10.699 | 2 |
ZooKeeper | 10.001 bis 10.099 | 3 |
Consul weist Ports auf einfache lineare Weise zu. Wenn Ihr Cluster beispielsweise zwei Postgres-Knoten hat, verwendet der erste Knoten zwei Ports. Daher weist Consul ihm die Ports 10300 und 10301 zu. Da der zweite Knoten ebenfalls zwei Ports verwendet, 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 multipliziert mit je zwei Ports).
Wichtige Hinweise:
- Consul-Proxys können nicht dieselben Ports überwachen wie Apigee-Dienste.
- Consul hat nur einen Portadressraum. Portzuweisungen von Consul-Proxy 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 zuvor 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 Standardports anpassen, die Apigee mTLS verwendet. Informationen dazu finden Sie unter Proxy-Portbereich anpassen.
Beschränkungen
Für Apigee mTLS gelten die folgenden Einschränkungen:
- Cassandra-Kommunikation zwischen Knoten wird nicht verschlüsselt (Port 7000)
- Konfiguration und Einrichtung sind nicht idempotent. Wenn Sie also eine Änderung an einem Knoten vornehmen, müssen Sie dieselbe Änderung auf allen Knoten vornehmen. Das System übernimmt diese Änderung nicht für Sie und wendet sie auf andere Knoten an. Weitere Informationen finden Sie unter Vorhandene Apigee-mtls-Konfiguration ändern.
Terminologie
In diesem Abschnitt wird die folgende Terminologie verwendet:
Laufzeit | Definition |
---|---|
Cluster | Die Gruppe von Maschinen, aus denen Ihr Edge für die Private Cloud-Installation besteht. |
Consul | Das von Apigee mTLS verwendete Service Mesh. Informationen darüber, wie Consul Ihre Kommunikation mit der privaten Cloud schützt, finden Sie unter Sicherheitsmodell von Consul. |
mTLS | Gegenseitig authentifiziertes TLS. |
Service Mesh | Ein Overlay-Netzwerk oder ein Netzwerk innerhalb eines Netzwerks. |
TLS | Transaktionsschichtsicherheit. Ein branchenübliches Authentifizierungsprotokoll für eine sichere Kommunikation. |