Entfernen Sie EC2 Amazon-Einträge AWS Managed Microsoft AD mithilfe AWS-Konten von AWS Lambda Automatisierung - 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.

Entfernen Sie EC2 Amazon-Einträge AWS Managed Microsoft AD mithilfe AWS-Konten von AWS Lambda Automatisierung

Erstellt von Dr. Rahul Sharad Gaikwad () und Tamilselvan P () AWS AWS

Umgebung: PoC oder Pilotprojekt

Technologien: DevOps; Infrastruktur; Management und Unternehmensführung

Arbeitslast: Alle anderen Workloads

AWSDienste: AWS Directory Service; Amazon; AmazonEC2; AWS Lambda EventBridge; AWS Systems Manager; AWS Auto Scaling

Übersicht

Active Directory (AD) ist ein Microsoft-Skripttool, das Domäneninformationen und Benutzerinteraktionen mit Netzwerkdiensten verwaltet. Es wird häufig von Managed Services Providern (MSPs) verwendet, um die Anmeldeinformationen und Zugriffsberechtigungen von Mitarbeitern zu verwalten. Da AD-Angreifer mit inaktiven Konten versuchen können, sich in ein Unternehmen zu hacken, ist es wichtig, inaktive Konten zu finden und sie im Rahmen eines routinemäßigen Wartungsplans zu deaktivieren. Mit AWS Directory Service for Microsoft Active Directory können Sie Microsoft Active Directory als verwalteten Dienst ausführen. Dieses Muster kann Ihnen helfen, die AWS Lambda Automatisierung so zu konfigurieren, dass inaktive Konten schnell gefunden und entfernt werden.

Wenn die folgenden Szenarien auf Ihr Unternehmen zutreffen, kann Ihnen dieses Muster helfen:

  • Zentralisierte AD-Verwaltung — Wenn Ihr Unternehmen mehrere hat AWS-Konten, von denen jedes über eine eigene AD-Bereitstellung verfügt, kann es schwierig sein, Benutzerkonten und Zugriffsberechtigungen für alle Konten einheitlich zu verwalten. Mit einer kontenübergreifenden AD-Bereinigungslösung können Sie inaktive Konten aus allen AD-Instanzen zentral deaktivieren oder entfernen.

  • AD-Restrukturierung oder -Migration — Wenn Ihr Unternehmen plant, seine AD-Bereitstellung umzustrukturieren oder zu migrieren, kann Ihnen eine kontenübergreifende AD-Bereinigungslösung dabei helfen, die Umgebung vorzubereiten. Die Lösung kann Ihnen helfen, unnötige oder inaktive Konten zu entfernen, den Migrationsprozess zu vereinfachen und potenzielle Konflikte oder Probleme zu reduzieren.

Wenn Sie dieses Muster verwenden, können Sie die folgenden Vorteile nutzen:

  • Verbessern Sie die Datenbank- und Serverleistung und beheben Sie Sicherheitslücken, die auf inaktive Konten zurückzuführen sind.

  • Wenn Ihr AD-Server in der Cloud gehostet wird, kann das Entfernen inaktiver Konten auch die Speicherkosten senken und gleichzeitig die Leistung verbessern. Ihre monatlichen Rechnungen könnten sinken, da sowohl die Bandbreitenkosten als auch die Rechenressourcen sinken können.

  • Halten Sie potenzielle Angreifer mit einem sauberen Active Directory in Schach.

Voraussetzungen und Einschränkungen

Voraussetzungen

Einschränkungen

  • Das Erstellen einer Ressource in einem Kinderkonto ist mit Terraform nicht automatisiert. Sie müssen die folgenden Ressourcen manuell mithilfe von erstellen: AWS Management Console

    • EventBridge Amazon-Regel zum Senden der EC2 Kündigungsereignisse von Amazon an das übergeordnete Konto

    • Erstellung einer EC2 kontoübergreifenden Amazon-Rolle im Kinderkonto mit Vertrauensrichtlinie

    • VPCPeering- oder Transit Gateway Gateway-Verbindung

  • Einige AWS-Services sind nicht in allen AWS-Regionen verfügbar. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie AWS-Services unter Nach Regionen. Informationen zu bestimmten Endpunkten finden Sie unter Dienstendpunkte und Kontingente. Wählen Sie dort den Link für den Dienst aus.

Produktversionen

Architektur

Das folgende Diagramm zeigt die High-Level-Architektur der Lösung.

Prozess zur Verwendung der Lambda-Automatisierung zum Entfernen von EC2 Einträgen aus mehreren AWS Konten.

Das Architekturdiagramm veranschaulicht den folgenden Prozess:

  1. Bei Kinderkonten erfasst die EventBridge Regel alle EC2 Kündigungsereignisse von Amazon. Die Regel sendet die Ereignisse, EventBridge die im übergeordneten Konto vorhanden sind.

  2. EventBridge Sammelt aus dem übergeordneten Konto alle Ereignisse und enthält die Regel zum Auslösen der Lambda-FunktionADcleanup-Lambda.

  3. Das übergeordnete Konto empfängt alle Kündigungsereignisse vom Eltern- oder Kinderkonto und löst die Lambda-Funktion aus.

  4. Die Lambda-Funktion ruft Amazon EC2 Auto Scaling Scaling-Gruppen mithilfe des Python-Boto-Moduls auf und ruft die zufällige Instanz-ID ab. Die Instanz-ID wird verwendet, um Systems Manager Manager-Befehle auszuführen.

  5. Die Lambda-Funktion ruft Amazon EC2 mithilfe des Boto-Moduls erneut auf. Die Lambda-Funktion ruft die privaten IP-Adressen der laufenden Windows-Server ab und speichert die Adressen in einer temporären Variablen. In den Schritten 5.1 und 5.2 werden die laufenden EC2 Windows-Instanzen von untergeordneten Konten erfasst.

  6. Die Lambda-Funktion ruft Systems Manager erneut auf, um die Computerinformationen abzurufen, mit denen eine Verbindung hergestellt ist. AWS Directory Service

  7. Ein AWS Systems Manager Dokument hilft dabei, den PowerShell Befehl auf Amazon EC2 Windows-Servern auszuführen, um die privaten IP-Adressen der Computer abzurufen, die mit AD verbunden sind. (Das Systems Manager Manager-Dokument verwendet die Instanz-ID, die in Schritt 4 abgerufen wurde.)

  8. Der Benutzername und die Kennwörter der AD-Domäne werden im AWS Systems Manager Parameterspeicher gespeichert. AWS Lambda und Systems Manager rufen Parameter Store auf und rufen die Werte für Benutzername und Passwort ab, die für die Verbindung mit AD verwendet werden sollen.

  9. Mithilfe des Systems Manager Manager-Dokuments wird das PowerShell Skript auf dem Amazon EC2 Windows-Server unter Verwendung der zuvor in Schritt 4 abgerufenen Instance-ID ausgeführt.

  10. Amazon EC2 stellt mithilfe AWS Directory Service von PowerShell Befehlen eine Verbindung her und entfernt die Computer, die nicht verwendet oder inaktiv sind.

Tools

AWS Dienstleistungen

  • AWS Directory Servicebietet mehrere Möglichkeiten, Microsoft Active Directory (AD) mit anderen AWS-Services wie Amazon Elastic Compute Cloud (AmazonEC2), Amazon Relational Database Service (AmazonRDS) for SQL Server und Amazon FSx for Windows File Server zu verwenden.

  • AWS Directory Service for Microsoft Active Directoryermöglicht Ihren verzeichnissensitiven Workloads und AWS Ressourcen die Verwendung von Microsoft Active Directory in der. AWS Cloud

  • 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. AWS-Konten

  • AWS Identity 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. Mit können Sie festlegenIAM, wer oder was auf Dienste und Ressourcen zugreifen kann AWS, detaillierte Berechtigungen zentral verwalten und den Zugriff analysieren, um die Berechtigungen übergreifend zu verfeinern. AWS

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

  • AWS Systems Managerhilft Ihnen bei der Verwaltung Ihrer Anwendungen und Infrastruktur, die in der ausgeführt AWS Cloud 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.

  • AWS Systems Manager Dokumente definieren die Aktionen, die Systems Manager auf Ihren verwalteten Instanzen ausführt. Systems Manager umfasst mehr als 100 vorkonfigurierter Dokumente, die Sie verwenden können, indem Sie zur Laufzeit Parameter angeben.

  • AWS Systems Manager Parameter Store ist eine Funktion von AWS Systems Manager und bietet sicheren, hierarchischen Speicher für die Verwaltung von Konfigurationsdaten und Geheimnissen.

Andere Tools

  • HashiCorp Terraform ist ein Open-Source-Tool für Infrastruktur als Code (IaC), mit dem Sie mithilfe von Code Cloud-Infrastruktur und -Ressourcen bereitstellen und verwalten können.

  • PowerShellist ein Automatisierungs- und Konfigurationsverwaltungsprogramm von Microsoft, das unter Windows, Linux und macOS läuft.

  • Python ist eine Allzweck-Computerprogrammiersprache.

Code-Repository

Der Code für dieses Muster ist im Repository GitHub aws-lambda-ad-cleanup-terraform-samples verfügbar.

Bewährte Methoden

  • Automatisch Domains beitreten.Wenn Sie eine Windows-Instanz starten, die Teil einer AWS Directory Service Domäne sein soll, treten Sie der Domäne während der Instanzerstellung bei, anstatt die Instanz später manuell hinzuzufügen. Um einer Domäne automatisch beizutreten, wählen Sie beim Starten einer neuen Instanz das richtige Verzeichnis aus der Dropdownliste zum Domänenbeitrittsverzeichnis aus. Weitere Informationen finden Sie unter Nahtloses Hinzufügen einer Amazon EC2 Windows-Instance zu Ihrem AWS Managed Microsoft AD Active Directory im AWS Directory Service Administratorhandbuch.

  • Löschen Sie ungenutzte Konten.Es ist üblich, in AD Konten zu finden, die noch nie verwendet wurden. Wie deaktivierte oder inaktive Konten, die im System verbleiben, können vernachlässigte, ungenutzte Konten Ihr AD-System verlangsamen oder Ihr Unternehmen anfällig für Datenschutzverletzungen machen.

  • Automatisieren Sie Active Directory-Säuberungen.Um Sicherheitsrisiken zu minimieren und zu verhindern, dass veraltete Konten die AD-Leistung beeinträchtigen, sollten AD-Bereinigungen in regelmäßigen Abständen durchgeführt werden. Sie können die meisten AD-Verwaltungs- und Bereinigungsaufgaben erledigen, indem Sie Skripts schreiben. Zu den Aufgaben gehören beispielsweise das Entfernen deaktivierter und inaktiver Konten, das Löschen leerer und inaktiver Gruppen und das Auffinden abgelaufener Benutzerkonten und Kennwörter.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie eine kontoübergreifende Rolle im Kinderkonto.

Gehen Sie wie folgt vor, um eine kontoübergreifende Rolle in einem Kinderkonto zu erstellen:

  1. Erstellen Sie für jedes Kinderkonto eine Rolle, die ec2crossaccountrole mithilfe der verwalteten Richtlinie benannt AmazonEC2ReadOnlyAccess wird. (Weitere Informationen finden Sie in der IAM Dokumentation unter Erstellen einer Rolle mithilfe benutzerdefinierter Vertrauensrichtlinien.)

  2. Fügen Sie im Abschnitt Benutzerdefinierte Vertrauensrichtlinie den folgenden Code hinzu:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::${Parentaccountid}:role/ADcleanuprole" }, "Action": "sts:AssumeRole" } ] }
DevOps Ingenieur

Erstellen Sie eine Ereignisregel im Kinderkonto.

Gehen Sie wie folgt vor, um für jedes Kinderkonto eine EventBridge Regel zu erstellen:

  1. Melden Sie sich bei dem Kind AWS-Konto an und öffnen Sie dann die EventBridge Amazon-Konsole unter https://console.aws.amazon.com/events/.

  2. Wählen Sie im Navigationsbereich Rules aus.

  3. Wählen Sie Regel erstellen aus.

  4. Geben Sie einen Namen und optional eine Beschreibung für die Regel ein.

  5. Wählen Sie für Event-Bus den AWSStandard-Event-Bus aus.

  6. Wählen Sie als Regeltyp die Option Regel mit einem Ereignismuster aus.

  7. Wählen Sie Weiter.

  8. Fügen Sie für Ereignismuster den folgenden Code ein:

    { "source": ["aws.ec2"], "detail-type": ["EC2 Instance State-change Notification"], "detail": { "state": ["terminated"] } }
  9. Wählen Sie Weiter.

  10. Wählen Sie als Zieltyp die Option Eventbus in einem anderen Konto oder einer anderen Region aus.Geben Sie für Event Bus als Ziel den Amazon-Ressourcennamen für den Eventbus (ARN) für das übergeordnete Konto ein.

  11. Wählen Sie für Ausführungsrolle die Option Neue Rolle für diese spezifische Ressource erstellen aus.

  12. Wählen Sie Weiter, um die Details für die neue Regel zu überprüfen, und klicken Sie dann auf Erstellen.

Weitere Informationen finden Sie im EventBridge Amazon-Benutzerhandbuch unter Regeln erstellen, die auf Ereignisse EventBridge in Amazon reagieren.

DevOps Ingenieur

Erstellen Sie eine EC2 Instanz und treten Sie AD bei.

Gehen Sie wie folgt vor, um eine EC2 Instanz für Windows zu erstellen:

  1. Verwenden Sie das EC2WindowsUserdata Skript, das im Code-Repository dieses Musters verfügbar ist.

  2. Überarbeiten Sie im Benutzerdatenskript den folgenden Code, um Ihre Directory service addresses Werte aus dem übergeordneten Konto zu verwenden:

    set-DnsClientServerAddress -InterfaceIndex 6 -ServerAddresses $(Directory service addresses)

DevOps Ingenieur
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie einen Projektordner und fügen Sie die Dateien hinzu.

Gehen Sie wie folgt vor, um das Repository zu klonen und einen Projektordner zu erstellen:

  1. Öffnen Sie das GitHub Repository dieses Musters.

  2. Wählen Sie die Code-Schaltfläche, um die Optionen zum Klonen in der Dropdownliste „Klonen“ zu sehen.

  3. Kopieren Sie auf der HTTPSRegisterkarte den unter Clone using the web URL URL bereitgestellten Code.

  4. Erstellen Sie einen Ordner auf Ihrem Computer und benennen Sie ihn mit Ihrem Projektnamen.

  5. Öffnen Sie ein Terminal auf Ihrem lokalen Computer und navigieren Sie zu diesem Ordner.

  6. Verwenden Sie den folgenden Befehl, um das Git-Repository zu klonen.

    git clone <repository-URL>.git

  7. Nachdem das Repository geklont wurde, verwenden Sie den folgenden Befehl, um zum geklonten Verzeichnis zu wechseln.

    cd <directory name>/terraform-aws-lambda-ad-cleanup/multiple-account-cleanup

  8. Öffnen Sie dieses Projekt im geklonten Repository in einer integrierten Entwicklungsumgebung (IDE) Ihrer Wahl.

DevOps Ingenieur

Erstellen Sie die adcleanup.zip Datei.

Führen Sie den folgenden Befehl aus, um die lambda_function.py Datei zu komprimieren:

zip -r adcleanup.zip lambda_function.py

DevOps Ingenieur
AufgabeBeschreibungErforderliche Fähigkeiten

Geben Sie Werte für die Terraform-Variablen an.

Geben Sie für das untergeordnete Konto Werte für die folgenden arn Variablen als Zeichenfolgentypen in der terraform.tfvars Datei an:

  • lambda_env_cross_role_arn

  • child_account_cross_role_arn

DevOps Ingenieur

Initialisieren Sie die Terraform-Konfiguration.

Führen Sie den folgenden Befehl aus, um Ihr Arbeitsverzeichnis zu initialisieren, das die Terraform-Dateien enthält:

terraform init

DevOps Ingenieur

Änderungen in der Vorschau anzeigen.

Sie können eine Vorschau der Änderungen anzeigen, die Terraform an der Infrastruktur vornehmen wird, bevor Ihre Infrastruktur bereitgestellt wird. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob Terraform die Änderungen nach Bedarf vornimmt:

terraform plan —-var-file=examples/terraform.tfvars

DevOps Ingenieur

Führen Sie die vorgeschlagenen Aktionen aus.

Gehen Sie wie folgt vor, um zu überprüfen, ob die Ergebnisse des terraform plan Befehls den Erwartungen entsprechen:

  1. Führen Sie den folgenden Befehl aus: terraform apply

  2. Melden Sie sich bei der an AWS Management Console, und stellen Sie sicher, dass die Ressourcen vorhanden sind.

DevOps Ingenieur
AufgabeBeschreibungErforderliche Fähigkeiten

Führen Sie die Lambda-Funktion aus und testen Sie sie.

Gehen Sie wie folgt vor, um zu überprüfen, ob die Bereitstellung erfolgreich durchgeführt wurde:

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die Lambda-Konsole. Öffnen Sie die Seite Funktionen und wählen Sie den Funktionsnamen aus, der mit ADcleanup-Lambda-* beginnt.

  2. Wählen Sie auf der Funktionsübersichtsseite auf der Registerkarte Code im Abschnitt Codequelle die Option Test aus.

  3. Um das Testereignis zu speichern, geben Sie einen Namen für das Ereignis ein und wählen Sie Speichern. Um das Ereignis zu testen, wählen Sie erneut Testen.

Die Ausführungsergebnisse zeigen die Ausgabe der Funktion.

DevOps Ingenieur

Ergebnisse der EventBridge Regelausführung vom übergeordneten Konto aus anzeigen

Gehen Sie wie folgt vor, um die Ergebnisse der EventBridge Regel anzuzeigen, die auf EC2 Kündigungsereignissen durch Amazon vom übergeordneten Konto aus basiert:

  1. Kündigen Sie EC2 Instances vom übergeordneten Konto aus.

  2. Öffnen Sie die Lambda-Konsole des übergeordneten Kontos. Öffnen Sie die Seite Funktionen und wählen Sie den Funktionsnamen aus, der mit ADcleanup-Lambda-* beginnt.

  3. Wählen Sie die Registerkarte „Überwachen“ und dann „Protokolle anzeigen“. CloudWatch

In der CloudWatch Konsole werden auf der Seite Protokollgruppen die Ergebnisse der Lambda-Funktion angezeigt.

DevOps Ingenieur

Ergebnisse der EventBridge Regelausführung vom untergeordneten Konto aus anzeigen

Gehen Sie wie folgt vor, um die Ergebnisse der EventBridge Regel anzuzeigen, die auf EC2 Kündigungsereignissen von Amazon für das Kinderkonto basiert:

  1. Beenden Sie EC2 Instances über das Kinderkonto.

  2. Öffnen Sie die Lambda-Konsole des übergeordneten Kontos. Öffnen Sie die Seite Funktionen und wählen Sie den Funktionsnamen aus, der mit ADcleanup-Lambda-* beginnt.

  3. Wählen Sie die Registerkarte „Überwachen“ und dann „Protokolle anzeigen“. CloudWatch

In der CloudWatch Konsole werden auf der Seite Protokollgruppen die Ergebnisse der Lambda-Funktion angezeigt.

DevOps Ingenieur
AufgabeBeschreibungErforderliche Fähigkeiten

Säubere die Infrastruktur.

Verwenden Sie den folgenden Befehl, um die von Ihnen erstellte Infrastruktur zu bereinigen:

terraform destroy

Um den destroy Befehl zu bestätigen, geben Sie einyes.

DevOps Ingenieur

Nach der Säuberung überprüfen.

Stellen Sie sicher, dass die Ressourcen erfolgreich entfernt wurden.

DevOps Ingenieur

Fehlerbehebung

ProblemLösung

Verbindungsproblem zwischen AWS Directory Service (Elternkonto) und EC2 Amazon-Instance (Kinderkonto) — Sie können die Computer des Kinderkontos nicht mit AD verbinden, obwohl VPC Peering verfügbar ist.

Fügen Sie Routing hinzu in. VPCs Anweisungen finden Sie in der AWS Directory Service Dokumentation unter Konfigurieren einer VPC Peering-Verbindung zwischen dem Verzeichnisbesitzer und dem Directory-Benutzerkonto.

Zugehörige Ressourcen

AWS Dokumentation

Sonstige Ressourcen