Zugriff auf Ihren Cluster - Amazon MemoryDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Zugriff auf Ihren Cluster

Ihre MemoryDB-Instances sind für den Zugriff über eine Amazon EC2 EC2-Instance konzipiert.

Sie können von einer Amazon EC2-Instance in derselben Amazon VPC aus auf Ihren MemoryDB-Knoten zugreifen. Oder Sie können mithilfe von VPC-Peering von einem Amazon EC2 in einer anderen Amazon VPC auf Ihren MemoryDB-Knoten zugreifen.

Gewähren Sie Zugriff auf Ihren Cluster

Sie können nur von einer Amazon EC2-Instance aus, die in derselben Amazon VPC läuft, eine Verbindung zu Ihrem MemoryDB-Cluster herstellen. In diesem Fall müssen Sie Netzwerkzugang zum Cluster gewähren.

So gewähren Sie einem Cluster den Netzwerkeingang aus einer Amazon-VPC-Sicherheitsgruppe
  1. Melden Sie sich bei der Amazon EC2 EC2-Konsole an AWS Management Console und öffnen Sie sie unter https://console.aws.amazon.com/ec2/.

  2. Wählen Sie im linken Navigationsbereich unter Netzwerk und Sicherheit die Option Sicherheitsgruppen aus.

  3. Wählen Sie aus der Liste der Sicherheitsgruppen die Sicherheitsgruppe Ihrer Amazon VPC aus. Sofern Sie keine Sicherheitsgruppe für die Verwendung von MemoryDB erstellt haben, erhält diese Sicherheitsgruppe den Namen Standard.

  4. Wählen Sie die Registerkarte Inbound und verfahren Sie dann wie folgt:

    1. Wählen Sie Bearbeiten aus.

    2. Wählen Sie Regel hinzufügen aus.

    3. Wählen Sie in der Spalte Typ die Option Benutzerdefinierte TCP-Regel aus.

    4. Geben Sie in das Feld Port Range die Portnummer Ihres Clusterknotens ein. Diese Nummer muss mit der Nummer übereinstimmen, die Sie beim Starten des Clusters angegeben haben. Der Standardport für Redis OSS ist. 6379

    5. Wählen Sie im Feld Quelle die Option Anywhere mit dem Portbereich (0.0.0.0/0) aus, sodass jede Amazon EC2 EC2-Instance, die Sie in Ihrer Amazon VPC starten, eine Verbindung zu Ihren MemoryDB-Knoten herstellen kann.

      Wichtig

      Durch das Öffnen des MemoryDB-Clusters für 0.0.0.0/0 wird der Cluster nicht dem Internet zugänglich gemacht, da er keine öffentliche IP-Adresse hat und daher nicht von außerhalb der VPC darauf zugegriffen werden kann. Die Standardsicherheitsgruppe kann jedoch auf andere Amazon-EC2-Instances im Kundenkonto angewendet werden und diese Instances können eine öffentliche IP-Adresse haben. Wenn diese Instances zufälligerweise eine Aktion auf dem Standardport ausführen, dann könnte dieser Service unbeabsichtigt zugänglich gemacht werden. Daher empfehlen wir, eine VPC-Sicherheitsgruppe zu erstellen, die ausschließlich von MemoryDB verwendet wird. Weitere Informationen finden Sie unter Benutzerdefinierte Sicherheitsgruppen.

    6. Wählen Sie Speichern.

Wenn Sie eine Amazon EC2 EC2-Instance in Ihrer Amazon VPC starten, kann diese Instance eine Verbindung zu Ihrem MemoryDB-Cluster herstellen.

Zugriff auf MemoryDB-Ressourcen von außen AWS

MemoryDB ist ein Dienst, der für die interne Verwendung in Ihrer VPC konzipiert wurde. Von einem externen Zugriff wird wegen der Latenz des Internetverkehrs und aufgrund von Sicherheitsbedenken abgeraten. Wenn jedoch für Test- oder Entwicklungszwecke ein externer Zugriff auf MemoryDB erforderlich ist, kann dieser über ein VPN erfolgen.

Mit dem AWS Client VPN ermöglichen Sie externen Zugriff auf Ihre MemoryDB-Knoten mit den folgenden Vorteilen:

  • Eingeschränkter Zugriff auf zugelassene Benutzer oder Authentifizierungsschlüssel;

  • Verschlüsselter Verkehr zwischen dem VPN-Client und dem AWS VPN-Endpunkt;

  • beschränkter Zugriff auf bestimmte Subnetze oder Knoten,

  • einfacher Widerruf des Zugriffs von Benutzern oder Authentifizierungsschlüsseln,

  • Prüfung von Verbindungen.

Die folgenden Verfahren veranschaulichen, wie Sie:

Anlegen einer Zertifizierungsstelle

Es ist möglich, eine Zertifizierungsstelle (Certificate Authority, CA) mit verschiedenen Methoden oder Tools zu erstellen. Wir schlagen dazu das Dienstprogramm easy-rsa vor, das vom OpenVPN-Projekt bereitgestellt wird. Unabhängig von der Option, die Sie wählen, achten Sie darauf, die Schlüssel sicher zu halten. Über das folgende Verfahren werden die easy-rsa-Skripte heruntergeladen, die Zertifizierungsstelle und die Schlüssel zur Authentifizierung des ersten VPN-Clients erstellt:

  • Um die ersten Zertifikate zu erstellen, öffnen Sie ein Terminal und gehen Sie folgendermaßen vor:

    • git clone https://github.com/OpenVPN/easy-rsa

    • cd easy-rsa

    • ./easyrsa3/easyrsa init-pki

    • ./easyrsa3/easyrsa build-ca nopass

    • ./easyrsa3/easyrsa build-server-full server nopass

    • ./easyrsa3/easyrsa build-client-full client1.domain.tld nopass

    Es wird ein pki-Unterverzeichnis mit den Zertifikaten unter easy-rsa erstellt.

  • Senden Sie das Serverzertifikat an den AWS Certificate Manager (ACM):

    • Wählen Sie in der ACM-Konsole die Option Certificate Manager (Zertifikatmanager)aus.

    • Wählen Sie Import Certificate (Zertifikat importieren)aus.

    • Geben Sie das in der Datei easy-rsa/pki/issued/server.crt zur Verfügung stehende Zertifikat des öffentlichen Schlüssels in das Feld Certificate body (Zertifikattext) ein.

    • Fügen Sie den unter easy-rsa/pki/private/server.key zur Verfügung stehenden privaten Schlüssel in das Feld Private Certificate Key (Privater Zertifikatsschlüssel) ein. Achten Sie darauf, dass Sie alle Zeilen zwischen BEGIN AND END PRIVATE KEY (einschließlich der Zeilen BEGIN und END) auswählen.

    • Fügen Sie den in der Datei easy-rsa/pki/ca.crt verfügbaren öffentlichen CA-Schlüssel in das Feld Certificate chain (Zertifikatskette) ein.

    • Wählen Sie die Option Review and import (Überprüfen und Importieren) aus.

    • Klicken Sie auf Import (Importieren).

    Führen Sie den folgenden Befehl aus, um die Serverzertifikate mithilfe der AWS CLI an ACM zu senden: aws acm import-certificate --certificate fileb://easy-rsa/pki/issued/server.crt --private-key file://easy-rsa/pki/private/server.key --certificate-chain file://easy-rsa/pki/ca.crt --region region

    Notieren Sie sich den Zertifikats-ARN für eine spätere Verwendung.

Konfiguration der AWS Client-VPN-Komponenten

Verwendung der AWS Konsole

Wählen Sie auf der AWS Konsole Dienste und dann VPC aus.

Wählen Sie unter Virtual Private Network (Virtuelles privates Netzwerk) die Option Client VPN Endpoints (Client-VPN-Endpunkte) aus und führen Sie die folgenden Schritte aus:

Konfiguration von AWS Client-VPN-Komponenten

  • Wählen Sie Create Client VPN Endpoint (Client-VPN-Endpunkt erstellen) aus.

  • Folgende Optionen stehen Ihnen zur Verfügung:

    • Client IPv4 CIDR: Verwenden Sie ein privates Netzwerk mit einer Netzwerkmaske in einem Bereich von mindestens /22. Stellen Sie sicher, dass das ausgewählte Subnetz nicht mit den Adressen der VPC-Netzwerke in Konflikt steht. Beispiel: 10.0.0.0/22.

    • Wählen Sie unter Server certificate ARN (Serverzertifikat-ARN) den ARN des zuvor importierten Zertifikats aus.

    • Wählen Sie die Option Use mutual authentication (Gegenseitige Authentifizierung verwenden) aus.

    • Wählen Sie unter Client certificate ARN (Client-Zertifikats-ARN) den ARN des zuvor importierten Zertifikats aus.

    • Wählen Sie Create Client VPN Endpoint (Client-VPN-Endpunkt erstellen) aus.

Unter Verwendung der AWS CLI

Führen Sie den folgenden Befehl aus:

aws ec2 create-client-vpn-endpoint --client-cidr-block "10.0.0.0/22" --server-certificate-arn arn:aws:acm:us-east-1:012345678912:certificate/0123abcd-ab12-01a0-123a-123456abcdef --authentication-options Type=certificate-authentication,,MutualAuthentication={ClientRootCertificateChainArn=arn:aws:acm:us-east-1:012345678912:certificate/123abcd-ab12-01a0-123a-123456abcdef} --connection-log-options Enabled=false

Beispielausgabe:

"ClientVpnEndpointId": "cvpn-endpoint-0123456789abcdefg", "Status": { "Code": "pending-associate" }, "DnsName": "cvpn-endpoint-0123456789abcdefg.prod.clientvpn.us-east-1.amazonaws.com" }

Zuordnen der Zielnetzwerke zum VPN-Endpunkt

  • Wählen Sie den neuen VPN-Endpunkt und dann die Registerkarte Associations (Zuordnungen) aus.

  • Wählen Sie Associate (Zuordnen) aus und nutzen Sie die folgenden Optionen:

    • VPC: Wählen Sie die VPC des MemoryDB-Clusters aus.

    • Wählen Sie eines der Netzwerke des MemoryDB-Clusters aus. Überprüfen Sie im Zweifelsfall die Netzwerke in den Subnetzgruppen im MemoryDB-Dashboard.

    • Wählen Sie Associate (Zuordnen)aus. Wiederholen Sie ggf. die Schritte für die verbleibenden Netzwerke.

Mit dem AWS CLI

Führen Sie den folgenden Befehl aus:

aws ec2 associate-client-vpn-target-network --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg --subnet-id subnet-0123456789abdcdef

Beispielausgabe:

"Status": { "Code": "associating" }, "AssociationId": "cvpn-assoc-0123456789abdcdef" }

Überprüfen der VPN-Sicherheitsgruppe

Der VPN-Endpunkt übernimmt automatisch die Standard-Sicherheitsgruppe der VPC. Überprüfen Sie die Regeln für eingehenden und ausgehenden Datenverkehr und bestätigen Sie, ob die Sicherheitsgruppe den Datenverkehr vom VPN-Netzwerk (definiert in den VPN-Endpunkteinstellungen) zu den MemoryDB-Netzwerken an den Serviceports zulässt (standardmäßig 6379 für Redis).

Wenn Sie die Sicherheitsgruppe ändern müssen, die dem VPN-Endpunkt zugewiesen ist, gehen Sie wie folgt vor:

  • Wählen Sie die aktuelle Sicherheitsgruppe aus.

  • Klicken Sie auf Apply Security Group (Sicherheitsgruppe anwenden).

  • Wählen Sie die neue Sicherheitsgruppe aus.

Verwenden der AWS CLI

Führen Sie den folgenden Befehl aus:

aws ec2 apply-security-groups-to-client-vpn-target-network --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefga  --vpc-id vpc-0123456789abdcdef --security-group-ids sg-0123456789abdcdef

Beispielausgabe:

"SecurityGroupIds": [ "sg-0123456789abdcdef" ] }

Anmerkung

Die MemoryDB-Sicherheitsgruppe muss auch den Datenverkehr zulassen, der von den VPN-Clients kommt. Die Adressen der Clients werden entsprechend dem VPC-Netzwerk mit der VPN-Endpunktadresse maskiert. Berücksichtigen Sie daher das VPC-Netzwerk (nicht das Netzwerk der VPN-Clients), wenn Sie die Eingangsregel für die MemoryDB-Sicherheitsgruppe erstellen.

Autorisieren des VPN-Zugriffs auf die Zielnetzwerke

Wählen Sie auf der Registerkarte Authorization (Autorisierung) die Option Authorize Ingress (Autorisierung eingehender Daten) aus und geben Sie Folgendes an:

  • Zielnetzwerk, um den Zugriff zu ermöglichen: Verwenden Sie entweder 0.0.0.0/0, um den Zugriff auf jedes Netzwerk (einschließlich des Internets) zu ermöglichen, oder schränken Sie die MemoryDB-Netzwerke/Hosts ein.

  • Wählen Sie unter Grant access to: (Zugriff gewähren für:) die Option Allow access to all users (Zugriff für alle Benutzer zulassen)aus.

  • Wählen Sie Add Authorization Rules (Autorisierungsregeln hinzufügen)aus.

Mit dem AWS CLI

Führen Sie den folgenden Befehl aus:

aws ec2 authorize-client-vpn-ingress --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg --target-network-cidr 0.0.0.0/0 --authorize-all-groups

Beispielausgabe:

{ "Status": { "Code": "authorizing" } }

Ermöglichen des Zugriffs auf das Internet über VPN-Clients

Wenn Sie über das VPN im Internet surfen müssen, müssen Sie eine zusätzliche Route erstellen. Wählen Sie die Registerkarte Route Table (Routentabelle) und dann die Option Create Route (Route erstellen) aus:

  • Routenziel: 0.0.0.0/0

  • Target VPC Subnet ID (Ziel-VPC-Subnetz-ID): Wählen Sie eines der zugeordneten Subnetze mit Zugang zum Internet aus.

  • Klicken Sie auf Create Route (Route erstellen).

Mit dem AWS CLI

Führen Sie den folgenden Befehl aus:

aws ec2 create-client-vpn-route --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg --destination-cidr-block 0.0.0.0/0 --target-vpc-subnet-id subnet-0123456789abdcdef

Beispielausgabe:

{ "Status": { "Code": "creating" } }

Konfigurieren des VPN-Clients

Wählen Sie im AWS Client-VPN-Dashboard den kürzlich erstellten VPN-Endpunkt aus und wählen Sie Client-Konfiguration herunterladen aus. Kopieren Sie die Konfigurationsdatei sowie die Dateien easy-rsa/pki/issued/client1.domain.tld.crt und easy-rsa/pki/private/client1.domain.tld.key. Bearbeiten Sie die Konfigurationsdatei und ändern oder fügen Sie die folgenden Parameter hinzu:

  • cert: Fügen Sie eine neue Zeile hinzu, wobei der Parameter „cert“ auf die Datei client1.domain.tld.crt verweist. Verwenden Sie den vollständigen Pfad zu der Datei. Beispiel: cert /home/user/.cert/client1.domain.tld.crt

  • cert: key: Fügen Sie eine neue Zeile hinzu, wobei der Parameter „key“ auf die Datei client1.domain.tld.key verweist. Verwenden Sie den vollständigen Pfad zu der Datei. Beispiel: key /home/user/.cert/client1.domain.tld.key

Stellen Sie die VPN-Verbindung mit folgendem Befehl her: sudo openvpn --config downloaded-client-config.ovpn

Aufheben des Zugriffs

Soll die Gültigkeit des Zugriffs eines bestimmten Clientschlüssels aufgehoben werden, muss der Schlüssel in der Zertifizierungsstelle widerrufen werden. Senden Sie dann die Sperrliste an AWS Client VPN.

Widerrufen des Schlüssels mit easy-rsa:

  • cd easy-rsa

  • ./easyrsa3/easyrsa revoke client1.domain.tld

  • Geben Sie „yes“ (Ja) ein, um fortzufahren, oder nehmen Sie zum Abbrechen eine andere Eingabe vor.

    Continue with revocation: `yes` ... * `./easyrsa3/easyrsa gen-crl

  • Es wurde eine aktualisierte CRL erstellt. CRL-Datei: /home/user/easy-rsa/pki/crl.pem

Import der Sperrliste in das AWS Client VPN:

  • Wählen Sie auf dem AWS Management ConsoleDienste und dann VPC aus.

  • Wählen Sie Client VPN Endpoints (Client-VPN-Endpunkte aus.

  • Wählen Sie den Client-VPN-Endpunkt aus und klicken Sie dann auf Actions (Aktionen) -> Import Client Certificate CRL (Client-Zertifikats-CRL importieren).

  • Fügen Sie den Inhalt der Datei crl.pem-Datei ein:

Verwenden Sie den AWS CLI

Führen Sie den folgenden Befehl aus:

aws ec2 import-client-vpn-client-certificate-revocation-list --certificate-revocation-list file://./easy-rsa/pki/crl.pem --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg

Beispielausgabe:

Example output: { "Return": true }