
CLI-Komponente von purpleteam
npm install -g purpleteam
Klonen Sie dieses Repository.
Kopieren Sie die Datei config/config.example.json entweder in config/config.local.json oder in config/config.cloud.json, je nachdem, welche Umgebung Sie verwenden möchten.
Verwenden Sie die Datei config/config.js als Dokumentation und für weitere Beispiele.
loggers.testerProgress.dirname Konfigurieren Sie diesen Wert.
purpleteamApi Wenn Sie planen, die local-Umgebung zu verwenden, können Sie bei den Standardeigenschaftswerten bleiben. Wenn Sie planen, die cloud-Umgebung zu verwenden, erhalten Sie diese Informationen, wenn Sie sich für ein purpleteam-Konto anmelden.
testerFeedbackComms.medium Long Polling (lp) wird sowohl in local- als auch in cloud-Umgebungen unterstützt. Server Sent Events (sse) wird aufgrund von AWS-Einschränkungen nur in der local-Umgebung unterstützt. Sowohl lp als auch sse sind Echtzeit. Beide Implementierungen haben ihre Vor- und Nachteile.
Die Verwendung von sse ist eine Einwegkommunikation nach der ersten Subskription der CLI auf den Orchestrator. Redis pub/sub wird zwischen den Testern und dem Orchestrator verwendet, um Tester-Feedback zu veröffentlichen. Wenn die CLI zu einem Zeitpunkt gestoppt wird (nicht subskribiert), während das Backend einen Testlauf durchführt, gehen Ereignisse verloren.
Die Verwendung von lp ist eine Request-Response-Kommunikation. Eine Anfrage wird gestellt und nur beantwortet, wenn Tester-Feedback-Nachrichten verfügbar sind oder das anwendungsspezifische (statt AWS Api Gateway) Timeout überschritten wird. Sobald die CLI einen Satz (eins bis viele) von Tester-Feedback-Nachrichten erhält, stellt sie eine weitere Anfrage an den Orchestrator (wenn in local-Umgebung ausgeführt) oder die API (wenn in cloud-Umgebung ausgeführt). Redis pub/sub wird zwischen den Testern und dem Orchestrator verwendet, um Tester-Feedback zu veröffentlichen.
Solange die erste CLI-Anfrage nach Tester-Feedback unmittelbar nach Beginn des Tests gestellt wird, werden Tester-Feedback-Nachrichten im Arbeitsspeicher in Redis-Listen gespeichert. Das bedeutet, dass, wenn die CLI während eines Testlaufs kurzzeitig gestoppt wird, sie nach dem Neustart die Tester-Feedback-Nachrichten erhält, die beim Orchestrator eingegangen sind, als die CLI nicht lief ... vorausgesetzt, der Orchestrator läuft weiter.
Zusätzlicher Hintergrund: Dies kann sich in Zukunft ändern, WebSockets ist ebenfalls eine Option, die wir in Zukunft implementieren könnten, aber die Implementierung von WebSockets würde bedeuten, dass wir unseren gesamten Authentifizierungsansatz ändern müssten. Unsere gewählte Cloud-Infrastruktur AWS Api Gateway unterstützt kein Streaming und unterstützt nicht den OAuth Client Credentials Flow mit Cognito User Pools.
purpleteamAuth Wenn Sie planen, die local-Umgebung zu verwenden, können Sie bei den Standardeigenschaftswerten bleiben. Wenn Sie planen, die cloud-Umgebung zu verwenden, erhalten Sie diese Informationen, wenn Sie sich für ein purpleteam-Konto anmelden.
buildUserConfig.fileUri Konfigurieren Sie diesen Wert, wenn Sie ihn nicht manuell als Argument an die CLI übergeben möchten. Dies ist die Job-Datei, die Sie konfiguriert haben, um Ihre System Under Test (SUT)-Details anzugeben.
outcomes.dir Konfigurieren Sie diesen Wert. Dies ist ein von Ihnen gewähltes Verzeichnis, in dem Ergebnisdateien vom Orchestrator (wenn in local-Umgebung ausgeführt) oder der API (wenn in cloud-Umgebung ausgeführt) gespeichert werden.