Einführung in Apigee mTLS

Das Apigee mTLS-Feature erhöht die Sicherheit der Kommunikation zwischen Komponenten in Ihrem Edge für den Private Cloud-Cluster. Es bietet eine branchenübliche Methode zum Konfigurieren und Installieren des Service Mesh. Paketverwaltung und 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 Apigee mTLS absichert (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

Nachrichtenverschlüsselung/-entschlüsselung

Das Service Mesh von Apigee mTLS besteht aus Consul-Servern, die auf jedem ZooKeeper-Knoten im Cluster ausgeführt werden, und den folgenden Consul-Diensten auf jedem Knoten im Cluster:

  • Ein 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.
  • 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 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 Router-Komponente.

All dies geschieht transparent für die Edge-Komponenten: Sie sind sich des Ver- und Entschlüsselungsprozesses nicht bewusst, der von den Consul-Proxy-Diensten ausgeführt wird.

Darüber hinaus verwendet Apigee mTLS das Dienstprogramm iptables, einen Linux-Firewalldienst, der die Traffic-Weiterleitung verwaltet.

Voraussetzungen

Bevor Sie Apigee mTLS installieren können, muss Ihre Umgebung die folgenden Anforderungen erfüllen:

In den folgenden Abschnitten werden diese Anforderungen im Detail beschrieben.

Topologieanforderungen

Apigee mTLS erfordert, dass die Topologie Ihrer Umgebung mindestens drei Zookeeper-Knoten enthalten muss. Daher können Sie Apigee mTLS nur auf Topologien installieren, die 5, 9, 12 (Multi-Rechenzentrum) oder 13 Knoten verwenden. Weitere Informationen finden Sie unter Installationstopologien.

Dienstprogramme/Pakete

Apigee mTLS erfordert, dass die folgenden Pakete auf jeder Maschine in Ihrem Cluster, einschließlich Ihrer Verwaltungsmaschine, installiert und aktiviert sind, bevor Sie mit der Installation beginnen:

Dienstprogramm/Paket Beschreibung Kann nach der Installation entfernt werden?
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 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 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

Erstellen Sie vor der Installation ein neues Nutzerkonto oder prüfen Sie, ob Sie Zugriff auf ein Nutzerkonto mit erhöhten Berechtigungen haben.

Das Konto, das die Apigee mTLS-Installation auf jedem Knoten im Cluster ausführt, muss in der Lage sein,

  • 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 innerhalb des Clusters einen Knoten haben, auf dem Sie verschiedene in diesem Dokument beschriebene Verwaltungsaufgaben ausführen können, darunter:

  1. Installieren Sie HashiCorp Consul 1.6.2.
  2. Generieren und verteilen Sie ein Zertifikat/Schlüsselpaar und einen Klatsch-Verschlüsselungsschlüssel.
  3. Aktualisieren Sie die Konfigurationsdatei und verteilen Sie sie.

Beim Einrichten des Verwaltungscomputers:

  • Stellen Sie sicher, dass Sie Root-Zugriff darauf haben.
  • Laden Sie die Dienstprogramme apigee-service und apigee-setup herunter und installieren Sie sie, wie unter Edge-Dienstprogramm apigee-setup installieren beschrieben.
  • Sorgen Sie dafür, dass Sie über scp/ssh vom Verwaltungscomputer auf alle Knoten im Cluster zugreifen können. Dies ist erforderlich, damit Sie die Konfigurationsdatei und die Anmeldedaten weitergeben können.

Portnutzung und -zuweisung

In diesem Abschnitt werden 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 Dienst apigee-mtls verwenden, müssen Verbindungen von Diensten auf dem lokalen Host (127.0.0.1) zulassen. Auf diese Weise 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 Port des Consul-Servers 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 Remotekommunikation oder -koordination verwendet. Er überwacht nur localhost.

HTTP
8502 Verarbeitet gRPC- und HTTPS-Verbindungen zu den Consul Server APIs von anderen Knoten im Cluster aus. 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 speicherübergreifender Anfragen). Sie können dazu iptables verwenden.

Wie in dieser Tabelle gezeigt, 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, 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 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.000 bis 10.099 3

Consul weist Ports einfach linear 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 die Nummern 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 beobachten wie Apigee-Dienste.
  • 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 zuvor beschrieben.

In einer Konfiguration mit mehreren Rechenzentren müssen alle Hosts, die mTLS ausführen, auch Port 8302 öffnen.

Sie können die Standardports anpassen, die Apigee mTLS verwendet. Informationen dazu finden Sie unter Proxy-Portbereich anpassen.

Beschränkungen

Apigee mTLS hat 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 wendet diese Änderung nicht auf anderen Knoten an. Weitere Informationen finden Sie unter Vorhandene apigee-mtls-Konfiguration ändern.

Terminologie

In diesem Abschnitt werden folgende Begriffe 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 Sicherheit auf Transaktionsebene Ein branchenübliches Authentifizierungsprotokoll für eine sichere Kommunikation.