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. Die Benachrichtigungen der Security Command Center API enthalten alle Ergebnisinformationen, die von Security Command Center in der Google Cloud Console angezeigt werden.

Sie können Security Command Center-Benachrichtigungen in Pub/Sub direkt mit Cloud Functions-Aktionen verbinden. Beispielfunktionen, die beim Antworten, bei der Anreicherung und der Problembehebung helfen, finden Sie im Open-Source-Repository von Security Command Center unter Cloud Functions-Code. 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.

Hinweise

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
  • Security Center Admin Viewer (roles/securitycenter.adminViewer): für den Zugriff auf Security Command Center in der Google Cloud Console
  • Wenn Sie dem Dienstkonto für Benachrichtigungen oder dem gcloud CLI-Konto Rollen auf Organisations-, Ordner- oder Projektebene zuweisen möchten, müssen Sie dafür 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 auf Organisations-, Ordner- oder Projektebene gewährt werden. Die Möglichkeit, Ergebnisse, Assets und Sicherheitsquellen anzusehen, zu bearbeiten, zu erstellen oder zu aktualisieren, hängt von der Ebene ab, auf die Ihnen Zugriff gewährt wurde. Weitere Informationen zu 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, mit denen kontinuierliche Exporte in Pub/Sub-Ressourcen (notificationConfig) definiert werden, der Datenstandortkontrolle und werden an Ihrem Security Command Center-Standort gespeichert.

Wenn Sie Ergebnisse von einem Security Command Center-Speicherort nach Pub/Sub exportieren möchten, müssen Sie den kontinuierlichen Export am selben Security Command Center-Speicherort wie die Ergebnisse konfigurieren.

Da die in kontinuierlichen Exporten verwendeten Filter Daten enthalten können, die Standortkontrollen unterliegen, müssen Sie vor dem Erstellen unbedingt den richtigen Speicherort angeben. Security Command Center schränkt nicht den Speicherort ein, an dem Exporte erstellt werden.

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

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

Wenn Sie einen kontinuierlichen Export mithilfe von API-Aufrufen abrufen möchten, müssen Sie den Standort im vollständigen Ressourcennamen von notificationConfig angeben. Beispiel:

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

Wenn Sie einen kontinuierlichen Export über die gcloud CLI abrufen möchten, müssen Sie den Speicherort auf ähnliche Weise entweder im vollständigen Ressourcennamen der Konfiguration oder mithilfe des Flags --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

Zum Erstellen eines NotificationConfig müssen Sie Ihrem gcloud CLI-Konto die folgenden Rollen zuweisen:

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

auf Organisations-, Ordner- oder Projektebene festgelegt haben,

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
      

      Ersetzen Sie ORGANIZATION_ID durch Ihre Organisations-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, in 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 auf Projekt-, Ordner- oder Organisationsebene zuweisen.

      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 aktiviert ist
      • ROLE_NAME: die Rolle, die zugewiesen werden soll

      So gewähren Sie die Rolle auf Organisationsebene:

      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 des Dienstkontos.

    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 auf Projekt-, Ordner- oder Organisationsebene zuweisen.

    So gewähren Sie die Rolle auf Projektebene:

       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 gewähren Sie die Rolle auf Organisationsebene:

       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 für die Verwendung mit Benachrichtigungen eingerichtet und der Dienstkontoschlüssel wird unter dem von Ihnen angegebenen KEY_LOCATION gespeichert. 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
    

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

Einfach loslegen (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 eine begrenzte Anzahl von NotificationConfig-Dateien haben kann. Weitere Informationen finden Sie unter Kontingente und Limits.

Das Feld NotificationConfig enthält ein Feld filter, das Benachrichtigungen auf nützliche Ereignisse beschränkt. In diesem Feld werden alle Filter akzeptiert, die in der Methode findings.list der Security Command Center API verfügbar sind.

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

So erstellen Sie den NotificationConfig mit der Sprache oder Plattform Ihrer Wahl:

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. Muss 1 bis 128 Zeichen lang sein und darf nur alphanumerische Zeichen, Unterstriche oder Bindestriche enthalten.
  • PARENT: der Bereich in der Ressourcenhierarchie, für den die Benachrichtigung gilt, organization, folder oder project.
  • PARENT_ID: Die ID der übergeordneten Organisation, des übergeordneten Ordners oder des Projekts im Format organizations/123, folders/456 oder projects/789.
  • LOCATION: Wenn der Datenstandort aktiviert ist, geben Sie den Speicherort von Security Command Center an, an dem die Benachrichtigung erstellt werden soll. Die resultierende notificationConfig-Ressource wird nur an diesem Speicherort gespeichert. Nur an diesem Standort ausgegebene Ergebnisse werden an Pub/Sub gesendet.

    Wenn der Datenstandort nicht aktiviert ist, wird durch Angabe des Flags --location die Benachrichtigung mithilfe der Security Command Center API v2 erstellt. Der einzige gültige Wert für das Flag ist global.

  • NOTIFICATION_DESCRIPTION: eine Beschreibung der Benachrichtigung mit maximal 1.024 Zeichen.

  • PUBSUB_TOPIC: Das Pub/Sub-Thema, das die Benachrichtigungen erhalten soll. Das Format ist projects/PROJECT_ID/topics/TOPIC.

  • FILTER: Der Ausdruck, den Sie definieren, um auszuwählen, welche Ergebnisse an Pub/Sub gesendet werden. Beispiel: state="ACTIVE"

Python

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

Für die meisten Ressourcen fügen Sie dem Ressourcennamen nach /PARENT/PARENT_ID /locations/LOCATION hinzu, wobei PARENT entweder organizations, folders oder projects ist.

Fügen Sie für Ergebnisse /locations/LOCATION dem Ressourcennamen nach /sources/SOURCE_ID hinzu, wobei SOURCE_ID die ID des Security Command Center-Dienstes ist, der das Ergebnis ausgestellt hat.

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 API V1 verwendet. Wenn Sie das Beispiel für v2 ändern möchten, ersetzen Sie v1 durch v2 und fügen Sie dem Ressourcennamen /locations/LOCATION hinzu.

Für die meisten Ressourcen fügen Sie dem Ressourcennamen nach /PARENT/PARENT_ID /locations/LOCATION hinzu, wobei PARENT entweder organizations, folders oder projects ist.

Fügen Sie für Ergebnisse /locations/LOCATION dem Ressourcennamen nach /sources/SOURCE_ID hinzu, wobei SOURCE_ID die ID des Security Command Center-Dienstes ist, der das Ergebnis ausgestellt hat.


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;
    }
  }
}

Einfach loslegen (Go)

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

Für die meisten Ressourcen fügen Sie dem Ressourcennamen nach /PARENT/PARENT_ID /locations/LOCATION hinzu, wobei PARENT entweder organizations, folders oder projects ist.

Fügen Sie für Ergebnisse /locations/LOCATION dem Ressourcennamen nach /sources/SOURCE_ID hinzu, wobei SOURCE_ID die ID des Security Command Center-Dienstes ist, der das Ergebnis ausgestellt hat.

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 API V1 verwendet. Wenn Sie das Beispiel für v2 ändern möchten, ersetzen Sie v1 durch v2 und fügen Sie dem Ressourcennamen /locations/LOCATION hinzu.

Für die meisten Ressourcen fügen Sie dem Ressourcennamen nach /PARENT/PARENT_ID /locations/LOCATION hinzu, wobei PARENT entweder organizations, folders oder projects ist.

Fügen Sie für Ergebnisse /locations/LOCATION dem Ressourcennamen nach /sources/SOURCE_ID hinzu, wobei SOURCE_ID die ID des Security Command Center-Dienstes ist, der das Ergebnis ausgestellt hat.

// 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 API V1 verwendet. Wenn Sie das Beispiel für v2 ändern möchten, ersetzen Sie v1 durch v2 und fügen Sie dem Ressourcennamen /locations/LOCATION hinzu.

Für die meisten Ressourcen fügen Sie dem Ressourcennamen nach /PARENT/PARENT_ID /locations/LOCATION hinzu, wobei PARENT entweder organizations, folders oder projects ist.

Fügen Sie für Ergebnisse /locations/LOCATION dem Ressourcennamen nach /sources/SOURCE_ID hinzu, wobei SOURCE_ID die ID des Security Command Center-Dienstes ist, der das Ergebnis ausgestellt 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 API V1 verwendet. Wenn Sie das Beispiel für v2 ändern möchten, ersetzen Sie v1 durch v2 und fügen Sie dem Ressourcennamen /locations/LOCATION hinzu.

Für die meisten Ressourcen fügen Sie dem Ressourcennamen nach /PARENT/PARENT_ID /locations/LOCATION hinzu, wobei PARENT entweder organizations, folders oder projects ist.

Fügen Sie für Ergebnisse /locations/LOCATION dem Ressourcennamen nach /sources/SOURCE_ID hinzu, wobei SOURCE_ID die ID des Security Command Center-Dienstes ist, der das Ergebnis ausgestellt hat.

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 API V1 verwendet. Wenn Sie das Beispiel für v2 ändern möchten, ersetzen Sie v1 durch v2 und fügen Sie dem Ressourcennamen /locations/LOCATION hinzu.

Für die meisten Ressourcen fügen Sie dem Ressourcennamen nach /PARENT/PARENT_ID /locations/LOCATION hinzu, wobei PARENT entweder organizations, folders oder projects ist.

Fügen Sie für Ergebnisse /locations/LOCATION dem Ressourcennamen nach /sources/SOURCE_ID hinzu, wobei SOURCE_ID die ID des Security Command Center-Dienstes ist, der das Ergebnis ausgestellt hat.


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 erstellt, wenn Sie Ihren ersten NotificationConfig erstellen, und erhält beim Erstellen der Benachrichtigungskonfiguration automatisch die Rolle securitycenter.notificationServiceAgent für die 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.

Wenn Sie Zugriff auf Projekte gewähren möchten, erstellen Sie Regeln für eingehenden und ausgehenden Traffic für die Hauptkonten 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 das Hauptkonto ein, das zum Aufrufen der Security Command Center API verwendet 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 das Hauptkonto ein, das zum Aufrufen der Security Command Center API verwendet 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:

  • Eingangsregel für das Hauptkonto
  • 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