Bidirektionale Integration AWS Security Hub mit Jira-Software - 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.

Bidirektionale Integration AWS Security Hub mit Jira-Software

Erstellt von Joaquin Rinaudo (AWS)

Übersicht

Diese Lösung unterstützt eine bidirektionale Integration zwischen und Jira. AWS Security Hub Mit dieser Lösung können Sie automatisch und manuell Jira-Tickets anhand der Ergebnisse von Security Hub erstellen und aktualisieren. Sicherheitsteams können diese Integration verwenden, um Entwicklerteams über schwerwiegende Sicherheitslücken zu informieren, die Maßnahmen erfordern.

Die Lösung ermöglicht Ihnen:

  • Wählen Sie aus, welche Security Hub Hub-Kontrollen automatisch Tickets in Jira erstellen oder aktualisieren.

  • Verwenden Sie in der Security Hub Hub-Konsole benutzerdefinierte Security Hub Hub-Aktionen, um Tickets in Jira manuell zu eskalieren.

  • Weisen Sie Tickets in Jira automatisch auf der Grundlage der in definierten AWS-Konto Tags zu. AWS Organizations Wenn dieses Tag nicht definiert ist, wird ein Standardverantwortlicher verwendet.

  • Unterdrücken Sie automatisch Security Hub Hub-Ergebnisse, die in Jira als falsch positiv oder als akzeptiertes Risiko gekennzeichnet sind.

  • Schließt ein Jira-Ticket automatisch, wenn das zugehörige Ergebnis im Security Hub archiviert wird.

  • Öffnen Sie Jira-Tickets erneut, wenn Security Hub Hub-Ergebnisse erneut auftreten.

Jira-Workflow

Die Lösung verwendet einen benutzerdefinierten Jira-Workflow, der es Entwicklern ermöglicht, Risiken zu verwalten und zu dokumentieren. Während das Problem den Workflow durchläuft, stellt die bidirektionale Integration sicher, dass der Status des Jira-Tickets und der Security Hub Hub-Ergebnisse in den Workflows in beiden Diensten synchronisiert werden. Dieser Workflow ist ein Derivat von SecDevOps Risk Workflow von Dinis Cruz, lizenziert unter der Apache License Version 2.0. Wir empfehlen, eine Jira-Workflow-Bedingung hinzuzufügen, sodass nur Mitglieder Ihres Sicherheitsteams den Ticketstatus ändern können.

Ein Workflow-Diagramm eines Jira-Problems. Sie können das Problem beheben, das Risiko akzeptieren oder es als falsch positiv markieren.

Ein Beispiel für ein Jira-Ticket, das von dieser Lösung automatisch generiert wird, finden Sie im Abschnitt Zusätzliche Informationen dieses Musters.

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Wenn Sie diese Lösung in einer Umgebung mit mehreren Konten AWS bereitstellen möchten:

    • Ihre Umgebung mit mehreren Konten ist aktiv und wird von verwaltet. AWS Organizations

    • Security Hub ist auf Ihrem aktiviert AWS-Konten.

    • AWS Organizations In haben Sie ein Security Hub-Administratorkonto eingerichtet.

    • Sie haben eine kontoübergreifende Rolle AWS Identity and Access Management (IAM), die über AWSOrganizationsReadOnlyAccess Berechtigungen für das AWS Organizations Verwaltungskonto verfügt.

    • (Optional) Sie haben Ihre AWS-Konten mit markiert. SecurityContactID Dieses Tag wird verwendet, um Jira-Tickets den definierten Sicherheitskontakten zuzuweisen.

  • Wenn Sie diese Lösung in einer einzigen AWS-Konto Lösung bereitstellen möchten:

    • Sie haben eine aktive AWS-Konto.

    • Security Hub ist auf Ihrem aktiviert AWS-Konto.

  • Eine Jira Data Center-Instanz

    Wichtig

    Diese Lösung unterstützt die Verwendung von Jira Cloud. Jira Cloud unterstützt jedoch nicht den Import von XML-Workflows, sodass Sie den Workflow in Jira manuell neu erstellen müssen. Sie finden die Übergänge und den Status im Repository. GitHub

  • Administratorrechte in Jira

  • Eines der folgenden Jira-Token:

    • Für Jira Enterprise ein Personal Access Token (PAT). Weitere Informationen findest du unter Persönliche Zugriffstoken verwenden (Atlassian-Unterstützung).

    • Für Jira Cloud ein Jira-API-Token. Weitere Informationen findest du unter API-Token verwalten (Atlassian-Unterstützung).

Architektur

In diesem Abschnitt wird die Architektur der Lösung in verschiedenen Szenarien veranschaulicht, z. B. wenn der Entwickler und der Sicherheitsingenieur beschließen, das Risiko zu akzeptieren oder das Problem zu beheben.

Szenario 1: Der Entwickler behebt das Problem

  1. Security Hub generiert ein Ergebnis gegen eine bestimmte Sicherheitskontrolle, wie sie beispielsweise im Standard AWS Foundational Security Best Practices enthalten sind.

  2. Ein CloudWatch Amazon-Ereignis, das mit dem Befund und der CreateJIRA Aktion verknüpft ist, löst eine AWS Lambda Funktion aus.

  3. Die Lambda-Funktion verwendet ihre Konfigurationsdatei und das GeneratorId Feld des Ergebnisses, um zu bewerten, ob sie das Ergebnis eskalieren sollte.

  4. Die Lambda-Funktion bestimmt, dass das Ergebnis eskaliert werden soll, und ruft das SecurityContactID Konto-Tag aus dem Verwaltungskonto ab AWS Organizations . AWS Diese ID ist dem Entwickler zugeordnet und wird als Zuweisungs-ID für das Jira-Ticket verwendet.

  5. Die Lambda-Funktion verwendet die in gespeicherten Anmeldeinformationen AWS Secrets Manager , um ein Ticket in Jira zu erstellen. Jira benachrichtigt den Entwickler.

  6. Der Entwickler geht auf die zugrunde liegende Sicherheitslücke ein und ändert in Jira den Status des Tickets in. TEST FIX

  7. Security Hub aktualisiert den Befund als ARCHIVED und ein neues Ereignis wird generiert. Dieses Ereignis veranlasst die Lambda-Funktion, das Jira-Ticket automatisch zu schließen.

Ein Architekturdiagramm, das die Integration von Jira und Security Hub zeigt, wenn ein Entwickler ein Problem behebt.

Szenario 2: Der Entwickler beschließt, das Risiko zu akzeptieren

  1. Security Hub generiert ein Ergebnis gegen eine bestimmte Sicherheitskontrolle, wie sie beispielsweise im Standard AWS Foundational Security Best Practices enthalten sind.

  2. Ein mit dem Befund und der CreateJIRA Aktion verbundenes CloudWatch Ereignis initiiert eine Lambda-Funktion.

  3. Die Lambda-Funktion verwendet ihre Konfigurationsdatei und das GeneratorId Feld des Ergebnisses, um zu bewerten, ob sie das Ergebnis eskalieren sollte.

  4. Die Lambda-Funktion bestimmt, dass das Ergebnis eskaliert werden soll, und ruft das SecurityContactID Konto-Tag aus dem Verwaltungskonto ab AWS Organizations . AWS Diese ID ist dem Entwickler zugeordnet und wird als Zuweisungs-ID für das Jira-Ticket verwendet.

  5. Die Lambda-Funktion verwendet die in Secrets Manager gespeicherten Anmeldeinformationen, um ein Ticket in Jira zu erstellen. Jira benachrichtigt den Entwickler.

  6. Der Entwickler entscheidet, das Risiko zu akzeptieren, und ändert in Jira den Status des Tickets auf. AWAITING RISK ACCEPTANCE

  7. Der Sicherheitsingenieur prüft die Anfrage und hält die geschäftliche Begründung für angemessen. Der Sicherheitsingenieur ändert den Status des Jira-Tickets inACCEPTED RISK. Dadurch wird das Jira-Ticket geschlossen.

  8. Ein CloudWatch tägliches Ereignis initiiert die Lambda-Aktualisierungsfunktion, die geschlossene Jira-Tickets identifiziert und die zugehörigen Security Hub Hub-Ergebnisse aktualisiert als. SUPPRESSED

Ein Architekturdiagramm, das die Integration von Jira und Security Hub zeigt, wenn ein Entwickler das Risiko einer Entdeckung akzeptiert.

Tools

AWS-Services

  • AWS CloudFormationhilft Ihnen dabei, AWS Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus regionsübergreifend AWS-Konten zu verwalten.

  • Amazon CloudWatch Events unterstützt Sie bei der Überwachung von Systemereignissen für Ihre AWS Ressourcen, indem es Regeln verwendet, um Ereignisse zuzuordnen und sie an Funktionen oder Streams weiterzuleiten.

  • 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 Organizationsist ein Kontoverwaltungsservice, mit dem Sie mehrere Konten zu einer Organisation AWS-Konten zusammenfassen können, die Sie erstellen und zentral verwalten.

  • Mit AWS Secrets Manager können Sie fest codierte Anmeldeinformationen im Code (einschließlich Passwörter) durch einen API-Aufruf an Secrets Manager ersetzen und das Geheimnis programmgesteuert abrufen.

  • AWS Security Hubbietet einen umfassenden Überblick über Ihren Sicherheitsstatus in AWS. Es hilft Ihnen auch dabei, Ihre AWS Umgebung anhand von Industriestandards und Best Practices im Bereich Sicherheit zu überprüfen.

Code-Repository

Der Code für dieses Muster ist im Repository aws-securityhub-jira-software-integration verfügbar. GitHub Er enthält den Beispielcode und den Jira-Workflow für diese Lösung.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Importieren Sie den Workflow.

Importieren Sie als Administrator in Jira die issue-workflow.xml Datei in Ihre Jira Data Center-Instanz. Wenn Sie Jira Cloud verwenden, müssen Sie den Workflow entsprechend den Dateien und erstellen. assets/jira-cloud-transitions.png assets/jira-cloud-status.png

Dateien finden Sie im aws-securityhub-jira-software-integration-Repository unter. GitHub Anweisungen finden Sie unter Verwenden von XML zur Erstellung eines Workflows (Jira-Dokumentation).

Jira-Administrator

Aktivieren Sie den Workflow und weisen Sie ihn zu.

Workflows sind inaktiv, bis Sie sie einem Workflow-Schema zuweisen. Anschließend weisen Sie das Workflow-Schema einem Projekt zu.

  1. Stellen Sie für Ihr Projekt sicher, dass Sie ein Problemtypschema für das Projekt identifiziert haben. Sie können einen neuen Problemtyp erstellen oder aus einem vorhandenen auswählen, z. Bug B.

  2. Weisen Sie den importierten Workflow einem Workflow-Schema zu. Folgen Sie den Anweisungen unter Aktivieren eines Workflows (Jira-Dokumentation).

  3. Weisen Sie das Workflow-Schema einem Projekt zu. Folgen Sie den Anweisungen unter Ein Workflow-Schema einem Projekt zuordnen (Jira-Dokumentation).

Jira-Administrator
AufgabeBeschreibungErforderliche Fähigkeiten

Konfigurieren Sie die Lösungsparameter.

  1. Öffnen Sie im Ordner confparams_prod.shfile.

  2. Geben Sie Werte für die folgenden Parameter an:

    • ORG_ACCOUNT_ID— Die Konto-ID für Ihr AWS Organizations Verwaltungskonto. Die Lösung liest Konto-Tags und weist Tickets den spezifischen Sicherheitskontakten zu, die in diesen AWS-Konto Tags definiert sind.

    • ORG_ROLE— Der Name der IAM-Rolle, die für den Zugriff auf das AWS Organizations Verwaltungskonto verwendet wird. Diese Rolle muss über OrganizationsReadOnlyAccess Berechtigungen verfügen.

    • EXTERNAL_ID— Ein optionaler Parameter, wenn Sie eine externe ID verwenden, um die in ORG_ROLE definierte IAM-Rolle anzunehmen. Weitere Informationen finden Sie unter So verwenden Sie eine externe ID (IAM-Dokumentation).

    • JIRA_DEFAULT_ASSIGNEE— Dies ist der standardmäßige Beauftragte von Jira für alle Sicherheitsprobleme. Dieser Standard-Beauftragte wird verwendet, falls das Konto nicht richtig markiert ist oder die Rolle nicht übernommen werden kann.

    • JIRA_INSTANCE— Die HTTPS-Adresse für Ihren Jira-Endpunkt im folgenden Format: team-<team-id>.atlassian.net/

    • JIRA_PROJECT_KEY— Der Name des Jira-Projektschlüssels, der zum Erstellen von Tickets verwendet wurde, z. B. SEC oder. TEST Dieses Projekt muss bereits in Jira existieren. 

    • ISSUE_TYPE— Der Name des Problemtypschemas, das dem Projekt in Jira zugewiesen wurde, z. B. Bug oder. Security Issue

    • REGIONS— Liste der AWS-Region Codes, in denen Sie diese Lösung einsetzen möchten, z. B. eu-west-1

  3. Speichern und schließen Sie die Lösungsparameterdatei.

AWS-Systemadministrator

Identifizieren Sie die Ergebnisse, die Sie automatisieren möchten.

  1. Öffnen Sie die Security Hub Hub-Konsole.

  2. Wählen Sie im Security Hub-Navigationsbereich Findings aus.

  3. Wählen Sie den Titel des Ergebnisses aus.

  4. Wählen Sie die Fund-ID. Dadurch wird die vollständige JSON-Datei für den Befund angezeigt.

  5. Kopieren Sie in der JSON-Datei die Zeichenfolge in das GeneratorId Feld. Dieser Wert ist im AWS Security Finding Format (ASFF) angegeben. aws-foundational-security-best-practices/v/1.0.0/S3.1Entspricht beispielsweise den Ergebnissen aus der Sicherheitskontrolle S3.1. Die Einstellung „Öffentlichen Zugriff sperren“ für S3 sollte aktiviert sein.

  6. Wiederholen Sie diese Schritte, bis Sie alle GeneratorID Werte für alle Ergebnisse kopiert haben, die Sie automatisieren möchten.

Fügen Sie die Ergebnisse der Konfigurationsdatei hinzu.

  1. Öffnen Sie die Datei in src/code. config.jsonconfig

  2. Fügen Sie die GeneratorID Werte, die Sie in der vorherigen Geschichte abgerufen haben, in den default Parameter ein, und trennen Sie die einzelnen IDs durch Kommas.

  3. Speichern und schließen Sie die -Konfigurationsdatei.

Das folgende Codebeispiel zeigt die Automatisierung der Ergebnisse aws-foundational-security-best-practices/v/1.0.0/SNS.1 undaws-foundational-security-best-practices/v/1.0.0/S3.1.

{ "Controls" : { "eu-west-1": [ "arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0/rule/1.22" ], "default": [ aws-foundational-security-best-practices/v/1.0.0/SNS.1, aws-foundational-security-best-practices/v/1.0.0/S3.1 ] } }
Anmerkung

Sie können wählen, ob Sie für jedes AWS-Region Ergebnis unterschiedliche Ergebnisse automatisieren möchten. Eine bewährte Methode zur Vermeidung doppelter Ergebnisse besteht darin, eine einzelne Region auszuwählen, um die Erstellung von Kontrollen im Zusammenhang mit IAM zu automatisieren.

AWS-Systemadministrator
AufgabeBeschreibungErforderliche Fähigkeiten

Stellen Sie die Integration bereit.

Geben Sie in einem Befehlszeilenterminal den folgenden Befehl ein:

./deploy.sh prod
AWS-Systemadministrator

Laden Sie die Jira-Anmeldeinformationen in Secrets Manager hoch.

  1. Öffnen Sie die Secrets Manager-Konsole.

  2. Wählen Sie unter Secrets (Geheimnisse) Store a new secret (Neues Geheimnis speichern) aus.

  3. Als Secret-Typ wählen Sie Anderer Secret-Typ aus.

  4. Wenn Sie Jira Enterprise verwenden, gehen Sie für Schlüssel/Wert-Paare wie folgt vor:

    • Geben Sie in der ersten Zeile auth in das Schlüsselfeld und dann token_auth in das Wertfeld ein.

    • Fügen Sie eine zweite Zeile hinzu, geben Sie sie token in das Schlüsselfeld ein und geben Sie dann Ihr persönliches Zugriffstoken in das Wertfeld ein.

    Wenn du Jira Cloud verwendest, gehe für Schlüssel/Wert-Paare wie folgt vor:

    • Geben Sie in der ersten Zeile auth in das Schlüsselfeld und dann basic_auth in das Wertfeld ein.

    • Fügen Sie eine zweite Zeile hinzu, geben Sie sie token in das Schlüsselfeld ein und geben Sie dann Ihr API-Token in das Wertfeld ein.

    • Fügen Sie eine dritte Zeile hinzu, geben Sie sie email in das Schlüsselfeld ein und geben Sie dann Ihre E-Mail-Adresse in das Wertfeld ein.

  5. Wählen Sie Weiter aus.

  6. Geben Sie das Feld Geheimer Name einJira-Token, und wählen Sie dann unten auf der Seite Weiter aus.

  7. Behalten Sie auf der Seite Secret rotation (Geheimnis-Drehung) die Option Disable automatic rotation (Automatische Drehung deaktivieren) bei und wählen Sie dann unten auf der Seite Next (Weiter) aus.

  8. Prüfen Sie auf der Seite Review (Überprüfen) die Geheimnis-Details und wählen Sie Store (Speichern).

AWS-Systemadministrator

Erstellen Sie die benutzerdefinierte Security Hub Hub-Aktion.

  1. Verwenden Sie für jedes AWS-Region Objekt in AWS Command Line Interface (AWS CLI) den create-action-targetBefehl, um eine benutzerdefinierte Security Hub Hub-Aktion mit dem Namen zu erstellenCreateJiraIssue.

    aws securityhub create-action-target --name "CreateJiraIssue" \  --description "Create ticket in JIRA" \  --id "CreateJiraIssue" --region $<aws-region>
  2. Öffnen Sie die Security Hub Hub-Konsole.

  3. Wählen Sie im Security Hub-Navigationsbereich Findings aus.

  4. Wählen Sie in der Ergebnisliste die Ergebnisse aus, die Sie eskalieren möchten.

  5. Wählen CreateJiraIssue Sie im Menü Aktionen.

AWS-Systemadministrator

Zugehörige Ressourcen

Zusätzliche Informationen

Beispiel für ein Jira-Ticket

Wenn ein bestimmter Security Hub Hub-Befund auftritt, erstellt diese Lösung automatisch ein Jira-Ticket. Das Ticket enthält die folgenden Informationen:

  • Titel — Der Titel identifiziert das Sicherheitsproblem im folgenden Format:

    AWS Security Issue :: <AWS account ID> :: <Security Hub finding title>
  • Beschreibung — Der Beschreibungsabschnitt des Tickets beschreibt die Sicherheitskontrolle, die mit dem Ergebnis verknüpft ist, enthält einen Link zu dem Ergebnis in der Security Hub Hub-Konsole und bietet eine kurze Beschreibung, wie das Sicherheitsproblem im Jira-Workflow behandelt werden kann.

Im Folgenden finden Sie ein Beispiel für ein automatisch generiertes Jira-Ticket.

Titel

AWS Sicherheitsproblem:: 012345678912:: Lambda.1 Lambda-Funktionsrichtlinien sollten den öffentlichen Zugriff verbieten.

Beschreibung

Was ist das Problem? Wir haben eine Sicherheitslücke in der AWS-Konto 012345678912 festgestellt, für die Sie verantwortlich sind.

Dieses Steuerelement prüft, ob die der Lambda-Ressource zugeordnete AWS Lambda Funktionsrichtlinie den öffentlichen Zugriff verbietet. Wenn die Lambda-Funktionsrichtlinie öffentlichen Zugriff zulässt, schlägt die Kontrolle fehl.

<Link to Security Hub finding>

Was muss ich mit dem Ticket machen?

  • Greifen Sie auf das Konto zu und überprüfen Sie die Konfiguration. Bestätigen Sie die Bearbeitung des Tickets, indem Sie es in den Bereich „Zur Behebung zugewiesen“ verschieben. Sobald das Problem behoben wurde, wurde es zur Testkorrektur übergegangen, sodass die Sicherheit bestätigt, dass das Problem behoben ist.

  • Wenn Sie der Meinung sind, dass das Risiko akzeptiert werden sollte, verschieben Sie es in „Warten auf Risikoakzeptanz“. Dies erfordert eine Überprüfung durch einen Sicherheitsingenieur.

  • Wenn Sie der Meinung sind, dass es sich um ein falsch positives Ergebnis handelt, wechseln Sie zu „Als falsch positiv markieren“. Dies wird von einem Sicherheitsingenieur überprüft und entsprechend wieder geöffnet/geschlossen.