Zugriffskontrolle mit Sicherheitsgruppen
Sicherheitsgruppen kontrollieren die Zugriffsaktivitäten von eingehendem und ausgehendem Datenverkehr in einer DB-Instance. Drei Sicherheitsgruppentypen werden mit Amazon RDS verwendet: VPC-Sicherheitsgruppen, DB-Sicherheitsgruppen und EC2-Classic-Sicherheitsgruppen. Vereinfacht gesagt, funktionieren diese wie folgt:
-
Eine VPC-Sicherheitsgruppe steuert den Zugriff auf die DB-Instances und EC2-Instances innerhalb einer VPC.
-
Eine DB-Sicherheitsgruppe kontrolliert den Zugriff auf eine EC2-Classic DB-Instance, die sich nicht in einer VPC befindet.
-
Eine EC2-Classic-Sicherheitsgruppe steuert den Zugriff auf eine EC2-Instance. Weitere Informationen zu EC2-Classic-Sicherheitsgruppen finden Sie unter EC2-Classic in der Amazon EC2-Dokumentation.
Standardmäßig ist der Netzwerkzugriff für eine DB-Instance deaktiviert. Sie können Regeln in einer Sicherheitsgruppe angeben, die den Zugriff aus einem IP-Adressbereich, über einen Port oder für eine Sicherheitsgruppe zulassen. Nach der Konfiguration von ingress-Regeln gelten diese für alle DB-Instances, die dieser Sicherheitsgruppe zugeordnet sind. Sie können bis zu 20 Regeln in einer Sicherheitsgruppe angeben.
VPC-Sicherheitsgruppen
Jede VPC-Sicherheitsgruppenregel erlaubt einer bestimmten Quelle den Zugriff auf eine DB-Instance in einer VPC, die dieser VPC-Sicherheitsgruppe zugeteilt ist. Die Quelle kann ein Adressenbereich (zum Beispiel: 203.0.113.0/24) oder eine andere VPC-Sicherheitsgruppe sein. Wenn Sie eine VPC-Sicherheitsgruppe als Quelle festlegen, erlauben Sie eingehenden Datenverkehr von allen Instances (typischerweise Anwendungsserver), die Quell-VPC-Sicherheitsgruppe verwenden. VPC-Sicherheitsgruppenregeln können über Regeln verfügen, die den eingehenden und ausgehenden Datenverkehr regulieren, jedoch gelten die Regeln für den ausgehenden Datenverkehr typischerweise nicht für DB-Instances. Die Regeln für den ausgehenden Datenverkehr gelten nur, wenn die DB-Instance als Client agiert. Zum Beispiel gelten Regeln für ausgehenden Datenverkehr für eine Oracle DB-Instance mit ausgehenden Datenbankverknüpfungen. Sie müssen die Amazon EC2-API oder die Option Sicherheitsgruppe in der VPC-Konsole verwenden, um VPC-Sicherheitsgruppen zu erstellen.
Wenn Sie Regeln für Ihre VPC-Sicherheitsgruppe erstellen, die den Zugriff auf Instances in Ihrer VPC erlauben, müssen Sie einen Port für jeden Adressbereich bestimmen, für den die Regel Zugriff zulässt. Wenn Sie beispielsweise SSH-Zugang zu Instances in der VPC aktivieren möchten, dann erstellen Sie eine Regel, die Zugriff auf TCP-Port 22 für den bestimmten Adressbereich zulässt.
Sie können mehrere VPC-Sicherheitsgruppen konfigurieren, die Zugriff auf verschiedenen Ports für verschiedenen Instances in Ihrer VPC zulassen. Beispielsweise können Sie eine VPC-Sicherheitsgruppe erstellen, die den Zugriff auf TCP-Port 80 für Webserver in Ihrer VPC ermöglicht. Sie können dann eine andere VPC-Sicherheitsgruppe erstellen, die den Zugriff auf TCP-Port 3306 für RDS MySQL-DB-Instances in Ihrer VPC ermöglicht.
Weitere Informationen zu VPC-Sicherheitsgruppen finden Sie unter Sicherheitsgruppen im Amazon Virtual Private Cloud-Benutzerhandbuch.
Wenn sich Ihr DB-Instance in einer VPC befindet, aber nicht öffentlich zugänglich ist, können Sie auch eine AWS-Standort-zu-Site-VPN-Verbindung oder eine AWS Direct Connect-Verbindung verwenden, um von einem privaten Netzwerk aus darauf zuzugreifen. Weitere Informationen finden Sie unter Richtlinie für den Datenverkehr zwischen Netzwerken.
DB-Sicherheitsgruppen
DB-Sicherheitsgruppen werden mit DB-Instances verwendet, die sich nicht in einer VPC oder auf einer EC2-Classic-Plattform befinden. Jede DB-Sicherheitsgruppenregel erlaubt einer bestimmten Quelle den Zugriff auf eine DB-Instance, die dieser DB-Sicherheitsgruppe zugeteilt ist. Die Quelle kann ein Adressenbereich (zum Beispiel: 203.0.113.0/24) oder eine EC2-Classic-Sicherheitsgruppe sein. Wenn Sie eine EC2-Classic-Sicherheitsgruppe als Quelle festlegen, erlauben Sie eingehenden Datenverkehr von allen EC2-Instances, die diese EC2-Classic-Sicherheitsgruppe verwenden. Die DB-Sicherheitsgruppenregeln werden nur auf eingehenden Datenverkehr angewandt. Ausgehender Datenverkehr ist für DB-Instances derzeit nicht zugelassen.
Sie müssen keine Bestimmungsportnummer angeben, wenn Sie DB-Sicherheitsgruppenregeln erstellen. Die Portnummer wird für die DB-Instance definiert und als Bestimmungsportnummer für alle in dieser DB-Sicherheitsgruppe definierten Regen verwendet. DB-Sicherheitsgruppen können über Amazon RDS-API-Operationen oder die Amazon RDS-Seite der AWS Management Console erstellt werden.
Weitere Informationen zum Arbeiten mit DB-Sicherheitsgruppen finden Sie unter Arbeiten mit DB-Sicherheitsgruppen (EC2-Classic-Plattform).
DB-Sicherheitsgruppen im Vergleich mit VPC-Sicherheitsgruppen
In der folgenden Tabelle werden die Hauptunterschiede zwischen DB-Sicherheitsgruppen und VPC-Sicherheitsgruppen verdeutlicht.
DB-Sicherheitsgruppe | VPC Security Group (VPC-Sicherheitsgruppe) |
---|---|
Kontrolliert den Zugriff auf DB-Instances außerhalb einer VPC. | Kontrolliert den Zugriff auf DB-Instances innerhalb einer VPC. |
Verwendet Amazon RDS-API-Operationen oder die Amazon RDS-Seite der AWS Management Console, um Gruppen und Regeln zu erstellen und zu verwalten. | Verwendet Amazon EC2-API-Operationen oder die Amazon VPC-Seite der AWS Management Console, um Gruppen und Regeln zu erstellen und zu verwalten. |
Wenn Sie einer Gruppe eine Regel hinzufügen, müssen Sie weder Portnummer noch Protokoll angeben. | Wenn Sie eine Regel einer Gruppe hinzufügen, geben Sie das Protokoll als TCP an. Zusätzlich legen Sie dieselbe Portnummer fest, die Sie beim Erstellen der DB-Instances (oder Optionen) verwendet haben, die Sie als Mitglieder der Gruppe hinzufügen möchten. |
Gruppen erlauben den Zugriff aus EC2-Classic-Sicherheitsgruppen auf Ihr AWS-Konto oder andere Konten. | Gruppen erlauben den Zugriff aus andere VPC-Sicherheitsgruppen auf ausschließlich Ihr Konto. |
Sicherheitsgruppenszenario
Eine häufige Verwendung von DB-Instances in einer VPC ist das Teilen von Daten mit einem Anwendungsserver, der in einer Amazon EC2-Instance ausgeführt wird, die sich in der selben VPC befindet, auf die eine Clientanwendung, die sich außerhalb der VPC befindet, zugreift. Für dieses Szenario verwenden Sie die RDS- und VPC-Seiten der AWS Management Console oder die RDS- und EC2-API-Operationen, um die notwendigen Instances und Sicherheitsgruppen zu erstellen:
-
Erstellen einer VPC-Sicherheitsgruppe (zum Beispiel
sg-appsrv1
) und Definieren von eingehenden Regeln, welche die IP-Adressen der Client-Anwendung als Quelle verwenden. Diese Sicherheitsgruppe erlaubt Ihrer Client-Anwendung, sich mit EC2-Instances in einer VPC zu verbinden, die diese Sicherheitsgruppe verwendet. -
Erstellen Sie eine EC2-Instance für eine Anwendung und fügen Sie dieser EC2-Instance eine VPC-Sicherheitsgruppe (
sg-appsrv1
) hinzu, die Sie im vorherigen Schritt erstellt haben. Die EC2-Instance in der VPC teilt die VPC-Sicherheitsgruppe mit der DB-Instance. -
Erstellen Sie eine zweite VPC-Sicherheitsgruppe (zum Beispiel
sg-dbsrv1
) und erstellen Sie eine neue Regel durch Festlegen der VPC-Sicherheitsregel, die Sie in Schritt 1 (sg-appsrv1
) als Quelle erstellt haben. -
Erstellen Sie eine neue DB-Instance und fügen Sie die DB-Instance einer VPC-Sicherheitsgruppe (
sg-dbsrv1
) hinzu, die Sie im vorherigen Schritt erstellt haben. Wenn Sie eine DB-Instance erstellen, verwenden Sie die selbe Portnummer, die für die VPC-Sicherheitsgruppenregel (sg-dbsrv1
) festgelegt ist, die Sie in Schritt 3 erstellt haben.
Im folgenden Diagramm wird dieses Szenario veranschaulicht.

Weitere Informationen zur Verwendung einer VPC finden Sie unter Amazon Virtual Private Cloud VPCs und Amazon RDS.
Erstellen einer VPC-Sicherheitsgruppe
Sie können unter Verwendung der VPC-Konsole eine VPC-Sicherheitsgruppe für eine DB-Instance erstellen. Weitere Informationen zum Erstellen einer Sicherheitsgruppe finden Sie unter Ermöglichen des Zugriffs auf Ihre DB-Instance in der VPC durch Erstellen einer Sicherheitsgruppe und Sicherheitsgruppen im Amazon Virtual Private Cloud-Benutzerhandbuch.
Verknüpfen einer Sicherheitsgruppe mit einer DB-Instance
Sie können eine Sicherheitsgruppe mit einer DB-Instance auf der RDS-Konsole über Modify (Ändern) des Amazon RDS-API-Aufrufs ModifyDBInstance
oder des AWS CLI-Befehls modify-db-instance
verknüpfen.
Informationen über das Ändern einer DB-Instance finden Sie unter Ändern einer Amazon RDS-DB-Instance. Informationen zu Betrachtungen über Sicherheitsgruppen beim Wiederherstellen einer DB-Instance aus einem DB-Snapshot finden Sie unter Überlegungen zu Sicherheitsgruppen.
Löschen von DB-VPC-Sicherheitsgruppen
DB-VPC-Sicherheitsgruppen sind ein RDS-Mechanismus für das Synchronisieren von Sicherheitsinformationen mit einer VPC-Sicherheitsgruppe. Jedoch wird dies Synchronisierung nicht mehr vorausgesetzt, weil RDS auf die direkte Verwendung von VPC-Sicherheitsgruppeninformationen hin aktualisiert wurde.
DB-VPC-Sicherheitsgruppen sind veraltet und unterscheiden sich von DB-Sicherheitsgruppen, VPC-Sicherheitsgruppen und EC2-Classic-Sicherheitsgruppen.
Wir empfehlen nachdrücklich, alle DB-VPC-Sicherheitsgruppen zu löschen, die Sie aktuell verwenden. Wenn Sie Ihre DB-VPC-Sicherheitsgruppen nicht löschen, kann es zu unerwartetem Verhalten Ihrer DB-Instances kommen, was schwerwiegende Folgen, wie den Zugriffsverlust auf Ihre DB-Instance bedeuten kann. Die unbeabsichtigten Verhaltensweisen können das Ergebnis einer Aktion sein, wie z. B. ein Update auf eine DB-Instance, eine Parametergruppe oder ähnliches. Solche Aktualisierungen führen dazu, dass RDS die DB-VPC-Sicherheitsgruppe mit der VPC-Sicherheitsgruppe neu synchronisiert. Diese erneute Synchronisation kann zufolge haben, dass Sicherheitsinformationen mit falschen und abgelaufenen Sicherheitsinformationen überschrieben werden. Das kann sich schwerwiegend auf den Zugriff auf Ihre DB-Instances auswirken.
Wie kann ich feststellen, ob ich über eine DB-VPC-Sicherheitsgruppe verfüge?
Da die Unterstützung für DB-VPC-Sicherheitsgruppen eingestellt wurde, erscheinen diese nicht mehr in der RDS-Konsole. Sie können jedoch den AWS CLI-Befehl describe-db-security-groups oder die API-Operation DescribeDBSecurityGroups ausführen, um zu ermitteln, ob Sie über DB-VPC-Sicherheitsgruppen verfügen.
In diesem Fall können Sie den AWS CLI-Befehl describe-db-security-groups
aufrufen, wobei als Ausgabeformat JSON vorgegeben ist. Wenn Sie das tun, können Sie
DB-VPC-Sicherheitsgruppen anhand der VPC-Kennung in der zweiten Zeile in der Ausgabe
für Sicherheitsgruppen erkennen, wie im folgenden Beispiel zu sehen ist.
{ "DBSecurityGroups": [ { "VpcId": "vpc-abcd1234", "DBSecurityGroupDescription": "default:vpc-abcd1234", "IPRanges": [ { "Status": "authorized", "CIDRIP": "xxx.xxx.xxx.xxx/n" }, { "Status": "authorized", "CIDRIP": "xxx.xxx.xxx.xxx/n " } ], "OwnerId": "123456789012", "EC2SecurityGroups": [], "DBSecurityGroupName": "default:vpc-abcd1234" } ] }
Wenn Sie die API-Operation DescribeDBSecurityGroups
ausführen, können Sie die DB-VPC-Sicherheitsgruppen mithilfe des Antwortelements
<VpcId>
identifizieren wie im folgenden Beispiel gezeigt.
<DBSecurityGroup> <EC2SecurityGroups/> <DBSecurityGroupDescription>default:vpc-abcd1234</DBSecurityGroupDescription> <IPRanges> <IPRange> <CIDRIP>xxx.xxx.xxx.xxx/n</CIDRIP> <Status>authorized</Status> </IPRange> <IPRange> <CIDRIP>xxx.xxx.xxx.xxx/n</CIDRIP> <Status>authorized</Status> </IPRange> </IPRanges> <VpcId>vpc-abcd1234</VpcId> <OwnerId>123456789012</OwnerId> <DBSecurityGroupName>default:vpc-abcd1234</DBSecurityGroupName> </DBSecurityGroup>
Wie kann ich eine DB-VPC-Sicherheitsgruppe löschen?
Da DB-VPC-Sicherheitsgruppen nicht in der RDS-Konsole angezeigt werden, müssen sie den AWS CLI-Befehl delete-db-security-group oder die API-Operation DeleteDBSecurityGroup aufrufen, um eine DB-VPC-Sicherheitsgruppe zu löschen.
Nachdem Sie eine DB-VPC-Sicherheitsgruppe gelöscht haben, bleiben Ihre DB-Instances in Ihrer VPC weiterhin durch die VPC-Sicherheitsgruppe für diese VPC geschützt. Die DB-VPC-Sicherheitsgruppe, die gelöscht wurde, war bloß eine Kopie der VPC-Sicherheitsgruppeninformationen.
Überprüfen Ihrer AWS CloudFormation-Vorlagen
Ältere Versionen von AWS CloudFormation-Vorlagen können Anweisungen für das Erstellen
einer DB-VPC-Sicherheitsgruppe enthalten. Da die Unterstützung für DB-VPC-Sicherheitsgruppen
noch nicht vollständig eingestellt wurde, können diese immer noch erstellt werden.
Stellen Sie sicher, das alle AWS CloudFormation-Vorlagen, die Sie für die Bereitstellung
von Sicherheitseinstellungen für eine DB-Instance verwenden, nicht auch eine DB-VPC-Sicherheitsgruppe
erstellen. Verwenden Sie keine AWS CloudFormation-Vorlagen, die eine RDS DBSecurityGroup
mit einer EC2VpcId
erstellen, wie im folgenden Beispiel zu sehen ist.
{ "DbSecurityByEC2SecurityGroup" : { "Type" : "AWS::RDS::DBSecurityGroup", "Properties" : { "GroupDescription" : "Ingress for security group", "EC2VpcId" : "MyVPC", "DBSecurityGroupIngress" : [ { "EC2SecurityGroupId" : "sg-b0ff1111", "EC2SecurityGroupOwnerId" : "111122223333" }, { "EC2SecurityGroupId" : "sg-ffd722222", "EC2SecurityGroupOwnerId" : "111122223333" } ] } } }
Fügen Sie stattdessen Sicherheitsinformationen für Ihre DB-Instances in einer VPC mithilfe von VPC-Sicherheitsgruppen hinzu, wie im folgenden Beispiel zu sehen ist.
{ "DBInstance" : { "Type": "AWS::RDS::DBInstance", "Properties": { "DBName" : { "Ref" : "DBName" }, "Engine" : "MySQL", "MultiAZ" : { "Ref": "MultiAZDatabase" }, "MasterUsername" : { "Ref" : "
<master_username>
" }, "DBInstanceClass" : { "Ref" : "DBClass" }, "AllocatedStorage" : { "Ref" : "DBAllocatedStorage" }, "MasterUserPassword": { "Ref" : "<master_password>
" }, "VPCSecurityGroups" : [ { "Fn::GetAtt": [ "VPCSecurityGroup", "GroupId" ] } ] } } }