Verbinden mit einer Datenbank über RDS-Proxy - Amazon Aurora

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.

Verbinden mit einer Datenbank über RDS-Proxy

Sie stellen eine Verbindung mit einem Aurora-DB-Cluster oder einem Cluster, der Aurora Serverless v2 verwendet, über einen Proxy in der Regel auf die gleiche Weise her, wie Sie eine direkte Verbindung mit der Datenbank herstellen. Der Hauptunterschied besteht darin, dass Sie anstelle des Cluster-Endpunkts den Proxy-Endpunkt angeben. Standardmäßig sind alle Proxyverbindungen read/write fähig und verwenden die Writer-Instanz. Wenn Sie den Reader-Endpunkt normalerweise für schreibgeschützte Verbindungen verwenden, können Sie einen zusätzlichen schreibgeschützten Endpunkt für den Proxy erstellen. Diesen Endpunkt können Sie auf die gleiche Weise verwenden. Weitere Informationen finden Sie unter Überblick über Proxy-Endpunkte.

Mit Datenbankanmeldeinformationen eine Verbindung zu einer Datenbank herstellen

Gehen Sie wie folgt vor, um mithilfe von Datenbankanmeldedaten eine Verbindung zu einem Proxy herzustellen:

  1. Suchen Sie den Proxy-Endpunkt. Im finden Sie den AWS Management Console Endpunkt auf der Detailseite für den entsprechenden Proxy. Mit dem AWS CLI können Sie den describe-db-proxiesBefehl verwenden. Im folgenden Beispiel wird gezeigt, wie dies geschieht.

    # Add --output text to get output as a simple tab-separated list. $ aws rds describe-db-proxies --query '*[*].{DBProxyName:DBProxyName,Endpoint:Endpoint}' [ [ { "Endpoint": "the-proxy.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy" }, { "Endpoint": "the-proxy-other-secret.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy-other-secret" }, { "Endpoint": "the-proxy-rds-secret.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy-rds-secret" }, { "Endpoint": "the-proxy-t3.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy-t3" } ] ]
  2. Geben Sie den Endpunkt als Hostparameter in der Verbindungszeichenfolge für Ihre Clientanwendung an. Geben Sie beispielsweise den Proxy-Endpunkt als Wert für die Option mysql -h oder psql -h an.

  3. Geben Sie denselben Datenbankbenutzernamen und dasselbe Passwort an, die Sie normalerweise verwenden.

Mithilfe der IAM-Authentifizierung eine Verbindung zu einer Datenbank herstellen

Wenn Sie die IAM-Authentifizierung mit RDS Proxy verwenden, haben Sie zwei Optionen für die Authentifizierung zwischen Ihrem Client und dem Proxy:

  • Richten Sie Ihre Datenbankbenutzer so ein, dass sie sich mit normalen Benutzernamen und Passwörtern authentifizieren. RDS Proxy ruft den Benutzernamen und das Passwort von Secrets Manager ab. Die Verbindung von RDS-Proxy zur zugrunde liegenden Datenbank erfolgt nicht über IAM.

  • Sie können auch die end-to-end IAM-Authentifizierung verwenden, bei der über den Proxy mithilfe von IAM eine Verbindung zu Ihrer Datenbank hergestellt wird, ohne dass Datenbankanmeldeinformationen erforderlich sind.

Um mittels IAM-Authentifizierung eine Verbindung mit dem RDS-Proxy herzustellen, befolgen Sie das gleiche allgemeine Verfahren wie für die IAM-Authentifizierung mit einem Aurora-DB-Cluster. Allgemeine Informationen zur Verwendung von IAM finden Sie unter Sicherheit in Amazon Aurora. Wenn Sie die end-to-end IAM-Authentifizierung verwenden, stellen Sie Ihrem DB-Benutzer das IAM-Authentifizierungs-Plugin zur Verfügung. Siehe Erstellen eines Datenbankkontos mithilfe der IAM-Authentifizierung.

Zu den Hauptunterschieden bei der IAM-Nutzung für RDS-Proxy gehören die folgenden:

  • Bei der Standard-IAM-Authentifizierung verfügen Datenbankbenutzer über reguläre Anmeldeinformationen in der Datenbank. Sie richten Secrets Manager-Geheimnisse ein, die diese Benutzernamen und Passwörter enthalten, und autorisieren RDS-Proxy, die Anmeldeinformationen von Secrets Manager abzurufen. Die IAM-Authentifizierung gilt für die Verbindung zwischen Ihrem Clientprogramm und dem Proxy. Der Proxy authentifiziert sich dann bei der Datenbank mit den Anmeldeinformationen aus Benutzername und Passwort, die von Secrets Manager abgerufen wurden.

  • Mit der end-to-end IAM-Authentifizierung müssen Sie Secrets Manager nicht für Datenbankanmeldedaten konfigurieren. Die IAM-Authentifizierung gilt für die Verbindung zwischen dem Client zum Proxy und dem Proxy zur Datenbank.

  • Anstelle des Instance-, Cluster- oder Leser-Endpunkts geben Sie den Proxy-Endpunkt an. Weitere Informationen zum Proxy-Endpunkt finden Sie unter Herstellen einer Verbindung zu Ihrem DB--Cluster mithilfe der IAM-Authentifizierung.

  • Sie müssen Transport Layer Security (TLS)/Secure Sockets Layer (SSL) verwenden, wenn Sie mit IAM-Authentifizierung eine Verbindung zu einem Proxy herstellen.

Sie können einem bestimmten Benutzer Zugriff auf den Proxy gewähren, indem Sie die IAM-Richtlinie ändern. Ein Beispiel folgt.

"Resource": "arn:aws:rds-db:us-east-2:1234567890:dbuser:prx-ABCDEFGHIJKL01234/db_user"
Tipp

Beachten Sie bei der Konfiguration der IAM-Authentifizierung für RDS-Proxyverbindungen die folgenden wichtigen Richtlinien, um Verbindungsprobleme zu vermeiden:

  • Gewähren Sie die rds_iam Rolle nicht und behalten Sie gleichzeitig die allgemeine Passwortauthentifizierung für denselben Datenbankbenutzer oder dieselbe Rolle bei.

  • Denken Sie daran, dass Clients zwar mithilfe der IAM-Authentifizierung eine Verbindung zum RDS-Proxy herstellen, RDS-Proxy jedoch immer mithilfe der Kennwortauthentifizierung über Secrets Manager eine Verbindung zur Datenbank herstellt.

  • Wenn Sie häufig Verbindungsabbrüche und Verbindungswiederverbindungen feststellen, entfernen Sie alle vorhandenen rds_iam Berechtigungen für den Benutzer oder die Rolle und verwenden Sie nur die Kennwortauthentifizierung.

  • Stellen Sie sicher, dass Ihre Passwortrichtlinie die SCRAM-SHA-256-Anforderungen für sichere Zeichen erfüllt.

Die Kombination von IAM- und Kennwortauthentifizierungsmethoden für denselben Datenbankbenutzer kann zu Verbindungsinstabilität führen.

Überlegungen zum Herstellen einer Verbindung zu PostgreSQL

Stellen Sie beim Erstellen eines neuen PostgreSQL-Datenbankbenutzers für die Verbindung mit dem RDS-Proxy sicher, dass Sie die Benutzerberechtigung CONNECT für die Datenbank gewähren. Ohne diese kann der Benutzer keine Verbindung herstellen. Weitere Informationen finden Sie unter Hinzufügen eines neuen Datenbankbenutzers zu einer PostgreSQL-Datenbank bei Verwendung von RDS-Proxy.

Wenn ein Client beginnt, eine Verbindung mit einer PostgreSQL-Datenbank herzustellen, sendet er eine Startmeldung. Diese Nachricht enthält Paare von Parameternamen und Wertzeichenfolgen. Weitere Informationen finden Sie unter StartupMessage in den PostgreSQL-Nachrichtenformaten in der PostgreSQL-Dokumentation.

Wenn Sie eine Verbindung über einen RDS-Proxy herstellen, kann die Startmeldung die folgenden aktuell erkannten Parameter enthalten:

  • user

  • database

Die Startmeldung kann auch die folgenden zusätzlichen Laufzeitparameter enthalten:

Weitere Informationen zum PostgreSQL-Messaging finden Sie im Frontend/Backend-Protokoll in der PostgreSQL-Dokumentation.

Für PostgreSQL empfehlen wir bei Verwendung von JDBC Folgendes, um Pinning zu vermeiden:

  • Stellen Sie den JDBC-Verbindungsparameter assumeMinServerVersion mindestens auf 9.0 ein, um Pinning zu vermeiden. Dadurch wird verhindert, dass der JDBC-Treiber beim Starten der Verbindung einen zusätzlichen Roundtrip durchführt, wenn SET extra_float_digits = 3 ausgeführt wird.

  • Setzen Sie den JDBC-Verbindungsparameter ApplicationName auf any/your-application-name, um Pinning zu vermeiden. Dadurch wird verhindert, dass der JDBC-Treiber beim Starten der Verbindung einen zusätzlichen Roundtrip ausführt, wenn er ausführ SET application_name = "PostgreSQL JDBC Driver". Beachten Sie, dass der JDBC-Parameter ApplicationName, der PostgreSQL-StartupMessage-Parameter aber application_name ist.

Weitere Informationen finden Sie unter Vermeiden von Pinning beim RDS-Proxy. Weitere Informationen zum Herstellen einer Verbindung mit JDBC finden Sie unter Verbinden mit der Datenbank in der PostgreSQL-Dokumentation.