Erstellen Sie einen Bericht mit den Ergebnissen von Network Access Analyzer für eingehende Internetzugriffe in mehreren Konten AWS - 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.

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 Multi-Account-Analyse

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:

  1. Identifizieren Sie AWS Ressourcen, auf die über Internet-Gateways über das Internet zugegriffen werden kann.

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

Architekturdiagramm für den Zugriff auf den Network Access Analyzer-Ergebnisbericht in einem Amazon S3 S3-Bucket

Das Diagramm zeigt den folgenden Prozess:

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

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

  3. Die EC2 Instanz übernimmt die NAAEC2Role IAM Rolle, die Berechtigungen für den Zugriff auf den S3-Bucket und für die Übernahme der NAAExecRole IAM Rollen in den anderen Konten in der Organisation gewährt.

  4. Die EC2 Instanz übernimmt die NAAExecRole IAM Rolle im Verwaltungskonto der Organisation und generiert eine Liste der Konten in der Organisation.

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

  6. Die EC2 Instanz verwendet ein Python-Skript, um die JSON Dateien zu verarbeiten, die Datenfelder zu extrahieren und einen CSV Bericht zu erstellen.

  7. Die EC2 Instanz lädt die CSV Datei in den S3-Bucket hoch.

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

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

Architekturdiagramm für den Zugriff auf die Ergebnisse des Network Access Analyzer über AWS Security Hub

Das Diagramm zeigt den folgenden Prozess:

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

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

  3. Die EC2 Instanz übernimmt die NAAEC2Role IAM Rolle, die Berechtigungen für den Zugriff auf den S3-Bucket und für die Übernahme der NAAExecRole IAM Rollen in den anderen Konten in der Organisation gewährt.

  4. Die EC2 Instanz übernimmt die NAAExecRole IAM Rolle im Verwaltungskonto der Organisation und generiert eine Liste der Konten in der Organisation.

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

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

  7. Die EC2 Instanz importiert die Ergebnisse von Network Access Analyzer in Security Hub.

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

  9. 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 verfügbar. Das Code-Repository enthält die folgenden Dateien:

  • 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 EC2

  • naa-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. IAM

  • naa-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

AufgabeBeschreibungErforderliche Fähigkeiten

Klonen Sie das Code-Repository.

  1. Ändern Sie in einer Befehlszeilenschnittstelle Ihr Arbeitsverzeichnis in das Verzeichnis, in dem Sie die Beispieldateien speichern möchten.

  2. Geben Sie den folgenden Befehl ein.

    git clone https://github.com/aws-samples/network-access-analyzer-multi-account-analysis.git

AWS DevOps

Überprüfen Sie die Vorlagen.

  1. Öffnen Sie im geklonten Repository die Dateien naa-resources.yaml und naa-execrole.yaml.

  2. Überprüfen Sie die mit diesen Vorlagen erstellten Ressourcen und passen Sie die Vorlagen nach Bedarf an Ihre Umgebung an. Weitere Informationen finden Sie in der CloudFormation Dokumentation unter Arbeiten mit Vorlagen.

  3. Speichern und schließen Sie die Dateien naa-resources.yaml und naa-execrole.yaml.

AWS DevOps
AufgabeBeschreibungErforderliche 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:

  1. Wählen Sie auf der Seite „Vorlage angeben“ die Option Vorlage ist bereit aus und laden Sie dann die Datei naa-resources.yaml hoch.

  2. Geben Sie auf der Seite „Stack-Details angeben“ im Feld Stack-Name Folgendes ein. NAA-Resources

  3. Geben Sie im Abschnitt Parameter Folgendes ein:

    • VPCId— Wählen Sie VPC im Konto eine aus.

    • SubnetId— Wählen Sie ein privates Subnetz mit Internetzugang aus.

      Hinweis: Wenn Sie ein öffentliches Subnetz auswählen, wird der EC2 Instance möglicherweise keine öffentliche IP-Adresse zugewiesen, da die CloudFormation Vorlage standardmäßig keine Elastic IP-Adresse bereitstellt und anhängt.

    • InstanceType— Behalten Sie den Standard-Instance-Typ bei.

    • InstanceImageId— Behält die Standardeinstellung bei.

    • KeyPairName— Wenn Sie SSH für den Zugriff verwenden, geben Sie den Namen eines vorhandenen key pair an.

    • PermittedSSHInbound— Wenn Sie SSH für den Zugriff verwenden, geben Sie einen zulässigen CIDR Block an. Wenn Sie nicht verwendenSSH, behalten Sie den Standardwert von bei127.0.0.1.

    • BucketName— Der Standardwert istnaa-<accountID>-<region>. Sie können dies nach Bedarf ändern. Wenn Sie einen benutzerdefinierten Wert angeben, werden die Konto-ID und die Region automatisch an den angegebenen Wert angehängt.

    • EmailAddress— Geben Sie eine E-Mail-Adresse für eine SNS Amazon-Benachrichtigung an, wenn die Analyse abgeschlossen ist.

      Hinweis: Die SNS Amazon-Abonnementkonfiguration muss vor Abschluss der Analyse bestätigt werden, andernfalls wird keine Benachrichtigung gesendet.

    • NAAEC2Role— Behalten Sie die Standardeinstellung bei, es sei denn, Ihre Benennungskonventionen erfordern einen anderen Namen für diese IAM Rolle.

    • NAAExecRole— Behalten Sie die Standardeinstellung bei, es sei denn, bei der Bereitstellung von naa-execrole.yaml wird ein anderer Name verwendet

    • Parallelism— Geben Sie die Anzahl der parallel Prüfungen an, die durchgeführt werden sollen.

    • Regions— Geben Sie die AWS Regionen an, die Sie analysieren möchten.

    • ScopeNameValue— Geben Sie das Tag an, das dem Bereich zugewiesen wird. Dieses Tag wird verwendet, um den Netzwerkzugriffsbereich zu bestimmen.

    • ExclusionFile— Geben Sie den Namen der Ausschlussdatei an. Einträge in dieser Datei werden von den Ergebnissen ausgeschlossen.

    • FindingsToCSV— Geben Sie an, ob die Ergebnisse ausgegeben werden sollenCSV. Zulässige Werte sind true undfalse.

    • FindingsToSecurityHub— Geben Sie an, ob Ergebnisse in Security Hub importiert werden sollen. Zulässige Werte sind true undfalse.

    • EmailNotificationsForSecurityHub— Geben Sie an, ob beim Import von Ergebnissen in Security Hub E-Mail-Benachrichtigungen generiert werden sollen. Zulässige Werte sind true undfalse.

    • ScheduledAnalysis— Wenn die Lösung automatisch nach einem Zeitplan ausgeführt werden solltrue, geben Sie den Zeitplan in den CronScheduleExpression Parameter ein und passen Sie ihn an. Wenn Sie die Lösung nicht automatisch ausführen möchten, geben Sie einfalse.

    • CronScheduleExpression— Wenn Sie die Lösung automatisch ausführen, geben Sie einen Cron-Ausdruck ein, um den Zeitplan zu definieren. Weitere Informationen finden Sie unter Automatisierung und Skalierung im Abschnitt Architektur dieses Musters.

  1. Wählen Sie auf der Seite Überprüfen die Option Die folgenden Ressourcen erfordern Fähigkeiten: [:: AWSIAM: :Rolle] und wählen Sie dann Create Stack aus.

  2. Nachdem der Stack erfolgreich erstellt wurde, kopieren Sie in der CloudFormation Konsole auf der Registerkarte Outputs den NAAEC2Role Amazon-Ressourcennamen (ARN). Sie verwenden dies ARN später, wenn Sie die Datei naa-execrole.yaml bereitstellen.

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 NAAExecRole IAM Organisation bereit. Anweisungen finden Sie in der Dokumentation unter Erstellen eines Stack-Sets mit vom Service verwalteten CloudFormation Berechtigungen. Beachten Sie bei der Bereitstellung dieser Vorlage Folgendes:

  1. Wählen Sie unter Vorlage vorbereiten die Option Vorlage ist bereit aus und laden Sie dann die Datei naa-execrole.yaml hoch.

  2. Geben Sie auf der Seite „ StackSet Details angeben“ dem Stack-Set einen Namen. NAA-ExecRole

  3. Geben Sie im Abschnitt Parameter Folgendes ein:

    • AuthorizedARN— Geben Sie den ein NAAEC2RoleARN, den Sie bei der Erstellung des NAA-Resources Stacks kopiert haben.

    • NAARoleName— Behält den Standardwert von bei, NAAExecRole sofern bei der Bereitstellung der Datei naa-resources.yaml kein anderer Name verwendet wurde.

  4. Wählen Sie unter Permissions (Berechtigungen) die Option Service-managed permissions (Serviceverwaltete Berechtigungen) aus.

  5. Wählen Sie auf der Seite Bereitstellungsoptionen festlegen unter Bereitstellungsziele die Option Für die Organisation bereitstellen aus und akzeptieren Sie alle Standardeinstellungen.

    Hinweis: Wenn Sie möchten, dass die Stacks für alle Mitgliedskonten gleichzeitig bereitgestellt werden, legen Sie „Maximale Anzahl gleichzeitiger Konten“ und „Fehlertoleranz“ auf einen hohen Wert fest, z. B. 100.

  6. Wählen Sie unter Bereitstellungsregionen die Region aus, in der die EC2 Instanz für Network Access Analyzer bereitgestellt wird. Da es sich bei den IAM Ressourcen um globale und nicht um regionale Ressourcen handelt, wird die IAM Rolle dadurch in allen aktiven Regionen bereitgestellt.

  7. Wählen Sie auf der Seite Überprüfen die Option Ich bestätige, dass AWS CloudFormation möglicherweise IAM Ressourcen mit benutzerdefinierten Namen erstellt werden, und wählen Sie dann Erstellen StackSet aus.

  8. Überwachen Sie die Registerkarte Stack-Instances (für den Status einzelner Konten) und die Registerkarte Operationen (für den Gesamtstatus), um festzustellen, wann die Bereitstellung abgeschlossen ist.

AWS DevOps

Stellen Sie die IAM Rolle im Verwaltungskonto bereit.

Mithilfe der Vorlage naa-execrole.yaml erstellen Sie einen CloudFormation Stack, der die NAAExecRole IAM Rolle im Verwaltungskonto der Organisation bereitstellt. Das Stack-Set, das Sie zuvor erstellt haben, stellt die Rolle nicht im Verwaltungskonto bereit. IAM Anweisungen finden Sie in der CloudFormation Dokumentation unter Einen Stack erstellen. Beachten Sie bei der Bereitstellung dieser Vorlage Folgendes:

  1. Wählen Sie auf der Seite „Vorlage angeben“ die Option Vorlage ist bereit aus und laden Sie dann die Datei naa-execrole.yaml hoch.

  2. Geben Sie auf der Seite „Stack-Details angeben“ im Feld Stackname Folgendes ein. NAA-ExecRole

  3. Geben Sie im Abschnitt Parameter Folgendes ein:

    • AuthorizedARN— Geben Sie den ein NAAEC2RoleARN, den Sie bei der Erstellung des NAA-Resources Stacks kopiert haben.

    • NAARoleName— Behält den Standardwert von bei, NAAExecRole sofern bei der Bereitstellung der Datei naa-resources.yaml kein anderer Name verwendet wurde.

  4. Wählen Sie auf der Seite Überprüfen die Option Die folgenden Ressourcen erfordern Fähigkeiten: [: AWSIAM: :Rolle] aus, und wählen Sie dann Create Stack aus.

AWS DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Passen Sie das Shell-Skript an.

  1. Melden Sie sich mit dem Sicherheitskonto in der Organisation an.

  2. Stellen Sie mithilfe von Session Manager eine Verbindung zu der EC2 Instanz für Network Access Analyzer her, die Sie zuvor bereitgestellt haben. Anweisungen finden Sie unter Connect zu Ihrer Linux-Instance mithilfe von Session Manager. Wenn Sie keine Verbindung herstellen können, lesen Sie den Abschnitt zur Fehlerbehebung in diesem Muster.

  3. Geben Sie die folgenden Befehle ein, um die Datei naa-script.sh zur Bearbeitung zu öffnen.

    sudo -i cd /usr/local/naa vi naa-script.sh
  4. Überprüfen und ändern Sie die einstellbaren Parameter und Variablen in diesem Skript nach Bedarf für Ihre Umgebung. Weitere Informationen zu Anpassungsoptionen finden Sie in den Kommentaren am Anfang des Skripts.

    Anstatt beispielsweise eine Liste aller Mitgliedskonten in der Organisation aus dem Verwaltungskonto abzurufen, können Sie das Skript ändern, um das AWS Konto IDs oder die AWS Regionen anzugeben, die Sie scannen möchten, oder Sie können auf eine externe Datei verweisen, die diese Parameter enthält.

  5. Speichern und schließen Sie die Datei naa-script.sh.

AWS DevOps

Analysieren Sie die Zielkonten.

  1. Geben Sie die folgenden Befehle ein. Dadurch wird das Skript naa-script.sh ausgeführt.

    sudo -i cd /usr/local/naa screen ./naa-script.sh

    Beachten Sie Folgendes:

    • Der screen Befehl ermöglicht die weitere Ausführung des Skripts für den Fall, dass die Verbindung unterbrochen wird oder Sie den Konsolenzugriff verlieren.

    • Nach dem Start des Scans können Sie das Trennen des Bildschirms erzwingen, indem Sie Strg+A D drücken. Der Bildschirm wird getrennt, und Sie können die Instanzverbindung schließen, während die Analyse fortgesetzt wird.

    • Um eine getrennte Sitzung wieder aufzunehmen, stellen Sie eine Verbindung zur Instanz her, geben Sie ein und geben Sie sudo -i dann die Eingabetaste einscreen -r.

  2. Überwachen Sie die Ausgabe auf Fehler, um sicherzustellen, dass das Skript ordnungsgemäß funktioniert. Eine Beispielausgabe finden Sie im Abschnitt Zusätzliche Informationen dieses Musters.

  3. Warten Sie, bis die Analyse abgeschlossen ist. Wenn Sie E-Mail-Benachrichtigungen konfiguriert haben, erhalten Sie eine E-Mail, wenn die Ergebnisse in den S3-Bucket hochgeladen oder in Security Hub importiert wurden.

AWS DevOps

Option 1 — Rufen Sie die Ergebnisse aus dem S3-Bucket ab.

  1. Laden Sie die CSV Datei aus dem naa-<accountID>-<region> Bucket herunter. Anweisungen finden Sie in der Amazon S3 S3-Dokumentation unter Objekt herunterladen.

  2. Löschen Sie die CSV Datei aus dem S3-Bucket. Dies ist eine bewährte Methode zur Kostenoptimierung. Anweisungen finden Sie in der Amazon S3 S3-Dokumentation unter Objekte löschen.

AWS DevOps

Option 2 — Überprüfen Sie die Ergebnisse in Security Hub.

  1. Öffnen Sie die Security Hub Hub-Konsole unter https://console.aws.amazon.com/securityhub/.

  2. Wählen Sie im Navigationsbereich Findings aus.

  3. Überprüfen Sie die Ergebnisse von Network Access Analyzer. Anweisungen finden Sie in der Security Hub Hub-Dokumentation unter Ergebnislisten und Details anzeigen.

    Hinweis: Sie können nach Ergebnissen suchen, indem Sie einen Titel, der mit einem Filter beginnt, hinzufügen und eingebenNetwork Access Analyzer.

AWS DevOps
AufgabeBeschreibungErforderliche 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.

  1. Navigieren Sie zu dem Skript naa-script.sh /usr/local/naa, und öffnen Sie es. Notieren Sie sich den Wert der S3_EXCLUSION_FILE Variablen.

  2. Wenn der Wert der S3_EXCLUSION_FILE Variablen isttrue, laden Sie die Datei naa-exclusions.csv aus dem naa-<accountID>-<region> Bucket herunter. Anweisungen finden Sie in der Amazon S3 S3-Dokumentation unter Objekt herunterladen.

    Wenn der Wert der S3_EXCLUSION_FILE Variablen lautetfalse, navigieren Sie zu der Datei naa-exclusions.csv /usr/local/naa und öffnen Sie sie.

    Hinweis: Wenn der Wert der S3_EXCLUSION_FILE Variablen lautetfalse, verwendet das Skript eine lokale Version der Ausschlussdatei. Wenn Sie den Wert später auf änderntrue, überschreibt das Skript die lokale Version mit der Datei im S3-Bucket.

  3. Geben Sie in der Datei naa-exclusions.csv die Ressourcen ein, die Sie ausschließen möchten. Geben Sie in jeder Zeile eine Ressource ein und verwenden Sie das folgende Format.

    <resource_id>,<secgroup_id>,<sgrule_cidr>,<sgrule_portrange>,<sgrule_protocol>

    Im Folgenden finden Sie ein Beispiel für eine Ressource.

    eni-1111aaaaa2222bbbb,sg-3333ccccc4444dddd,0.0.0.0/0,80 to 80,tcp

  4. Speichern und schließen Sie die Datei naa-exclusions.csv.

  5. Wenn Sie die Datei naa-exclusions.csv aus dem S3-Bucket heruntergeladen haben, laden Sie die neue Version hoch. Anweisungen finden Sie in der Amazon S3 S3-Dokumentation unter Hochladen von Objekten.

AWS DevOps
AufgabeBeschreibungErforderliche 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:

  1. Stellen Sie mithilfe von Session Manager eine Connect mit der EC2 Instanz her. Anweisungen finden Sie unter Connect zu Ihrer Linux-Instance mithilfe von Session Manager.

  2. Geben Sie den folgenden Befehl ein.

    sudo -i
  3. Navigieren Sie zum Skriptverzeichnis naa-script.sh.

    cd /usr/local/naa
  4. Geben Sie den folgenden Befehl ein, um das lokale Skript zu speichern, sodass Sie benutzerdefinierte Änderungen in der neuesten Version zusammenführen können.

    git stash
  5. Geben Sie den folgenden Befehl ein, um die neueste Version des Skripts abzurufen.

    git pull
  6. Geben Sie den folgenden Befehl ein, um das benutzerdefinierte Skript mit der neuesten Version des Skripts zusammenzuführen.

    git stash pop
AWS DevOps
AufgabeBeschreibungErforderliche 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:

  1. Löschen Sie den NAA-ExecRole Stack, der im Verwaltungskonto bereitgestellt wurde. Anweisungen finden Sie in der CloudFormation Dokumentation unter Löschen eines Stacks.

  2. Löschen Sie das NAA-ExecRole Stack-Set, das im Verwaltungskonto der Organisation oder im delegierten Administratorkonto bereitgestellt wurde. Anweisungen finden Sie in der Dokumentation unter Löschen eines Stack-Sets. CloudFormation

  3. Löschen Sie alle Objekte im naa-<accountID>-<region> S3-Bucket. Anweisungen finden Sie in der Amazon S3 S3-Dokumentation unter Objekte löschen.

  4. Löschen Sie den im Sicherheitskonto bereitgestellten NAA-Resources Stack. Anweisungen finden Sie in der CloudFormation Dokumentation unter Löschen eines Stacks.

AWS DevOps

Fehlerbehebung

ProblemLö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:

  1. Stellen Sie sicher, dass das Subnetz, in dem die EC2 Instanz bereitgestellt wird, über Internetzugang verfügt.

  2. Starten Sie die EC2-Instance neu.

Bei der Bereitstellung des Stack-Sets werden Sie von der CloudFormation Konsole dazu aufgefordert. Enable trusted access with AWS Organizations to use service-managed permissions

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.

Beispiel 1 des mit dieser Lösung generierten CSV Berichts.

Beispiel 2 des mit dieser Lösung generierten CSV Berichts.