E-Mail- und Chatbenachrichtigungen in Echtzeit aktivieren

Überblick

Security Command Center sendet Benachrichtigungen in Echtzeit zu Ergebnissen in der Google Cloud Console. In diesem Leitfaden wird beschrieben, wie Sie Google Cloud-Dienste und APIs von Drittanbietern verwenden, um diese Funktionalität zu erweitern und Benachrichtigungen nahezu in Echtzeit in E-Mail- und Chat-Anwendungen zu erhalten. Wenn Sie den Leitfaden abgeschlossen haben, werden Sie über neue Ergebnisse in konfigurierten Drittanbieterdiensten benachrichtigt, ohne sich in der Google Cloud Console anzumelden. So können Sicherheitslücken und Bedrohungen schneller gesichtet werden. Weitere Informationen zu den verschiedenen Arten von Sicherheitslücken und Bedrohungen in Security Command Center.

Topologie

In dieser Anleitung erstellen Sie die Konfiguration, die im folgenden Diagramm dargestellt wird.

Workflow für Benachrichtigungen in nahezu Echtzeit (zum Vergrößern klicken)
Workflow für Benachrichtigungen in nahezu Echtzeit für das Security Command Center (zum Vergrößern klicken)

Lernziele

In dieser Anleitung tun Sie Folgendes:

  1. Pub-/Sub-Thema einrichten
  2. Slack, WebEx Teams und SendGrid-E-Mail einrichten
  3. Code in Cloud Functions schreiben
  4. Pub/Sub und Cloud Functions konfigurieren, um Benachrichtigungen an Slack, WebEx Teams oder SendGrid-E-Mail zu senden, wenn ein neues Ergebnis mit hohem oder kritischem Schweregrad ins Security Command Center geschrieben wird.
  5. Probleme mit Benachrichtigungen beheben

Kosten

In dieser Anleitung werden kostenpflichtige Komponenten von Google Cloud verwendet, darunter:

  • Pub/Sub
  • Cloud Functions
  • Cloud Build

Sie können mithilfe des Preisrechners die Kosten für Ihre voraussichtliche Nutzung kalkulieren.

Hinweise

Zum Durcharbeiten dieser Anleitung benötigen Sie die folgenden IAM-Rollen (Identity and Access Management):

  • Organisationsadministrator (roles/resourcemanager.organizationAdmin)
  • Sicherheitscenter-Administrator (roles/securitycenter.admin)
  • Sicherheitsadministrator (roles/iam.securityAdmin)
  • Eine Rolle mit der Berechtigung serviceusage.services.use, z. B. Inhaber (roles/owner), Bearbeiter (roles/editor) oder eine benutzerdefinierte Rolle
  • Dienstkonten erstellen (roles/iam.serviceAccountCreator)
  • Pub/Sub-Bearbeiter (roles/pubsub.editor)
  • Rechnungskontoadministrator (roles/billing.admin)

Die IAM-Rollen für Security Command Center können auf Organisations-, Ordner- oder Projektebene zugewiesen werden. Ob Sie Ergebnisse, Assets und Sicherheitsquellen aufrufen, bearbeiten, erstellen oder aktualisieren können, hängt von der Ebene ab, auf der Ihnen Zugriff gewährt wurde. Weitere Informationen zu Security Command Center-Rollen finden Sie unter Zugriffssteuerung.

Projekt einrichten

Führen Sie die folgenden Schritte aus, um ein Projekt zu erstellen oder auszuwählen.

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. Cloud Build API aktivieren.

    Aktivieren Sie die API

  5. Installieren Sie die Google Cloud CLI.
  6. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  7. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  8. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  9. Cloud Build API aktivieren.

    Aktivieren Sie die API

  10. Installieren Sie die Google Cloud CLI.
  11. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init

Geschätzte Dauer: Das Einrichten und Testen von Benachrichtigungen für einen einzelnen Dienst dauert ungefähr eine Stunde.

Pub/Sub-Thema einrichten

Pub/Sub ist ein Echtzeit-Messaging-Dienst, mit dem Nachrichten zwischen unabhängigen Anwendungen gesendet und empfangen werden können. Mehr zu Pub/Sub

In diesem Abschnitt konfigurieren Sie das Security Command Center, um Ergebnisse in einem Pub/Sub-Thema zu veröffentlichen.

So richten Sie ein Pub/Sub-Thema ein und abonnieren es:

  1. Geben Sie Ihr Google Cloud-Projekt in einer Umgebungsvariable an.

    export PROJECT_ID=PROJECT_ID
    

    Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.

  2. Geben Sie Ihre Google Cloud-Organisation in einer Umgebungsvariable an.

    export ORG_ID=ORG_ID
    

    Ersetzen Sie ORG_ID durch Ihre Organisations-ID.

  3. Legen Sie die Projekt-ID für gcloud-Befehle fest.

    gcloud config set project PROJECT_ID
    
  4. Erstellen Sie das Pub/Sub-Thema, in dem Benachrichtigungen veröffentlicht werden.

    gcloud pubsub topics create scc-critical-and-high-severity-findings-topic
    
  5. Geben Sie das Thema in einer Umgebungsvariablen an.

    export TOPIC=projects/$PROJECT_ID/topics/scc-critical-and-high-severity-findings-topic
    
  6. Erstellen Sie das Abo, das Cloud Functions benachrichtigt, um eine E-Mail oder eine Chatnachricht zu senden, wenn Nachrichten im Thema veröffentlicht werden.

    gcloud pubsub subscriptions create scc-critical-and-high-severity-findings-sub \
      --topic scc-critical-and-high-severity-findings-topic
    
  7. Konfigurieren Sie das Security Command Center so, dass Benachrichtigungen in diesem Thema veröffentlicht werden. Sie können alle mit der ListFindings API kompatiblen Filter verwenden.

    Mit dem folgenden Filter werden Benachrichtigungen für aktive Ergebnisse mit hohem und kritischem Schweregrad veröffentlicht. Weitere Informationen zum Filtern von Ergebnissen

     gcloud scc notifications create scc-critical-and-high-severity-findings-notify \
       --pubsub-topic $TOPIC \
       --organization $ORG_ID \
       --filter "(severity=\"HIGH\" OR severity=\"CRITICAL\") AND state=\"ACTIVE\""
    

Als Nächstes erstellen oder konfigurieren Sie Ihre E-Mail- oder Chat-App, um Benachrichtigungen von Pub/Sub zu erhalten.

Messaging-App einrichten

In diesem Abschnitt wird beschrieben, wie Sie mit Pub/Sub und Cloud Functions Benachrichtigungen nahezu in Echtzeit für SendGrid Email API, Slack und WebEx Teams aktivieren. Klicken Sie unten auf einen Tab und folgen Sie der Anleitung für den ausgewählten Dienst.

SendGrid-E-Mail

So aktivieren Sie E-Mail-Benachrichtigungen:

  • Erstellen Sie ein SendGrid Email API-Konto und rufen Sie einen API-Schlüssel ab.
  • Erstellen Sie eine Cloud Functions-Funktion, die E-Mails sendet, wenn Benachrichtigungen von Pub/Sub empfangen werden, und stellen Sie sie anschließend bereit.

SendGrid Email API-Konto erstellen

In diesem Abschnitt erstellen Sie ein SendGrid Email API-Konto und rufen einen API-Schlüssel ab. Wenn SendGrid bereits aktiviert ist, fahren Sie mit SendGrid Email API-Schlüssel erhalten fort und prüfen Sie, ob Ihr vorhandener API-Schlüssel die erforderlichen Berechtigungen hat.

  1. Öffnen Sie die Google Cloud Console.
    Zur Google Cloud Console
  2. Suchen Sie im Suchfeld oben auf der Seite nach SendGrid Email API. SendGrid-Suche
  3. Wählen Sie auf der nächsten Seite den Tarif aus, der Ihren Anforderungen entspricht.

    • Der kostenlose Tarif bietet bis zu 12.000 E-Mails pro Monat und ist für diese Anleitung ausreichend. Große Organisationen benötigen jedoch möglicherweise mehr. Wenn Sie eine größere Anzahl von E-Mail-Benachrichtigungen erwarten, sollten Sie zusätzliche Filter zu Benachrichtigungen hinzufügen, um ungenaue Ergebnisse auszuschließen.
    • Sie werden möglicherweise aufgefordert, ein Projekt auszuwählen, das mit SendGrid verknüpft werden soll. Wählen Sie ein Projekt aus. Sie benötigen möglicherweise ausreichende Berechtigungen, um Käufe für das zugehörige Rechnungskonto des Projekts zu verwalten.
  4. Lesen Sie die Bedingungen und klicken Sie auf Abonnieren.

  5. Aktivieren Sie den SendGrid-Dienst, indem Sie auf Bei SendGrid registrieren klicken.

  6. Geben Sie auf dem Registrierungsbildschirm einen Nutzernamen, ein Passwort und eine E-Mail-Adresse ein. Akzeptieren Sie die Nutzungsbedingungen und klicken Sie auf Weiter.

  7. Klicken Sie im Dialogfeld zur Bestätigung auf Zurück zu Google.

SendGrid Email API-Schlüssel erhalten

  1. Klicken Sie auf API-Schlüssel auf der SendGrid-Website verwalten. Ein neuer Tab wird für die SendGrid-Website geöffnet. API-Schlüssel verwalten

  2. Füllen Sie das Formular aus oder melden Sie sich an, wenn Sie dazu aufgefordert werden. Klicken Sie dann auf Erste Schritte.

  3. Maximieren Sie im Menübereich die Option Einstellungen und klicken Sie auf API-Schlüssel.

  4. Klicken Sie auf dem nächsten Bildschirm auf die Schaltfläche API-Schlüssel erstellen.

  5. Geben Sie unter Name des API-Schlüssels die Option SCC Email Notifications ein, wählen Sie Vollzugriff aus und klicken Sie dann auf die Schaltfläche Erstellen & Ansehen.

    Name des API-Schlüssels

  6. Der API-Schlüssel wird angezeigt. Notieren Sie den Wert. Sie benötigen ihn im nächsten Abschnitt.

  7. Klicken Sie auf Fertig. Ihnen wird der aktuelle Satz von API-Schlüsseln angezeigt. Schließen Sie den Tab und kehren Sie zur Google Cloud Console zurück.

Als Nächstes stellen Sie eine Cloud Functions-Funktion bereit, um Benachrichtigungen an eine E-Mail-Adresse zu senden.

SendGrid Cloud Functions-Funktion erstellen

In diesem Abschnitt stellen Sie eine Funktion bereit, die Benachrichtigungen an Ihr E-Mail-Konto sendet.

  1. Rufen Sie Cloud Functions auf.
    Zu Cloud Functions

  2. Achten Sie darauf, dass Sie dieselbe PROJECT_ID verwenden, die Sie zum Erstellen des Pub/Sub-Themas verwendet haben.

  3. Klicken Sie auf Funktion erstellen.SendGrid-Funktion

  4. Legen Sie den Funktionsname auf send-high-and-critical-finding-email-notification und den Triggertyp auf Pub/Sub fest.

  5. Wählen Sie das Pub/Sub-Thema aus, das Sie unter Pub/Sub-Thema einrichten erstellt haben.

  6. Klicken Sie auf Speichern und anschließend auf Weiter.

  7. Legen Sie auf der nächsten Seite Laufzeit auf Python 3.8 fest. Das Codebeispiel in diesem Abschnitt ist in Python geschrieben. Sie können jedoch jede von Cloud Functions unterstützte Sprache verwenden.

  8. Klicken Sie in der Dateiliste auf requirements.txt und fügen Sie Folgendes in das Textfeld ein: sendgrid.

    SendGrid-Anforderungen

  9. Klicken Sie auf main.py und ersetzen Sie den Inhalt durch das folgende Code-Snippet.

    import base64
    import json
    from sendgrid import SendGridAPIClient
    from sendgrid.helpers.mail import Mail
    
    def send_email_notification(event, context):
        """Triggered from a message on a Pub/Sub topic.
        Args:
             event (dict): Event payload.
             context (google.cloud.functions.Context): Metadata for the event.
        """
        pubsub_message = base64.b64decode(event['data']).decode('utf-8')
        message_json = json.loads(pubsub_message)
        message = Mail(
            from_email='noreply@yourdomain.com',
            to_emails='$EMAIL_ADDRESS',
            subject='New High or Critical Severity Finding Detected',
            html_content='A new high or critical severity finding was
            detected: ' + ''.join(message_json['finding']['category']))
        try:
            sg = SendGridAPIClient('$SENDGRID_EMAIL_API_KEY')
            response = sg.send(message)
            print(response.status_code)
            print(response.body)
            print(response.headers)
        except Exception as e:
            print(e)
    
        print(pubsub_message)
    
  10. Ersetzen Sie Folgendes:

    • Ändern Sie noreply@yourdomain.com in die E-Mail-Adresse, von der die Nachrichten stammen sollen.
    • Ändern Sie $EMAIL_ADDRESS in die E-Mail-Adresse des gewünschten Empfängers. Hinweis: Diese Variable kann ein Array von E-Mail-Adressen (['user1@yourdomain.com', 'user2@yourdomain.com']) enthalten. Sie können auch benutzerdefinierten Code schreiben, um eine dynamische Variable festzulegen, z. B. eine rotierende Liste von Personen, die Bereitschaftsdienst haben.
    • Ersetzen Sie $SENDGRID_EMAIL_API_KEY durch den API-Schlüssel, den Sie bereits haben oder den Sie im vorherigen Abschnitt erstellt haben.
  11. Rufen Sie das Feld Einstiegspunkt auf und geben Sie den Namen der Funktion in das Code-Snippet ein (in diesem Beispiel send_email_notification).

  12. Klicken Sie auf Bereitstellen. Sie werden zur Cloud Functions-Liste zurückgeleitet, in der Sie die neue Funktion sehen sollten. Wenn neben dem Funktionsnamen ein grünes Häkchen angezeigt wird, wurde die Funktion erfolgreich bereitgestellt. Der Vorgang kann einige Minuten dauern. SendGrid-Funktion bereitstellen

Slack

So senden Sie Benachrichtigungen an einen Slack-Kanal:

  • Erstellen Sie eine neue Slack-App mit ausreichenden Berechtigungen, um Nachrichten auf einem öffentlichen Slack-Kanal zu posten.
  • Erstellen Sie eine Cloud Functions-Funktion, die Chatnachrichten an Slack sendet, wenn Benachrichtigungen von Pub/Sub empfangen werden, und stellen Sie sie anschließend bereit.

Neue Slack-App erstellen

In diesem Abschnitt erstellen Sie eine neue Slack-App, um Benachrichtigungen zu erhalten.

  1. Gehen Sie zu Slack API-Apps. Die Seite wird in einem neuen Tab geöffnet.
  2. Melden Sie sich an oder erstellen Sie ein Konto.

  3. Wählen Sie Anwendung erstellen aus.

  4. Setzen Sie den App-Namen auf SCC Finding Notifier.

  5. Wählen Sie den Slack-Entwicklungsarbeitsbereich aus, in dem der Slack-Bot Nachrichten posten soll, und klicken Sie dann auf App erstellen.

  6. Wählen Sie im Navigationsbereich die Option OAuth & Berechtigungen aus.

    Slack-Berechtigungen

  7. Wechseln Sie zum Abschnitt Bereiche. Bereiche lassen sich in zwei Kategorien unterteilen:

    • Bereiche für Bot-Token
    • Bereiche für Nutzer-Token
  8. Für diese Übung müssen Sie keinen Bereich für Nutzer-Token hinzufügen. Klicken Sie unter "Bereiche für Bot-Token" auf OAuth-Bereich hinzufügen und geben Sie Folgendes ein:

    • chat:write
    • chat:write.public

      Slack-Bereiche
  9. Scrollen Sie zum Anfang der Seite OAuth & Berechtigungen und klicken Sie auf App in Arbeitsbereich installieren.

  10. Klicken Sie im Dialogfeld zur Bestätigung auf Zulassen.

  11. Kopieren Sie das OAuth-Zugriffstoken des Bot-Nutzers zur Verwendung in der Cloud Functions-Funktion.

Als Nächstes stellen Sie eine Cloud Functions-Funktion bereit, um Benachrichtigungen an eine Slack-Gruppe zu senden.

Slack-Cloud Functions-Funktion erstellen

In diesem Abschnitt stellen Sie eine Funktion bereit, um Benachrichtigungen an Ihr Slack-Konto zu senden.

  1. Rufen Sie Cloud Functions auf.
    Zu Cloud Functions

  2. Achten Sie darauf, dass Sie dieselbe PROJECT_ID verwenden, in der das Pub/Sub-Thema erstellt wurde.

  3. Klicken Sie auf Funktion erstellen.SendGrid-Funktion

  4. Legen Sie den Funktionsname auf slack-chat-high-and-critical-findings und den Triggertyp auf Pub/Sub fest.

  5. Wählen Sie das Pub/Sub-Thema aus, das Sie unter Pub/Sub-Thema einrichten erstellt haben.

  6. Klicken Sie auf Speichern und anschließend auf Weiter.

  7. Legen Sie auf der nächsten Seite Laufzeit auf Python 3.8 fest. Das Codebeispiel in diesem Abschnitt ist in Python geschrieben. Sie können jedoch jede von Cloud Functions unterstützte Sprache verwenden.

  8. Rufen Sie die Dateiliste auf. Klicken Sie auf requirements.txt und fügen Sie Folgendes hinzu: requests. Slack-Anforderungen

  9. Klicken Sie auf main.py und ersetzen Sie den Inhalt durch das folgende Code-Snippet.

    import base64
    import json
    import requests
    
    TOKEN = "BOT_ACCESS_TOKEN"
    
    def send_slack_chat_notification(event, context):
        pubsub_message = base64.b64decode(event['data']).decode('utf-8')
        message_json = json.loads(pubsub_message)
        finding = message_json['finding']
    
        requests.post("https://slack.com/api/chat.postMessage", data={
            "token": TOKEN,
            "channel": "#general",
            "text": f"A high severity finding {finding['category']} was detected!"
        })
    
  10. Ersetzen Sie BOT_ACCESS_TOKEN durch das OAuth-Zugriffstoken des Bot-Nutzers, das Sie mit der Slack-App erstellt haben.

  11. Rufen Sie das Feld Einstiegspunkt auf und geben Sie den Namen der Funktion in das Code-Snippet ein (in diesem Beispiel send_slack_chat_notification).

  12. Klicken Sie auf Bereitstellen. Sie werden zur Cloud Functions-Liste zurückgeleitet, in der Sie die neue Funktion sehen sollten. Wenn neben dem Funktionsnamen ein grünes Häkchen angezeigt wird, wurde die Funktion erfolgreich bereitgestellt. Der Vorgang kann einige Minuten dauern. Nachrichten werden im Slack-Kanal #general angezeigt. Slack-Funktion

WebEx

So senden Sie Benachrichtigungen an Ihr WebEx Teams-Konto:

  • Erstellen Sie ein neues Dienstkonto, das Berechtigungen zum Abrufen von Assets aus dem Security Command Center hat.
  • Erstellen Sie einen neuen WebEx-Bot mit ausreichenden Berechtigungen, um Nachrichten in Ihrem Arbeitsbereich zu posten.
  • Erstellen Sie eine Cloud Functions-Funktion, die Pub/Sub abonniert und Chatnachrichten an WebEx sendet, wenn Sie Benachrichtigungen vom Pub/Sub-Thema erhalten. Stellen Sie die Cloud Functions-Funktion anschließend bereit.

Dienstkonto erstellen

Cloud Functions kann standardmäßig keine Assets aus Security Command Center abrufen. In diesem Abschnitt stellen Sie ein Dienstkonto bereit, mit dem Cloud Functions Assets abrufen kann, die mit Ergebnissen verknüpft sind.

  1. Benennen Sie das Dienstkonto und geben Sie es als Umgebungsvariable an.

    export SERVICE_ACCOUNT=ACCOUNT_NAME
    
  2. Erstellen Sie das Dienstkonto für Ihr Projekt.

    gcloud iam service-accounts create $SERVICE_ACCOUNT \
     --display-name "Service Account for SCC Finding Notifier WebEx Cloud Function" \
     --project $PROJECT_ID
    
  3. Gewähren Sie dem Dienstkonto die Rolle securitycenter.assetsViewer auf Organisationsebene.

     gcloud organizations add-iam-policy-binding $ORG_ID \
       --member="serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com" \
       --role='roles/securitycenter.assetsViewer'
    

WebEx-Bot erstellen

In diesem Abschnitt erstellen Sie einen WebEx-Bot, der Nachrichten in Ihrem Arbeitsbereich postet.

  1. Melden Sie sich in Ihrem WebEx Teams-Konto an und rufen Sie die Seite Neuer Bot auf.

  2. Legen Sie den Namen des Bots auf SCC Finding Notifier fest.

  3. Wählen Sie einen beschreibenden, aber eindeutigen Nutzernamen für den Bot aus (your-name-scc-finding-notifier-demo).

  4. Wählen Sie unter Symbol die Option Standard 1 aus.

  5. Legen Sie die Beschreibung auf "Ein Bot, der das Team benachrichtigt, wenn ein neues Ergebnis mit hohem oder kritischem Schweregrad veröffentlicht wird" fest.

  6. Klicken Sie auf Bot hinzufügen.

  7. Kopieren Sie auf der Bestätigungsseite das Bot-Zugriffstoken und speichern Sie es zur Verwendung in der Cloud Functions-Funktion.

WebEx-Bot zum Arbeitsbereich hinzufügen

In diesem Abschnitt fügen Sie den WebEx-Bot einem Arbeitsbereich hinzu.

  1. Maximieren Sie das Aktivitätsfeld im WebEx Space, in dem der Bot Benachrichtigungen posten soll.WebEx-Feld

  2. Wählen Sie Personen hinzufügen aus.

  3. Geben Sie in das Textfeld SCC Finding Notifier ein und wählen Sie den erstellten Bot aus dem Drop-down-Menü aus. WebEx, hinzufügen

  4. Wählen Sie die Schaltfläche Hinzufügen aus und schließen Sie das Feld.

  5. Rufen Sie die Raum-ID des Arbeitsbereichs für die Cloud Functions-Funktion ab. Wechseln Sie auf einem Computer zu https://developer.webex.com/docs/api/v1/rooms/list-rooms und melden Sie sich bei Bedarf an. Auf dieser Seite wird die WebEx API verwendet, um Räume aufzulisten, zu denen Sie gehören. WebEx-Räume

  6. Rufen Sie das Suchfeld auf.

  7. Wählen Sie oben im Bereich den Tab Ausprobieren aus.

  8. Behalten Sie für alle Optionen die Standardwerte bei und klicken Sie auf Ausführen.

  9. Im Tab Antwort erhalten Sie eine JSON-formatierte Antwort mit einer Liste von items oder Räumen. Suchen Sie den title des Raums, in dem Benachrichtigungen angezeigt werden sollen, und notieren Sie den zugehörigen id-Wert. WebEx-Antwort

Als Nächstes stellen Sie eine Cloud Functions-Funktion bereit, um Benachrichtigungen an Ihren WebEx-Arbeitsbereich zu senden.

WebEx-Cloud Functions-Funktion erstellen

In diesem Abschnitt stellen Sie eine Funktion bereit, um Benachrichtigungen an Ihr WebEx-Konto zu senden.

  1. Rufen Sie Cloud Functions auf.
    Zu Cloud Functions

  2. Wählen Sie die PROJECT_ID des Projekts aus, in dem das Pub/Sub-Thema erstellt wurde.

  3. Klicken Sie auf Funktion erstellen.WebEx-Funktion

  4. Legen Sie den Funktionsname auf webex-teams-high-and-critical-findings und den Triggertyp auf Pub/Sub fest.

  5. Wählen Sie das Pub/Sub-Thema aus, das Sie unter Pub/Sub-Thema einrichten erstellt haben.

  6. Maximieren Sie das Feld Variablen, Netzwerk und erweiterte Einstellungen.

  7. Filtern Sie unter Dienstkonto nach dem von Ihnen erstellten Dienstkonto webex-cloud-function-sa und wählen Sie es aus. WebEx-Variablen

  8. Klicken Sie auf Speichern und anschließend auf Weiter.

  9. Legen Sie auf der nächsten Seite Laufzeit auf Python 3.8 fest. Das Codebeispiel in diesem Abschnitt ist in Python geschrieben. Sie können jedoch jede von Cloud Functions unterstützte Sprache verwenden.

  10. Rufen Sie die Dateiliste auf. Klicken Sie auf requirements.txt und fügen Sie Folgendes hinzu:

    • requests==2.25.1
    • google-cloud-securitycenter==1.1.0 WebEx-Anforderungen
  11. Klicken Sie auf main.py und ersetzen Sie den Inhalt durch das folgende Code-Snippet.

    #!/usr/bin/env python3
    import base64
    import json
    
    import requests
    from google.cloud import securitycenter_v1
    
    WEBEX_TOKEN = "WEBEX_TOKEN"
    ROOM_ID = "ROOM_ID"
    
    TEMPLATE = """
    **Severity:** {severity}\n
    **Asset:** {asset}\n
    **SCC Category:** {category}\n
    **Project:** {project}\n
    **First observed:** {create_time}\n
    **Last observed:** {event_time}\n
    **Link to finding:** {finding_link}
    """
    
    PREFIX = "https://console.cloud.google.com/security/command-center/findings"
    
    def get_finding_detail_page_link(finding_name):
        """Constructs a direct link to the finding detail page."""
        org_id = finding_name.split("/")[1]
        return f"{PREFIX}?organizationId={org_id}&resourceId={finding_name}"
    
    def get_asset(parent, resource_name):
        """Retrieves the asset corresponding to `resource_name` from SCC."""
        client = securitycenter_v1.SecurityCenterClient()
        resp = client.list_assets(
            securitycenter_v1.ListAssetsRequest(
                parent=parent,
                filter=f'securityCenterProperties.resourceName="{resource_name}"',
            )
        )
        page = next(resp.pages)
        if page.total_size == 0:
            return None
        asset = page.list_assets_results[0].asset
        return json.loads(securitycenter_v1.Asset.to_json(asset))
    
    def send_webex_teams_notification(event, context):
        """Send the notification to WebEx Teams."""
        pubsub_message = base64.b64decode(event["data"]).decode("utf-8")
        message_json = json.loads(pubsub_message)
        finding = message_json["finding"]
    
        parent = "/".join(finding["parent"].split("/")[0:2])
        asset = get_asset(parent, finding["resourceName"])
    
        requests.post(
            "https://webexapis.com/v1/messages",
            json={
                "roomId": ROOM_ID,
                "markdown": TEMPLATE.format(
                    severity=finding["severity"],
                    asset=asset["securityCenterProperties"]["resourceDisplayName"],
                    category=finding["category"],
                    project=asset["resourceProperties"]["project"],
                    create_time=finding["createTime"],
                    event_time=finding["eventTime"],
                    finding_link=get_finding_detail_page_link(finding["name"]),
                ),
            },
            headers={"Authorization": f"Bearer {WEBEX_TOKEN}"},
        )
    
  12. Ersetzen Sie Folgendes:

    • WEBEX_TOKEN durch das Bot-Zugriffstoken aus dem Abschnitt WebEx-Bot erstellen.
    • ROOM_ID durch die Zimmer-ID aus dem Abschnitt WebEx-Bot zum Arbeitsbereich hinzufügen.
  13. Rufen Sie das Feld Einstiegspunkt auf und geben Sie den Namen der Funktion in das Code-Snippet ein (in diesem Beispiel send_webex_teams_notification).

  14. Klicken Sie auf Bereitstellen. Sie werden zur Cloud Functions-Liste zurückgeleitet, in der Sie die neue Funktion sehen sollten. Wenn neben dem Funktionsnamen ein grünes Häkchen angezeigt wird, wurde die Funktion erfolgreich bereitgestellt. Der Vorgang kann einige Minuten dauern. WebEx-Bereitstellung

Wenn die vorherigen Schritte für den ausgewählten Dienst fehlerfrei abgeschlossen wurden, ist die Einrichtung abgeschlossen und Sie erhalten Benachrichtigungen. Wichtige Hinweise:

  • Sie erhalten eine separate E-Mail- oder Chat-Nachricht für jedes einzelne Ergebnis mit kritischem oder hohem Schweregrad. Die Häufigkeit oder Anzahl der Benachrichtigungen hängt von den Ressourcen in Ihrer Organisation ab.
  • Benachrichtigungen werden veröffentlicht und nahezu in Echtzeit gesendet. Die Unmittelbarkeit von E-Mails oder Nachrichten ist jedoch nicht garantiert und mehrere Faktoren können Verzögerungen verursachen, einschließlich Problemen mit SendGrid, Ihrem E-Mail-System, Slack oder WebEx.

So ändern Sie den Workflow für Benachrichtigungen:

  • Ändern Sie die Empfänger, indem Sie Ihre Cloud Functions-Funktion aktualisieren.
  • Ändern Sie, welche Ergebnisse Benachrichtigungen auslösen. Aktualisieren Sie dazu den Filter für das Pub/Sub-Thema.

Benachrichtigungen testen

Um zu testen, ob Benachrichtigungen richtig konfiguriert sind, folgen Sie der Anleitung unten, um für Ergebnisse mit hohem Schweregrad zwischen aktiven und inaktiven Status zu wechseln.

  1. Wechseln Sie zur Seite "Ergebnisse" des Security Command Center.
    Zur Seite "Ergebnisse"
  2. Wählen Sie Ihre Organisation aus, wenn Sie dazu aufgefordert werden.
  3. Scrollen Sie im Bereich Schnellfilter nach unten zum Abschnitt Schweregrad und wählen Sie entweder Hoch oder Kritisch aus. Der Bereich Ergebnisse der Ergebnisabfrage wird aktualisiert und zeigt nur Ergebnisse mit dem ausgewählten Schweregrad an.
  4. Wählen Sie im Bereich Ergebnisse der Ergebnisabfrage ein Ergebnis aus, indem Sie das Kästchen neben dem Namen anklicken.
  5. Wählen Sie im Menü Aktiven Status ändern in der Aktionsleiste Ergebnisse der Ergebnisabfrage die Option Inaktiv aus. Wenn die aktuelle Ergebnisabfrage nur aktive Ergebnisse enthält, wird das Ergebnis aus den Abfrageergebnissen entfernt.
  6. Scrollen Sie im Bereich Schnellfilter nach unten zum Abschnitt Status und ändern Sie die Auswahl so, dass nur Inaktiv ausgewählt ist. Der Bereich Ergebnisse der Ergebnisabfrage wird aktualisiert und zeigt nur inaktive Ergebnisse an.
  7. Wählen Sie im Bereich Ergebnisse der Ergebnisabfrage das Ergebnis aus, das Sie als inaktiv markiert haben.
  8. Wählen Sie im Menü Aktiven Status ändern in der Aktionsleiste Ergebnisse der Ergebnisabfrage die Option Aktiv aus.
  9. Prüfen Sie Ihren E-Mail- oder Messaging-Dienst. Es sollte eine Meldung ähnlich den unten stehenden Abbildungen angezeigt werden.

E-Mail:

E-Mail-Benachrichtigung

Slack:

Slack-Benachrichtigung

An WebEx gesendete Nachrichten, die weitere Informationen in dieser Anleitung enthalten, ähneln der folgenden Abbildung.

WebEx-Benachrichtigung

Fehlerbehebung

Wenn keine E-Mails oder Chatnachrichten gesendet oder empfangen werden, führen Sie die folgenden Schritte aus, um potenzielle Probleme zu identifizieren und zu beheben.

  • SendGrid-E-Mail

    • Damit E-Mails nicht mehr in den Spamordner verschoben werden, fügen Sie der Zulassungsliste für E-Mails den Wert from_email hinzu oder konfigurieren Sie die Absenderauthentifizierung bei SendGrid.
    • Achten Sie darauf, die Ratenbegrenzung für Ihren SendGrid-Tarif nicht zu überschreiten.
    • Fehlgeschlagene E-Mails können über die SendGrid-Berichterstellung erkannt werden.
      • Die DMARC-Richtlinie Ihrer Domain oder Ihres E-Mail-Anbieters kann E-Mails von nicht authentifizierten Absendern blockieren. Erfahren Sie, wie SendGrid die Identität des Absenders verwaltet. Wenn ein Fehler auftritt, versuchen Sie es mit einer anderen E-Mail-Adresse im Wert from_email.
  • SendGrid-E-Mail, Slack und WebEx:

    1. Prüfen Sie in den Stackdriver-Logs, ob Ihre Cloud Functions-Funktion aufgerufen wird. Wenn sie nicht aufgerufen wird, achten Sie darauf, dass Benachrichtigungen korrekt eingerichtet sind.

    2. Wenn die Cloud Functions-Funktion aufgerufen wird, kann sie abstürzen. Mit Google Cloud Console Error Reporting in Cloud Functions nach Fehlern suchen

Bereinigen

Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder behalten Sie das Projekt und löschen Sie die einzelnen Ressourcen.

Projekt löschen

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Einzelne Ressourcen löschen

  1. So löschen Sie die Benachrichtigungskonfiguration:

    gcloud scc notifications delete organizations/ORG_ID/notificationConfigs/scc-critical-and-high-severity-findings-notify
    

    Ersetzen Sie ORG_ID durch Ihre Organisations-ID.

    Kommentieren Sie die Aufrufe send oder post in Ihrer Cloud Functions-Funktion aus, um Ihre Konfiguration beizubehalten und Benachrichtigungen vorübergehend zu pausieren.

  2. Löschen Sie Ihre Cloud Functions-Funktion:

    1. Rufen Sie Cloud Functions auf.
      Zu Cloud Functions
    2. Klicken Sie auf das Kästchen neben der Funktion, die Sie löschen möchten.
    3. Klicken Sie auf Löschen .
  3. Löschen Sie das Dienstkonto:

    1. Rufen Sie die Seite Dienstkonten auf.
      Zur Seite "Dienstkonten"
    2. Wählen Sie ein Projekt aus.
    3. Wählen Sie das Dienstkonto aus, das Sie löschen möchten, und klicken Sie auf Löschen .

Nächste Schritte