Erste Schritte mit RDS Proxy - Amazon Relational Database Service

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.

Erste Schritte mit RDS Proxy

In den folgenden Abschnitten erfahren Sie, wie Sie den RDS-Proxy einrichten und verwalten. Sie erfahren auch, wie Sie verwandte Sicherheitsoptionen festlegen. Diese Optionen steuern, wer auf jeden Proxy zugreifen kann und wie jeder Proxy eine Verbindung zu DB-Instances herstellt.

Einrichten der Netzwerkvoraussetzungen

Für die Verwendung von RDS Proxy benötigen Sie eine gemeinsame Virtual Private Cloud (VPC) zwischen Ihrer RDS-DB-Instance, dem und dem RDS-Proxy. Diese VPC sollte über mindestens zwei Subnetze verfügen, die sich in verschiedenen Availability Zones befinden. Ihr Konto kann entweder der Eigentümer dieser Subnetze sein oder sie mit anderen Konten teilen. Weitere Informationen zur VPC-Freigabe finden Sie unter Arbeiten mit freigegebenen VPCs.

Ihre Client-Anwendungsressourcen wie Amazon EC2, Lambda oder Amazon ECS können sich in derselben VPC wie der Proxy befinden. Sie können sich auch in einer vom Proxy getrennten VPC befinden. Wenn Sie eine Verbindung mit RDS-DB-Instances hergestellt haben, verfügen Sie bereits über die erforderlichen Netzwerkressourcen.

Abrufen von Informationen zu Ihren Subnetzen

Um einen Proxy zu erstellen, müssen Sie die Subnetze und die VPC angeben, in denen der Proxy betrieben wird. Das folgende Linux-Beispiel zeigt AWS CLI Befehle, die die VPCs und Subnetze untersuchen, die Ihrem gehören. AWS-Konto Insbesondere übergeben Sie Subnetz-IDs als Parameter, wenn Sie ein Proxy mit der CLI erstellen.

aws ec2 describe-vpcs aws ec2 describe-internet-gateways aws ec2 describe-subnets --query '*[].[VpcId,SubnetId]' --output text | sort

Das folgende Linux-Beispiel zeigt AWS CLI Befehle zum Ermitteln der Subnetz-IDs, die einem bestimmten einer bestimmten RDS-DB-Instance entsprechen. Suchen Sie die VPC-ID für die DB-Instance. Untersuchen Sie die VPC, um ihre Subnetze zu finden. Das folgende Linux-Beispiel zeigt, wie das geht.

$ #From the DB instance, trace through the DBSubnetGroup and Subnets to find the subnet IDs. $ aws rds describe-db-instances --db-instance-identifier my_instance_id --query '*[].[DBSubnetGroup]|[0]|[0]|[Subnets]|[0]|[*].SubnetIdentifier' --output text
subnet_id_1 subnet_id_2 subnet_id_3 ...
$ #From the DB instance, find the VPC. $ aws rds describe-db-instances --db-instance-identifier my_instance_id --query '*[].[DBSubnetGroup]|[0]|[0].VpcId' --output text
my_vpc_id
$ aws ec2 describe-subnets --filters Name=vpc-id,Values=my_vpc_id --query '*[].[SubnetId]' --output text
subnet_id_1 subnet_id_2 subnet_id_3 subnet_id_4 subnet_id_5 subnet_id_6

Planen der Kapazität von IP-Adressen

Ein RDS-Proxy passt seine Kapazität basierend auf der Größe und Anzahl der bei ihm registrierten DB-Instances automatisch nach Bedarf an. Bestimmte Operationen erfordern möglicherweise auch zusätzliche Proxykapazität, z. B. die Erhöhung der Größe einer registrierten Datenbank oder interne Wartungsvorgänge für den RDS-Proxy. Bei diesen Vorgängen benötigt Ihr Proxy möglicherweise mehr IP-Adressen, um die zusätzliche Kapazität bereitzustellen. Mit diesen zusätzlichen Adressen kann Ihr Proxy skaliert werden, ohne Ihre Workload zu beeinträchtigen. Ein Mangel an freien IP-Adressen in Ihren Subnetzen verhindert, dass ein Proxy hochskaliert wird. Dies kann zu höheren Abfragelatenzen oder Verbindungsfehlern bei Clients führen. RDS benachrichtigt Sie durch das Ereignis RDS-EVENT-0243, wenn in Ihren Subnetzen nicht genügend freie IP-Adressen vorhanden sind. Weitere Informationen zu diesem Ereignis finden Sie unter Arbeiten mit RDS-Proxy-Ereignissen.

Im Folgenden finden Sie die empfohlene Mindestanzahl an IP-Adressen, die Sie in Ihren Subnetzen für Ihren Proxy frei lassen sollten, basierend auf der Größe der DB-Instance-Klassen.

DB-Instance-Klasse Mindestanzahl freier IP-Adressen

db.*.xlarge oder kleiner

10

db.*.2xlarge

15

db.*.4xlarge

25

db.*.8xlarge

45

db.*.12xlarge

60

db.*.16xlarge

75

db.*.24xlarge

110

Bei dieser empfohlenen Anzahl von IP-Adressen handelt es sich um Schätzungen für einen Proxy, der nur den Standardendpunkt verwendet. Ein Proxy mit zusätzlichen Endpunkten oder Read Replicas benötigt möglicherweise mehr freie IP-Adressen. Wir empfehlen, für jeden weiteren Endpunkt drei weitere IP-Adressen zu reservieren. Es wird empfohlen, für jede Read Replica zusätzliche IP-Adressen zu reservieren, wie in der Tabelle angegeben, basierend auf der Größe der Read Replica.

Anmerkung

RDS Proxy unterstützt nicht mehr als 215 IP-Adressen in einer VPC.

Datenbankanmeldedaten einrichten in AWS Secrets Manager

Für jeden von Ihnen erstellten Proxy verwenden Sie zunächst den Service Secrets Manager, um Gruppen von Anmeldeinformationen aus Benutzername und Passwort zu speichern. Sie erstellen ein separates Secrets Manager Manager-Geheimnis für jedes Datenbankbenutzerkonto, mit dem sich der Proxy auf dem verbindet.

In der Secrets Manager Manager-Konsole erstellen Sie diese Geheimnisse mit Werten für die password Felder username und. Auf diese Weise kann der Proxy eine Verbindung zu den entsprechenden Datenbankbenutzern auf einem herstellen, den Sie dem Proxy zuordnen. Hierfür können Sie die Einstellung Credentials for other database (Anmeldeinformationen für andere Datenbank), Credentials for RDS database (Anmeldeinformationen für die RDS-Datenbank) oder Other type of secrets (Andere Art von Secret) verwenden. Geben Sie die entsprechenden Werte für die Felder Benutzername und Passwort sowie Werte für alle anderen Pflichtfelder ein. Der Proxy ignoriert andere Felder wie Host und Port, wenn sie im Secret vorhanden sind. Diese Details werden automatisch vom Proxy bereitgestellt.

Sie können auch Andere Arten von Geheimnissen wählen. In diesem Fall erstellen Sie das Secret mit den Schlüsseln namens username und password.

Um eine Verbindung über den Proxy als bestimmter Datenbankbenutzer herzustellen, stellen Sie sicher, dass das mit einem geheimen Schlüssel verknüpfte Passwort mit dem Datenbankkennwort für diesen Benutzer übereinstimmt. Wenn eine Unstimmigkeit vorliegt, können Sie das zugehörige Geheimnis in Secrets Manager aktualisieren. In diesem Fall können Sie weiterhin eine Verbindung zu anderen Konten herstellen, bei denen die geheimen Anmeldeinformationen und die Datenbankpasswörter übereinstimmen.

Anmerkung

Für RDS for SQL Server benötigt RDS Proxy ein Geheimnis in Secrets Manager, das unabhängig von den Sortierungseinstellungen der DB-Instance zwischen Groß- und Kleinschreibung unterscheidet. Wenn Ihre Anwendung beispielsweise beide Benutzernamen „Admin“ oder „admin“ verwenden kann, konfigurieren Sie den Proxy mit Geheimnissen für „Admin“ und „admin“. RDS Proxy berücksichtigt bei der Authentifizierung zwischen dem Client und dem Proxy nicht die Groß- und Kleinschreibung von Benutzernamen.

Weitere Informationen über die Sortierung in SQL Server finden Sie in der Dokumentation für Microsoft SQL Server.

Wenn Sie einen Proxy über die AWS CLI oder RDS-API erstellen, geben Sie die Amazon-Ressourcennamen (ARNs) der entsprechenden Geheimnisse an. Diesen Vorgang führen Sie für alle DB-Benutzerkonten aus, auf die der Proxy zugreifen kann. In der AWS Management Console wählen Sie die Geheimnisse anhand ihrer aussagekräftigen Namen aus.

Anweisungen zum Erstellen von Secrets in Secrets Manager finden Sie auf der Seite Erstellen eines Secrets in der Secrets Manager-Dokumentation. Verwenden Sie eine der folgenden Techniken:

  • Verwenden Sie Secrets Manager in der Konsole.

  • Wenn Sie die CLI zum Erstellen eines Secrets Manager-Secrets für die Verwendung mit RDS Proxy verwenden möchten, verwenden Sie einen Befehl wie den folgenden.

    aws secretsmanager create-secret --name "secret_name" --description "secret_description" --region region_name --secret-string '{"username":"db_user","password":"db_user_password"}'
  • Sie können auch einen benutzerdefinierten Schlüssel erstellen, um Ihr Secrets Manager Manager-Geheimnis zu verschlüsseln. Der folgende Befehl erstellt einen Beispielschlüssel.

    PREFIX=my_identifier aws kms create-key --description "$PREFIX-test-key" --policy '{ "Id":"$PREFIX-kms-policy", "Version":"2012-10-17", "Statement": [ { "Sid":"Enable IAM User Permissions", "Effect":"Allow", "Principal":{"AWS":"arn:aws:iam::account_id:root"}, "Action":"kms:*","Resource":"*" }, { "Sid":"Allow access for Key Administrators", "Effect":"Allow", "Principal": { "AWS": ["$USER_ARN","arn:aws:iam:account_id::role/Admin"] }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource":"*" }, { "Sid":"Allow use of the key", "Effect":"Allow", "Principal":{"AWS":"$ROLE_ARN"}, "Action":["kms:Decrypt","kms:DescribeKey"], "Resource":"*" } ] }'

Mit den folgenden Befehlen werden beispielsweise Secrets Manager Manager-Geheimnisse für zwei Datenbankbenutzer erstellt:

aws secretsmanager create-secret \ --name secret_name_1 --description "db admin user" \ --secret-string '{"username":"admin","password":"choose_your_own_password"}' aws secretsmanager create-secret \ --name secret_name_2 --description "application user" \ --secret-string '{"username":"app-user","password":"choose_your_own_password"}'

Verwenden Sie die folgenden Befehle, um diese mit Ihrem benutzerdefinierten AWS KMS Schlüssel verschlüsselten Geheimnisse zu erstellen:

aws secretsmanager create-secret \ --name secret_name_1 --description "db admin user" \ --secret-string '{"username":"admin","password":"choose_your_own_password"}' --kms-key-id arn:aws:kms:us-east-2:account_id:key/key_id aws secretsmanager create-secret \ --name secret_name_2 --description "application user" \ --secret-string '{"username":"app-user","password":"choose_your_own_password"}' --kms-key-id arn:aws:kms:us-east-2:account_id:key/key_id

Verwenden Sie einen Befehl wie den folgenden, um die Geheimnisse zu sehen, die Ihrem AWS Konto gehören.

aws secretsmanager list-secrets

Wenn Sie einen Proxy mit der CLI erstellen, übergeben Sie die Amazon-Ressourcennamen (ARNs) von einem oder mehreren Secrets an den --auth-Parameter. Das folgende Linux-Beispiel zeigt, wie Sie einen Bericht erstellen, der nur den Namen und den ARN jedes Geheimnisses enthält, das Ihrem AWS Konto gehört. In diesem Beispiel wird der Parameter --output table verwendet, der in AWS CLI Version 2 verfügbar ist. Wenn Sie AWS CLI Version 1 verwenden, verwenden Sie --output text stattdessen.

aws secretsmanager list-secrets --query '*[].[Name,ARN]' --output table

Verwenden Sie einen Befehl wie den folgenden, um zu überprüfen, ob Sie die richtigen Anmeldeinformationen im richtigen Format im Secret gespeichert haben. Ersetzen Sie den Kurznamen oder den ARN des Secrets für your_secret_name.

aws secretsmanager get-secret-value --secret-id your_secret_name

Die Ausgabe sollte eine Zeile enthalten, die einen JSON-codierten Wert wie den folgenden anzeigt.

"SecretString": "{\"username\":\"your_username\",\"password\":\"your_password\"}",

AWS Identity and Access Management (IAM-) Richtlinien einrichten

Nachdem Sie die Secrets in Secrets Manager erstellt haben, erstellen Sie eine IAM-Richtlinie, die auf diese Secrets zugreifen kann. Allgemeine Informationen zur Verwendung von IAM finden Sie unter Identity and Access Management für Amazon RDS.

Tipp

Das folgende Verfahren gilt, wenn Sie die IAM-Konsole verwenden. Wenn Sie die AWS Management Console für RDS verwenden, kann RDS die IAM-Richtlinie automatisch für Sie erstellen. In diesem Fall können Sie das folgende Verfahren überspringen.

So erstellen Sie eine IAM-Richtlinie, die auf Ihre Secrets Manager-Geheimnisse für die Verwendung mit Ihrem Proxy zugreift
  1. Melden Sie sich an der IAM-Konsole an. Folgen Sie dem Prozess „Rolle erstellen“, wie unter IAM-Rollen erstellen beschrieben, und wählen Sie „Rolle erstellen, um Berechtigungen an einen Dienst zu delegieren“ aus. AWS

    Wählen Sie als Typ vertrauenswürdiger Entitäten die Option AWS -Service aus. Wählen Sie unter Anwendungsfall die Option RDS aus der Dropdownliste Anwendungsfälle für andere AWS -Services aus. Wählen Sie RDS – Rolle zu Datenbank hinzufügen aus.

  2. Führen Sie für die neue Rolle den Schritt Add inline policy (Inline-Richtlinie hinzufügen) aus. Verwenden Sie die gleichen allgemeinen Verfahren wie unter Bearbeiten von IAM-Richtlinien. Fügen Sie den folgenden JSON-Text in das JSON-Textfeld ein. Ersetzen Sie die Vorgabe durch Ihre eigene Konto-ID. Ersetzen Sie Ihre AWS Region durch. us-east-2 Ersetzen Sie die Amazon-Ressourcennamen (ARNs) durch die von Ihnen erstellten Secrets, vgl. Angeben von KMS-Schlüsseln in IAM-Richtlinienanweisungen. Ersetzen Sie für die kms:Decrypt Aktion den ARN des Standard-Schlüssels AWS KMS key oder Ihren eigenen KMS-Schlüssel. Welchen ARN Sie verwenden, hängt davon ab, welchen Sie zum Verschlüsseln der Secrets von Secrets Manager verwendet haben.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": [ "arn:aws:secretsmanager:us-east-2:account_id:secret:secret_name_1", "arn:aws:secretsmanager:us-east-2:account_id:secret:secret_name_2" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-east-2:account_id:key/key_id", "Condition": { "StringEquals": { "kms:ViaService": "secretsmanager.us-east-2.amazonaws.com" } } } ] }
  3. Bearbeiten Sie die Vertrauensrichtlinie für diese IAM-Rolle. Fügen Sie den folgenden JSON-Text in das JSON-Textfeld ein.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Die folgenden Befehle führen dieselbe Operation über die durc AWS CLI.

PREFIX=my_identifier USER_ARN=$(aws sts get-caller-identity --query "Arn" --output text) aws iam create-role --role-name my_role_name \ --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":["rds.amazonaws.com"]},"Action":"sts:AssumeRole"}]}' ROLE_ARN=arn:aws:iam::account_id:role/my_role_name aws iam put-role-policy --role-name my_role_name \ --policy-name $PREFIX-secret-reader-policy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": [ "arn:aws:secretsmanager:us-east-2:account_id:secret:secret_name_1", "arn:aws:secretsmanager:us-east-2:account_id:secret:secret_name_2" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-east-2:account_id:key/key_id", "Condition": { "StringEquals": { "kms:ViaService": "secretsmanager.us-east-2.amazonaws.com" } } } ] }

Erstellen eines RDS Proxy

Um Verbindungen für einen spezifischen Satz von DB-Instances zu verwalten, können Sie einen Proxy erstellen. Sie können einen Proxy einer DB-Instance von RDS für MariaDB, RDS für Microsoft SQL Server, RDS für MySQL oder RDS für PostgreSQL zuordnen.

So erstellen Sie einen Proxy
  1. Melden Sie sich bei der Amazon RDS-Konsole an AWS Management Console und öffnen Sie sie unter https://console.aws.amazon.com/rds/.

  2. Wählen Sie im Navigationsbereich Proxies (Proxys).

  3. Wählen Sie Create proxy (Proxy erstellen).

  4. Wählen Sie alle Einstellungen für Ihren Proxy.

    Geben Sie für die Proxy-Konfiguration folgende Informationen an:

    • Engine family (Engine-Familie). Diese Einstellung legt fest, welches Datenbanknetzwerkprotokoll der Proxy erkennt, wenn er den Netzwerkverkehr zu und von der Datenbank interpretiert. Wählen Sie für RDS für MariaDB oder RDS für MySQL MariaDB und MySQL aus. Wählen Sie für RDS für PostgreSQL PostgreSQL aus. Wählen Sie für RDS für SQL Server die Option SQL Server aus.

    • Proxy identifier (Proxy-ID. Geben Sie einen Namen an, der innerhalb Ihrer AWS Konto-ID und Ihrer aktuellen AWS Region eindeutig ist.

    • Idle client connection timeout (Zeitüberschreitung bei Client-Leerlauf. Wählen Sie einen Zeitraum, in dem eine Client-Verbindung inaktiv sein kann, bevor der Proxy sie schließt. Der Standardwert ist 1.800 Sekunden (30 Minuten). Eine Client-Verbindung gilt als inaktiv, wenn die Anwendung innerhalb der angegebenen Zeit nach Abschluss der vorherigen Anforderung keine neue Anforderung absendet. Die zugrunde liegende Datenbankverbindung bleibt offen und wird an den Verbindungspool zurückgegeben. Somit ist sie für neue Clientverbindungen verfügbar.

      Damit der Proxy proaktiv veraltete Verbindungen entfernt, verringern Sie den Timeout für inaktive Client-Verbindungen. Wenn die Arbeitslast stark ansteigt, erhöhen Sie das Timeout für inaktive Client-Verbindungen, um die Kosten für den Verbindungsaufbau zu sparen.“

    Machen Sie für Zielgruppenkonfiguration folgende Angaben:

    • Database (Datenbank. Wählen Sie eine RDS-DB-Instance, den , auf die Sie über diesen Proxy zugreifen möchten. Die Liste enthält nur DB-Instances und Cluster mit kompatiblen Datenbank-Engines, Engine-Versionen und anderen Einstellungen. Wenn die Liste leer ist, erstellen Sie eine neue DB-Instance oder einen neuen Cluster, mit der/dem RDS Proxy kompatibel ist. Eine Schritt-für-Schritt-Anleitung hierzu finden Sie unter Erstellen einer Amazon RDS-DB-Instance. Versuchen Sie dann erneut, den Proxy zu erstellen.

    • Connection pool maximum connections (Max. Verbindungen Verbindungspool. Geben Sie einen Wert zwischen 1 und 100 an. Diese Einstellung stellt den Prozentsatz des max_connections-Wertes dar, den RDS Proxy für Verbindungen verwenden kann. Wenn Sie nur einen Proxy mit dieser DB-Instance oder diesem DB-Cluster verwenden möchten, können Sie den Wert auf 100 setzen. Weitere Informationen dazu, wie RDS Proxy diese Einstellung verwendet, finden Sie unter MaxConnectionsProzent.

    • Session pinning filters (Filter zum Anheften von Sitzungen. (Optional) Mit dieser Option können Sie den RDS-Proxy zwingen, Sitzungen bei bestimmten Status nicht zu fixieren. Dadurch werden die standardmäßigen Sicherheitsmaßnahmen für das Multiplexing von Datenbankverbindungen über Client-Verbindungen hinweg umgangen. Derzeit wird die Einstellung für PostgreSQL nicht unterstützt. Die einzige Wahl ist. EXCLUDE_VARIABLE_SETS

      Die Aktivierung dieser Einstellung kann dazu führen, dass sich Sitzungsvariablen einer Verbindung auf andere Verbindungen auswirken. Dies kann zu Fehlern oder Problemen mit der Korrektheit führen, wenn Ihre Abfragen von Sitzungsvariablenwerten abhängen, die außerhalb der aktuellen Transaktion festgelegt wurden. Erwägen Sie, diese Option zu verwenden, nachdem Sie sich vergewissert haben, dass Ihre Anwendungen Datenbankverbindungen über mehrere Client-Verbindungen gemeinsam nutzen können.

      Die folgenden Muster können als sicher angesehen werden:

      • SET-Anweisungen, bei denen der effektive Wert der Sitzungsvariablen nicht geändert wird, d. h. dass keine Änderung an der Sitzungsvariablen vorgenommen wird.

      • Sie ändern den Wert der Sitzungsvariablen und führen eine Anweisung in derselben Transaktion aus.

      Weitere Informationen finden Sie unter Vermeiden des Fixierens.

    • Connection borrow timeout (Zeitüberschreitung für die Verbindung. In einigen Fällen erwarten Sie möglicherweise, dass der Proxy manchmal alle verfügbaren Verbindungen nutzt. In solchen Fällen können Sie angeben, wie lange der Proxy wartet, bis eine Datenbankverbindung verfügbar ist, bevor ein Timeout-Fehler zurückgegeben wird. Sie können einen Zeitraum von maximal fünf Minuten angeben. Diese Einstellung gilt nur, wenn der Proxy die maximale Anzahl von Verbindungen geöffnet hat und alle Verbindungen bereits verwendet werden.

    • Initialisierungsabfrage. (Optional) Sie können eine oder mehrere SQL-Anweisungen für die Ausführung durch den Proxy beim Öffnen jeder neuen Datenbankverbindung festlegen. Diese Einstellung wird in der Regel zusammen mit SET Anweisungen verwendet, um sicherzustellen, dass jede Verbindung identische Einstellungen wie Zeitzone und Zeichensätze hat. Verwenden Sie für mehrere Anweisungen Semikola als Trennzeichen. Sie können auch mehrere Variablen in eine einzelne SET-Anweisung einschließen, z. B. SET x=1, y=2.

    Geben Sie unter Authentication (Authentifizierung) Informationen für Folgendes an:

    • IAM role (IAM-Rolle. Wählen Sie eine IAM-Rolle aus, die berechtigt ist, auf die zuvor ausgewählten Secrets Manager-Geheimnisse zuzugreifen. Oder Sie können eine neue IAM-Rolle aus dem AWS Management Console erstellen.

    • Secrets Manager Geheimnisse. Wählen Sie mindestens ein Secrets Manager Manager-Geheimnis, das Datenbank-Benutzeranmeldedaten enthält, die es dem Proxy ermöglichen, auf den zuzugreifen.

    • Client authentication type (Client-Authentifizierungstyp). Wählen Sie den Authentifizierungstyp, den der Proxy für Verbindungen von Clients verwendet. Die ausgewählte Option gilt für alle Secrets-Manager-Secrets, die Sie diesem Proxy zuordnen. Wenn Sie für jedes Geheimnis einen anderen Client-Authentifizierungstyp angeben müssen, erstellen Sie Ihren Proxy stattdessen mithilfe der AWS CLI oder der API.

    • IAM Authentication (IAM-Authentifizierung. Wählen Sie aus, ob die IAM-Authentifizierung für Verbindungen mit Ihrem Proxy erforderlich ist, zugelassen oder nicht zugelassen werden soll. Die Option „zulassen“ ist nur für Proxys für RDS für SQL Server gültig. Die ausgewählte Option gilt für alle Secrets-Manager-Secrets, die Sie diesem Proxy zuordnen. Wenn Sie für jedes Geheimnis eine andere IAM-Authentifizierung angeben müssen, erstellen Sie Ihren Proxy stattdessen mithilfe der AWS CLI oder der API.

    Geben Sie für Anbindung folgende Informationen an:

    • Require Transport Layer Security (Transport Layer Security erfordern). Wählen Sie diese Einstellung, wenn der Proxy TLS/SSL für alle Clientverbindungen erzwingen soll. Bei einer verschlüsselten oder unverschlüsselten Verbindung mit einem Proxy verwendet der Proxy dieselbe Verschlüsselungseinstellung, wenn er eine Verbindung mit der zugrunde liegenden Datenbank herstellt.

    • Subnets (Subnetze. Dieses Feld ist mit allen Subnetzen gefüllt, die mit Ihrer VPC verknüpft sind. Sie können alle Subnetze entfernen, die Sie für diesen Proxy nicht benötigen. Sie müssen mindestens zwei Subnetze übrig lassen.

    Stellen Sie eine zusätzliche Anbindungskonfiguration bereit:

    • VPC Security Group (VPC-Sicherheitsgruppe. Wählen Sie eine vorhandene VPC-Sicherheitsgruppe aus. Oder Sie können eine neue Sicherheitsgruppe aus dem AWS Management Console erstellen. Sie müssen die Regeln für eingehenden Datenverkehr so konfigurieren, dass Ihre Anwendungen auf den Proxy zugreifen können. Außerdem müssen Sie die Regeln für ausgehenden Datenverkehr so konfigurieren, das Datenverkehr von Ihren DB-Zielen zugelassen wird.

      Anmerkung

      Diese Sicherheitsgruppe muss Verbindungen vom Proxy mit der Datenbank zulassen. Dieselbe Sicherheitsgruppe wird für eingehenden Datenverkehr von Ihren Anwendungen zum Proxy und für ausgehenden Datenverkehr vom Proxy zur Datenbank verwendet. Angenommen, Sie verwenden dieselbe Sicherheitsgruppe für Ihre Datenbank und Ihren Proxy. Stellen Sie in diesem Fall sicher, dass Sie angeben, dass Ressourcen in dieser Sicherheitsgruppe mit anderen Ressourcen in derselben Sicherheitsgruppe kommunizieren können.

      Wenn Sie eine freigegebene VPC verwenden, können Sie die Standardsicherheitsgruppe für die VPC oder eine zu einem anderen Konto gehörende Gruppe nicht verwenden. Wählen Sie eine Sicherheitsgruppe aus, die zu Ihrem Konto gehört. Wenn keine vorhanden ist, erstellen Sie eine. Weitere Informationen zu dieser Einschränkung finden Sie unter Arbeiten mit freigegebenen VPCs.

      RDS stellt einen Proxy über mehrere Availability Zones hinweg bereit, um eine hohe Verfügbarkeit zu gewährleisten. Um die AZ-übergreifende Kommunikation für einen solchen Proxy zu ermöglichen, muss die Zugriffssteuerungsliste (ACL) für Ihr Proxy-Subnetz den Engine-Port-spezifischen Ausgang und den Eingang aller Ports zulassen. Weitere Informationen zu Netzwerk-ACLs finden Sie unter Datenverkehr in Subnetzen mit Netzwerk-ACLs steuern. Wenn die Netzwerk-ACL für Ihren Proxy und Ihr Ziel identisch sind, müssen Sie eine TCP-Protokoll-Ingress-Regel hinzufügen, bei der die Quelle auf die VPC-CIDR festgelegt ist. Sie müssen auch eine Engine-Port-spezifische TCP-Protokollausgangsregel hinzufügen, bei der das Ziel auf die VPC-CIDR festgelegt ist.

    (Optional) Stellen Sie eine erweiterte Konfiguration bereit:

    • Enable enhanced logging (Erweiterte Protokollierung aktivieren. Sie können diese Einstellung aktivieren, um Proxy-Kompatibilitäts- oder Leistungsprobleme zu beheben.

      Wenn diese Einstellung aktiviert ist, nimmt der RDS-Proxy detaillierte Informationen zur Proxyleistung in seine Protokolle auf. Diese Informationen helfen Ihnen beim Debugging von Problemen mit dem SQL-Verhalten oder der Leistung und Skalierbarkeit der Proxy-Verbindungen. Aktivieren Sie diese Einstellung daher nur zum Debuggen und wenn Sie Sicherheitsmaßnahmen getroffen haben, um vertrauliche Informationen zu schützen, die in den Protokollen erscheinen.

      Um den mit Ihrem Proxy verbundenen Overhead zu minimieren, wird diese Einstellung von RDS Proxy automatisch 24 Stunden nach der Aktivierung deaktiviert. Aktivieren Sie sie vorübergehend, um ein bestimmtes Problem zu beheben.

  5. Wählen Sie Create Proxy (Proxy erstellen).

Um einen Proxy mit dem zu erstellen AWS CLI, rufen Sie den Befehl create-db-proxy mit den folgenden erforderlichen Parametern auf:

  • --db-proxy-name

  • --engine-family

  • --role-arn

  • --auth

  • --vpc-subnet-ids

Bei --engine-family-Wert ist die Groß- und Kleinschreibung zu beachten.

Beispiel

FürLinux, oder: macOS Unix

aws rds create-db-proxy \ --db-proxy-name proxy_name \ --engine-family { MYSQL | POSTGRESQL | SQLSERVER } \ --auth ProxyAuthenticationConfig_JSON_string \ --role-arn iam_role \ --vpc-subnet-ids space_separated_list \ [--vpc-security-group-ids space_separated_list] \ [--require-tls | --no-require-tls] \ [--idle-client-timeout value] \ [--debug-logging | --no-debug-logging] \ [--tags comma_separated_list]

Windows:

aws rds create-db-proxy ^ --db-proxy-name proxy_name ^ --engine-family { MYSQL | POSTGRESQL | SQLSERVER } ^ --auth ProxyAuthenticationConfig_JSON_string ^ --role-arn iam_role ^ --vpc-subnet-ids space_separated_list ^ [--vpc-security-group-ids space_separated_list] ^ [--require-tls | --no-require-tls] ^ [--idle-client-timeout value] ^ [--debug-logging | --no-debug-logging] ^ [--tags comma_separated_list]

Nachstehend finden Sie ein Beispiel für den JSON-Wert der --auth-Option. Dieses Beispiel wendet auf jedes Secret einen anderen Client-Authentifizierungstyp an.

[ { "Description": "proxy description 1", "AuthScheme": "SECRETS", "SecretArn": "arn:aws:secretsmanager:us-west-2:123456789123:secret/1234abcd-12ab-34cd-56ef-1234567890ab", "IAMAuth": "DISABLED", "ClientPasswordAuthType": "POSTGRES_SCRAM_SHA_256" }, { "Description": "proxy description 2", "AuthScheme": "SECRETS", "SecretArn": "arn:aws:secretsmanager:us-west-2:111122223333:seret/1234abcd-12ab-34cd-56ef-1234567890cd", "IAMAuth": "DISABLED", "ClientPasswordAuthType": "POSTGRES_MD5" }, { "Description": "proxy description 3", "AuthScheme": "SECRETS", "SecretArn": "arn:aws:secretsmanager:us-west-2:111122221111:secret/1234abcd-12ab-34cd-56ef-1234567890ef", "IAMAuth": "REQUIRED" } ]
Tipp

Wenn Sie die Subnetz-IDs nicht bereits kennen, die für den Parameter --vpc-subnet-ids verwendet werden sollen, finden Sie unter Einrichten der Netzwerkvoraussetzungen Beispiele, wie Sie diese finden können.

Anmerkung

Diese Sicherheitsgruppe muss den Zugriff auf die Datenbank zulassen, mit welcher der Proxy eine Verbindung herstellt. Dieselbe Sicherheitsgruppe wird für eingehenden Datenverkehr von Ihren Anwendungen zum Proxy und für ausgehenden Datenverkehr vom Proxy zur Datenbank verwendet. Angenommen, Sie verwenden dieselbe Sicherheitsgruppe für Ihre Datenbank und Ihren Proxy. Stellen Sie in diesem Fall sicher, dass Sie angeben, dass Ressourcen in dieser Sicherheitsgruppe mit anderen Ressourcen in derselben Sicherheitsgruppe kommunizieren können.

Wenn Sie eine freigegebene VPC verwenden, können Sie die Standardsicherheitsgruppe für die VPC oder eine zu einem anderen Konto gehörende Gruppe nicht verwenden. Wählen Sie eine Sicherheitsgruppe aus, die zu Ihrem Konto gehört. Wenn keine vorhanden ist, erstellen Sie eine. Weitere Informationen zu dieser Einschränkung finden Sie unter Arbeiten mit freigegebenen VPCs.

Um die richtigen Verknüpfungen für den Proxy zu erstellen, verwenden Sie auch den Befehl register-db-proxy-targets. Angabe des default-Zielgruppennamens. RDS Proxy erstellt automatisch eine Zielgruppe mit diesem Namen, wenn Sie jeden Proxy erstellen.

aws rds register-db-proxy-targets --db-proxy-name value [--target-group-name target_group_name] [--db-instance-identifiers space_separated_list] # rds db instances, or [--db-cluster-identifiers cluster_id] # rds db cluster (all instances)

Um einen RDS Proxy zu erstellen, rufen Sie die Amazon RDS-API-Operation CreateDBProxy auf. Sie übergeben einen Parameter mit der Datenstruktur. AuthConfig

RDS Proxy erstellt automatisch eine Zielgruppe mit dem Namen default, wenn Sie die einzelnen Proxys erstellen. Sie ordnen der Zielgruppe einen zu, indem Sie die Funktion RegisterDB ProxyTargets aufrufen.

Anzeigen eines RDS Proxy

Nachdem Sie einen oder mehrere RDS-Proxys erstellt haben, können Sie alle anzeigen. Dies ermöglicht es, ihre Konfigurationsdetails zu überprüfen und auszuwählen, welche geändert, gelöscht usw. werden sollen.

Damit Datenbankanwendungen einen Proxy verwenden können, müssen Sie den Proxy-Endpunkt in der Verbindungszeichenfolge angeben.

So zeigen Sie Ihren Proxy an
  1. Melden Sie sich bei der Amazon RDS-Konsole an AWS Management Console und öffnen Sie sie unter https://console.aws.amazon.com/rds/.

  2. Wählen Sie in der oberen rechten Ecke von die AWS Region aus AWS Management Console, in der Sie den RDS-Proxy erstellt haben.

  3. Wählen Sie im Navigationsbereich Proxies (Proxys).

  4. Wählen Sie den Namen eines RDS-Proxys, um dessen Details anzuzeigen.

  5. Auf der Detailseite zeigt der Abschnitt Zielgruppen, wie der Proxy mit einem bestimmten einer bestimmten RDS-DB-Instance verknüpft ist. Sie können dem Link zur Standard-Zielgruppenseite folgen, um weitere Details zur Zuordnung zwischen dem Proxy und der Datenbank anzuzeigen. Auf dieser Seite werden Einstellungen angezeigt, die Sie beim Erstellen des Proxys angegeben haben. Dazu gehören maximaler Verbindungsprozentsatz, Zeitüberschreitung für die Verbindung, Engine-Familie und Sitzungs-Pinning-Filter.

Um Ihren Proxy mit der CLI anzuzeigen, verwenden Sie den Befehl describe-db-proxies. Standardmäßig werden alle Proxys angezeigt, die Ihrem AWS Konto gehören. Um Details für einen einzelnen Proxy anzuzeigen, geben Sie seinen Namen mit dem Parameter --db-proxy-name an.

aws rds describe-db-proxies [--db-proxy-name proxy_name]

Verwenden Sie die folgenden Befehle, um die anderen Informationen anzuzeigen, die mit dem Proxy verknüpft sind.

aws rds describe-db-proxy-target-groups --db-proxy-name proxy_name aws rds describe-db-proxy-targets --db-proxy-name proxy_name

Verwenden Sie die folgende Befehlsfolge, um weitere Details zu den Elementen anzuzeigen, die mit dem Proxy verknüpft sind:

  1. Um eine Liste von Proxys anzufordern, führen Sie describe-db-proxies aus.

  2. Führen Sie describe-db-proxy-target-groups --db-proxy-name aus, um Verbindungsparameter anzuzeigen, wie den maximalen Prozentsatz der Verbindungen, die der Proxy verwenden kann. Verwenden Sie den Namen des Proxys als Parameterwert.

  3. Um die Details des aus.

Verwenden Sie den Vorgang DescribeDBProxies, um Ihre Proxys mit der RDS-API anzuzeigen. Er gibt Werte des Datentyps DBProxy zurück.

Um Details zu den Verbindungseinstellungen für den Proxy zu sehen, verwenden Sie die Proxybezeichner aus diesem Rückgabewert mit dem Vorgang DescribeDB Groups. ProxyTarget Es gibt Werte des ProxyTargetDB-Gruppen-Datentyps zurück.

Verwenden Sie den Vorgang DescribeDB, um die mit dem Proxy verknüpfte RDS-Instance oder den Aurora-DB-Cluster zu ProxyTargets sehen. Sie gibt Werte des ProxyTargetDB-Datentyps zurück.

Verbinden mit einer Datenbank über RDS Proxy

Die Art und Weise, über einen Proxy oder eine Verbindung zur Datenbank eine Verbindung zu einer RDS-DB-Instance herzustellen, ist im Allgemeinen dieselbe. Weitere Informationen finden Sie unter Überblick über Proxy-Endpunkte.

Herstellen einer Verbindung mit einem Proxy mithilfe der systemeigenen Authentifizierung

Gehen Sie wie folgt vor, um mithilfe der systemeigenen Authentifizierung 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 Befehl describe-db-proxies 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 Client-Anwendung 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.

Herstellen einer Verbindung mit einem Proxy mithilfe der IAM-Authentifizierung

Wenn Sie die IAM-Authentifizierung für RDS Proxy verwenden, müssen Sie die Benutzer Ihrer Datenbank auf die Authentifizierung mit ihrem regulären Benutzernamen und Passwort festlegen. Die IAM-Authentifizierung gilt für den Abruf von Benutzername und Passwort aus Secrets Manager durch RDS Proxy. Die Verbindung von RDS Proxy zur zugrunde liegenden Datenbank erfolgt nicht über IAM.

Um mithilfe der IAM-Authentifizierung eine Verbindung zum RDS-Proxy herzustellen, verwenden Sie dasselbe allgemeine Verbindungsverfahren wie für die IAM-Authentifizierung mit einem DB-Cluster einer RDS-DB-Instance. Allgemeine Informationen zur Verwendung von IAM finden Sie unter Sicherheit in Amazon RDS.

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

  • Sie konfigurieren nicht jeden einzelnen Datenbankbenutzer mit einem Autorisierungs-Plugin. Die Datenbankbenutzer haben weiterhin normale Benutzernamen und Passwörter innerhalb 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.

  • 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-Instance- mithilfe der IAM-Authentifizierung.

  • Im Anwendungsfall mit direkter Datenbank-IAM-Authentifizierung wählen Sie Datenbankbenutzer selektiv aus und konfigurieren sie so, dass sie mit einem speziellen Authentifizierungs-Plug-In identifiziert werden. Sie können dann mit IAM-Authentifizierung eine Verbindung zu diesen Benutzern herstellen.

    Im Proxy-Anwendungsfall müssen Sie dem Proxy die Geheimnisse bereitstellen, die den Benutzernamen und das Passwort eines Benutzers enthalten (native Authentifizierung). Anschließend stellen Sie mithilfe der IAM-Authentifizierung eine Verbindung mit dem Proxy her. Hierzu generieren Sie ein Authentifizierungstoken mit dem Proxy-Endpunkt und nicht mit dem Datenbankendpunkt. Sie verwenden auch einen Benutzernamen, der mit einem der Benutzernamen für die von Ihnen angegebenen Geheimnisse übereinstimmt.

  • 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"

Überlegungen zum Herstellen einer Verbindung mit einem Proxy mit Microsoft SQL Server

Für die Verbindung mit einem Proxy mithilfe der IAM-Authentifizierung verwenden Sie nicht das Passwortfeld. Stattdessen geben Sie die entsprechende Tokeneigenschaft für jeden Datenbanktreibertyp im Tokenfeld an. Verwenden Sie beispielsweise die accessToken-Eigenschaft für JDBC oder die sql_copt_ss_access_token-Eigenschaft für ODBC. Oder verwenden Sie die AccessToken Eigenschaft für den SqlClient .NET-Treiber. Sie können die IAM-Authentifizierung nicht mit Clients verwenden, die keine Tokeneigenschaften unterstützen.

Unter bestimmten Bedingungen kann ein Proxy eine Datenbankverbindung nicht gemeinsam nutzen und fixiert stattdessen die Verbindung von Ihrer Client-Anwendung zum Proxy an eine dedizierte Datenbankverbindung. Weitere Informationen über diese Bedingungen finden Sie unter Vermeiden des Fixierens.

Überlegungen zum Herstellen einer Verbindung mit einem Proxy mit PostgreSQL

Wenn ein Client in PostgreSQL eine Verbindung mit einer PostgreSQL-Datenbank startet, sendet er eine Startup-Meldung. 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.

Wenn Sie für PostgreSQL JDBC verwenden, empfehlen wir 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 Verbindungsstart, wenn er ausgeführt wird, einen zusätzlichen Roundtrip durchführt. SET extra_float_digits = 3

  • 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 des Fixierens. Weitere Informationen zum Herstellen einer Verbindung mit JDBC finden Sie unter Verbinden mit der Datenbank in der PostgreSQL-Dokumentation.