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.
Erstellen Sie einen Bericht mit den Ergebnissen von Network Access Analyzer für eingehende Internetzugriffe in mehreren Konten AWS
Erstellt von Mike Virgilio () AWS
Code-Repository: Network Access Analyzer | Umgebung: Produktion | Technologien: Netzwerke; Sicherheit, Identität, Compliance |
AWSDienste: AWS CloudFormation; Amazon S3; AmazonVPC; AWS Security Hub |
Übersicht
Unbeabsichtigter eingehender Internetzugriff auf AWS Ressourcen kann Risiken für den Datenperimeter eines Unternehmens darstellen. Network Access Analyzer ist eine Funktion von Amazon Virtual Private Cloud (AmazonVPC), mit der Sie unbeabsichtigte Netzwerkzugriffe auf Ihre Ressourcen auf Amazon Web Services (AWS) identifizieren können. Sie können Network Access Analyzer verwenden, um Ihre Netzwerkzugriffsanforderungen zu spezifizieren und potenzielle Netzwerkpfade zu identifizieren, die Ihren angegebenen Anforderungen nicht entsprechen. Mit Network Access Analyzer können Sie Folgendes tun:
Identifizieren Sie AWS Ressourcen, auf die über Internet-Gateways über das Internet zugegriffen werden kann.
Stellen Sie sicher, dass Ihre virtuellen privaten Clouds (VPCs) angemessen segmentiert sind, z. B. durch die Isolierung von Produktions- und Entwicklungsumgebungen und die Trennung von Transaktionsworkloads.
Network Access Analyzer analysiert die Bedingungen der end-to-end Netzwerkerreichbarkeit und nicht nur eine einzelne Komponente. Um festzustellen, ob auf eine Ressource über das Internet zugegriffen werden kann, bewertet Network Access Analyzer das Internet-Gateway, VPC Routing-Tabellen, Netzwerkzugriffskontrolllisten (ACLs), öffentliche IP-Adressen auf elastischen Netzwerkschnittstellen und Sicherheitsgruppen. Wenn eine dieser Komponenten den Internetzugang verhindert, generiert Network Access Analyzer kein Ergebnis. Wenn eine Amazon Elastic Compute Cloud (AmazonEC2) -Instance beispielsweise über eine offene Sicherheitsgruppe verfügt, die Datenverkehr zulässt, sich die Instance 0/0
aber in einem privaten Subnetz befindet, das von keinem Internet-Gateway aus routbar ist, würde Network Access Analyzer kein Ergebnis generieren. Dies liefert qualitativ hochwertige Ergebnisse, sodass Sie Ressourcen identifizieren können, auf die wirklich über das Internet zugegriffen werden kann.
Wenn Sie Network Access Analyzer ausführen, verwenden Sie Network Access Scopes, um Ihre Netzwerkzugriffsanforderungen festzulegen. Diese Lösung identifiziert Netzwerkpfade zwischen einem Internet-Gateway und einer elastic network interface. In diesem Muster stellen Sie die Lösung in einem zentralen AWS Konto in Ihrer Organisation bereit, das von AWS Organizations verwaltet wird, und es analysiert alle Konten in jeder AWS Region in der Organisation.
Bei der Entwicklung dieser Lösung wurde Folgendes berücksichtigt:
Die AWS CloudFormation Vorlagen reduzieren den Aufwand, der für die Bereitstellung der AWS Ressourcen in diesem Muster erforderlich ist.
Sie können die Parameter in den CloudFormation Vorlagen und im Skript naa-script.sh zum Zeitpunkt der Bereitstellung anpassen, um sie an Ihre Umgebung anzupassen.
Bash-Scripting stellt automatisch die Network Access Scopes für mehrere Konten parallel bereit und analysiert sie.
Ein Python-Skript verarbeitet die Ergebnisse, extrahiert die Daten und konsolidiert dann die Ergebnisse. Sie können wählen, ob Sie den konsolidierten Bericht mit den Ergebnissen von Network Access Analyzer im CSV Format oder in AWS Security Hub einsehen möchten. Ein Beispiel für den CSV Bericht finden Sie im Abschnitt Zusätzliche Informationen dieses Musters.
Sie können Ergebnisse korrigieren oder sie von future Analysen ausschließen, indem Sie sie der Datei naa-exclusions.csv hinzufügen.
Voraussetzungen und Einschränkungen
Voraussetzungen
Ein AWS Konto zum Hosten von Sicherheitsdiensten und -tools, das als Mitgliedskonto einer Organisation in AWS Organizations verwaltet wird. In diesem Muster wird dieses Konto als Sicherheitskonto bezeichnet.
Im Sicherheitskonto müssen Sie über ein privates Subnetz mit ausgehendem Internetzugang verfügen. Anweisungen finden Sie in der VPC Amazon-Dokumentation unter Erstellen eines Subnetzes. Sie können den Internetzugang mithilfe eines NATGateways oder eines VPCSchnittstellenendpunkts einrichten.
Zugriff auf das Verwaltungskonto der AWS Organizations oder auf ein Konto, für CloudFormation das Administratorrechte delegiert wurden. Anweisungen finden Sie in der Dokumentation unter Registrieren eines delegierten Administrators. CloudFormation
Aktivieren Sie den vertrauenswürdigen Zugriff zwischen AWS Organizations und CloudFormation. Anweisungen finden Sie in der CloudFormation Dokumentation unter Vertrauenswürdigen Zugriff mit AWS Organizations aktivieren.
Wenn Sie die Ergebnisse auf Security Hub hochladen, muss Security Hub in dem Konto und der AWS Region aktiviert sein, in der die EC2 Instanz bereitgestellt wird. Weitere Informationen finden Sie unter AWSSecurity Hub einrichten.
Einschränkungen
Kontoübergreifende Netzwerkpfade werden derzeit aufgrund von Einschränkungen der Network Access Analyzer-Funktion nicht analysiert.
Die AWS Zielkonten müssen als Organisation in AWS Organizations verwaltet werden. Wenn Sie AWS Organizations nicht verwenden, können Sie die CloudFormation Vorlage naa-execrole.yaml und das Skript naa-script.sh für Ihre Umgebung aktualisieren. Stattdessen geben Sie eine Liste der AWS Konten IDs und Regionen an, in denen Sie das Skript ausführen möchten.
Die CloudFormation Vorlage dient zur Bereitstellung der EC2 Instance in einem privaten Subnetz mit ausgehendem Internetzugang. Der AWS Systems Manager Agent (SSMAgent) benötigt ausgehenden Zugriff, um den Systems Manager Manager-Dienstendpunkt zu erreichen, und Sie benötigen ausgehenden Zugriff, um das Code-Repository zu klonen und Abhängigkeiten zu installieren. Wenn Sie ein öffentliches Subnetz verwenden möchten, müssen Sie die Vorlage naa-resources.yaml ändern, um der Instance eine Elastic IP-Adresse zuzuordnen. EC2
Architektur
Zieltechnologie-Stack
Network Access Analyzer
EC2Amazon-Instanz
AWSRollen für Identity and Access Management (IAM)
Amazon Simple Storage Service (Amazon S3)-Bucket
Thema Amazon Simple Notification Service (AmazonSNS)
AWSSecurity Hub (nur Option 2)
Zielarchitektur
Option 1: Greifen Sie auf Ergebnisse in einem Amazon S3 S3-Bucket zu
Das Diagramm zeigt den folgenden Prozess:
Wenn Sie die Lösung manuell ausführen, authentifiziert sich der Benutzer mit dem Sitzungsmanager bei der EC2 Instanz und führt dann das Skript naa-script.sh aus. Dieses Shell-Skript führt die Schritte 2—7 aus.
Wenn Sie die Lösung automatisch ausführen, wird das Skript naa-script.sh automatisch nach dem Zeitplan gestartet, den Sie im Cron-Ausdruck definiert haben. Dieses Shell-Skript führt die Schritte 2—7 aus. Weitere Informationen finden Sie unter Automatisierung und Skalierung am Ende dieses Abschnitts.
Die EC2 Instanz lädt die neueste Datei naa-exception.csv aus dem S3-Bucket herunter. Diese Datei wird später im Prozess verwendet, wenn das Python-Skript die Ausnahmen verarbeitet.
Die EC2 Instanz übernimmt die
NAAEC2Role
IAM Rolle, die Berechtigungen für den Zugriff auf den S3-Bucket und für die Übernahme derNAAExecRole
IAM Rollen in den anderen Konten in der Organisation gewährt.Die EC2 Instanz übernimmt die
NAAExecRole
IAM Rolle im Verwaltungskonto der Organisation und generiert eine Liste der Konten in der Organisation.Die EC2 Instanz übernimmt die
NAAExecRole
IAM Rolle in den Mitgliedskonten der Organisation (im Architekturdiagramm als Workload-Konten bezeichnet) und führt für jedes Konto eine Sicherheitsbewertung durch. Die Ergebnisse werden als JSON Dateien auf der EC2 Instanz gespeichert.Die EC2 Instanz verwendet ein Python-Skript, um die JSON Dateien zu verarbeiten, die Datenfelder zu extrahieren und einen CSV Bericht zu erstellen.
Die EC2 Instanz lädt die CSV Datei in den S3-Bucket hoch.
Eine EventBridge Amazon-Regel erkennt den Datei-Upload und verwendet ein SNS Amazon-Thema, um eine E-Mail zu senden, die den Benutzer darüber informiert, dass der Bericht abgeschlossen ist.
Der Benutzer lädt die CSV Datei aus dem S3-Bucket herunter. Der Benutzer importiert die Ergebnisse in die Excel-Vorlage und überprüft die Ergebnisse.
Option 2: Zugriff auf Ergebnisse im AWS Security Hub
Das Diagramm zeigt den folgenden Prozess:
Wenn Sie die Lösung manuell ausführen, authentifiziert sich der Benutzer mit dem Sitzungsmanager bei der EC2 Instanz und führt dann das Skript naa-script.sh aus. Dieses Shell-Skript führt die Schritte 2—7 aus.
Wenn Sie die Lösung automatisch ausführen, wird das Skript naa-script.sh automatisch nach dem Zeitplan gestartet, den Sie im Cron-Ausdruck definiert haben. Dieses Shell-Skript führt die Schritte 2—7 aus. Weitere Informationen finden Sie unter Automatisierung und Skalierung am Ende dieses Abschnitts.
Die EC2 Instanz lädt die neueste Datei naa-exception.csv aus dem S3-Bucket herunter. Diese Datei wird später im Prozess verwendet, wenn das Python-Skript die Ausnahmen verarbeitet.
Die EC2 Instanz übernimmt die
NAAEC2Role
IAM Rolle, die Berechtigungen für den Zugriff auf den S3-Bucket und für die Übernahme derNAAExecRole
IAM Rollen in den anderen Konten in der Organisation gewährt.Die EC2 Instanz übernimmt die
NAAExecRole
IAM Rolle im Verwaltungskonto der Organisation und generiert eine Liste der Konten in der Organisation.Die EC2 Instanz übernimmt die
NAAExecRole
IAM Rolle in den Mitgliedskonten der Organisation (im Architekturdiagramm als Workload-Konten bezeichnet) und führt für jedes Konto eine Sicherheitsbewertung durch. Die Ergebnisse werden als JSON Dateien auf der EC2 Instanz gespeichert.Die EC2 Instanz verwendet ein Python-Skript, um die JSON Dateien zu verarbeiten und die Datenfelder für den Import in Security Hub zu extrahieren.
Die EC2 Instanz importiert die Ergebnisse von Network Access Analyzer in Security Hub.
Eine EventBridge Amazon-Regel erkennt den Import und verwendet ein SNS Amazon-Thema, um eine E-Mail zu senden, die den Benutzer darüber informiert, dass der Vorgang abgeschlossen ist.
Der Benutzer sieht sich die Ergebnisse im Security Hub an.
Automatisierung und Skalierung
Sie können diese Lösung so planen, dass das Skript naa-script.sh automatisch nach einem benutzerdefinierten Zeitplan ausgeführt wird. Um einen benutzerdefinierten Zeitplan festzulegen, ändern Sie in der CloudFormation Vorlage naa-resources.yaml den Parameter. CronScheduleExpression
Der Standardwert von 0 0 * * 0
führt die Lösung beispielsweise jeden Sonntag um Mitternacht aus. Ein Wert von 0 0 * 1-12 0
würde die Lösung jeden ersten Sonntag im Monat um Mitternacht ausführen. Weitere Informationen zur Verwendung von Cron-Ausdrücken finden Sie unter Cron- und Rate-Ausdrücke in der Systems Manager Manager-Dokumentation.
Wenn Sie den Zeitplan nach der Bereitstellung des NAA-Resources
Stacks anpassen möchten, können Sie den Cron-Zeitplan unter manuell bearbeiten. /etc/cron.d/naa-schedule
Tools
AWSDienste
Amazon Elastic Compute Cloud (AmazonEC2) bietet skalierbare Rechenkapazität in der AWS Cloud. Sie können so viele virtuelle Server wie nötig nutzen und sie schnell nach oben oder unten skalieren.
Amazon EventBridge ist ein serverloser Event-Bus-Service, mit dem Sie Ihre Anwendungen mit Echtzeitdaten aus einer Vielzahl von Quellen verbinden können. Zum Beispiel AWS Lambda-Funktionen, HTTP Aufruf-Endpunkte, die API Ziele verwenden, oder Event-Busse in anderen Konten. AWS
AWSMit Identity and Access Management (IAM) können Sie den Zugriff auf Ihre AWS Ressourcen sicher verwalten, indem Sie kontrollieren, wer authentifiziert und autorisiert ist, diese zu verwenden.
AWSOrganizations ist ein Kontoverwaltungsdienst, mit dem Sie mehrere AWS Konten zu einer Organisation zusammenfassen können, die Sie erstellen und zentral verwalten.
AWSSecurity Hub bietet einen umfassenden Überblick über Ihren Sicherheitsstatus inAWS. Es hilft Ihnen auch dabei, Ihre AWS Umgebung anhand von Industriestandards und Best Practices im Bereich Sicherheit zu überprüfen.
Amazon Simple Notification Service (AmazonSNS) unterstützt Sie bei der Koordination und Verwaltung des Nachrichtenaustauschs zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen.
Amazon Simple Storage Service (Amazon S3) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.
AWSSystems Manager unterstützt Sie bei der Verwaltung Ihrer Anwendungen und Infrastruktur, die in der AWS Cloud ausgeführt werden. Es vereinfacht das Anwendungs- und Ressourcenmanagement, verkürzt die Zeit für die Erkennung und Lösung betrieblicher Probleme und hilft Ihnen, Ihre AWS Ressourcen sicher und in großem Umfang zu verwalten. Dieses Muster verwendet Session Manager, eine Funktion von Systems Manager.
Code-Repository
Der Code für dieses Muster ist im GitHub Network Access Analyzer Multi-Account Analysis-Repository
naa-script.sh — Dieses Bash-Skript wird verwendet, um eine Network Access Analyzer-Analyse mehrerer AWS Konten parallel zu starten. Wie in der CloudFormation Vorlage naa-resources.yaml definiert, wird dieses Skript automatisch im Ordner auf der Instanz bereitgestellt.
/usr/local/naa
EC2naa-resources.yaml — Sie verwenden diese CloudFormation Vorlage, um einen Stack im Sicherheitskonto der Organisation zu erstellen. Diese Vorlage stellt alle erforderlichen Ressourcen für dieses Konto bereit, um die Lösung zu unterstützen. Dieser Stack muss vor der Vorlage naa-execrole.yaml bereitgestellt werden.
Hinweis: Wenn dieser Stack gelöscht und erneut bereitgestellt wird, müssen Sie den
NAAExecRole
Stacksatz neu erstellen, um die kontenübergreifenden Abhängigkeiten zwischen den Rollen wiederherzustellen. IAMnaa-execrole.yaml — Sie verwenden diese CloudFormation Vorlage, um ein Stack-Set zu erstellen, das die
NAAExecRole
IAM Rolle in allen Konten der Organisation, einschließlich des Verwaltungskontos, bereitstellt.naa-processfindings.py — Das Skript naa-script.sh ruft dieses Python-Skript automatisch auf, um die Network Access JSON Analyzer-Ausgaben zu verarbeiten, alle zweifelsfrei funktionierenden Ressourcen in der Datei naa-exclusions.csv auszuschließen und dann entweder eine CSV Datei mit den konsolidierten Ergebnissen zu generieren oder die Ergebnisse in Security Hub zu importieren.
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Klonen Sie das Code-Repository. |
| AWS DevOps |
Überprüfen Sie die Vorlagen. |
| AWS DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Stellen Sie Ressourcen im Sicherheitskonto bereit. | Mithilfe der Vorlage naa-resources.yaml erstellen Sie einen CloudFormation Stack, der alle erforderlichen Ressourcen im Sicherheitskonto bereitstellt. Anweisungen finden Sie in der Dokumentation unter Einen Stack erstellen. CloudFormation Beachten Sie bei der Bereitstellung dieser Vorlage Folgendes:
| AWS DevOps |
Stellen Sie die Rolle in den Mitgliedskonten bereit. IAM | Verwenden Sie im Verwaltungskonto für AWS Organizations oder in einem Konto mit delegierten Administratorrechten für die Vorlage naa-execrole.yaml CloudFormation, um ein Stack-Set zu erstellen. CloudFormation Das Stack-Set stellt die Rolle in allen Mitgliedskonten der
| AWS DevOps |
Stellen Sie die IAM Rolle im Verwaltungskonto bereit. | Mithilfe der Vorlage naa-execrole.yaml erstellen Sie einen CloudFormation Stack, der die
| AWS DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Passen Sie das Shell-Skript an. |
| AWS DevOps |
Analysieren Sie die Zielkonten. |
| AWS DevOps |
Option 1 — Rufen Sie die Ergebnisse aus dem S3-Bucket ab. |
| AWS DevOps |
Option 2 — Überprüfen Sie die Ergebnisse in Security Hub. |
| AWS DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Korrigieren Sie die Ergebnisse. | Korrigieren Sie alle Ergebnisse, die Sie korrigieren möchten. Weitere Informationen und bewährte Methoden zur Einrichtung eines Perimeters rund um Ihre AWS Identitäten, Ressourcen und Netzwerke finden Sie unter Building a data perimeter on AWS (Whitepaper). AWS | AWS DevOps |
Schließen Sie Ressourcen mit zweifelsfrei funktionierenden Netzwerkpfaden aus. | Wenn Network Access Analyzer Ergebnisse für Ressourcen generiert, auf die über das Internet zugegriffen werden sollte, können Sie diese Ressourcen zu einer Ausschlussliste hinzufügen. Wenn Network Access Analyzer das nächste Mal ausgeführt wird, wird kein Ergebnis für diese Ressource generiert.
| AWS DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Aktualisieren Sie das Skript naa-script.sh. | Wenn Sie das Skript naa-script.sh auf die neueste Version im Repository aktualisieren möchten, gehen Sie wie folgt vor:
| AWS DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Löschen Sie alle bereitgestellten Ressourcen. | Sie können die bereitgestellten Ressourcen in den Konten belassen. Wenn Sie die Bereitstellung aller Ressourcen aufheben möchten, gehen Sie wie folgt vor:
| AWS DevOps |
Fehlerbehebung
Problem | Lösung |
---|---|
Es konnte keine Verbindung mit der EC2 Instanz mithilfe des Sitzungs-Managers hergestellt werden. | Der SSM Agent muss in der Lage sein, mit dem Systems Manager Manager-Endpunkt zu kommunizieren. Gehen Sie wie folgt vor:
|
Bei der Bereitstellung des Stack-Sets werden Sie von der CloudFormation Konsole dazu aufgefordert. | Dies weist darauf hin, dass der vertrauenswürdige Zugriff zwischen AWS Organizations und nicht aktiviert wurde CloudFormation. Für die Bereitstellung des vom Service verwalteten Stack-Sets ist ein vertrauenswürdiger Zugriff erforderlich. Wählen Sie die Schaltfläche, um den vertrauenswürdigen Zugriff zu aktivieren. Weitere Informationen finden Sie in der CloudFormation Dokumentation unter Vertrauenswürdigen Zugriff aktivieren. |
Zugehörige Ressourcen
Zusätzliche Informationen
Beispiel für eine Konsolenausgabe
Das folgende Beispiel zeigt die Ausgabe der Generierung der Liste der Zielkonten und der Analyse der Zielkonten.
[root@ip-10-10-43-82 naa]# ./naa-script.sh download: s3://naa-<account ID>-us-east-1/naa-exclusions.csv to ./naa-exclusions.csv AWS Management Account: <Management account ID> AWS Accounts being processed... <Account ID 1> <Account ID 2> <Account ID 3> Assessing AWS Account: <Account ID 1>, using Role: NAAExecRole Assessing AWS Account: <Account ID 2>, using Role: NAAExecRole Assessing AWS Account: <Account ID 3>, using Role: NAAExecRole Processing account: <Account ID 1> / Region: us-east-1 Account: <Account ID 1> / Region: us-east-1 – Detecting Network Analyzer scope... Processing account: <Account ID 2> / Region: us-east-1 Account: <Account ID 2> / Region: us-east-1 – Detecting Network Analyzer scope... Processing account: <Account ID 3> / Region: us-east-1 Account: <Account ID 3> / Region: us-east-1 – Detecting Network Analyzer scope... Account: <Account ID 1> / Region: us-east-1 – Network Access Analyzer scope detected. Account: <Account ID 1> / Region: us-east-1 – Continuing analyses with Scope ID. Accounts with many resources may take up to one hour Account: <Account ID 2> / Region: us-east-1 – Network Access Analyzer scope detected. Account: <Account ID 2> / Region: us-east-1 – Continuing analyses with Scope ID. Accounts with many resources may take up to one hour Account: <Account ID 3> / Region: us-east-1 – Network Access Analyzer scope detected. Account: <Account ID 3> / Region: us-east-1 – Continuing analyses with Scope ID. Accounts with many resources may take up to one hour
CSVBeispiele für Berichte
Die folgenden Bilder sind Beispiele für die CSV Ausgabe.