Die Apigee-mTLS-Funktion erhöht die Sicherheit der Kommunikation zwischen Komponenten in Ihrem Edge for Private Cloud-Cluster. Sie bietet eine branchenübliche Möglichkeit, das Service-Mesh zu konfigurieren und zu installieren. Es unterstützt die Paketverwaltung und die Automatisierung der Konfiguration.
Architekturübersicht
Um eine sichere Kommunikation zwischen Komponenten zu ermöglichen, verwendet Apigee mTLS ein Service Mesh, das sichere, gegenseitig authentifizierte TLS-Verbindungen zwischen Komponenten herstellt.
Das folgende Bild zeigt Verbindungen zwischen Apigee-Komponenten, die durch Apigee mTLS gesichert werden (in red). Die im Bild gezeigten Ports sind Beispiele. Eine Liste der Bereiche, die von den einzelnen Komponenten verwendet werden können, finden Sie unter Portnutzung.
Hinweis: Mit „M“ gekennzeichnete Ports werden zum Verwalten der Komponente verwendet und müssen auf der Komponente für den Zugriff durch den Management Server geöffnet sein.
Wie im Diagramm oben zu sehen ist, bietet Apigee mTLS zusätzliche Sicherheit für 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-Benutzeroberfläche | SMTP (nur für externen IdP) | |
Postgres | Andere Postgres-, Zookeeper- und Cassandra-Knoten |
Nachrichtenverschlüsselung/-entschlüsselung
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:
- Ein Ausgangsproxy, 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 er sie an ihr endgültiges Ziel sendet.
Wenn der Management Server beispielsweise eine Nachricht an den Router sendet, fängt der Egress-Proxydienst 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.
Das alles geschieht transparent für die Edge-Komponenten: Sie sind sich des Verschlüsselungs- und Entschlüsselungsprozesses, der von den Consul-Proxy-Diensten durchgeführt wird, nicht bewusst.
Außerdem verwendet Apigee mTLS das iptables
-Dienstprogramm, 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:
- Topologieanforderungen
- Dienstprogramme installiert und aktiviert
- Nutzerkonto mit der entsprechenden Berechtigungsstufe
- Administrationscomputer (empfohlen)
- Portnutzung
In den folgenden Abschnitten werden die einzelnen Anforderungen ausführlich beschrieben.
Topologieanforderungen
Für Apigee mTLS muss die Topologie Ihrer Umgebung mindestens drei Zookeeper-Knoten enthalten. Daher können Sie Apigee mTLS nur in Topologien mit 5, 9, 12 (mehrere Rechenzentren) oder 13 Knoten installieren. Weitere Informationen finden Sie unter Installationstopologien.
Dienstprogramme/Pakete
Für Apigee mTLS müssen die folgenden Pakete auf jeder Maschine in Ihrem Cluster, einschließlich Ihrer Administratormaschine, installiert und aktiviert sein, bevor Sie mit der Installation beginnen:
Dienstprogramm/Paket | Beschreibung | Darf das Gerät nach der Installation entfernt werden? |
---|---|---|
base64 |
Überprüft Daten in den Installationsskripts. | |
gnu-bash gnu-sed gnu-grep |
Wird vom Installationsskript und anderen gängigen Tools verwendet. | |
iptables |
Ersetzt die Standardfirewall firewalld . |
|
iptables-services |
Stellt Funktionen für das iptables -Dienstprogramm bereit. |
|
lsof |
Wird vom Installationsskript verwendet. | |
nc |
Bestätigt iptables -Routen. |
|
openssl |
Signiert Zertifikate lokal während des ersten Bootstrapping-Vorgangs. |
Während der Installation installieren Sie auch das Consul-Paket auf dem Verwaltungscomputer, damit Sie Anmeldedaten und den Verschlüsselungsschlüssel generieren können.
Mit dem Paket apigee-mtls
werden die Consul-Server, einschließlich der Ingress- und Egress-Proxys, 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, mit dem die Apigee mTLS-Installation auf jedem Knoten im Cluster ausgeführt wird, muss folgende Voraussetzungen erfüllen:
- Apigee-Komponenten starten, beenden, neu starten und initialisieren
- Firewallregeln festlegen
- Neues Betriebssystem-/Systemnutzerkonto erstellen
- Dienste mit
systemctl
aktivieren, deaktivieren, starten, stoppen und maskieren
Administrationscomputer (empfohlen)
Apigee empfiehlt, dass Sie einen Knoten im Cluster 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üsselpaar und einen Gossip-Verschlüsselungsschlüssel.
- Konfigurationsdatei aktualisieren und verteilen
Beim Einrichten des Verwaltungscomputers:
- Prüfen Sie, ob Sie Root-Zugriff darauf haben.
- Laden Sie die Dienstprogramme
apigee-service
undapigee-setup
herunter und installieren Sie sie auf dem Knoten, wie unter Edge-Dienstprogramm „apigee-setup“ installieren beschrieben. - Prüfen Sie, ob Sie mit
scp/ssh
von der Verwaltungsmaschine aus auf alle Knoten im Cluster zugreifen können. Dies ist erforderlich, damit Sie Ihre Konfigurationsdatei und Anmeldedaten verteilen können.
Portnutzung und ‑zuweisung
In diesem Abschnitt wird die Portnutzung und 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 apigee-mtls
-Dienst 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, damit Anfragen von allen Knoten im Cluster akzeptiert werden:
Knoten | Consul-Serverport | Beschreibung | Protokoll | Externe mtls-Agents zulassen * |
---|---|---|---|---|
Consul-Server (ZooKeeper-Knoten) | 8300 |
Verbindet alle Consul-Server im Cluster. | RPC | |
8301 |
Verwaltet Mitgliedschaften und Broadcast-Nachrichten im Cluster. | UDP/TCP | ||
8302 |
WAN-Port, über den Mitgliedschafts- und Broadcastnachrichten in einer Konfiguration mit mehreren Rechenzentren verarbeitet werden. | 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, sondern nur auf localhost überwacht. |
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 datenbankübergreifender Anfragen). Dies können Sie mit iptables tun.
|
Wie in dieser Tabelle zu sehen ist, müssen die Knoten, auf denen die consul-server
-Komponente (ZooKeeper-Knoten) ausgeführt wird, die Ports 8301, 8302, 8502 und 8503 für alle Mitglieder des Clusters öffnen, auf denen der apigee-mtls
-Dienst ausgeführt wird, auch über Rechenzentren hinweg. Auf Knoten, auf denen ZooKeeper nicht ausgeführt wird, müssen diese Ports nicht geöffnet werden.
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 | 10500 bis 10599 | 2 |
SymasLDAP | 10200 bis 10299 | 1 |
Postgres | 10300 bis 10399 | 3 |
Qpid | 10400 bis 10499 | 2 |
Router | 10600 bis 10699 | 2 |
ZooKeeper | 10000 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 also die Ports 10300 und 10301 zu. Der zweite Knoten verwendet ebenfalls zwei Ports. Consol weist diesem Knoten also die Ports 10302 und 10303 zu. Das gilt für alle Komponententypen.
Die tatsächliche Anzahl der Ports hängt von der Topologie ab: Wenn Ihr Cluster zwei Postgres-Knoten hat, müssen Sie vier Ports öffnen (zwei Knoten mal zwei Ports pro Knoten).
Wichtige Hinweise:
- Consul-Proxys können nicht dieselben Ports wie Apigee-Dienste überwachen.
- Consul hat nur einen Portadressraum. Die Consul-Proxy-Portzuweisungen müssen im gesamten Cluster, einschließlich der Rechenzentren, eindeutig sein. Wenn Proxy A auf Host A den Port 15000 überwacht, kann Proxy B auf Host B den Port 15000 nicht überwachen.
- Die Anzahl der verwendeten Ports variiert je nach Topologie, wie bereits 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 von Apigee mTLS verwendet werden. Informationen dazu finden Sie unter Proxy-Portbereich anpassen.
Beschränkungen
Für Apigee mTLS gelten die folgenden Einschränkungen:
- Die Kommunikation zwischen Cassandra-Knoten (Port 7000) wird nicht verschlüsselt.
- Konfiguration und Einrichtung sind nicht idempotent. Wenn Sie also eine Änderung an einem Knoten vornehmen, müssen Sie dieselbe Änderung an allen Knoten vornehmen. Das System wendet diese Änderung nicht automatisch auf andere Knoten an. Weitere Informationen finden Sie unter Vorhandene apigee-mtls-Konfiguration ändern.
Terminologie
In diesem Abschnitt werden die folgenden Begriffe verwendet:
Begriff | Definition |
---|---|
Cluster | Die Gruppe von Maschinen, aus denen Ihre Edge for Private Cloud-Installation besteht. |
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 Branchenstandard-Authentifizierungsprotokoll für sichere Kommunikation. |