View a markdown version of this page

Sicherheit - Verteilte Lasttests auf AWS

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.

Sicherheit

Wenn Sie Systeme auf der AWS-Infrastruktur aufbauen, werden die Sicherheitsaufgaben zwischen Ihnen und AWS aufgeteilt. Dieses Modell der geteilten Verantwortung reduziert Ihren betrieblichen Aufwand, da AWS die Komponenten einschließlich des Host-Betriebssystems, der Virtualisierungsebene und der physischen Sicherheit der Einrichtungen, in denen die Services betrieben werden, betreibt, verwaltet und kontrolliert. Weitere Informationen zur AWS-Sicherheit finden Sie unter AWS Cloud Security.

IAM-Rollen

Mithilfe von AWS Identity and Access Management (IAM) -Rollen können Kunden Services und Benutzern in der AWS Cloud granulare Zugriffsrichtlinien und Berechtigungen zuweisen. Diese Lösung erstellt IAM-Rollen, die den AWS Lambda-Funktionen der Lösung Zugriff auf die Erstellung regionaler Ressourcen gewähren.

Amazon CloudFront

Diese Lösung stellt eine Web-Benutzeroberfläche bereit, die in einem Amazon S3-Bucket gehostet wird, der von Amazon CloudFront vertrieben wird. Um die Latenz zu reduzieren und die Sicherheit zu verbessern, umfasst diese Lösung eine CloudFront Distribution mit einer Herkunftszugriffsidentität. Dabei handelt es sich um einen CloudFront Benutzer, der öffentlichen Zugriff auf die Bucket-Inhalte der Lösungswebsite gewährt. Standardmäßig unterstützt die CloudFront Distribution Verbindungen bis zu TLS 1.3, wobei die höchste Protokollversion verwendet wird, die der Viewer unterstützt. Weitere Informationen finden Sie im Amazon CloudFront Developer Guide unter Beschränken des Zugriffs auf einen Amazon S3-Ursprung.

CloudFront aktiviert zusätzliche Sicherheitsmaßnahmen, um HTTP-Sicherheitsheader an jede Zuschauerantwort anzuhängen. Weitere Informationen finden Sie unter Hinzufügen oder Entfernen von HTTP-Headern in Antworten. CloudFront

Diese Lösung verwendet das CloudFront Standardzertifikat, für das mindestens das Sicherheitsprotokoll TLS v1.0 unterstützt wird. Um die Verwendung von TLS v1.2 oder TLS v1.3 durchzusetzen, müssen Sie ein benutzerdefiniertes SSL-Zertifikat anstelle des Standardzertifikats verwenden. CloudFront Weitere Informationen finden Sie unter Wie konfiguriere ich meine CloudFront Distribution für die Verwendung eines SSL/TLS Zertifikats.

Amazon API Gateway

Diese Lösung stellt Edge-optimierte Amazon API Gateway-Endpunkte bereit, um RESTful-APIs für die Lasttestfunktion bereitzustellen. Dabei wird der Standard-API-Gateway-Endpunkt anstelle einer benutzerdefinierten Domain verwendet. Für Edge-optimierte APIs, die den Standardendpunkt verwenden, verwendet API Gateway die Sicherheitsrichtlinie. TLS-1-0 Weitere Informationen finden Sie unter Arbeiten mit REST-APIs im Amazon API Gateway Developer Guide.

Diese Lösung verwendet das Standard-API-Gateway-Zertifikat, für das mindestens das Sicherheitsprotokoll TLS v1.0 unterstützt wird. Um die Verwendung von TLS v1.2 oder TLS v1.3 durchzusetzen, müssen Sie eine benutzerdefinierte Domain mit einem benutzerdefinierten SSL-Zertifikat anstelle des standardmäßigen API Gateway-Zertifikats verwenden. Weitere Informationen finden Sie unter Einrichten benutzerdefinierter Domainnamen für REST-APIs.

AWS Fargate-Sicherheitsgruppe

Standardmäßig öffnet diese Lösung die ausgehende Regel der AWS Fargate-Sicherheitsgruppe für die Öffentlichkeit. Wenn Sie verhindern möchten, dass AWS Fargate Datenverkehr überall hin sendet, ändern Sie die Regel für ausgehenden Datenverkehr in ein bestimmtes Classless Inter-Domain Routing (CIDR).

Diese Sicherheitsgruppe enthält auch eine Regel für eingehenden Datenverkehr, die lokalen Datenverkehr auf Port 50.000 zu jeder Quelle zulässt, die derselben Sicherheitsgruppe angehört. Dies wird verwendet, um den Containern zu ermöglichen, miteinander zu kommunizieren.

Amazon VPC

VPC: Eine virtuelle private Cloud (VPC), die auf dem Amazon VPC-Service basiert, bietet Ihnen ein privates, logisch isoliertes Netzwerk in der AWS-Cloud.

Sie können während der Bereitstellung Ihre eigene VPC in den AWS-Parametern angeben. CloudFormation Die VPC wird ausschließlich für die ECS-Aufgaben verwendet, die Last generieren. Die Webkonsole und die API werden in dieser VPC nicht bereitgestellt. Wenn Sie keine vorhandene VPC angeben, erstellt die Lösung eine neue VPC mit der erforderlichen Netzwerkkonfiguration. Wenn Sie sich für die Verwendung einer vorhandenen VPC entscheiden, muss diese die folgenden Anforderungen erfüllen, um Lasttestaufgaben erfolgreich ausführen zu können.

VPC-Anforderungen

Die Mindestanforderungen für eine VPC zur Verwendung mit Distributed Load Testing auf AWS sind unten aufgeführt.

  • Die VPC muss mindestens zwei AZs enthalten

  • Die VPC muss mindestens zwei Subnetze enthalten, jedes in einer separaten AZ

  • VPC-Subnetze können entweder öffentlich oder privat sein, sie müssen jedoch dieselbe Konfiguration verwenden (beide öffentlich ODER beide privat)

  • Die VPC muss Zugriff auf Endpunkte für ECR, CloudWatch Logs, S3 und AWS IoT Core bieten.

  • Die VPC muss Zugriff auf die Dienste gewähren, auf die Lasttests abzielen.

Anmerkung

Wenn Sie keine VPC haben, die diese Kriterien erfüllt, können Sie mit dem VPC-Assistenten schnell eine VPC erstellen. Weitere Informationen finden Sie unter Erstellen einer VPC.

Öffentliche Subnetze können diese Anforderungen erfüllen, indem sie Folgendes beinhalten:

  • Ein an die VPC angeschlossenes Internet-Gateway

  • Eine Route zum Internet-Gateway (0.0.0. 0/0)

Private Subnetze können diese Anforderungen mithilfe von NAT-Gateways oder VPC-Endpunkten erfüllen, wie unten beschrieben.

Option 1: NAT-Gateway

  • Stellen Sie in jeder AZ ein NAT-Gateway mit privaten Subnetzen bereit

  • Konfigurieren Sie Routing-Tabellen für die Weiterleitung von internetgebundenem Datenverkehr (0.0.0. 0/0) über das NAT-Gateway

Option 2: VPC-Endpunkte

Erstellen Sie die folgenden VPC-Endpunkte in Ihrer VPC:

  • Amazon ECR-API-Endpunkt: com.amazonaws.<region>.ecr.api

  • Amazon ECR DKR-Endpunkt: com.amazonaws.<region>.ecr.dkr

  • Amazon CloudWatch Logs-Endpunkt: com.amazonaws.<region>.logs

  • Amazon S3 Gateway-Endpunkt: com.amazonaws.<region>.s3

  • AWS IoT Core-Endpunkt (erforderlich, wenn Sie die Live-Datendiagramme verwenden) com.amazonaws.<region>.iot.data

Andere VPC-Konfigurationen funktionieren möglicherweise auch.

Wichtig

Die Sicherheitsgruppe, die jeder VPC-Endpunktschnittstelle zugeordnet ist, muss eingehenden TCP-Verkehr auf Port 443 von der Sicherheitsgruppe der ECS-Aufgabe zulassen.

Konfiguration der Sicherheitsgruppe

Während der Bereitstellung erstellt die Lösung eine Sicherheitsgruppe innerhalb Ihrer VPC, um den folgenden Datenverkehr mit Aufgaben im ECS-Cluster zuzulassen:

  • Gesamter ausgehender Verkehr

  • Eingehender Datenverkehr auf Port 50000 von anderen Aufgaben derselben Sicherheitsgruppe, um die Koordination zwischen den Aufgaben von Mitarbeiter und Leiter zu erleichtern.

Netzwerk-Stresstest

Sie sind dafür verantwortlich, diese Lösung gemäß der Amazon EC2-Testrichtlinie zu verwenden. Die Richtlinie deckt umfangreiche Netzwerktests ab, die von Amazon EC2-Instances auf anderen Amazon EC2-Instances, AWS-Services oder externen Endpunkten ausgeführt werden. Diese Tests werden manchmal als Stresstests, Belastungstests oder Spieltagstests bezeichnet. Lesen Sie die Richtlinie, um den Unterschied zwischen Netzwerk-Stresstests und DDoS-Simulationen zu verstehen (die auf EC2 verboten sind und separat in der Richtlinie für DDoS-Simulationstests behandelt werden), und beachten Sie, dass AWS bei hohem Verkehrsaufkommen möglicherweise Traffic Engineering oder -Shaping einsetzt. Aktuelle Schwellenwerte und Anleitungen vor der Durchführung umfangreicher Tests finden Sie auf der Seite mit den Richtlinien.

Beschränkung des Zugriffs auf die öffentliche Benutzeroberfläche

Der Ansatz zur Beschränkung des Zugriffs auf die Webkonsole hängt von der ausgewählten Bereitstellungsoption ab.

Standardbereitstellung (CloudFront + S3) — Um den Zugriff auf die öffentlich zugängliche Benutzeroberfläche über die von IAM und Amazon Cognito bereitgestellten Authentifizierungs- und Autorisierungsmechanismen hinaus einzuschränken, können Sie der Distribution eine AWS-WAF-Web-ACL zuordnen. CloudFront Erwägen Sie die Verwendung der AWS WAF Security Automations-Lösung, die eine Reihe vorkonfigurierter AWS-WAF-Regeln bereitstellt, die gängige webbasierte Angriffe filtern. Die Standardvorlage CloudFront + S3 stellt WAF-Ressourcen nicht automatisch bereit.

ALB + ECS Fargate-Bereitstellung — Die Lösung stellt dem ALB automatisch eine AWS-WAF-Web-ACL mit verwalteten Regeln zur Verfügung, die einen grundlegenden Schutz vor gängigen webbasierten Angriffen bieten. Sie können die WAF-Regeln an Ihre spezifischen Sicherheitsanforderungen anpassen, einschließlich Hinzufügen IP-based von Zulassungs- oder Sperrlisten, geografischen Einschränkungen, Ratenbegrenzungen oder zusätzlichen von AWS verwalteten Regelgruppen. Anweisungen zum Ändern der WAF-Konfiguration finden Sie im Abschnitt zur WAF-Integration in den Bereitstellungsanweisungen.

MCP-Serversicherheit (optional)

Wenn Sie die optionale MCP Server-Integration bereitstellen, verwendet die Lösung Amazon Bedrock AgentCore Gateway, um AI-Agenten sicheren Zugriff auf Lasttestdaten zu ermöglichen. AgentCore Gateway validiert Amazon Cognito-Authentifizierungstoken für jede Anfrage, sodass nur autorisierte Benutzer auf den MCP-Server zugreifen können. Alle MCP Server-Interaktionen verwenden dieselben Berechtigungsgrenzen und Zugriffskontrollen wie die Webkonsole.

Der Parameter MCP Server Access Mode steuert, was AI-Agenten tun können. Im ReadOnly Standardmodus stellt der MCP Server nur Lesetools zur Verfügung. Die AWS Identity and Access Management (IAM) -Richtlinie für die Lambda-Funktion des MCP Servers erlaubt nur GET Anfragen an die API der Lösung, sodass Agenten die Testkonfigurationen oder Ergebnisse nicht ändern können. Im ReadWrite Modus können Agenten zusätzlich Testszenarien erstellen, ändern, löschen und starten. Wählen Sie diese Option ReadWrite nur, wenn Ihr Anwendungsfall erfordert, dass Agenten Tests ändern.

Rotation der Anmeldeinformationen — Wenn Sie einen MCP-Client mithilfe einer dienstbasierten Authentifizierung (von Maschine zu Maschine) verbinden, erstellt die Lösung einen Amazon Cognito-App-Client mit einem langlebigen Client-Geheimnis. Sie sind dafür verantwortlich, dieses Geheimnis zu rotieren und es sicher zu speichern. Wir empfehlen, es mindestens alle 90 Tage zu wechseln. Weitere Informationen zur Vorgehensweise finden Sie unter Rotate the MCP Server Client Secret in Use the solution.

ALB + Sicherheit auf der von ECS Fargate gehosteten Webkonsole (optional)

Wenn Sie die Bereitstellungsoption ALB + ECS Fargate wählen, gelten die folgenden Sicherheitsüberlegungen:

  • Kompatibilität mit VPC Block Public Access — Die Option ALB + ECS Fargate wurde für Umgebungen entwickelt, in denen die BPA-Richtlinien (VPC Block Public Access) den Datenverkehr von öffentlichen Distributionen blockieren. CloudFront Das ALB kann als interner Load Balancer in Ihrer VPC eingesetzt werden, auf den nur über Ihr Unternehmensnetzwerk, VPN oder AWS zugegriffen werden kann, sodass keine Anforderungen an die Nutzung des öffentlichen Internets erfüllt werden. PrivateLink

  • ACM-Zertifikatsverwaltung — Die ALB verwendet ein ACM-Zertifikat für die HTTPS-Terminierung. Sie sind dafür verantwortlich, dass das Zertifikat gültig bleibt und vor Ablauf erneuert wird. ACM erneuert automatisch die von ACM verwalteten Zertifikate, importierte Zertifikate müssen jedoch manuell erneuert werden. Weitere Informationen finden Sie unter Verlängerung verwalteter Zertifikate im AWS Certificate Manager-Benutzerhandbuch.

  • AWS-WAF-Schutz — WAF wird standardmäßig mit der ALB + ECS Fargate-Vorlage bereitgestellt. Einzelheiten finden Sie unter Beschränken des Zugriffs auf die öffentliche Benutzeroberfläche.

Headless-Sicherheit (bringen Sie Ihren eigenen Webserver mit) (optional)

Wenn Sie die Option Headless Deployment wählen und die Webkonsole auf Ihrem eigenen Webserver hosten, sind Sie für die folgenden Sicherheitsaspekte verantwortlich:

  • HTTPS-Konfiguration — Wir empfehlen dringend, HTTPS auf Ihrem Webserver zu konfigurieren.

  • Zugriffskontrollen — Sie sind für die Implementierung von Zugriffskontrollen, Firewallregeln und Netzwerksicherheit auf Ihrem Webserver verantwortlich.

  • Erhöhung der Sicherheit — Wenden Sie die Sicherheitsstandards Ihres Unternehmens auf den Webserver an, einschließlich Patches, Überwachung und Erkennung von Eindringlingen.

Third-party Frameworks testen

Distributed Load Testing auf AWS bündelt drei Testframeworks von Drittanbietern — Apache JMeter, Grafana k6 und Locust. Im Rahmen des AWS-Modells der gemeinsamen Verantwortung sind Sie dafür verantwortlich, zu bewerten, ob diese Frameworks und ihre gebündelten Versionen die Sicherheitsanforderungen Ihres Unternehmens erfüllen, bevor Sie Lasttests durchführen. Die Lösung verteilt jedes Framework ohne Änderungen und verifiziert die gebündelten Binärdateien mithilfe von SHA512-Prüfsummen zur Build-Zeit und zur Laufzeit.

Einzelheiten dazu, wann jedes Framework installiert ist und wie es bereitgestellt wird, finden Sie unter Testen der Framework-Bereitstellung. Testen der Framework-Bereitstellung

Apache JMeter

Die mitgelieferte Version von Apache JMeter weist bekannte Sicherheitslücken auf, die nicht vollständig extern gepatcht werden können, ohne die Kompatibilität mit dem Taurus-Testautomatisierungs-Framework und dem JMeter-Plugin-Ökosystem, von dem die Lösung abhängt, zu beeinträchtigen. Bevor Sie Lasttests durchführen, lesen Sie die Apache JMeter-Sicherheitshinweise und prüfen Sie, ob sie zu Sicherheitslücken für Sie führen können.

Anmerkung

Apache JMeter läuft auch unter der Haube für den Testtyp Simple HTTP Endpoint. Wenn Sie in der Webkonsole eine URL, eine Methode, Header und eine Textnutzlast konfigurieren, generiert die Lösung einen JMeter-Testplan und führt ihn mit der mitgelieferten JMeter-Binärdatei aus. Die in diesem Abschnitt beschriebenen JMeter-Sicherheitsüberlegungen gelten daher auch für einfache HTTP-Endpunkttests.

Wenn Sie eine gepatchte Version von JMeter benötigen, haben Sie zwei Möglichkeiten. Beide Optionen erfordern ein Testarchiv und sind nur für den JMeter-Testtyp verfügbar:

  • Stellen Sie eine gepatchte JMeter-Binärdatei bereit — Nehmen Sie eine gepatchte JMeter-Binärdatei in Ihr Testarchiv auf. Die Lösung verwendet Ihre Binärdatei anstelle der gebündelten Version.

  • Einzelne Plugin-JARs außer Kraft setzen — Verwenden Sie den Plugin-Override-Mechanismus, um bestimmte anfällige Plugin-JARs durch gepatchte Versionen zu ersetzen. Weitere Informationen finden Sie unter JMeter-Tests.

Der Testtyp Simple HTTP Endpoint akzeptiert kein Testarchiv und kann daher die mitgelieferte JMeter-Binärdatei oder -Plugins nicht überschreiben. Wenn Sie HTTP-Endpunkttests mit einem gepatchten JMeter ausführen müssen, verwenden Sie den JMeter-Testtyp und stellen Sie ein JMeter-Skript (.jmx) oder ein ZIP-Archiv bereit, das Ihre gepatchten JMeter-Binär- oder Plugin-JARs enthält.

Grafana k6

k6 wird unter der Lizenz veröffentlicht. AGPL-3.0 Die Webkonsole zeigt eine Lizenzbestätigungsmeldung an, wenn Sie einen neuen k6-Test erstellen. Zum Zeitpunkt der Veröffentlichung dieser Lösung wurden in der mitgelieferten Version von k6 keine bekannten Sicherheitslücken identifiziert. Die Lösung überwacht k6 nicht kontinuierlich auf neue Sicherheitslücken; Sie sind dafür verantwortlich, k6 während der gesamten Nutzung anhand Ihrer Sicherheitsanforderungen zu evaluieren.

Heuschrecke

Zum Zeitpunkt der Veröffentlichung dieser Lösung wurden in der mitgelieferten Version von Locust keine bekannten Sicherheitslücken identifiziert. Die Lösung überwacht Locust nicht ständig auf neue Sicherheitslücken; Sie sind dafür verantwortlich, Locust während der gesamten Nutzung anhand Ihrer Sicherheitsanforderungen zu evaluieren.