Übersicht
Security Command Center stellt in der Google Cloud Console Benachrichtigungen zu Ergebnissen in Echtzeit bereit. In dieser Anleitung wird beschrieben, wie Sie mit Google Cloud-Diensten und APIs von Drittanbietern diese Funktionalität erweitern und Benachrichtigungen in E-Mail- und Chat-Anwendungen nahezu in Echtzeit erhalten. Wenn Sie diese Anleitung abgeschlossen haben, erhalten Sie Benachrichtigungen über neue Ergebnisse in konfigurierten Drittanbieterdiensten, ohne sich in der Google Cloud Console anzumelden. So kann schneller auf Sicherheitslücken und Bedrohungen reagiert 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.
Ziele
In dieser Anleitung tun Sie Folgendes:
- Pub-/Sub-Thema einrichten
- Slack, WebEx Teams und SendGrid-E-Mail einrichten
- Code in Cloud Run-Funktionen schreiben
- Pub/Sub und Cloud Run-Funktionen 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.
- Probleme mit Benachrichtigungen beheben
Kosten
In dieser Anleitung werden kostenpflichtige Komponenten von Google Cloud verwendet, darunter:
- Pub/Sub
- Cloud Run-Funktionen
- Cloud Build
Sie können mithilfe des Preisrechners die Kosten für Ihre voraussichtliche Nutzung kalkulieren.
Hinweis
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
)
IAM-Rollen für Security Command Center können auf Organisations-, Ordner- oder Projektebene gewährt werden. Ob Sie Ergebnisse, Assets und Sicherheitsquellen ansehen, bearbeiten, erstellen oder aktualisieren können, hängt davon ab, auf welcher Ebene Sie Zugriff erhalten. 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.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
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:
Geben Sie Ihr Google Cloud-Projekt in einer Umgebungsvariable an.
export PROJECT_ID=PROJECT_ID
Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.
Geben Sie Ihre Google Cloud-Organisation in einer Umgebungsvariable an.
export ORG_ID=ORG_ID
Ersetzen Sie ORG_ID durch Ihre Organisations-ID.
Legen Sie die Projekt-ID für
gcloud
-Befehle fest.gcloud config set project PROJECT_ID
Erstellen Sie das Pub/Sub-Thema, in dem Benachrichtigungen veröffentlicht werden.
gcloud pubsub topics create scc-critical-and-high-severity-findings-topic
Geben Sie das Thema in einer Umgebungsvariablen an.
export TOPIC=projects/$PROJECT_ID/topics/scc-critical-and-high-severity-findings-topic
Erstellen Sie das Abo, das Cloud Run-Funktionen 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
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 am Standort
global
veröffentlicht. Weitere Informationen zum Filtern von Ergebnissengcloud scc notifications create scc-critical-high-severity \ --pubsub-topic=$TOPIC \ --organization=$ORG_ID \ --location=global \ --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 Run-Funktionen oder Cloud Run-Funktionen der 1. Generation Benachrichtigungen nahezu in Echtzeit für SendGrid Email API, Slack und WebEx Teams aktivieren.
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 Run-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.
- Öffnen Sie die Google Cloud Console.
Zur Google Cloud Console - Suchen Sie im Suchfeld oben auf der Seite nach SendGrid Email API.
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.
Lesen Sie die Bedingungen und klicken Sie auf Abonnieren.
Aktivieren Sie den SendGrid-Dienst, indem Sie auf Bei SendGrid registrieren klicken.
Geben Sie auf dem Registrierungsbildschirm einen Nutzernamen, ein Passwort und eine E-Mail-Adresse ein. Akzeptieren Sie die Nutzungsbedingungen und klicken Sie auf Weiter.
Klicken Sie im Dialogfeld zur Bestätigung auf Zurück zu Google.
SendGrid Email API-Schlüssel erhalten
Klicken Sie auf API-Schlüssel auf der SendGrid-Website verwalten. Ein neuer Tab wird für die SendGrid-Website geöffnet.
Füllen Sie das Formular aus oder melden Sie sich an, wenn Sie dazu aufgefordert werden. Klicken Sie dann auf Erste Schritte.
Maximieren Sie im Menübereich die Option Einstellungen und klicken Sie auf API-Schlüssel.
Klicken Sie auf dem nächsten Bildschirm auf die Schaltfläche API-Schlüssel erstellen.
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.
Der API-Schlüssel wird angezeigt. Notieren Sie den Wert. Sie benötigen ihn im nächsten Abschnitt.
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 Run-Funktion bereit, um Benachrichtigungen an eine E-Mail-Adresse zu senden.
SendGrid Cloud Run-Funktion erstellen
In diesem Abschnitt stellen Sie eine Funktion bereit, die Benachrichtigungen an Ihr E-Mail-Konto sendet.
Rufen Sie die Cloud Run-Funktionen auf.
Zu den Cloud Run-FunktionenAchten Sie darauf, dass Sie dieselbe PROJECT_ID verwenden, die Sie zum Erstellen des Pub/Sub-Themas verwendet haben.
Klicken Sie auf Funktion erstellen.
Legen Sie den Funktionsname auf send-high-and-critical-finding-email-notification und den Triggertyp auf Pub/Sub fest.
Wählen Sie das Pub/Sub-Thema aus, das Sie unter Pub/Sub-Thema einrichten erstellt haben.
Klicken Sie auf Speichern und anschließend auf Weiter.
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 Run-Funktionen unterstützte Sprache verwenden.
Klicken Sie in der Dateiliste auf requirements.txt und fügen Sie Folgendes in das Textfeld ein:
sendgrid
.
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)
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.
- Ändern Sie
Rufen Sie das Feld Einstiegspunkt auf und geben Sie den Namen der Funktion in das Code-Snippet ein (in diesem Beispiel send_email_notification).
Klicken Sie auf Bereitstellen. Sie werden zur Liste der Cloud Run-Funktionen 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.
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 Run-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.
- Gehen Sie zu Slack API-Apps. Die Seite wird in einem neuen Tab geöffnet.
Melden Sie sich an oder erstellen Sie ein Konto.
Wählen Sie Anwendung erstellen aus.
Setzen Sie den App-Namen auf SCC Finding Notifier.
Wählen Sie den Slack-Entwicklungsarbeitsbereich aus, in dem der Slack-Bot Nachrichten posten soll, und klicken Sie dann auf App erstellen.
Wählen Sie im Navigationsbereich die Option OAuth & Berechtigungen aus.
Wechseln Sie zum Abschnitt Bereiche. Bereiche lassen sich in zwei Kategorien unterteilen:
- Bereiche für Bot-Token
- Bereiche für Nutzer-Token
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
Scrollen Sie zum Anfang der Seite OAuth & Berechtigungen und klicken Sie auf App in Arbeitsbereich installieren.
Klicken Sie im Dialogfeld zur Bestätigung auf Zulassen.
Kopieren Sie das OAuth-Zugriffstoken des Bot-Nutzers zur Verwendung in der Cloud Functions-Funktion.
Als Nächstes stellen Sie eine Cloud Run-Funktion bereit, um Benachrichtigungen an eine Slack-Gruppe zu senden.
Slack-Cloud Run-Funktion erstellen
In diesem Abschnitt stellen Sie eine Funktion bereit, um Benachrichtigungen an Ihr Slack-Konto zu senden.
Rufen Sie die Cloud Run-Funktionen auf.
Zu den Cloud Run-FunktionenAchten Sie darauf, dass Sie dieselbe PROJECT_ID verwenden, in der das Pub/Sub-Thema erstellt wurde.
Klicken Sie auf Funktion erstellen.
Legen Sie den Funktionsname auf slack-chat-high-and-critical-findings und den Triggertyp auf Pub/Sub fest.
Wählen Sie das Pub/Sub-Thema aus, das Sie unter Pub/Sub-Thema einrichten erstellt haben.
Klicken Sie auf Speichern und anschließend auf Weiter.
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 Run-Funktionen unterstützte Sprache verwenden.
Rufen Sie die Dateiliste auf. Klicken Sie auf requirements.txt und fügen Sie Folgendes hinzu:
requests
.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!" })
Ersetzen Sie
BOT_ACCESS_TOKEN
durch das OAuth-Zugriffstoken des Bot-Nutzers, das Sie mit der Slack-App erstellt haben.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).
Klicken Sie auf Bereitstellen. Sie werden zur Liste der Cloud Run-Funktionen 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.
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 Run-Funktion, die Pub/Sub abonniert und Chatnachrichten an WebEx sendet, wenn Sie Benachrichtigungen vom Pub/Sub-Thema erhalten. Stellen Sie die Cloud Run-Funktion anschließend bereit.
Dienstkonto erstellen
Cloud Run-Funktionen können standardmäßig keine Assets aus Security Command Center abrufen. In diesem Abschnitt stellen Sie ein Dienstkonto bereit, mit dem Cloud Run-Funktionen Assets abrufen können, die mit Ergebnissen verknüpft sind.
Benennen Sie das Dienstkonto und geben Sie es als Umgebungsvariable an.
export SERVICE_ACCOUNT=ACCOUNT_NAME
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
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.
Melden Sie sich in Ihrem WebEx Teams-Konto an und rufen Sie die Seite Neuer Bot auf.
Legen Sie den Namen des Bots auf SCC Finding Notifier fest.
Wählen Sie einen beschreibenden, aber eindeutigen Nutzernamen für den Bot aus (your-name-scc-finding-notifier-demo).
Wählen Sie unter Symbol die Option Standard 1 aus.
Legen Sie die Beschreibung auf "Ein Bot, der das Team benachrichtigt, wenn ein neues Ergebnis mit hohem oder kritischem Schweregrad veröffentlicht wird" fest.
Klicken Sie auf Bot hinzufügen.
Kopieren Sie auf der Bestätigungsseite das Bot-Zugriffstoken und speichern Sie es zur Verwendung in der Cloud Run-Funktion.
WebEx-Bot zum Arbeitsbereich hinzufügen
In diesem Abschnitt fügen Sie den WebEx-Bot einem Arbeitsbereich hinzu.
Maximieren Sie das Aktivitätsfeld im WebEx Space, in dem der Bot Benachrichtigungen posten soll.
Wählen Sie Personen hinzufügen aus.
Geben Sie in das Textfeld SCC Finding Notifier ein und wählen Sie den erstellten Bot aus dem Drop-down-Menü aus.
Wählen Sie die Schaltfläche Hinzufügen aus und schließen Sie das Feld.
Rufen Sie die Raum-ID des Arbeitsbereichs für die Cloud Run-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.
Rufen Sie das Suchfeld auf.
Wählen Sie oben im Bereich den Tab Ausprobieren aus.
Behalten Sie für alle Optionen die Standardwerte bei und klicken Sie auf Ausführen.
Im Tab Antwort erhalten Sie eine JSON-formatierte Antwort mit einer Liste von
items
oder Räumen. Suchen Sie dentitle
des Raums, in dem Benachrichtigungen angezeigt werden sollen, und notieren Sie den zugehörigenid
-Wert.
Als Nächstes stellen Sie eine Cloud Run-Funktion bereit, um Benachrichtigungen an Ihren WebEx-Arbeitsbereich zu senden.
WebEx-Cloud Run-Funktion erstellen
In diesem Abschnitt stellen Sie eine Funktion bereit, um Benachrichtigungen an Ihr WebEx-Konto zu senden.
Rufen Sie die Cloud Run-Funktionen auf.
Zu den Cloud Run-FunktionenWählen Sie die PROJECT_ID des Projekts aus, in dem das Pub/Sub-Thema erstellt wurde.
Klicken Sie auf Funktion erstellen.
Legen Sie den Funktionsname auf webex-teams-high-and-critical-findings und den Triggertyp auf Pub/Sub fest.
Wählen Sie das Pub/Sub-Thema aus, das Sie unter Pub/Sub-Thema einrichten erstellt haben.
Maximieren Sie das Feld Variablen, Netzwerk und erweiterte Einstellungen.
Filtern Sie unter Dienstkonto nach dem von Ihnen erstellten Dienstkonto
webex-cloud-function-sa
und wählen Sie es aus.Klicken Sie auf Speichern und anschließend auf Weiter.
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 Run-Funktionen unterstützte Sprache verwenden.
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
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}"}, )
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.
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).
Klicken Sie auf Bereitstellen. Sie werden zur Liste der Cloud Run-Funktionen 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.
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 Run-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.
- Wechseln Sie zur Seite "Ergebnisse" des Security Command Center.
Zur Seite "Ergebnisse" - Wählen Sie Ihre Organisation aus, wenn Sie dazu aufgefordert werden.
- Scrollen Sie im Bereich Schnellfilter nach unten zum Bereich 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.
- Wählen Sie im Bereich Ergebnisse der Suchanfrage ein Ergebnis aus, indem Sie das Kästchen neben dessen Namen anklicken.
- Wählen Sie in der Aktionsleiste Ergebnisse der Suchanfrage im Menü Aktiven Status ändern die Option Inaktiv aus. Wenn in der aktuellen Ergebnisabfrage nur aktive Ergebnisse angezeigt werden, wird das Ergebnis aus den Abfrageergebnissen entfernt.
- 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 Suchanfrage wird aktualisiert und zeigt nur inaktive Ergebnisse an.
- Wählen Sie im Bereich Ergebnisse der Ergebnisabfrage das Ergebnis aus, das Sie als inaktiv markiert haben.
- Wählen Sie in der Aktionsleiste Ergebnisabfrageergebnisse im Menü Aktiven Status ändern die Option Aktiv aus.
Prüfen Sie Ihren E-Mail- oder Messaging-Dienst. Es sollte eine Meldung ähnlich den unten stehenden Abbildungen angezeigt werden.
E-Mail:
Slack:
An WebEx gesendete Nachrichten, die weitere Informationen in dieser Anleitung enthalten, ähneln der folgenden Abbildung.
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
.
- 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
- Damit E-Mails nicht mehr in den Spamordner verschoben werden, fügen Sie der Zulassungsliste für E-Mails den Wert
SendGrid-E-Mail, Slack und WebEx:
Prüfen Sie in den Stackdriver-Logs, ob Ihre Cloud Run-Funktion aufgerufen wird. Wenn sie nicht aufgerufen wird, achten Sie darauf, dass Benachrichtigungen korrekt eingerichtet sind.
Wenn die Cloud Run-Funktion aufgerufen wird, kann sie abstürzen. Mit Google Cloud Console Error Reporting in Cloud Run-Funktionen 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 Sie behalten das Projekt und löschen die einzelnen Ressourcen.
Projekt löschen
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Einzelne Ressourcen löschen
So löschen Sie die Benachrichtigungskonfiguration:
gcloud scc notifications delete scc-critical-high-severity \ --organization=ORG_ID \ --location=global
Ersetzen Sie ORG_ID durch Ihre Organisations-ID.
Kommentieren Sie die Aufrufe
send
oderpost
in Ihrer Cloud Run-Funktion aus, um Ihre Konfiguration beizubehalten und Benachrichtigungen vorübergehend zu pausieren.So löschen Sie Ihre Cloud Run-Funktion:
- Rufen Sie die Cloud Run-Funktionen auf.
Zu den Cloud Run-Funktionen - Klicken Sie auf das Kästchen neben der Funktion, die Sie löschen möchten.
- Klicken Sie auf Löschen .
- Rufen Sie die Cloud Run-Funktionen auf.
Löschen Sie das Dienstkonto:
- Rufen Sie die Seite Dienstkonten auf.
Zur Seite "Dienstkonten" - Wählen Sie ein Projekt aus.
- Wählen Sie das Dienstkonto aus, das Sie löschen möchten, und klicken Sie auf Löschen .
- Rufen Sie die Seite Dienstkonten auf.
Nächste Schritte
- Weitere Informationen zu Benachrichtigungsfehlern
- Weitere Informationen zum Filtern von Benachrichtigungen
- Informationen zum Beheben von Problemen mit Ergebnissen in Web Security Scanner und Security Health Analytics