Ergebnisbenachrichtigungen für Pub/Sub aktivieren

Auf dieser Seite wird erläutert, wie Sie Security Command Center API-Benachrichtigungen aktivieren.

Benachrichtigungen senden Ergebnisse und Ergebnisaktualisierungen innerhalb von Minuten an ein Pub/Sub-Thema. Security Command Center API-Benachrichtigungen enthalten alle Ergebnisinformationen, die in Security Command Center in der Google Cloud Console angezeigt werden.

Sie können Security Command Center-Benachrichtigungen in Pub/Sub direkt mit Cloud Run-Funktionen verbinden. Beispielfunktionen, die beim Antworten, bei der Anreicherung und der Problembehebung helfen, finden Sie im Open-Source-Repository von Security Command Center unter Cloud Run-Funktionscode. Das Repository enthält Lösungen, die Sie bei der Durchführung automatisierter Aktionen zu Sicherheitsergebnissen unterstützen.

Alternativ können Sie Ergebnisse nach BigQuery exportieren oder in der Google Cloud Console kontinuierliche Exporte für Pub/Sub einrichten.

Hinweis

Zum Einrichten und Konfigurieren von Benachrichtigungen benötigen Sie die folgenden IAM-Rollen (Identity and Access Management):

  • Sicherheitscenter-Administrator (roles/securitycenter.Admin): zum Aktivieren von Benachrichtigungen der Security Command Center API
  • Sicherheitscenter-Admin-Betrachter (roles/securitycenter.adminViewer): für den Zugriff auf das Security Command Center in der Google Cloud Console
  • Wenn Sie dem Benachrichtigungsdienstkonto oder dem gcloud CLI-Konto Rollen auf Organisations-, Ordner- oder Projektebene zuweisen möchten, können Sie eine der folgenden Rollen verwenden:
    • Administrator der Organisation (roles/resourcemanager.organizationAdmin)
    • Ordner-IAM-Administrator (roles/resourcemanager.folderIamAdmin)
    • Project IAM Admin (roles/resourcemanager.projectIamAdmin)

Die IAM-Rollen für Security Command Center können in der Organisation, Ordner- oder Projektebene. 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 über Security Command Center-Rollen finden Sie unter Zugriffssteuerung.

Security Command Center API-Benachrichtigungen einrichten

Aktivieren Sie zum Einrichten von Benachrichtigungen der Security Command Center API.

Security Command Center API aktivieren

So aktivieren Sie das Security Command Center API:

  1. Rufen Sie in der Google Cloud Console die Seite „API-Bibliothek“ auf.

    Zur API-Bibliothek

  2. Wählen Sie das Projekt aus, für das Sie die Benachrichtigungs-API aktivieren möchten.

  3. Geben Sie im Feld Suchen Security Command Center ein und klicken Sie dann in den Suchergebnissen auf Security Command Center.

  4. Klicken Sie auf der angezeigten API-Seite auf Aktivieren.

Die Security Command Center API ist für Ihr Projekt aktiviert. Als Nächstes verwenden Sie das gcloud-CLI oder die Clientbibliotheken, um ein Pub/Sub-Thema zu abonnieren und Berechtigungen einzurichten.

Datenstandort und Benachrichtigungen

Wenn der Datenstandort für Security Command Center aktiviert ist, unterliegen die Konfigurationen, die Continuous Exports für Pub/Sub-notificationConfig-Ressourcen definieren, der Datenstandortsteuerung und werden an Ihrem Security Command Center-Speicherort gespeichert.

So exportieren Sie Ergebnisse an einem Security Command Center-Speicherort nach Pub/Sub verwenden, müssen Sie die kontinuierliche und zwar am selben Security Command Center-Speicherort wie die Ergebnisse.

Da die Filter, die in kontinuierlichen Exporte können Daten enthalten, die Standortkontrollen unterliegen, achten Sie darauf, dass Sie den richtigen Speicherort angeben, bevor Sie sie erstellen. Security Command Center schränkt nicht ein, welchen Standort Sie erstellen die Exporte enthalten sollen.

Kontinuierliche Exporte werden nur an dem Ort gespeichert, an dem sie erstellt wurden. Sie können an anderen Orten nicht angezeigt oder bearbeitet werden.

Nachdem Sie einen kontinuierlichen Export erstellt haben, können Sie diese Einstellung nicht mehr ihren Standort. Wenn Sie den Speicherort ändern möchten, müssen Sie den kontinuierlichen Export löschen und am neuen Speicherort neu erstellen.

So rufen Sie einen kontinuierlichen Export mithilfe von API-Aufrufen ab: müssen Sie den Standort im vollständigen Ressourcennamen der notificationConfig Beispiel:

GET https://securitycenter.googleapis.com/v2/{name=organizations/123/locations/eu/notificationConfigs/my-pubsub-export-01}

Wenn Sie einen kontinuierlichen Export mit der gcloud CLI abrufen möchten, müssen Sie den Speicherort entweder im vollständigen Ressourcennamen der Konfiguration oder mit dem Flag --locations angeben. Beispiel:

gcloud scc notifications describe myContinuousExport organizations/123 \
    --location=locations/us

Pub/Sub-Thema einrichten

In diesem Schritt erstellen und abonnieren Sie das Pub/Sub-Thema, an das Sie Benachrichtigungen senden möchten. Wenn Sie die API nicht programmatisch aufrufen müssen, werden die Befehle des gcloud CLI empfohlen.

gcloud

Führen Sie die folgenden Schritte aus, um das Benachrichtigungsfeature der Security Command Center API mit dem gcloud-CLI einzurichten:

  1. Pub/Sub-Thema und -Abo einrichten.
  2. Kontoberechtigungen für das gcloud-CLI einrichten

Schritt 1: Pub/Sub einrichten

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

  1. Öffnen Sie die Google Cloud Console.

    Weiter zur Google Cloud Console

  2. Wählen Sie das Projekt aus, für das Sie die Security Command Center API aktiviert haben.

  3. Klicken Sie auf Cloud Shell aktivieren .

  4. Führen Sie den folgenden Befehl aus, um ein neues Pub/Sub-Thema zu erstellen oder ein vorhandenes Thema zu verwenden:

      gcloud pubsub topics create TOPIC_ID
    

    Ersetzen Sie TOPIC_ID durch Ihren Themennamen.

  5. Legen Sie die Umgebungsvariable für die Themen-ID fest:

      export TOPIC_ID=TOPIC_ID
    
  6. Erstellen Sie ein Abo für das Thema:

      gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic TOPIC_ID
    

    Ersetzen Sie SUBSCRIPTION_ID durch den Namen Ihres Abos.

Weitere Informationen zum Einrichten von Pub/Sub finden Sie unter Themen und Abos verwalten.

Als Nächstes richten Sie Berechtigungen für Ihr Konto ein.

Schritt 2: Kontoberechtigungen für das gcloud-CLI einrichten

Wenn Sie eine NotificationConfig erstellen möchten, müssen Sie Ihrem gcloud CLI-Konto die folgenden Rollen zuweisen:

  • Sicherheitscenter-Administrator (roles/securitycenter.admin) oder Bearbeiter von Konfigurationen für Benachrichtigungen des Sicherheitscenters (roles/securitycenter.notificationConfigEditor). Diese Rolle muss auf derselben Ebene – Organisation, Ordner oder Projekt – zugewiesen werden, auf der Sie die NotificationConfig erstellen.
  • Pub/Sub-Administrator (roles/pubsub.admin) für das Pub/Sub-Thema, das Benachrichtigungen empfängt

auf die Organisation, den Ordner oder das Projekt Level

So erteilen Sie diese Berechtigungen:

  1. Öffnen Sie die Google Cloud Console.

    Weiter zur Google Cloud Console

  2. Wählen Sie das Projekt aus, für das Sie die Security Command Center API aktiviert haben.

  3. Klicken Sie auf Cloud Shell aktivieren.

    1. Geben Sie den Namen Ihrer Organisation ein:

      export ORGANIZATION_ID=ORGANIZATION_ID
      

      ORGANIZATION_ID durch Ihre Organisation ersetzen ID.

    2. Bestimmen Sie die Projekt-ID für das Projekt, zu dem das Pub/Sub-Thema gehört:

      export PUBSUB_PROJECT=PROJECT_ID
      

      Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.

    3. Bestimmen Sie das von Ihnen verwendete gcloud CLI-Konto:

      export GCLOUD_ACCOUNT=EMAIL
      

      Ersetzen Sie EMAIL durch die E-Mail-Adresse des Kontos, mit dem gcloud-CLI-Befehle ausgeführt werden.

    4. Legen Sie die Themen-ID fest oder verwenden Sie das zuvor eingerichtete Thema.

      export TOPIC_ID=TOPIC_ID
      

      Ersetzen Sie TOPIC_ID durch Ihren Themennamen.

    5. Gewähren Sie dem gcloud-CLI-Konto eine Pub/Sub-Rolle mit der Berechtigung pubsub.topics.setIamPolicy:

      gcloud pubsub topics add-iam-policy-binding \
        projects/$PUBSUB_PROJECT/topics/$TOPIC_ID \
        --member="user:$GCLOUD_ACCOUNT" \
        --role='roles/pubsub.admin'
      
    6. Weisen Sie dem gcloud-CLI-Konto eine Rolle zu, die alle securitycenter.notification-Berechtigungen enthält, z. B. roles/securitycenter.notificationConfigEditor oder roles/securitycenter.admin. Sie können die Rolle im Projekt, Ordner oder Organisationsebene.

      So gewähren Sie die Rolle auf Projektebene:

      gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="user:$GCLOUD_ACCOUNT" \
      --role='ROLE_NAME'
      

      Ersetzen Sie Folgendes:

      • PROJECT_ID: die ID des Projekts, in dem Security Command Center ist aktiviert
      • ROLE_NAME: die zugewiesene Rolle

      So weisen Sie die Rolle auf Organisationsebene zu:

      gcloud organizations add-iam-policy-binding $ORGANIZATION_ID \
        --member="user:$GCLOUD_ACCOUNT" \
        --role='ROLE_NAME'
      

      Ersetzen Sie ROLE_NAME durch die Rolle, die zugewiesen werden soll.

Als Nächstes erstellen Sie eine NotificationConfig.

Clientbibliotheken

Führen Sie die folgenden Schritte aus, um das Benachrichtigungsfeature der Security Command Center API mithilfe der Clientbibliotheken einzurichten:

  1. Dienstkonto einrichten.
  2. API-Clientbibliotheken herunterladen.
  3. Entwicklungsumgebung einrichten.
  4. Pub/Sub-Thema und -Abo einrichten.

Schritt 1: Dienstkonto einrichten

Das Benachrichtigungsfeature der Security Command Center API verwendet ein Dienstkonto mit den entsprechenden Berechtigungen zum Konfigurieren von Benachrichtigungen. Dieses Dienstkonto wird nur für die anfängliche Einrichtung einer Konfiguration verwendet und kann später verwendet werden, um weitere Benachrichtigungskonfigurationen zu erstellen. Dieses Dienstkonto ist unabhängig von dem Dienstkonto, das beim Einrichten des Security Command Center für Sie erstellt wurde.

So erstellen Sie ein Dienstkonto:

  1. Öffnen Sie die Google Cloud Console.

    Weiter zur Google Cloud Console

  2. Wählen Sie das Projekt aus, für das Sie die Security Command Center API aktiviert haben.

  3. Klicken Sie auf Cloud Shell aktivieren.

  4. Legen Sie Umgebungsvariablen fest:

    1. Geben Sie den Namen Ihrer Organisation ein:

        export ORGANIZATION_ID=ORGANIZATION_ID
      

      Ersetzen Sie ORGANIZATION_ID durch Ihre Organisations-ID.

    2. Legen Sie die Projekt-ID für das Projekt fest, in dem Sie das Benachrichtigungs-API aktivieren möchten:

        export PROJECT_ID=PROJECT_ID
      

      Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.

    3. Legen Sie die benutzerdefinierte ID fest, die Sie für das neue Dienstkonto verwenden möchten, z. B. scc-notifications. Der Name des Dienstkontos muss zwischen 6 und 30 Zeichen lang sein, mit einem Buchstaben beginnen und darf nur alphanumerische Zeichen in Kleinschreibung sowie Bindestriche enthalten:

        export SERVICE_ACCOUNT=CUSTOM_ID
      

      Ersetzen Sie CUSTOM_ID durch den benutzerdefinierten Namen für das Dienstkonto.

    4. Legen Sie den Pfad fest, unter dem der Dienstkontoschlüssel gespeichert werden soll, z. B. export KEY_LOCATION=/home/$USER/mykeys/$SERVICE_ACCOUNT.json:

        export KEY_LOCATION=FULL_KEY_LOCATION_PATH
        # This is used by client libraries to find the key
        export GOOGLE_APPLICATION_CREDENTIALS=$KEY_LOCATION
      

      Ersetzen Sie FULL_KEY_LOCATION_PATH durch den vollständigen Pfad zu Ihrem Dienstkontoschlüssel.

  5. Erstellen Sie ein Ihrer Projekt-ID zugeordnetes Dienstkonto:

       gcloud iam service-accounts create $SERVICE_ACCOUNT  --display-name \
        "Service Account for [USER]"  --project $PROJECT_ID
    
  6. Erstellen Sie einen Schlüssel zur Verknüpfung mit dem Dienstkonto. Der Schlüssel wird beim Erstellen einer NotificationConfig verwendet und dauerhaft unter der KEY_LOCATION gespeichert, die Sie in vorherigen Schritten angegeben haben.

       gcloud iam service-accounts keys create $KEY_LOCATION  --iam-account \
        $SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
    
  7. Gewähren Sie dem Dienstkonto eine Rolle, die alle securitycenter.notification-Berechtigungen enthält, z. B. roles/securitycenter.notificationConfigEditor oder roles/securitycenter.admin. Sie können die Rolle hier gewähren: Projekt-, Ordner- oder Organisationsebene.

    So weisen Sie die Rolle auf Projektebene zu:

       gcloud projects add-iam-policy-binding $PROJECT_ID \
         --member="serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com" \
         --role='ROLE_NAME'
    

    Ersetzen Sie ROLE_NAME durch die Rolle, die zugewiesen werden soll.

    So weisen Sie die Rolle auf Organisationsebene zu:

       gcloud organizations add-iam-policy-binding $ORGANIZATION_ID \
         --member="serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com" \
         --role='ROLE_NAME'
    

    Ersetzen Sie ROLE_NAME durch die Rolle, die zugewiesen werden soll.

Das Dienstkonto ist jetzt zur Verwendung mit Benachrichtigungen und dem Dienst eingerichtet. der Kontoschlüssel in der KEY_LOCATION gespeichert ist, angegeben ist. Weitere Informationen zu Dienstkonten finden Sie unter Dienstkontoschlüssel erstellen und verwalten.

Schritt 2: Entwicklungsumgebung einrichten

Um das Benachrichtigungsfeature der Security Command Center API zu nutzen, können Sie das gcloud CLI verwenden oder die Clientbibliotheken herunterladen und eine Entwicklungsumgebung für die Sprache Ihrer Wahl einrichten.

Python

  1. Optional: Bevor Sie die Python-Bibliothek installieren, empfehlen wir Ihnen, mit Virtualenv eine isolierte Python-Umgebung zu erstellen.

     virtualenv YOUR_ENV
     source YOUR_ENV/bin/activate
    

    Ersetzen Sie YOUR_ENV durch den Namen Ihrer virtuellen Umgebung.

  2. Installieren Sie pip, um die Installation der Python-Bibliothek zu verwalten.

  3. Führen Sie folgende Befehle aus, um die Python-Bibliothek zu installieren:

     pip install google-cloud-securitycenter
    

Java

Wenn Sie die Java-Bibliothek von Security Command Center als Abhängigkeit in Ihr Projekt aufnehmen möchten, wählen Sie ein Artefakt aus dem Maven-Repository aus. Benachrichtigungen sind in der Bibliothek ab Version 0.119.0 der Bibliothek enthalten.

Wenn Sie Intellij verwenden, legen Sie für die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS den absoluten Pfad des Dienstkontoschlüssels für Benachrichtigungen fest, den Sie in den vorherigen Schritten heruntergeladen haben:

  1. Klicken Sie in Intellij auf Ausführen > Konfigurationen bearbeiten.
  2. Bestimmen Sie folgende Variable unter Anwendung > Run_Configuration_For_Sample > Umgebungsvariablen:

      GOOGLE_APPLICATION_CREDENTIALS=ABSOLUTE_PATH_TO_SERVICE_ACCOUNT_KEY
    

    ABSOLUTE_PATH_TO_SERVICE_ACCOUNT_KEY ersetzen durch den vollständigen Pfad zu Ihrem Dienstkontoschlüssel.

Go

Laden Sie die Go-Bibliothek herunter, um API-Go-Abhängigkeiten zu installieren:

  go get cloud.google.com/go/securitycenter/apiv1

Node.js

Verwenden Sie im Projektordner npm, um alle erforderlichen Abhängigkeiten der Benachrichtigungs-API zu installieren:

  npm install --save @google-cloud/security-center/

Schritt 3: Pub/Sub einrichten

Wenn Sie Benachrichtigungen an Pub/Sub senden möchten, abonnieren Sie ein Pub/Sub-Thema und weisen Sie dem Benachrichtigungsdienstkonto eine IAM-Rolle mit der Berechtigung pubsub.topics.setIamPolicy zu:

  1. Erstellen Sie ein neues Pub/Sub-Thema oder verwenden Sie ein vorhandenes Thema:

       gcloud pubsub topics create TOPIC_ID
    

    Ersetzen Sie TOPIC_ID durch Ihre Themen-ID.

  2. Legen Sie Umgebungsvariablen fest:

    1. Legen Sie die Themen-ID fest:

        export TOPIC_ID=TOPIC_ID
      
    2. Legen Sie die Projekt-ID für das Projekt fest, in dem Sie die Benachrichtigungs-API aktiviert haben:

        export CONSUMER_PROJECT=PROJECT_ID
      

      Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.

    3. Legen Sie die E-Mail-Adresse des Dienstkontos fest, das Sie in vorherigen Schritten erstellt haben:

        export SERVICE_ACCOUNT_EMAIL=SERVICE_ACCOUNT_NAME@$CONSUMER_PROJECT.iam.gserviceaccount.com
      

      Ersetzen Sie SERVICE_ACCOUNT_NAME durch den Namen. des Dienstkontos.

  3. Erstellen Sie ein Abo für das Thema:

       gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic TOPIC_ID
    

    Ersetzen Sie SUBSCRIPTION_ID durch die Abo-ID.

  4. Gewähren Sie dem Benachrichtigungsdienstkonto eine Rolle mit dem Berechtigungs-pubsub.topics.setIamPolicy:

    gcloud pubsub topics add-iam-policy-binding \
         projects/$CONSUMER_PROJECT/topics/$TOPIC_ID \
      --member="serviceAccount:$SERVICE_ACCOUNT_EMAIL" \
      --role='roles/pubsub.admin'
    

Weitere Informationen zum Einrichten von Pub/Sub finden Sie unter Themen und Abos verwalten. Im nächsten Schritt schließen Sie die Einrichtung ab, indem Sie eine NotificationConfig erstellen.

NotificationConfig erstellen

Bevor Sie ein NotificationConfig erstellen, beachten Sie, dass jede Organisation ein eine begrenzte Anzahl von NotificationConfig-Dateien. Weitere Informationen finden Sie unter Kontingente und Limits.

Das Feld NotificationConfig enthält ein Feld filter, das Benachrichtigungen auf nützliche Ereignisse beschränkt. Dieses Feld akzeptiert alle Filter, die in der Security Command Center API findings.list .

Wenn Sie ein NotificationConfig erstellen, legen Sie ein übergeordnetes Element für die NotificationConfig aus der Google Cloud-Ressourcenhierarchie, entweder ein Organisation, Ordner oder Projekt. Wenn Sie die NotificationConfig später abrufen, aktualisieren oder löschen möchten, müssen Sie bei der Verlinkung die numerische ID der übergeordneten Organisation, des übergeordneten Ordners oder des übergeordneten Projekts angeben.

So erstellen Sie NotificationConfig mit der gewünschten Programmiersprache oder Plattform:

gcloud

gcloud scc notifications create NOTIFICATION_NAME \
--PARENT=PARENT_ID \
--location=LOCATION
--description="NOTIFICATION_DESCRIPTION" \
--pubsub-topic=PUBSUB_TOPIC \
--filter="FILTER"

Ersetzen Sie Folgendes:

  • NOTIFICATION_NAME: der Name der Benachrichtigung. Der Name muss zwischen 1 und 128 Zeichen lang sein und darf nur alphanumerische Zeichen, Unterstriche oder Bindestriche enthalten.
  • PARENT: Der Bereich in der Ressourcenhierarchie, auf den sich die Benachrichtigung bezieht, organization, folder oder project.
  • PARENT_ID: Die ID der übergeordneten Organisation, des übergeordneten Ordners oder des übergeordneten Projekts im Format organizations/123, folders/456 oder projects/789.
  • LOCATION: Wenn der Datenstandort aktiviert ist, geben Sie den Security Command Center-Standort an, an dem die Benachrichtigung erstellt werden soll. Der resultierende notificationConfig Ressource wird nur an diesem Standort gespeichert. Nur Ergebnisse, die an diesem Standort ausgegeben werden, werden an Pub/Sub gesendet.

Wenn der Datenstandort nicht aktiviert ist, wird durch Angabe des Flags --location erstellt, die Benachrichtigung mit der Security Command Center API v2. Die einzige gültige Wert für das Flag ist global. * NOTIFICATION_DESCRIPTION: eine Beschreibung des Benachrichtigung mit einer Länge von maximal 1024 Zeichen. * PUBSUB_TOPIC: Das Pub/Sub-Thema, an das Benachrichtigungen gesendet werden. Das Format ist projects/PROJECT_ID/topics/TOPICFILTER: Der Ausdruck, mit dem Sie auswählen, welche Ergebnisse an Pub/Sub gesendet werden. Beispiel: state=\"ACTIVE\"

Python

Im folgenden Beispiel wird die v1 API verwendet. So ändern Sie die Einstellungen: im Beispiel für v2, ersetzen Sie v1 durch v2 und fügen Sie /locations/LOCATION für den Ressourcennamen.

Fügen Sie bei den meisten Ressourcen dem Ressourcennamen nach /PARENT/PARENT_ID die Zahl /locations/LOCATION hinzu. Dabei steht PARENT für organizations, folders oder projects.

Fügen Sie der Ressource /locations/LOCATION hinzu, um Ergebnisse zu erhalten Name nach /sources/SOURCE_ID, wobei SOURCE_ID ist die ID des Security Command Center-Dienst die das Fundament erhalten haben.

def create_notification_config(parent_id, notification_config_id, pubsub_topic):
    """
    Args:
        parent_id: must be in one of the following formats:
            "organizations/{organization_id}"
            "projects/{project_id}"
            "folders/{folder_id}"
        notification_config_id: "your-config-id"
        pubsub_topic: "projects/{your-project-id}/topics/{your-topic-ic}"

    Ensure this ServiceAccount has the "pubsub.topics.setIamPolicy" permission on the new topic.
    """
    from google.cloud import securitycenter as securitycenter

    client = securitycenter.SecurityCenterClient()

    created_notification_config = client.create_notification_config(
        request={
            "parent": parent_id,
            "config_id": notification_config_id,
            "notification_config": {
                "description": "Notification for active findings",
                "pubsub_topic": pubsub_topic,
                "streaming_config": {"filter": 'state = "ACTIVE"'},
            },
        }
    )

    print(created_notification_config)

Java

Im folgenden Beispiel wird die v1-API verwendet. So ändern Sie die Einstellungen: im Beispiel für v2, ersetzen Sie v1 durch v2 und fügen Sie /locations/LOCATION für den Ressourcennamen.

Für die meisten Ressourcen fügen Sie /locations/LOCATION zum Ressourcenname nach /PARENT/PARENT_ID, wobei PARENT ist der organizations, folders, oder projects.

Fügen Sie der Ressource /locations/LOCATION hinzu, um Ergebnisse zu erhalten Name nach /sources/SOURCE_ID, wobei SOURCE_ID ist die ID des Security Command Center-Dienst die das Fundament erhalten haben.


import com.google.cloud.securitycenter.v1.CreateNotificationConfigRequest;
import com.google.cloud.securitycenter.v1.NotificationConfig;
import com.google.cloud.securitycenter.v1.NotificationConfig.StreamingConfig;
import com.google.cloud.securitycenter.v1.SecurityCenterClient;
import java.io.IOException;

public class CreateNotificationConfigSnippets {

  public static void main(String[] args) throws IOException {
    // parentId: must be in one of the following formats:
    //    "organizations/{organization_id}"
    //    "projects/{project_id}"
    //    "folders/{folder_id}"
    String parentId = String.format("organizations/%s", "ORG_ID");
    String notificationConfigId = "{config-id}";
    String projectId = "{your-project}";
    String topicName = "{your-topic}";

    createNotificationConfig(parentId, notificationConfigId, projectId, topicName);
  }

  // Crete a notification config.
  // Ensure the ServiceAccount has the "pubsub.topics.setIamPolicy" permission on the new topic.
  public static NotificationConfig createNotificationConfig(
      String parentId, String notificationConfigId, String projectId, String topicName)
      throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (SecurityCenterClient client = SecurityCenterClient.create()) {

      // Ensure this ServiceAccount has the "pubsub.topics.setIamPolicy" permission on the topic.
      String pubsubTopic = String.format("projects/%s/topics/%s", projectId, topicName);

      CreateNotificationConfigRequest request =
          CreateNotificationConfigRequest.newBuilder()
              .setParent(parentId)
              .setConfigId(notificationConfigId)
              .setNotificationConfig(
                  NotificationConfig.newBuilder()
                      .setDescription("Java notification config")
                      .setPubsubTopic(pubsubTopic)
                      .setStreamingConfig(
                          StreamingConfig.newBuilder().setFilter("state = \"ACTIVE\"").build())
                      .build())
              .build();

      NotificationConfig response = client.createNotificationConfig(request);
      System.out.printf("Notification config was created: %s%n", response);
      return response;
    }
  }
}

Go

Im folgenden Beispiel wird die v1 API verwendet. So ändern Sie die Einstellungen: im Beispiel für v2, ersetzen Sie v1 durch v2 und fügen Sie /locations/LOCATION für den Ressourcennamen.

Fügen Sie bei den meisten Ressourcen dem Ressourcennamen nach /PARENT/PARENT_ID die Zahl /locations/LOCATION hinzu. Dabei steht PARENT für organizations, folders oder projects.

Fügen Sie der Ressource /locations/LOCATION hinzu, um Ergebnisse zu erhalten Name nach /sources/SOURCE_ID, wobei SOURCE_ID ist die ID des Security Command Center-Dienst die das Fundament erhalten haben.

import (
	"context"
	"fmt"
	"io"

	securitycenter "cloud.google.com/go/securitycenter/apiv1"
	"cloud.google.com/go/securitycenter/apiv1/securitycenterpb"
)

func createNotificationConfig(w io.Writer, orgID string, pubsubTopic string, notificationConfigID string) error {
	// orgID := "your-org-id"
	// pubsubTopic := "projects/{your-project}/topics/{your-topic}"
	// notificationConfigID := "your-config-id"

	ctx := context.Background()
	client, err := securitycenter.NewClient(ctx)

	if err != nil {
		return fmt.Errorf("securitycenter.NewClient: %w", err)
	}
	defer client.Close()

	req := &securitycenterpb.CreateNotificationConfigRequest{
		// Parent must be in one of the following formats:
		//		"organizations/{orgId}"
		//		"projects/{projectId}"
		//		"folders/{folderId}"
		Parent:   fmt.Sprintf("organizations/%s", orgID),
		ConfigId: notificationConfigID,
		NotificationConfig: &securitycenterpb.NotificationConfig{
			Description: "Go sample config",
			PubsubTopic: pubsubTopic,
			NotifyConfig: &securitycenterpb.NotificationConfig_StreamingConfig_{
				StreamingConfig: &securitycenterpb.NotificationConfig_StreamingConfig{
					Filter: `state = "ACTIVE"`,
				},
			},
		},
	}

	notificationConfig, err := client.CreateNotificationConfig(ctx, req)
	if err != nil {
		return fmt.Errorf("Failed to create notification config: %w", err)
	}
	fmt.Fprintln(w, "New NotificationConfig created: ", notificationConfig)

	return nil
}

Node.js

Im folgenden Beispiel wird die v1-API verwendet. Wenn Sie das Beispiel für Version 2 anpassen möchten, ersetzen Sie v1 durch v2 und fügen Sie dem Ressourcennamen /locations/LOCATION hinzu.

Fügen Sie bei den meisten Ressourcen dem Ressourcennamen nach /PARENT/PARENT_ID die Zahl /locations/LOCATION hinzu. Dabei steht PARENT für organizations, folders oder projects.

Fügen Sie der Ressource /locations/LOCATION hinzu, um Ergebnisse zu erhalten Name nach /sources/SOURCE_ID, wobei SOURCE_ID ist die ID des Security Command Center-Dienst die das Fundament erhalten haben.

// npm install '@google-cloud/security-center'
const {SecurityCenterClient} = require('@google-cloud/security-center');

const client = new SecurityCenterClient();

// parent: must be in one of the following formats:
//    `organizations/${organization_id}`
//    `projects/${project_id}`
//    `folders/${folder_id}`
// configId = "your-config-name";
// pubsubTopic = "projects/{your-project}/topics/{your-topic}";
// Ensure this Service Account has the "pubsub.topics.setIamPolicy" permission on this topic.
const parent = `organizations/${organizationId}`;

async function createNotificationConfig() {
  const [response] = await client.createNotificationConfig({
    parent: parent,
    configId: configId,
    notificationConfig: {
      description: 'Sample config for node.js',
      pubsubTopic: pubsubTopic,
      streamingConfig: {filter: 'state = "ACTIVE"'},
    },
  });
  console.log('Notification config creation succeeded: ', response);
}

createNotificationConfig();

PHP

Im folgenden Beispiel wird die v1-API verwendet. Wenn Sie das Beispiel für Version 2 anpassen möchten, ersetzen Sie v1 durch v2 und fügen Sie dem Ressourcennamen /locations/LOCATION hinzu.

Für die meisten Ressourcen fügen Sie /locations/LOCATION zum Ressourcenname nach /PARENT/PARENT_ID, wobei PARENT ist der organizations, folders, oder projects.

Fügen Sie bei Ergebnissen dem Ressourcennamen nach /sources/SOURCE_ID die Zeichenfolge /locations/LOCATION hinzu. Dabei ist SOURCE_ID die ID des Security Command Center-Dienstes, der das Ergebnis ausgegeben hat.

use Google\Cloud\SecurityCenter\V1\Client\SecurityCenterClient;
use Google\Cloud\SecurityCenter\V1\CreateNotificationConfigRequest;
use Google\Cloud\SecurityCenter\V1\NotificationConfig;
use Google\Cloud\SecurityCenter\V1\NotificationConfig\StreamingConfig;

/**
 * @param string $organizationId        Your org ID
 * @param string $notificationConfigId  A unique identifier
 * @param string $projectId             Your Cloud Project ID
 * @param string $topicName             Your topic name
 */
function create_notification(
    string $organizationId,
    string $notificationConfigId,
    string $projectId,
    string $topicName
): void {
    $securityCenterClient = new SecurityCenterClient();
    // 'parent' must be in one of the following formats:
    //		"organizations/{orgId}"
    //		"projects/{projectId}"
    //		"folders/{folderId}"
    $parent = $securityCenterClient::organizationName($organizationId);
    $pubsubTopic = $securityCenterClient::topicName($projectId, $topicName);

    $streamingConfig = (new StreamingConfig())->setFilter('state = "ACTIVE"');
    $notificationConfig = (new NotificationConfig())
        ->setDescription('A sample notification config')
        ->setPubsubTopic($pubsubTopic)
        ->setStreamingConfig($streamingConfig);
    $createNotificationConfigRequest = (new CreateNotificationConfigRequest())
        ->setParent($parent)
        ->setConfigId($notificationConfigId)
        ->setNotificationConfig($notificationConfig);

    $response = $securityCenterClient->createNotificationConfig($createNotificationConfigRequest);
    printf('Notification config was created: %s' . PHP_EOL, $response->getName());
}

Ruby

Im folgenden Beispiel wird die v1 API verwendet. Wenn Sie das Beispiel für Version 2 anpassen möchten, ersetzen Sie v1 durch v2 und fügen Sie dem Ressourcennamen /locations/LOCATION hinzu.

Fügen Sie bei den meisten Ressourcen dem Ressourcennamen nach /PARENT/PARENT_ID die Zahl /locations/LOCATION hinzu. Dabei steht PARENT für organizations, folders oder projects.

Fügen Sie der Ressource /locations/LOCATION hinzu, um Ergebnisse zu erhalten Name nach /sources/SOURCE_ID, wobei SOURCE_ID ist die ID des Security Command Center-Dienst die das Fundament erhalten haben.

require "google/cloud/security_center"

# Your organization id. e.g. for "organizations/123", this would be "123".
# org_id = "YOUR_ORGANZATION_ID"

# Your notification config id. e.g. for
# "organizations/123/notificationConfigs/my-config" this would be "my-config".
# config_id = "YOUR_CONFIG_ID"

# The PubSub topic where notifications will be published.
# pubsub_topic = "YOUR_TOPIC"

client = Google::Cloud::SecurityCenter.security_center

# You can also use 'project_id' or 'folder_id' as a parent.
# client.project_path project: project_id
# client.folder_path folder: folder_id
parent = client.organization_path organization: org_id

notification_config = {
  description:      "Sample config for Ruby",
  pubsub_topic:     pubsub_topic,
  streaming_config: { filter: 'state = "ACTIVE"' }
}

response = client.create_notification_config(
  parent:              parent,
  config_id:           config_id,
  notification_config: notification_config
)
puts "Created notification config #{config_id}: #{response}."

C#

Im folgenden Beispiel wird die v1-API verwendet. So ändern Sie die Einstellungen: im Beispiel für v2, ersetzen Sie v1 durch v2 und fügen Sie /locations/LOCATION für den Ressourcennamen.

Für die meisten Ressourcen fügen Sie /locations/LOCATION zum Ressourcenname nach /PARENT/PARENT_ID, wobei PARENT ist der organizations, folders, oder projects.

Fügen Sie der Ressource /locations/LOCATION hinzu, um Ergebnisse zu erhalten Name nach /sources/SOURCE_ID, wobei SOURCE_ID ist die ID des Security Command Center-Dienst die das Fundament erhalten haben.


using Google.Api.Gax.ResourceNames;
using Google.Cloud.SecurityCenter.V1;
using System;

///<summary> Create NotificationConfig Snippet. </summary>
public class CreateNotificationConfigSnippets
{
    public static NotificationConfig CreateNotificationConfig(
        string organizationId, string notificationConfigId, string projectId, string topicName)
    {
        // You can also use 'projectId' or 'folderId' instead of the 'organizationId'.
        //      ProjectName projectName = new ProjectName(projectId);
        //      FolderName folderName = new FolderName(folderId);
        OrganizationName orgName = new OrganizationName(organizationId);
        TopicName pubsubTopic = new TopicName(projectId, topicName);

        SecurityCenterClient client = SecurityCenterClient.Create();
        CreateNotificationConfigRequest request = new CreateNotificationConfigRequest
        {
            ParentAsOrganizationName = orgName,
            ConfigId = notificationConfigId,
            NotificationConfig = new NotificationConfig
            {
                Description = ".Net notification config",
                PubsubTopicAsTopicName = pubsubTopic,
                StreamingConfig = new NotificationConfig.Types.StreamingConfig { Filter = "state = \"ACTIVE\"" }
            }
        };

        NotificationConfig response = client.CreateNotificationConfig(request);
        Console.WriteLine($"Notification config was created: {response}");
        return response;
    }
}

Benachrichtigungen werden jetzt in dem von Ihnen angegebenen Pub/Sub-Thema veröffentlicht.

Für die Veröffentlichung von Benachrichtigungen wird ein Dienstkonto in der Form service-org-ORGANIZATION_ID@gcp-sa-scc-notification.iam.gserviceaccount.com erstellt. Dieses Dienstkonto wird beim Erstellen der ersten NotificationConfig erstellt und erhält beim Erstellen der Benachrichtigungskonfiguration automatisch die Rolle securitycenter.notificationServiceAgent in der IAM-Richtlinie für PUBSUB_TOPIC. Diese Dienstkontorolle ist erforderlich, damit Benachrichtigungen funktionieren.

Perimeterzugriff in VPC Service Controls gewähren

Wenn Sie VPC Service Controls verwenden und Ihr Pub/Sub-Thema Teil eines Projekts innerhalb eines Dienstperimeters ist, müssen Sie Zugriff auf Projekte gewähren, um Benachrichtigungen erstellen zu können.

Erstellen Sie Regeln für eingehenden und ausgehenden Traffic für die Hauptkonten, um Zugriff auf Projekte zu gewähren und Projekte, die zum Erstellen von Benachrichtigungen verwendet werden. Die Regeln erlauben den Zugriff auf geschützte Ressourcen und ermöglichen Pub/Sub zu prüfen, ob Nutzer die Berechtigung setIamPolicy für das Pub/Sub-Thema haben.

Vor dem Erstellen einer NotificationConfig

Führen Sie die folgenden Schritte aus, bevor Sie die Schritte unter NotificationConfig erstellen ausführen:

  1. Rufen Sie in der Google Cloud Console die Seite „VPC Service Controls“ auf.

    Zu „VPC Service Controls“

  2. Wählen Sie gegebenenfalls Ihre Organisation aus.

  3. Klicken Sie auf den Namen des Dienstperimeters, den Sie ändern möchten.

    Um den Dienstperimeter zu finden, den Sie ändern müssen, können Sie Ihre Logs auf Einträge prüfen, die RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER-Verstöße enthalten. Prüfen Sie in diesen Einträgen das Feld servicePerimeterName: accessPolicies/ACCESS_POLICY_ID/servicePerimeters/SERVICE_PERIMETER_NAME.

  4. Klicken Sie auf Perimeter bearbeiten.

  5. Klicken Sie im Navigationsmenü auf Richtlinie für eingehenden Traffic.

  6. Verwenden Sie die folgenden Parameter, um Regeln für eingehenden Traffic für Nutzer oder Dienstkonten zu konfigurieren:

    • FROM-Attribute des API-Clients:
      • Wählen Sie im Drop-down-Menü Quelle die Option Alle Quellen aus.
      • Wählen Sie im Drop-down-Menü Identitäten die Option Ausgewählte Identitäten aus.
      • Klicken Sie auf Auswählen und geben Sie dann den Nutzer ein, mit dem die Security Command Center API aufgerufen wird.
    • TO-Attribute von Google Cloud-Diensten/-Ressourcen:
      • Wählen Sie im Drop-down-Menü Projekt die Option Ausgewählte Projekte aus.
      • Klicken Sie auf Auswählen und geben Sie das Projekt ein, das das Pub/Sub-Thema enthält.
      • Wählen Sie im Drop-down-Menü Dienste die Option Ausgewählte Dienste und dann Cloud Pub/Sub API aus.
      • Wählen Sie im Drop-down-Menü Methoden die Option Alle Aktionen aus.
  7. Klicken Sie auf Speichern.

  8. Klicken Sie im Navigationsmenü auf Richtlinie für ausgehenden Traffic.

  9. Klicken Sie auf Add Rule (Regel hinzufügen).

  10. Geben Sie folgende Parameter ein, um Regeln für ausgehenden Traffic für Nutzer- oder Dienstkonten zu konfigurieren:

    • FROM-Attribute des API-Clients:
      • Wählen Sie im Drop-down-Menü Identitäten die Option Ausgewählte Identitäten aus.
      • Klicken Sie auf Auswählen und geben Sie dann den Nutzer ein, mit dem die Security Command Center API aufgerufen wird.
    • TO-Attribute von Google Cloud-Diensten/-Ressourcen:
      • Wählen Sie im Drop-down-Menü Projekt die Option Alle Projekte aus.
      • Wählen Sie im Drop-down-Menü Dienste die Option Ausgewählte Dienste und dann Cloud Pub/Sub API aus.
      • Wählen Sie im Drop-down-Menü Methoden die Option Alle Aktionen aus.
  11. Klicken Sie auf Speichern.

Regel für eingehenden Traffic für die NotificationConfig erstellen

So erstellen Sie eine Regel für eingehenden Traffic für eine NotificationConfig:

  1. Folgen Sie der Anleitung unter NotificationConfig erstellen.
  2. Öffnen Sie noch einmal den Dienstperimeter aus dem vorherigen Abschnitt.
  3. Klicken Sie auf Richtlinie für eingehenden Traffic.
  4. Klicken Sie auf Add Rule (Regel hinzufügen).
  5. Geben Sie die folgenden Parameter ein, um die Regel für eingehenden Traffic für das von Ihnen erstellte NotificationConfig-Dienstkonto zu konfigurieren:
    • FROM-Attribute des API-Clients:
      • Wählen Sie im Drop-down-Menü Quelle die Option Alle Quellen aus.
      • Wählen Sie im Drop-down-Menü Identitäten die Option Ausgewählte Identitäten aus.
      • Klicken Sie auf Auswählen und geben Sie den Namen des NotificationConfig-Dienstkontos ein: service-org-ORGANIZATION_ID@gcp-sa-scc-notification.iam.gserviceaccount.com.
    • TO-Attribute von GCP-Diensten/-Ressourcen:
      • Wählen Sie im Drop-down-Menü Projekt die Option Ausgewählte Projekte aus.
      • Klicken Sie auf Auswählen und wählen Sie dann das Projekt aus, das das Pub/Sub-Thema enthält.
      • Wählen Sie im Drop-down-Menü Dienste die Option Ausgewählte Dienste und dann Cloud Pub/Sub API aus.
      • Wählen Sie im Drop-down-Menü Methoden die Option Alle Aktionen aus.
  6. Klicken Sie im Navigationsmenü auf Speichern.

Die ausgewählten Projekte, Nutzer und Dienstkonten können jetzt auf die geschützten Ressourcen zugreifen und Benachrichtigungen erstellen.

Wenn Sie alle Schritte in dieser Anleitung ausgeführt haben und Benachrichtigungen ordnungsgemäß funktionieren, können Sie jetzt Folgendes löschen:

  • Die Eingangsregel für das Hauptkonto
  • Die Ausgangsregel für das Hauptkonto

Diese Regeln waren nur für die Konfiguration der NotificationConfig erforderlich. Damit Benachrichtigungen weiterhin funktionieren, müssen Sie jedoch die Regel für eingehenden Traffic für die NotificationConfig beibehalten, damit sie Benachrichtigungen in Ihrem Pub/Sub-Thema hinter dem Dienstperimeter veröffentlichen kann.

Nächste Schritte