Blockieren Sie den öffentlichen Zugriff auf Amazon mithilfe RDS von Cloud Custodian - 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.

Blockieren Sie den öffentlichen Zugriff auf Amazon mithilfe RDS von Cloud Custodian

Erstellt von abhay kumar (AWS) und Dwarika Patra () AWS

Umwelt: Produktion

Technologien: Datenbanken; Sicherheit, Identität, Compliance

Arbeitslast: Alle anderen Workloads; Open Source

AWSdienstleistungen: Amazon RDS

Übersicht

Viele Unternehmen führen ihre Workloads und Dienste auf mehreren Cloud-Anbietern aus. In diesen Hybrid-Cloud-Umgebungen erfordert die Cloud-Infrastruktur zusätzlich zur Sicherheit, die von den einzelnen Cloud-Anbietern bereitgestellt wird, eine strenge Cloud-Governance. Eine Cloud-Datenbank wie Amazon Relational Database Service (AmazonRDS) ist ein wichtiger Dienst, der auf Zugriffs- und Berechtigungsschwachstellen überwacht werden muss. Sie können zwar den Zugriff auf die RDS Amazon-Datenbank einschränken, indem Sie eine Sicherheitsgruppe konfigurieren, aber Sie können eine zweite Schutzebene hinzufügen, um Aktionen wie den öffentlichen Zugriff zu verbieten. Wenn Sie sicherstellen, dass der öffentliche Zugang gesperrt ist, können Sie die allgemeine Datenschutzverordnung (GDPR), den Health Insurance Portability and Accountability Act (HIPAA), das National Institute of Standards and Technology (NIST) und den Payment Card Industry Data Security Standard (PCIDSS) einhalten.

Cloud Custodian ist eine Open-Source-Regel-Engine, mit der Sie Zugriffsbeschränkungen für Amazon Web Services (AWS) -Ressourcen wie Amazon durchsetzen können. RDS Mit Cloud Custodian können Sie Regeln festlegen, die die Umgebung anhand definierter Sicherheits- und Compliance-Standards validieren. Sie können Cloud Custodian verwenden, um Ihre Cloud-Umgebungen zu verwalten, indem Sie dazu beitragen, die Einhaltung von Sicherheitsrichtlinien, Tag-Richtlinien und die Müllsammlung ungenutzter Ressourcen sowie das Kostenmanagement sicherzustellen. Mit Cloud Custodian können Sie eine einzige Oberfläche für die Implementierung von Governance in einer Hybrid-Cloud-Umgebung verwenden. Sie könnten beispielsweise die Cloud Custodian-Schnittstelle verwenden, um mit Microsoft Azure zu interagieren AWS und so den Aufwand für die Arbeit mit Mechanismen wie AWS Config, AWS Sicherheitsgruppen und Azure-Richtlinien zu reduzieren.

Dieses Muster enthält Anweisungen zur Verwendung von Cloud CustodianAWS, um die Einschränkung des öffentlichen Zugriffs auf RDS Amazon-Instances durchzusetzen.

Voraussetzungen und Einschränkungen

Voraussetzungen

Architektur

Zieltechnologie-Stack

  • Amazon RDS

  • AWS CloudTrail

  • AWSLambda

  • Cloud Custodian

Zielarchitektur

Das folgende Diagramm zeigt, wie Cloud Custodian die Richtlinie für Lambda bereitstellt, das CreateDBInstance Ereignis AWS CloudTrail auslöst und die Lambda-Funktion bei Amazon PubliclyAccessible auf False gesetzt hat. RDS

Verwenden von Cloud Custodian onAWS, um den öffentlichen Zugriff auf RDS Amazon-Instances einzuschränken.

Tools

AWSDienste

  • AWS CloudTrailhilft Ihnen bei der Prüfung der Unternehmensführung, der Einhaltung von Vorschriften und des Betriebsrisikos Ihres AWS Kontos.

  • AWSCommand Line Interface (AWSCLI) ist ein Open-Source-Tool, mit dem Sie mithilfe von Befehlen in Ihrer Befehlszeilen-Shell mit AWS Diensten interagieren können.

  • AWSIdentity and Access Management (IAM) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.

  • AWSLambda ist ein Rechendienst, mit dem Sie Code ausführen können, ohne Server bereitstellen oder verwalten zu müssen. Er führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.

  • Amazon Relational Database Service (AmazonRDS) unterstützt Sie bei der Einrichtung, dem Betrieb und der Skalierung einer relationalen Datenbank in der AWS Cloud.

Andere Tools

  • Cloud Custodian vereint die Tools und Skripte, die viele Unternehmen zur Verwaltung ihrer Public-Cloud-Konten verwenden, in einem Open-Source-Tool. Es verwendet eine Engine für statuslose Regeln zur Definition und Durchsetzung von Richtlinien mit Metriken, strukturierten Ergebnissen und detaillierten Berichten für die Cloud-Infrastruktur. Sie lässt sich eng in eine serverlose Runtime integrieren, um Problembehebung und Reaktion in Echtzeit bei geringem Betriebsaufwand zu ermöglichen.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Installieren AWSCLI.

Folgen Sie zur Installation AWS CLI den Anweisungen in der AWSDokumentation.

AWSAdministrator

AWSAnmeldeinformationen einrichten.

Konfigurieren Sie die Einstellungen, mit denen der AWS CLI Benutzer interagiertAWS, einschließlich der AWS Region und des Ausgabeformats, das Sie verwenden möchten.

$>aws configure AWS Access Key ID [None]: <your_access_key_id> AWS Secret Access Key [None]: <your_secret_access_key> Default region name [None]: Default output format [None]:

Weitere Informationen finden Sie in der AWSDokumentation.

AWSAdministrator

Erstellen Sie eine IAM Rolle.

Führen Sie den folgenden Befehl aus, um eine IAM Rolle mit der Lambda-Ausführungsrolle zu erstellen.

aws iam create-role --role-name lambda-ex --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}
AWS DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Installieren Sie Cloud Custodian.

Um Cloud Custodian für Ihr Betriebssystem und Ihre Umgebung zu installieren, folgen Sie den Anweisungen in der Cloud Custodian-Dokumentation.

DevOps Ingenieur

Überprüfen Sie das Cloud Custodian-Schema.

Verwenden Sie den folgenden Befehl, um die vollständige Liste der RDS Amazon-Ressourcen anzuzeigen, für die Sie Richtlinien ausführen können.

custodian schema aws.rds
DevOps Ingenieur

Erstellen Sie die Cloud Custodian-Richtlinie.

Speichern Sie den Code, der sich unter der Cloud Custodian-Richtliniendatei im Abschnitt Zusätzliche Informationen befindet, mit einer YAML Erweiterung.

DevOps Ingenieur

Definieren Sie Cloud Custodian-Aktionen, um die Kennzeichnung für öffentlich zugänglich zu ändern.

  1. Suchen Sie den Depotbankcode (z. B./Users/abcd/custodian/lib/python3.9/site-packages/c7n/resources/rds.py).

  2. Suchen Sie die RDSSetPublicAvailability Klasse in und ändern Sie diese Klasserds.py, indem Sie den Code verwenden, der sich in der Datei c7n resources rds.py im Abschnitt Zusätzliche Informationen befindet.

DevOps Ingenieur

Führen Sie einen Probelauf durch.

(Optional) Verwenden Sie den folgenden Befehl, um zu überprüfen, welche Ressourcen durch die Richtlinie identifiziert werden, ohne Aktionen für die Ressourcen auszuführen.

custodian run -dryrun <policy_name>.yaml -s <output_directory>
DevOps Ingenieur
AufgabeBeschreibungErforderliche Fähigkeiten

Stellen Sie die Richtlinie mithilfe von Lambda bereit.

Verwenden Sie den folgenden Befehl, um die Lambda-Funktion zu erstellen, mit der die Richtlinie ausgeführt wird.

custodian run -s policy.yaml

Diese Richtlinie wird dann durch das AWS CloudTrail CreateDBInstance Ereignis initiiert.

Daher setzt AWS Lambda das öffentlich zugängliche Flag für Instances, die den Kriterien entsprechen, auf False.

DevOps Ingenieur

Zugehörige Ressourcen

Zusätzliche Informationen

YAMLRichtliniendatei für Cloud Custodian

policies: - name: "block-public-access" resource: rds description: | This Enforcement blocks public access for RDS instances. mode: type: cloudtrail events: - event: CreateDBInstance # Create RDS instance cloudtrail event source: rds.amazonaws.com ids: requestParameters.dBInstanceIdentifier role: arn:aws:iam::1234567890:role/Custodian-compliance-role filters: - type: event key: 'detail.requestParameters.publiclyAccessible' value: true actions: - type: set-public-access state: false

Datei rds.py für c7n-Ressourcen

@actions.register('set-public-access') class RDSSetPublicAvailability(BaseAction): schema = type_schema( "set-public-access", state={'type': 'boolean'}) permissions = ('rds:ModifyDBInstance',) def set_accessibility(self, r): client = local_session(self.manager.session_factory).client('rds') waiter = client.get_waiter('db_instance_available') waiter.wait(DBInstanceIdentifier=r['DBInstanceIdentifier']) client.modify_db_instance( DBInstanceIdentifier=r['DBInstanceIdentifier'], PubliclyAccessible=self.data.get('state', False)) def process(self, rds): with self.executor_factory(max_workers=2) as w: futures = {w.submit(self.set_accessibility, r): r for r in rds} for f in as_completed(futures): if f.exception(): self.log.error( "Exception setting public access on %s \n %s", futures[f]['DBInstanceIdentifier'], f.exception()) return rds

Integration von Security Hub

Cloud Custodian kann in AWSSecurity Hub integriert werden, um Sicherheitsergebnisse zu senden und Abhilfemaßnahmen zu ergreifen. Weitere Informationen finden Sie unter Ankündigung der Integration von Cloud Custodian mit AWS Security Hub.