Zugriffskontrolle mit Sicherheitsgruppen - Amazon Relational Database Service

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.

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:

  1. 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.

  2. 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.

  3. 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.

  4. 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.


                    DB-Instance und EC2-Instance in einer VPC

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.

Anmerkung

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" ] } ] } } }