RDS-Sicherheit: Verschlüsselung und Parametergruppen
Verschlüsseln Sie RDS im Ruhezustand mit KMS, steuern Sie die Verschlüsselung auf Verbindungsebene mit Parametergruppen und sichern Sie den Zugriff mit IAM-Authentifizierung.
RDS-Sicherheit: Verschlüsselung und Parametergruppen ist eine kostenlose AWS Solutions Architect-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AWS Solutions Architect-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AWS Solutions Architect-Kurs umfasst insgesamt 4 Lektionen.
RDS-Verschlüsselung ruhender Daten
RDS unterstützt die Verschlüsselung ruhender Daten mithilfe des AWS Key Management Service (KMS). Wenn Sie die Verschlüsselung beim Erstellen der DB-Instance aktivieren, werden alle Daten auf den zugrunde liegenden EBS-Volumes, automatisierte Backups, Snapshots und Read Replicas mit dem angegebenen KMS-Schlüssel verschlüsselt.
Die Verschlüsselung muss zum Zeitpunkt der Erstellung aktiviert werden—eine vorhandene unverschlüsselte Instance kann nicht nachträglich direkt verschlüsselt werden. Als Umgehungslösung erstellen Sie einen unverschlüsselten Snapshot, kopieren ihn mit aktivierter Verschlüsselung und stellen die Instance aus dem verschlüsselten Snapshot wieder her. Der KMS-Schlüssel kann ein von AWS verwalteter Schlüssel oder ein Customer-Managed Key (CMK) für zusätzliche Kontrolle und Auditing sein.
# Create an encrypted RDS instance
aws rds create-db-instance \
--db-instance-identifier mydb-encrypted \
--engine mysql \
--db-instance-class db.t3.micro \
--master-username admin \
--master-user-password MyPass123! \
--allocated-storage 20 \
--storage-encrypted \
--kms-key-id arn:aws:kms:us-east-1:123456789:key/my-key-idEine vorhandene unverschlüsselte RDS-Instance verschlüsseln
Da Sie die Verschlüsselung für eine vorhandene Instance nicht aktivieren können, gehen Sie bei der Migration wie folgt vor:
- Erstellen Sie einen manuellen Snapshot der unverschlüsselten Instance
- Kopieren Sie den Snapshot und aktivieren Sie während des Kopiervorgangs die Verschlüsselung, indem Sie einen KMS-Schlüssel angeben
- Stellen Sie aus dem verschlüsselten Snapshot eine neue DB-Instance wieder her
- Aktualisieren Sie den Endpunkt Ihrer Anwendung auf die neue Instance
- Löschen Sie die alte unverschlüsselte Instance
Bei diesem Vorgehen kommt es zu einer gewissen Ausfallzeit, sofern Sie nicht DMS verwenden, um die neue verschlüsselte Instance vor der Umschaltung synchron zu halten.
# Copy snapshot with encryption enabled
aws rds copy-db-snapshot \
--source-db-snapshot-identifier mydb-unencrypted-snap \
--target-db-snapshot-identifier mydb-encrypted-snap \
--kms-key-id alias/aws/rdsVerschlüsselung während der Übertragung mit SSL/TLS
RDS verschlüsselt Daten während der Übertragung mithilfe von SSL/TLS. Jede Engine stellt ein herunterladbares CA-Zertifikat bereit, mit dem Ihr Client-Treiber die Identität des Servers überprüft. Um SSL-Verbindungen zu erzwingen, konfigurieren Sie die Datenbank-Engine so, dass sie unverschlüsselte Verbindungen ablehnt.
Setzen Sie für MySQL den Parameter require_secure_transport = ON in der Parametergruppe. Setzen Sie für PostgreSQL ssl = 1 und optional rds.force_ssl = 1, um Nicht-SSL-Verbindungen vollständig abzulehnen. Viele Java- und Python-Datenbanktreiber akzeptieren außerdem den Verbindungszeichenfolgenparameter sslmode=require.
# Connect to RDS MySQL over SSL
mysql -h mydb.abcd1234.us-east-1.rds.amazonaws.com \
-u admin -p \
--ssl-ca=rds-ca-2019-root.pem \
--ssl-verify-server-certParametergruppen: Was ist das?
Parametergruppen sind benannte Sammlungen von Konfigurationseinstellungen der Engine, die Sie einer RDS-Instance zuordnen. Sie entsprechen bei RDS dem Bearbeiten von my.cnf unter MySQL oder postgresql.conf unter PostgreSQL, werden jedoch von AWS verwaltet und pro Engine-Familie versioniert.
AWS stellt für jede Engine-Version eine Standardparametergruppe bereit, deren Einstellungen jedoch nicht bearbeitet werden können. Um Parameter anzupassen, erstellen Sie eine benutzerdefinierte Parametergruppe, ändern die gewünschten Parameter und ordnen sie Ihrer DB-Instance zu. Änderungen an statischen Parametern erfordern einen Neustart; dynamische Parameter werden sofort wirksam.
# Create a custom parameter group
aws rds create-db-parameter-group \
--db-parameter-group-name my-mysql8-params \
--db-parameter-group-family mysql8.0 \
--description 'Custom MySQL 8.0 parameters'Einstellungen von Parametergruppen ändern
Nach dem Erstellen einer benutzerdefinierten Parametergruppe ändern Sie einzelne Parameter mit dem CLI-Befehl modify-db-parameter-group oder über die Konsole. Parameter verfügen über eine Anwendungsmethode: immediate (wird ohne Neustart wirksam) oder pending-reboot (wird erst nach dem nächsten Neustart der Instance wirksam).
Für die Prüfung wichtige Parameter sind: max_connections (begrenzt gleichzeitige Verbindungen), innodb_buffer_pool_size (Größe des In-Memory-Caches von MySQL), log_bin_trust_function_creators (erlaubt gespeicherte Funktionen, die in das Binärprotokoll schreiben) und rds.force_ssl (erzwingt SSL für PostgreSQL).
# Force SSL in a PostgreSQL parameter group
aws rds modify-db-parameter-group \
--db-parameter-group-name my-postgres-params \
--parameters 'ParameterName=rds.force_ssl,ParameterValue=1,ApplyMethod=immediate'Optionsgruppen für zusätzliche Funktionen
Optionsgruppen ähneln Parametergruppen, steuern jedoch Erweiterungsfunktionen der Datenbank-Engine statt der Konfigurationsoptimierung. Sie werden hauptsächlich mit Oracle und SQL Server verwendet, um Funktionen wie Oracle Application Express (APEX), SQL Server Transparent Data Encryption (TDE) oder die SQL-Server-Authentifizierung über Active Directory zu aktivieren.
Jede Option in einer Optionsgruppe kann eigene Einstellungen haben. Optionsgruppen werden pro Engine-Familie versioniert und müssen der DB-Instance zugeordnet werden. Für die meisten Open-Source-Engines (MySQL, PostgreSQL, MariaDB) werden benutzerdefinierte Optionsgruppen nur selten benötigt.
IAM-Datenbankauthentifizierung
RDS unterstützt die IAM-Datenbankauthentifizierung für MySQL- und PostgreSQL-Engines. Statt eines statischen Benutzernamens und Passworts übernimmt Ihre Anwendung eine IAM-Rolle und erzeugt mithilfe des AWS-CLI-Befehls oder SDK-Aufrufs generate-db-auth-token ein temporäres Authentifizierungstoken, das 15 Minuten gültig ist.
Zu den Vorteilen gehören der Verzicht auf langlebige Datenbankpasswörter, die automatische Anmeldedatenrotation über IAM-Richtlinien und eine zentralisierte Zugriffskontrolle. Für diese Funktion müssen Sie --enable-iam-database-authentication für die Instance aktivieren und einen Datenbankbenutzer erstellen, der einer IAM-Rolle zugeordnet ist.
# Generate an RDS IAM auth token
aws rds generate-db-auth-token \
--hostname mydb.abcd1234.us-east-1.rds.amazonaws.com \
--port 3306 \
--username mydbuser \
--region us-east-1Integration von Secrets Manager mit RDS
AWS Secrets Manager kann das RDS-Masterpasswort und die Anmeldedaten der Anwendung speichern und automatisch rotieren. Wenn die Rotation aktiviert ist, ruft Secrets Manager eine Lambda-Funktion auf, die das Datenbankpasswort aktualisiert und den neuen Wert im Secret speichert. Ihre Anwendung ruft den aktuellen Secret-Wert über die Secrets-Manager-API ab und verfügt dadurch stets über gültige Anmeldedaten.
Beim Erstellen einer RDS-Instance über die Konsole können Sie die Verwaltung der Master-Anmeldedaten durch Secrets Manager aktivieren. Dadurch entfallen fest im Code oder in Umgebungsvariablen hinterlegte Passwörter.
# Retrieve RDS credentials from Secrets Manager
aws secretsmanager get-secret-value \
--secret-id rds!db-1234abcd-5678-efgh-ijkl-mnopqrstuvwx \
--query SecretString \
--output text | python3 -m json.toolVPC- und Sicherheitsgruppensteuerung
RDS-Instances werden innerhalb einer VPC ausgeführt und verwenden DB-Subnetzgruppen, um festzulegen, in welchen Subnetzen (über mehrere AZs hinweg) die Instance platziert werden kann. Es empfiehlt sich, RDS in privaten Subnetzen ohne direkten Internetzugriff zu platzieren.
Sicherheitsgruppen steuern, welche IP-Adressen und anderen Sicherheitsgruppen den DB-Port erreichen können (z. B. TCP 3306 für MySQL). Die Sicherheitsgruppe der Anwendungsebene sollte die einzige zulässige Quelle in der RDS-Sicherheitsgruppe sein, um das Prinzip der geringsten Berechtigung auf Netzwerkebene durchzusetzen. Konfigurieren Sie niemals 0.0.0.0/0 (den gesamten Datenverkehr) als eingehende Regel in einer RDS-Sicherheitsgruppe.
Erweiterte Überwachung und Audit-Protokolle
Enhanced Monitoring veröffentlicht Metriken auf Betriebssystemebene (CPU, Arbeitsspeicher, Dateisystem, Festplatten-I/O) alle 1–60 Sekunden in CloudWatch Logs und bietet damit eine feinere Granularität als die standardmäßigen CloudWatch-Metriken im 60-Sekunden-Intervall. Dazu wird ein Agent auf dem DB-Host ausgeführt. Verfügbar ist diese Funktion für alle Engines außer im SQL-Server-Spiegelungsmodus.
Datenbank-Audit-Protokolle (allgemeines Abfrageprotokoll und Protokoll langsamer Abfragen für MySQL; pgaudit für PostgreSQL) können zur Compliance-Analyse in CloudWatch Logs veröffentlicht werden. Aktivieren Sie diese über Parametergruppen und konfigurieren Sie anschließend die Protokollexporte in der RDS-Konsole unter Log exports.
# Enable PostgreSQL logs export to CloudWatch
aws rds modify-db-instance \
--db-instance-identifier mydb \
--cloudwatch-logs-export-configuration 'EnableLogTypes=[postgresql,upgrade]' \
--apply-immediatelyZusammenfassung der bewährten Sicherheitsverfahren
Wichtige bewährte RDS-Sicherheitsverfahren für die Prüfung SAA-C03:
- Aktivieren Sie beim Erstellen der Instance die Verschlüsselung im Ruhezustand mit einem KMS-CMK
- Erzwingen Sie SSL/TLS während der Übertragung über die Einstellungen der Parametergruppe
- Platzieren Sie Instances in privaten Subnetzen mit restriktiven Sicherheitsgruppen
- Verwenden Sie die IAM-Datenbankauthentifizierung oder Secrets Manager, um statische Passwörter zu vermeiden
- Aktivieren Sie CloudTrail, um RDS-API-Aufrufe zu protokollieren, sowie CloudWatch Logs für Datenbank-Audit-Protokolle
- Verwenden Sie AWS-Config-Regeln (z. B.
rds-instance-public-access-check), um Fehlkonfigurationen zu erkennen
Schnelltest
Testen Sie Ihr Verständnis der Konzepte für AWS Solutions Architect (SAA-C03) aus dieser Lektion.
Lektionszusammenfassung
In dieser Lektion haben Sie gelernt: Die RDS-Verschlüsselung im Ruhezustand verwendet KMS und muss beim Erstellen aktiviert werden; Parametergruppen steuern die Konfiguration der Engine und können unter anderem SSL/TLS während der Übertragung erzwingen; außerdem machen die IAM-Datenbankauthentifizierung und Secrets Manager statische Datenbankpasswörter überflüssig. Als Nächstes befassen wir uns mit DynamoDB-Tabellen, -Elementen und dem Design primärer Schlüssel.
Häufig gestellte Fragen
Ist die Lektion „RDS-Sicherheit: Verschlüsselung und Parametergruppen“ kostenlos?
Ja — der vollständige Text von „RDS-Sicherheit: Verschlüsselung und Parametergruppen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AWS Solutions Architect-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AWS Solutions Architect-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „RDS-Sicherheit: Verschlüsselung und Parametergruppen“?
Verschlüsseln Sie RDS im Ruhezustand mit KMS, steuern Sie die Verschlüsselung auf Verbindungsebene mit Parametergruppen und sichern Sie den Zugriff mit IAM-Authentifizierung. Du übst AWS Solutions Architect mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um AWS Solutions Architect zu starten?
Keine Vorkenntnisse erforderlich. AWS Solutions Architect auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „RDS-Sicherheit: Verschlüsselung und Parametergruppen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser AWS Solutions Architect-Lektion Code schreiben und ausführen?
Ja. Jede AWS Solutions Architect-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- RDS-Engines und Instance-Klassen
- Multi-AZ und automatische Backups
- Read Replicas zur Skalierung von Lesezugriffen
- RDS-Sicherheit: Verschlüsselung und Parametergruppen