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.
Themen
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-identifiermy_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-identifiermy_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
" --regionregion_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 \ --namesecret_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 \ --namesecret_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
-
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.
-
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 diekms: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" } } } ] } -
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-namemy_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
-
Melden Sie sich bei der Amazon RDS-Konsole an AWS Management Console und öffnen Sie sie unter https://console.aws.amazon.com/rds/
. -
Wählen Sie im Navigationsbereich Proxies (Proxys).
-
Wählen Sie Create proxy (Proxy erstellen).
-
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 einzelneSET
-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.
-
-
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 } \ --authProxyAuthenticationConfig_JSON_string
\ --role-arniam_role
\ --vpc-subnet-idsspace_separated_list
\ [--vpc-security-group-idsspace_separated_list
] \ [--require-tls | --no-require-tls] \ [--idle-client-timeoutvalue
] \ [--debug-logging | --no-debug-logging] \ [--tagscomma_separated_list
]
Windows:
aws rds create-db-proxy ^ --db-proxy-name
proxy_name
^ --engine-family { MYSQL | POSTGRESQL | SQLSERVER } ^ --authProxyAuthenticationConfig_JSON_string
^ --role-arniam_role
^ --vpc-subnet-idsspace_separated_list
^ [--vpc-security-group-idsspace_separated_list
] ^ [--require-tls | --no-require-tls] ^ [--idle-client-timeoutvalue
] ^ [--debug-logging | --no-debug-logging] ^ [--tagscomma_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-nametarget_group_name
] [--db-instance-identifiersspace_separated_list
] # rds db instances, or [--db-cluster-identifierscluster_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
Melden Sie sich bei der Amazon RDS-Konsole an AWS Management Console und öffnen Sie sie unter https://console.aws.amazon.com/rds/
. -
Wählen Sie in der oberen rechten Ecke von die AWS Region aus AWS Management Console, in der Sie den RDS-Proxy erstellt haben.
-
Wählen Sie im Navigationsbereich Proxies (Proxys).
-
Wählen Sie den Namen eines RDS-Proxys, um dessen Details anzuzeigen.
-
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-nameproxy_name
Verwenden Sie die folgende Befehlsfolge, um weitere Details zu den Elementen anzuzeigen, die mit dem Proxy verknüpft sind:
-
Um eine Liste von Proxys anzufordern, führen Sie describe-db-proxies aus.
-
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. -
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.
Themen
- Herstellen einer Verbindung mit einem Proxy mithilfe der systemeigenen Authentifizierung
- Herstellen einer Verbindung mit einem Proxy mithilfe der IAM-Authentifizierung
- Überlegungen zum Herstellen einer Verbindung mit einem Proxy mit Microsoft SQL Server
- Überlegungen zum Herstellen einer Verbindung mit einem Proxy mit PostgreSQL
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:
-
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" } ] ]
-
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
oderpsql -h
an. -
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
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
Wenn Sie für PostgreSQL JDBC verwenden, empfehlen wir Folgendes, um Pinning zu vermeiden:
-
Stellen Sie den JDBC-Verbindungsparameter
assumeMinServerVersion
mindestens auf9.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
, um Pinning zu vermeiden. Dadurch wird verhindert, dass der JDBC-Treiber beim Starten der Verbindung einen zusätzlichen Roundtrip ausführt, wenn er ausführany/your-application-name
SET application_name = "PostgreSQL JDBC Driver"
. Beachten Sie, dass der JDBC-ParameterApplicationName
, der PostgreSQL-StartupMessage
-Parameter aberapplication_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