Automatische Behebung unverschlüsselter Amazon RDS-DB-Instances und -Cluster - AWS Prescriptive Guidance

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.

Automatische Behebung unverschlüsselter Amazon RDS-DB-Instances und -Cluster

Erstellt von Ajay R Bolt (AWS) und Josh Joy (AWS)

Umgebung: PoC oder Pilotprojekt

Technologien: Sicherheit, Identität, Compliance; Datenbanken

AWS-Services: AWS Config; AWS KMS; AWS Identity and Access Management ;AWS Systems Manager; Amazon RDS

Übersicht

Dieses Muster beschreibt, wie unverschlüsselte Amazon Relational Database Service (Amazon RDS)-DB-Instances und -Cluster in Amazon Web Services (AWS) mithilfe von AWS Config-, AWS Systems Manager-Runbooks und AWS Key Management Service (AWS KMS)-Schlüsseln automatisch korrigiert werden.

Verschlüsselte RDS-DB-Instances bieten eine zusätzliche Datenschutzebene, indem Sie Ihre Daten vor unbefugtem Zugriff auf den zugrunde liegenden Speicher sichern. Sie können die Amazon RDS-Verschlüsselung verwenden, um den Datenschutz Ihrer in der AWS Cloud bereitgestellten Anwendungen zu erhöhen und die Compliance-Anforderungen für die Verschlüsselung im Ruhezustand zu erfüllen. Sie können die Verschlüsselung für eine RDS-DB-Instance aktivieren, wenn Sie sie erstellen, aber nicht nachdem sie erstellt wurde. Sie können jedoch einer unverschlüsselten RDS-DB-Instance Verschlüsselung hinzufügen, indem Sie einen Snapshot Ihrer DB-Instance erstellen und dann eine verschlüsselte Kopie dieses Snapshots erstellen. Anschließend können Sie eine DB-Instance aus dem verschlüsselten Snapshot wiederherstellen, um eine verschlüsselte Kopie Ihrer ursprünglichen DB-Instance zu erhalten.

Dieses Muster verwendet AWS Config-Regeln, um RDS-DB-Instances und -Cluster auszuwerten. Es wendet die Korrektur mithilfe von AWS Systems Manager-Runbooks an, die die Aktionen definieren, die auf nicht konformen Amazon RDS-Ressourcen ausgeführt werden sollen, und AWS KMS-Schlüsseln zum Verschlüsseln der DB-Snapshots. Anschließend werden Service-Kontrollrichtlinien (SCPs) durchgesetzt, um die Erstellung neuer DB-Instances und Cluster ohne Verschlüsselung zu verhindern.

Der Code für dieses Muster wird in bereitgestelltGitHub.

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Ein aktives AWS-Konto

  • Dateien aus dem GitHub Quellcode-Repository für dieses Muster, das auf Ihren Computer heruntergeladen wurde

  • Eine unverschlüsselte RDS-DB-Instance oder ein unverschlüsselter RDS-DB-Cluster

  • Ein vorhandener AWS KMS-Schlüssel zum Verschlüsseln von RDS-DB-Instances und -Clustern

  • Zugriff auf die Aktualisierung der KMS-Schlüsselressourcenrichtlinie

  • AWS Config in Ihrem AWS-Konto aktiviert (siehe Erste Schritte mit AWS Config in der AWS-Dokumentation)

Einschränkungen

  • Sie können die Verschlüsselung für eine RDS-DB-Instance nur aktivieren, wenn Sie sie erstellen, nicht nachdem sie erstellt wurde.

  • Es ist nicht möglich, ein verschlüsseltes Lesereplikat einer unverschlüsselten DB-Instance oder ein unverschlüsseltes Lesereplikat einer verschlüsselten DB-Instance zu erstellen.

  • Sie können ein unverschlüsseltes Backup oder einen solchen Snapshot nicht als verschlüsselte DB-Instance wiederherstellen.

  • Amazon RDS-Verschlüsselung ist für die meisten DB-Instance-Klassen verfügbar. Eine Liste der Ausnahmen finden Sie unter Verschlüsseln von Amazon-RDS-Ressourcen in der Amazon-RDS-Dokumentation.

  • Um einen verschlüsselten Snapshot von einer AWS-Region in eine andere zu kopieren, müssen Sie den KMS-Schlüssel in der AWS-Zielregion angeben. Dies liegt daran, dass KMS-Schlüssel spezifisch für die AWS-Region sind, in der sie erstellt werden.

  • Der Quell-Snapshot bleibt den gesamten Kopiervorgang über verschlüsselt. Amazon RDS verwendet Envelope-Verschlüsselung, um Daten während des Kopiervorgangs zu schützen. Weitere Informationen finden Sie unter Envelope-Verschlüsselung in der AWS KMS-Dokumentation.

  • Sie können eine verschlüsselte DB-Instance nicht entschlüsseln. Sie können jedoch Daten aus einer verschlüsselten DB-Instance exportieren und die Daten in eine unverschlüsselte DB-Instance importieren.

  • Sie sollten einen KMS-Schlüssel nur löschen, wenn Sie sicher sind, dass Sie ihn nicht mehr verwenden müssen. Wenn Sie sich nicht sicher sind, sollten Sie den KMS-Schlüssel deaktivieren, anstatt ihn zu löschen. Sie können einen deaktivierten KMS-Schlüssel erneut aktivieren, wenn Sie ihn später erneut verwenden müssen, aber Sie können einen gelöschten KMS-Schlüssel nicht wiederherstellen. 

  • Wenn Sie sich nicht dafür entscheiden, automatisierte Backups beizubehalten, werden Ihre automatisierten Backups gelöscht, die sich in derselben AWS-Region wie die DB-Instance befinden. Sie können nicht wiederhergestellt werden, nachdem Sie die DB-Instance gelöscht haben.

  • Ihre automatisierten Backups werden für den Aufbewahrungszeitraum aufbewahrt, der zum Zeitpunkt des Löschens auf der DB-Instance festgelegt wurde. Dieser festgelegte Aufbewahrungszeitraum tritt unabhängig davon ein, ob Sie einen endgültigen DB-Snapshot erstellen möchten oder nicht.

  • Wenn die automatische Behebung aktiviert ist, verschlüsselt diese Lösung alle Datenbanken, die denselben KMS-Schlüssel haben.

Architektur

Das folgende Diagramm veranschaulicht die Architektur für die AWS- CloudFormation Implementierung. Beachten Sie, dass Sie dieses Muster auch mithilfe des AWS Cloud Development Kit (AWS CDK) implementieren können.

Tools

Tools

  • AWS CloudFormation unterstützt Sie bei der automatischen Einrichtung Ihrer AWS-Ressourcen. Damit können Sie eine Vorlagendatei verwenden, um eine Sammlung von Ressourcen als einzelne Einheit (einen Stack) zu erstellen und zu löschen.

  • AWS Cloud Development Kit (AWS CDK) ist ein Softwareentwicklungs-Framework zur Definition Ihrer Cloud-Infrastruktur im Code und zur Bereitstellung mithilfe vertrauter Programmiersprachen.

AWS-Services und -Funktionen

  • AWS Config verfolgt die Konfiguration Ihrer AWS-Ressourcen und deren Beziehungen zu Ihren anderen Ressourcen. Es kann diese AWS-Ressourcen auch auf Compliance überprüfen. Dieser Service verwendet Regeln, die so konfiguriert werden können, dass AWS-Ressourcen anhand der gewünschten Konfigurationen bewertet werden. Sie können eine Reihe von verwalteten AWS Config-Regeln für gängige Compliance-Szenarien verwenden oder eigene Regeln für benutzerdefinierte Szenarien erstellen. Wenn festgestellt wird, dass eine AWS-Ressource nicht konform ist, können Sie eine Abhilfemaßnahme über ein AWS Systems Manager-Runbook angeben und optional eine Warnung über ein Amazon Simple Notification Service (Amazon SNS)-Thema senden. Mit anderen Worten, Sie können Korrekturmaßnahmen AWS Config-Regeln zuordnen und sie automatisch ausführen, um nicht konforme Ressourcen ohne manuellen Eingriff zu beheben. Wenn eine Ressource nach der automatischen Korrektur immer noch nicht konform ist, können Sie die Regel so festlegen, dass die automatische Korrektur erneut versucht wird.

  • Amazon Relational Database Service (Amazon RDS) erleichtert das Einrichten, Betreiben und Skalieren einer relationalen Datenbank in der Cloud. Der Grundbaustein für Amazon RDS ist die DB-Instance, eine isolierte Datenbankumgebung in der AWS Cloud. Amazon RDS bietet eine Auswahl von Instance-Typen, die für verschiedene Anwendungsfälle für relationale Datenbanken optimiert sind. Instance-Typen umfassen verschiedene Kombinationen von CPU-, Arbeitsspeicher-, Speicher- und Netzwerkkapazitäten und bieten Ihnen die Flexibilität, die richtige Mischung von Ressourcen für Ihre Datenbank auszuwählen. Jeder Instance-Typ umfasst mehrere Instance-Größen, sodass Sie Ihre Datenbank an die Anforderungen Ihrer Ziel-Workload anpassen können.

  • AWS Key Management Service (AWS KMS) ist ein verwalteter Service, der es Ihnen erleichtert, AWS KMS-Schlüssel zu erstellen und zu steuern, die Ihre Daten verschlüsseln. Ein KMS-Schlüssel ist eine logische Darstellung eines Root-Schlüssels. Der KMS-Schlüssel enthält Metadaten wie die Schlüssel-ID, das Erstellungsdatum, die Beschreibung und den Schlüsselstatus.

  • Mit AWS Identity and Access Management (IAM) können Sie den Zugriff auf Ihre AWS-Ressourcen sicher verwalten, indem Sie steuern, wer authentifiziert und zur Nutzung autorisiert ist.

  • Service-Kontrollrichtlinien (SCPs )bieten eine zentrale Kontrolle über die maximal verfügbaren Berechtigungen für alle Konten in Ihrer Organisation. SCPs helfen Ihnen sicherzustellen, dass Ihre Konten die Zugriffskontrollrichtlinien Ihrer Organisation einhalten. SCPs haben keine Auswirkungen auf Benutzer oder Rollen im Verwaltungskonto. Sie wirken sich nur auf die Mitgliedskonten Ihrer Organisation aus. Wir raten Ihnen nachdrücklich davon ab, Service-Kontrollrichtlinien zum Root-Benutzer Ihrer Organisation zuzuordnen, ohne zuvor gründlich getestet zu haben, wie sich die Richtlinie auf Konten auswirkt. Erstellen Sie stattdessen eine Organisationseinheit (OU), in die Sie Ihre Konten nacheinander oder zumindest in kleinen Nummern verschieben können, um sicherzustellen, dass Sie Benutzer nicht versehentlich von Schlüsselservices sperren.

Code

Der Quellcode und die Vorlagen für dieses Muster sind in einem GitHub Repository verfügbar. Das Muster bietet zwei Implementierungsoptionen: Sie können eine AWS- CloudFormation Vorlage bereitstellen, um die Korrekturrolle zu erstellen, die RDS-DB-Instances und -Cluster verschlüsselt, oder das AWS-CDK verwenden. Das Repository verfügt über separate Ordner für diese beiden Optionen.

Der Abschnitt „PiCs“ enthält step-by-step Anweisungen zur Bereitstellung der CloudFormation Vorlage. Wenn Sie das AWS-CDK verwenden möchten, folgen Sie den Anweisungen in der Datei README.md im GitHub Repository.

Bewährte Methoden

  • Aktivieren Sie die Datenverschlüsselung sowohl im Ruhezustand als auch während der Übertragung.

  • Aktivieren Sie AWS Config in allen Konten und AWS-Regionen.

  • Aufzeichnen von Konfigurationsänderungen an allen Ressourcentypen.

  • Wechseln Sie regelmäßig die IAM-Anmeldeinformationen.

  • Nutzen Sie das Tagging für AWS Config , was das Verwalten, Suchen und Filtern von Ressourcen vereinfacht.

Polen

AufgabeBeschreibungErforderliche Fähigkeiten

Laden Sie die CloudFormation Vorlage herunter.

Laden Sie die unencrypted-to-encrypted-rds.template.json Datei aus dem GitHub Repository herunter.

DevOps Techniker

Erstellen Sie den CloudFormation Stack.

  1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die CloudFormation Konsole unter https://console.aws.amazon.com/cloudformation/

  2. Starten Sie die unencrypted-to-encrypted-rds.template.json Vorlage, um einen neuen Stack zu erstellen.

Weitere Informationen zum Bereitstellen von Vorlagen finden Sie in der AWS- CloudFormation Dokumentation.

DevOps Techniker

Überprüfen Sie CloudFormation Parameter und Werte.

  1. Überprüfen Sie die Stack-Details und aktualisieren Sie die Werte basierend auf Ihren Umgebungsanforderungen.

  2. Wählen Sie Stack erstellen, um die Vorlage bereitzustellen.

DevOps Techniker

Überprüfen Sie die Ressourcen.

Wenn der Stack erstellt wurde, ändert sich sein Status in CREATE_COMPLETE . Überprüfen Sie die erstellten Ressourcen (IAM-Rolle, AWS Systems Manager-Runbook) in der - CloudFormation Konsole.

DevOps Techniker
AufgabeBeschreibungErforderliche Fähigkeiten

Aktualisieren Sie Ihre KMS-Schlüsselrichtlinie.

  1. Stellen Sie sicher, dass der Schlüsselalias alias/RDSEncryptionAtRestKMSAlias vorhanden ist. 

  2. Die Schlüsselrichtlinienanweisung sollte die IAM-Korrekturrolle enthalten. (Überprüfen Sie die Ressourcen, die von der CloudFormation Vorlage erstellt wurden, die Sie im vorherigen Epic bereitgestellt haben.) 

  3. Aktualisieren Sie in der folgenden Schlüsselrichtlinie die fett gedruckten Teile so, dass sie Ihrem Konto und der erstellten IAM-Rolle entsprechen.

{ "Sid": "Allow access through RDS for all principals in the account that are authorized to use RDS", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam:: <your-AWS-account-ID>”:role/<your-IAM-remediation-role>" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:ListGrants", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "rds.us-east-1.amazonaws.com", "kms:CallerAccount": "<your-AWS-account-ID>" } } }
DevOps Techniker
AufgabeBeschreibungErforderliche Fähigkeiten

Anzeigen nicht konformer Ressourcen.

  1. Um eine Liste der nicht konformen Ressourcen anzuzeigen, öffnen Sie die AWS Config-Konsole unter https://console.aws.amazon.com/config/

  2. Wählen Sie im Navigationsbereich Regeln und dann die rds-storage-encrypted Regel aus.

Bei den in der AWS Config-Konsole aufgeführten nicht konformen Ressourcen handelt es sich um Instances, nicht um Cluster. Die Korrekturautomatisierung verschlüsselt Instances und Cluster und erstellt entweder eine neu verschlüsselte Instance oder einen neu erstellten Cluster. Achten Sie jedoch darauf, nicht mehrere Instances gleichzeitig zu beheben, die zu demselben Cluster gehören.

Bevor Sie RDS-DB-Instances oder -Volumes korrigieren, stellen Sie sicher, dass die RDS-DB-Instance nicht verwendet wird. Vergewissern Sie sich, dass während der Snapshot-Erstellung keine Schreibvorgänge ausgeführt werden, um sicherzustellen, dass der Snapshot die Originaldaten enthält. Erwägen Sie, ein Wartungsfenster durchzusetzen, in dem die Korrektur ausgeführt wird.

DevOps Techniker

Korrigieren Sie nicht konforme Ressourcen.

  1. Wenn Sie bereit sind und das Wartungsfenster in Kraft ist, wählen Sie die zu behebende Ressource und dann Korrigieren aus.

    In der Spalte Aktionsstatus sollte jetzt die Aktionsausführung in der Warteschlange angezeigt werden.

  2. Zeigen Sie den Fortschritt und den Status der Behebung in Systems Manager an. Öffnen Sie die AWS Systems Manager-Konsole unter https://console.aws.amazon.com/systems-manager/. Wählen Sie im Navigationsbereich Automation und dann die Ausführungs-ID der entsprechenden Automatisierung aus, um weitere Details anzuzeigen.

DevOps Techniker

Stellen Sie sicher, dass die RDS-DB-Instance verfügbar ist.

Nach Abschluss der Automatisierung wird die neu verschlüsselte RDS-DB-Instance verfügbar. Die verschlüsselte RDS-DB-Instance hat das Präfix encrypted gefolgt vom ursprünglichen Namen. Wenn der unverschlüsselte Name der RDS-DB-Instance beispielsweise lautetdatabase-1, wäre die neu verschlüsselte RDS-DB-Instance encrypted-database-1.

DevOps Techniker

Beenden Sie die unverschlüsselte Instance.

Nachdem die Korrektur abgeschlossen und die neu verschlüsselte Ressource validiert wurde, können Sie die unverschlüsselte Instance beenden. Stellen Sie sicher, dass die neu verschlüsselte Ressource mit der unverschlüsselten Ressource übereinstimmt, bevor Sie Ressourcen beenden.

DevOps Techniker
AufgabeBeschreibungErforderliche Fähigkeiten

SCPs erzwingen.

Erzwingen Sie SCPs, um zu verhindern, dass DB-Instances und Cluster in Zukunft ohne Verschlüsselung erstellt werden. Verwenden Sie zu diesem Zweck die im GitHub Repository bereitgestellte rds_encrypted.json Datei und folgen Sie den Anweisungen in der AWS-Dokumentation

Sicherheitsingenieur

Zugehörige Ressourcen

Referenzen

Tools

Anleitungen und Muster

Zusätzliche Informationen

HÄUFIG GESTELLTE FRAGEN

F: Wie funktioniert AWS Config?

A. Wenn Sie AWS Config aktivieren, erkennt es zunächst die unterstützten AWS-Ressourcen, die in Ihrem Konto vorhanden sind, und generiert ein Konfigurationselement für jede Ressource. AWS Config generiert auch Konfigurationselemente, wenn sich die Konfiguration einer Ressource ändert, und speichert historische Aufzeichnungen der Konfigurationselemente Ihrer Ressourcen ab dem Zeitpunkt, an dem Sie den Konfigurations-Recorder starten. Standardmäßig erstellt AWS Config Konfigurationselemente für jede unterstützte Ressource in der AWS-Region. Wenn Sie nicht möchten, dass AWS Config Konfigurationselemente für alle unterstützten Ressourcen erstellt, können Sie die Ressourcentypen angeben, die verfolgt werden sollen.

F: Wie beziehen sich AWS Config- und AWS Config-Regeln auf AWS Security Hub?

A. AWS Security Hub ist ein Sicherheits- und Compliance-Service, der als Service Sicherheits- und Compliance-Statusmanagement bietet. Es verwendet AWS Config- und AWS Config-Regeln als primären Mechanismus zur Bewertung der Konfiguration von AWS-Ressourcen. AWS Config-Regeln können auch verwendet werden, um die Ressourcenkonfiguration direkt auszuwerten. Konfigurationsregeln werden auch von anderen AWS-Services wie AWS Control Tower und AWS Firewall Manager verwendet.