Abilita le notifiche sui risultati per Pub/Sub

Questa pagina spiega come abilitare le notifiche dell'API Security Command Center.

Le notifiche inviano i risultati e gli aggiornamenti sui risultati a un argomento Pub/Sub in pochi minuti. Le notifiche dell'API Security Command Center includono tutti i risultati visualizzate da Security Command Center nella nella console Google Cloud.

Puoi connettere le notifiche di Security Command Center in Pub/Sub direttamente alle azioni Cloud Functions. Per per funzioni di esempio utili per la risposta, l'arricchimento e la correzione, vedi il repository open source Security Command Center del codice Cloud Functions. Il repository contiene soluzioni per aiutarti a eseguire azioni automatizzate in materia di sicurezza i risultati.

In alternativa, puoi esportare i risultati in BigQuery oppure configurare le esportazioni continue per Pub/Sub nella console Google Cloud.

Prima di iniziare

Per impostare e configurare le notifiche, devi disporre di quanto segue Ruoli IAM (Identity and Access Management):

  • Amministratore Centro sicurezza (roles/securitycenter.Admin): per attivare Notifiche dell'API Security Command Center
  • Visualizzatore amministratore Centro sicurezza (roles/securitycenter.adminViewer): per Accesso a Security Command Center nella console Google Cloud
  • Per concedere ruoli all'account di servizio delle notifiche o l'account gcloud CLI a livello di organizzazione a livello di cartella o di progetto, uno dei seguenti ruoli:
    • Amministratore organizzazione (roles/resourcemanager.organizationAdmin)
    • Amministratore IAM cartella (roles/resourcemanager.folderIamAdmin)
    • Amministratore IAM progetto (roles/resourcemanager.projectIamAdmin)

I ruoli IAM per Security Command Center possono essere concessi a livello di organizzazione, a livello di cartella o di progetto. La tua possibilità di visualizzare, modificare, creare o aggiornare risultati, asset e le origini di sicurezza dipendono dal livello a cui ti viene concesso l'accesso. Per ulteriori informazioni Per saperne di più sui ruoli di Security Command Center, consulta Controllo dell'accesso.

Configurazione delle notifiche dell'API Security Command Center

Per configurare le notifiche, abilita prima l'API Security Command Center.

Abilitazione dell'API Security Command Center

Per abilitare l'API Security Command Center:

  1. Vai alla pagina Libreria API nella console Google Cloud.

    Vai alla libreria API

  2. Seleziona il progetto per cui vuoi abilitare l'API Notifications.

  3. Nella casella Cerca, inserisci Security Command Center e fai clic su Security Command Center nei risultati di ricerca.

  4. Nella pagina dell'API visualizzata, fai clic su Abilita.

L'API Security Command Center è abilitata per il tuo progetto. Quindi, utilizzi gcloud CLI o le librerie client per sottoscrivere un Pub/Sub e configurare le autorizzazioni.

Residenza dei dati e notifiche

Se la residenza dei dati è abilitata per Security Command Center, le configurazioni che esportazioni continue Pub/Sub (notificationConfig risorse) è soggetto al controllo della residenza dei dati e sono archiviati Posizione di Security Command Center.

Per esportare i risultati in una località di Security Command Center in Pub/Sub, devi configurare la configurazione nella stessa posizione di Security Command Center dei risultati.

Poiché i filtri usati in modo continuo possono contenere dati soggetti a controlli di residenza, assicurati di specificare la posizione corretta prima di crearle. Security Command Center non limita la località che crei .

Le esportazioni continue vengono archiviate solo nella località in in cui vengono creati e non possono essere visualizzati o modificati in altre posizioni.

Dopo aver creato un'esportazione continua, non puoi modificare la sua posizione. Per modificare la località, devi eliminare l'esportazione continua e ricrearla nella nuova posizione.

Per recuperare un'esportazione continua mediante le chiamate API, devi specificare la località nel nome completo notificationConfig. Ad esempio:

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

Analogamente, per recuperare un'esportazione continua utilizzando con gcloud CLI, devi specificare la posizione nel nome completo della risorsa della configurazione o utilizzando --locations flag. Ad esempio:

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

Configurazione di un argomento Pub/Sub

In questo passaggio, creerai e sottoscriverai l'argomento Pub/Sub che a cui vuoi inviare le notifiche. Se non devi effettuare una chiamata programmatica l'API, si consigliano i comandi gcloud CLI.

gcloud

Per configurare la funzionalità di notifica dell'API Security Command Center utilizzando gcloud CLI, esegui questi passaggi:

  1. Configurare un argomento e una sottoscrizione Pub/Sub.
  2. Configura le autorizzazioni dell'account gcloud CLI.

Passaggio 1: configura Pub/Sub

Per configurare e sottoscrivere un argomento Pub/Sub, segui questi passaggi:

  1. Vai alla console Google Cloud.

    Vai alla console Google Cloud

  2. Seleziona il progetto per il quale hai abilitato l'API Security Command Center.

  3. Fai clic su Attiva Cloud Shell.

  4. Per creare un nuovo argomento Pub/Sub o utilizzare un argomento esistente, esegui questo comando:

      gcloud pubsub topics create TOPIC_ID
    

    Sostituisci TOPIC_ID con il nome dell'argomento.

  5. Imposta la variabile di ambiente dell'ID argomento:

      export TOPIC_ID=TOPIC_ID
    
  6. Crea una sottoscrizione all'argomento:

      gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic TOPIC_ID
    

    Sostituisci SUBSCRIPTION_ID con il tuo abbonamento .

Per saperne di più sulla configurazione di Pub/Sub, consulta Gestione degli argomenti e degli abbonamenti.

Poi devi impostare le autorizzazioni per il tuo account.

Passaggio 2: configura le autorizzazioni dell'account gcloud CLI

Per creare un NotificationConfig, devi concedere i seguenti ruoli al tuo account gcloud CLI:

  • Amministratore Centro sicurezza (roles/securitycenter.admin) o Editor configurazioni notifiche Centro sicurezza (roles/securitycenter.notificationConfigEditor). Questo ruolo deve essere assegnati allo stesso livello: organizzazione, cartella progetto in cui stai creando il NotificationConfig.
  • Amministratore Pub/Sub (roles/pubsub.admin) nella Argomento Pub/Sub che riceve notifiche

nell'organizzazione, nella cartella o nel progetto livello

Per concedere queste autorizzazioni:

  1. Vai alla console Google Cloud.

    Vai alla console Google Cloud

  2. Seleziona il progetto per il quale hai abilitato l'API Security Command Center.

  3. Fai clic su Attiva Cloud Shell.

    1. Imposta il nome della tua organizzazione:

      export ORGANIZATION_ID=ORGANIZATION_ID
      

      Sostituisci ORGANIZATION_ID con la tua organizzazione ID.

    2. Imposta l'ID progetto per il progetto a cui appartiene l'argomento Pub/Sub:

      export PUBSUB_PROJECT=PROJECT_ID
      

      Sostituisci PROJECT_ID con l'ID progetto.

    3. Imposta l'account gcloud CLI che stai utilizzando:

      export GCLOUD_ACCOUNT=EMAIL
      

      Sostituisci EMAIL con l'indirizzo email del che esegue i comandi dell'interfaccia alla gcloud CLI.

    4. Imposta l'ID argomento o utilizza l'argomento che hai configurato in precedenza.

      export TOPIC_ID=TOPIC_ID
      

      Sostituisci TOPIC_ID con il nome dell'argomento.

    5. Concedi all'account gcloud CLI un ruolo Pub/Sub che dispone dell'autorizzazione 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. Concedi all'account gcloud CLI un ruolo che includa tutte le securitycenter.notification autorizzazioni, ad esempio roles/securitycenter.notificationConfigEditor o roles/securitycenter.admin. Puoi concedere il ruolo a livello di progetto, a livello di cartella o organizzazione.

      Per concedere il ruolo a livello di progetto:

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

      Sostituisci quanto segue:

      • PROJECT_ID: l'ID del progetto in cui Security Command Center è abilitato
      • ROLE_NAME: il ruolo da assegnare

      Per concedere il ruolo a livello di organizzazione:

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

      Sostituisci ROLE_NAME con il ruolo da assegnare.

Quindi, crea un NotificationConfig.

Librerie client

Per configurare la funzionalità di notifica dell'API Security Command Center utilizzando il client librerie, devi seguire questi passaggi:

  1. Configurare un account di servizio.
  2. Scaricare le librerie client delle API.
  3. Configurare un ambiente di sviluppo.
  4. Configurare un argomento e una sottoscrizione Pub/Sub.

Passaggio 1: configura un account di servizio

La funzionalità di notifica dell'API Security Command Center utilizza un account di servizio con le autorizzazioni appropriate per configurare le notifiche. Questo account di servizio è utilizzata solo per la configurazione iniziale di una configurazione e puoi riutilizzarla per creare altre configurazioni di notifica in un secondo momento. Questo account di servizio è separato creato per te durante la configurazione di Security Command Center.

Per creare un account di servizio:

  1. Vai alla console Google Cloud.

    Vai alla console Google Cloud

  2. Seleziona il progetto per il quale hai abilitato l'API Security Command Center.

  3. Fai clic su Attiva Cloud Shell.

  4. Imposta le variabili di ambiente:

    1. Imposta il nome della tua organizzazione:

        export ORGANIZATION_ID=ORGANIZATION_ID
      

      Sostituisci ORGANIZATION_ID con la tua organizzazione ID.

    2. Imposta l'ID progetto per il progetto in cui vuoi abilitare l'API Notifications:

        export PROJECT_ID=PROJECT_ID
      

      Sostituisci PROJECT_ID con l'ID progetto.

    3. Imposta l'ID personalizzato da utilizzare per il nuovo account di servizio, ad esempio scc-notifications. Il nome dell'account di servizio deve essere compreso tra 6 e 30 iniziare con una lettera e contenere caratteri alfanumerici minuscoli caratteri e trattini:

        export SERVICE_ACCOUNT=CUSTOM_ID
      

      Sostituisci CUSTOM_ID con il nome personalizzato di l'account di servizio.

    4. Imposta il percorso in cui archiviare la chiave dell'account di servizio, ad esempio 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
      

      Sostituisci FULL_KEY_LOCATION_PATH con percorso completo della chiave dell'account di servizio.

  5. Crea un account di servizio associato al tuo ID progetto:

       gcloud iam service-accounts create $SERVICE_ACCOUNT  --display-name \
        "Service Account for [USER]"  --project $PROJECT_ID
    
  6. Crea una chiave da associare all'account di servizio. La chiave viene utilizzata quando crei un NotificationConfig, che viene archiviato in modo permanente KEY_LOCATION che hai specificato in precedenza passaggi.

       gcloud iam service-accounts keys create $KEY_LOCATION  --iam-account \
        $SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
    
  7. Concedi all'account di servizio un ruolo che include tutte le securitycenter.notification autorizzazioni, come roles/securitycenter.notificationConfigEditor o roles/securitycenter.admin. Puoi concedere il ruolo a livello di progetto, cartella o organizzazione.

    Per concedere il ruolo a livello di progetto:

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

    Sostituisci ROLE_NAME con il ruolo da assegnare.

    Per concedere il ruolo a livello di organizzazione:

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

    Sostituisci ROLE_NAME con il ruolo da assegnare.

L'account di servizio è ora configurato per l'utilizzo con le notifiche e il servizio la chiave dell'account è archiviata nel KEY_LOCATION specificato. Per scoprire di più sugli account di servizio, vedi creazione e gestione delle chiavi degli account di servizio.

Passaggio 2: configurazione di un ambiente di sviluppo

Per utilizzare la funzionalità di notifica dell'API Security Command Center, puoi utilizzare gcloud CLI o scaricare le librerie client e configurare un per il linguaggio che preferisci.

Python

  1. Facoltativo:prima di installare la libreria Python, ti consigliamo di utilizzare Virtualenv per creare un ambiente Python isolato.

     virtualenv YOUR_ENV
     source YOUR_ENV/bin/activate
    

    Sostituisci YOUR_ENV con il nome della tua macchina virtuale completamente gestito di Google Cloud.

  2. Installa pip in per gestire l'installazione della libreria Python.

  3. Esegui questi comandi per installare la libreria Python:

     pip install google-cloud-securitycenter
    

Java

Per includere la libreria Java di Security Command Center come dipendenza nel tuo seleziona un artefatto dal repository Maven. Le notifiche sono incluse nella versione 0.119.0 e successive della raccolta.

Se utilizzi Intellij, imposta GOOGLE_APPLICATION_CREDENTIALS variabile di ambiente al percorso assoluto del servizio di notifica chiave dell'account scaricata nei passaggi precedenti:

  1. In Intellij, fai clic su Esegui > Modifica configurazioni.
  2. Imposta la seguente variabile in Applicazione > Run_Configuration_For_Sample > Variabili di ambiente:

      GOOGLE_APPLICATION_CREDENTIALS=ABSOLUTE_PATH_TO_SERVICE_ACCOUNT_KEY
    

    Sostituisci ABSOLUTE_PATH_TO_SERVICE_ACCOUNT_KEY con il percorso completo della chiave dell'account di servizio.

Vai

Per installare le dipendenze Go dell'API di notifica, scarica la libreria Go:

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

Node.js

Nella cartella del progetto, usa npm per installare l'API di notifica necessaria delle dipendenze:

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

Passaggio 3: configura Pub/Sub

Per inviare notifiche a Pub/Sub, sottoscrivi un Pub/Sub e concedere all'account di servizio delle notifiche un Ruolo IAM che include pubsub.topics.setIamPolicy autorizzazione:

  1. Crea un nuovo argomento Pub/Sub o utilizzane uno esistente:

       gcloud pubsub topics create TOPIC_ID
    

    Sostituisci TOPIC_ID con il tuo ID argomento.

  2. Imposta le variabili di ambiente:

    1. Imposta l'ID argomento:

        export TOPIC_ID=TOPIC_ID
      
    2. Imposta l'ID progetto per il progetto in cui hai abilitato l'API Notifications:

        export CONSUMER_PROJECT=PROJECT_ID
      

      Sostituisci PROJECT_ID con l'ID progetto.

    3. Imposta l'email dell'account di servizio che hai creato in precedenza passaggi:

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

      Sostituisci SERVICE_ACCOUNT_NAME con il nome dell'account di servizio.

  3. Crea una sottoscrizione all'argomento:

       gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic TOPIC_ID
    

    Sostituisci SUBSCRIPTION_ID con l'abbonamento ID.

  4. Concedi all'account di servizio delle notifiche un ruolo con il Autorizzazione 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'
    

Per saperne di più sulla configurazione di Pub/Sub, consulta Gestione degli argomenti e degli abbonamenti. Nella passaggio successivo, completi la configurazione creando un NotificationConfig.

Creazione di un NotificationConfig

Prima di creare un NotificationConfig, tieni presente che ogni organizzazione può avere un numero limitato di NotificationConfig file. Per ulteriori informazioni per ulteriori informazioni, consulta Quote e limiti.

NotificationConfig include un campo filter che limita le notifiche a eventi utili. Questo campo accetta tutti i filtri disponibili nel Metodo findings.list dell'API Security Command Center.

Quando crei un NotificationConfig, devi specificare un genitore NotificationConfig dalla gerarchia delle risorse Google Cloud, un'organizzazione, una cartella o un progetto. Se devi recuperare, aggiorna o elimina NotificationConfig in un secondo momento, devi includere L'ID numerico dell'organizzazione, della cartella o del progetto padre quando farvi riferimento.

Per creare NotificationConfig usando la lingua o la piattaforma di tua scelta:

gcloud

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

Sostituisci quanto segue:

  • NOTIFICATION_NAME: il nome della notifica. Deve avere una lunghezza compresa tra 1 e 128 caratteri e contenere caratteri alfanumerici solo caratteri, trattini bassi o trattini.
  • PARENT: l'ambito nella gerarchia delle risorse a cui si applica la notifica: organization, folder o project.
  • PARENT_ID: l'ID dell'organizzazione principale, una cartella, un progetto, specificato nel formato organizations/123, folders/456 o projects/789.
  • LOCATION: se la residenza dei dati è abilitata, specifica la località di Security Command Center in cui creare la notifica. L'elemento notificationConfig risultante è archiviata solo in questa località. Solo i risultati che emessi in questa località vengono inviati a Pub/Sub.

    Se la residenza dei dati non è abilitata, viene specificato il flag --location crea la notifica utilizzando l'API Security Command Center v2 e l'unico valore valido per il flag è global.

  • NOTIFICATION_DESCRIPTION: una descrizione del non deve contenere più di 1024 caratteri.

  • PUBSUB_TOPIC: il Pub/Sub argomento che riceverà notifiche. Il suo formato è projects/PROJECT_ID/topics/TOPIC.

  • FILTER: l'espressione che definisci per selezionare quali risultati vengono inviati a Pub/Sub. Ad esempio: state="ACTIVE".

Python

L'esempio seguente utilizza l'API v1. Per modificare l'esempio per la versione 2, sostituisci v1 con v2 e aggiungi /locations/LOCATION al nome della risorsa.

Per la maggior parte delle risorse, aggiungi /locations/LOCATION al del nome della risorsa dopo /PARENT/PARENT_ID, dove PARENT è organizations, folders, o projects.

Per i risultati, aggiungi /locations/LOCATION alla risorsa nome dopo /sources/SOURCE_ID, dove SOURCE_ID è l'ID del Servizio Security Command Center che ha restituito il risultato.

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

L'esempio seguente utilizza l'API v1. Per modificare l'esempio per la versione 2, sostituisci v1 con v2 e aggiungi /locations/LOCATION al nome della risorsa.

Per la maggior parte delle risorse, aggiungi /locations/LOCATION al del nome della risorsa dopo /PARENT/PARENT_ID, dove PARENT è organizations, folders, o projects.

Per i risultati, aggiungi /locations/LOCATION alla risorsa nome dopo /sources/SOURCE_ID, dove SOURCE_ID è l'ID del Servizio Security Command Center che ha restituito il risultato.


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

Vai

L'esempio seguente utilizza l'API v1. Per modificare l'esempio per la versione 2, sostituisci v1 con v2 e aggiungi /locations/LOCATION al nome della risorsa.

Per la maggior parte delle risorse, aggiungi /locations/LOCATION al del nome della risorsa dopo /PARENT/PARENT_ID, dove PARENT è organizations, folders, o projects.

Per i risultati, aggiungi /locations/LOCATION alla risorsa nome dopo /sources/SOURCE_ID, dove SOURCE_ID è l'ID del Servizio Security Command Center che ha restituito il risultato.

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

L'esempio seguente utilizza l'API v1. Per modificare l'esempio per la versione 2, sostituisci v1 con v2 e aggiungi /locations/LOCATION al nome della risorsa.

Per la maggior parte delle risorse, aggiungi /locations/LOCATION al del nome della risorsa dopo /PARENT/PARENT_ID, dove PARENT è organizations, folders, o projects.

Per i risultati, aggiungi /locations/LOCATION alla risorsa nome dopo /sources/SOURCE_ID, dove SOURCE_ID è l'ID del Servizio Security Command Center che ha restituito il risultato.

// 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

L'esempio seguente utilizza l'API v1. Per modificare l'esempio per la versione 2, sostituisci v1 con v2 e aggiungi /locations/LOCATION al nome della risorsa.

Per la maggior parte delle risorse, aggiungi /locations/LOCATION al del nome della risorsa dopo /PARENT/PARENT_ID, dove PARENT è organizations, folders, o projects.

Per i risultati, aggiungi /locations/LOCATION alla risorsa nome dopo /sources/SOURCE_ID, dove SOURCE_ID è l'ID del Servizio Security Command Center che ha restituito il risultato.

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

L'esempio seguente utilizza l'API v1. Per modificare l'esempio per la versione 2, sostituisci v1 con v2 e aggiungi /locations/LOCATION al nome della risorsa.

Per la maggior parte delle risorse, aggiungi /locations/LOCATION al del nome della risorsa dopo /PARENT/PARENT_ID, dove PARENT è organizations, folders, o projects.

Per i risultati, aggiungi /locations/LOCATION alla risorsa nome dopo /sources/SOURCE_ID, dove SOURCE_ID è l'ID del Servizio Security Command Center che ha restituito il risultato.

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#

L'esempio seguente utilizza l'API v1. Per modificare l'esempio per la versione 2, sostituisci v1 con v2 e aggiungi /locations/LOCATION al nome della risorsa.

Per la maggior parte delle risorse, aggiungi /locations/LOCATION al del nome della risorsa dopo /PARENT/PARENT_ID, dove PARENT è organizations, folders, o projects.

Per i risultati, aggiungi /locations/LOCATION alla risorsa nome dopo /sources/SOURCE_ID, dove SOURCE_ID è l'ID del Servizio Security Command Center che ha restituito il risultato.


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

Le notifiche sono ora pubblicate nell'argomento Pub/Sub che specificato.

Per pubblicare le notifiche, viene creato per te un account di servizio sotto forma di service-org-ORGANIZATION_ID@gcp-sa-scc-notification.iam.gserviceaccount.com. Questo account di servizio viene creato durante la creazione del tuo primo NotificationConfig e gli viene automaticamente assegnato il ruolo securitycenter.notificationServiceAgent sul criterio IAM per PUBSUB_TOPIC durante la creazione della configurazione delle notifiche. Questo ruolo dell'account di servizio è necessario per il funzionamento delle notifiche.

Concessione dell'accesso al perimetro nei Controlli di servizio VPC

Se utilizzi Controlli di servizio VPC e L'argomento Pub/Sub fa parte di un progetto all'interno di un perimetro di servizio, devi concedere l'accesso ai progetti per creare notifiche.

Per concedere l'accesso ai progetti, crea regole in entrata e in uscita per le entità e progetti usati per creare notifiche. Le regole consentono alle risorse protette e consenti a Pub/Sub di verificare che gli utenti dispongono dell'autorizzazione setIamPolicy per l'argomento Pub/Sub.

Prima di creare un NotificationConfig

Prima di completare i passaggi in Creazione di un NotificationConfig, segui questi passaggi:

  1. Vai alla pagina Controlli di servizio VPC nella console Google Cloud.

    Vai a Controlli di servizio VPC

  2. Se necessario, seleziona la tua organizzazione.

  3. Fai clic sul nome del perimetro di servizio che vuoi modificare.

    Per trovare il perimetro di servizio da modificare, puoi verificare la presenza di eventuali log nei tuoi log voci che mostrano RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER violazioni. Nel queste voci, controlla il campo servicePerimeterName: accessPolicies/ACCESS_POLICY_ID/servicePerimeters/SERVICE_PERIMETER_NAME.

  4. Fai clic su Modifica perimetro.

  5. Nel menu di navigazione, fai clic su Criterio in entrata.

  6. Per configurare le regole in entrata per gli utenti utilizzare i seguenti parametri:

    • Attributi FROM del client API:
      • Nel menu a discesa Origine, seleziona Tutte le fonti.
      • Nel menu a discesa Identità, scegli Identità selezionate.
      • Fai clic su Seleziona e inserisci l'entità utilizzato per chiamare l'API Security Command Center.
    • Attributi TO di servizi/risorse Google Cloud:
      • Nel menu a discesa Progetto, scegli Progetti selezionati.
      • Fai clic su Seleziona, quindi inserisci il progetto che contiene Pub/Sub.
      • Nel menu a discesa Servizi, scegli Servizi selezionati. quindi seleziona API Cloud Pub/Sub.
      • Nel menu a discesa Metodi, scegli Tutte le azioni.
  7. Fai clic su Salva.

  8. Nel menu di navigazione, fai clic su Criterio in uscita.

  9. Fai clic su Aggiungi regola.

  10. Per configurare le regole in uscita per utenti o inserisci i parametri seguenti:

    • Attributi FROM del client API:
      • Nel menu a discesa Identità, scegli Selezionate. identità.
      • Fai clic su Seleziona e inserisci l'entità utilizzata per chiama l'API Security Command Center.
    • Attributi TO di servizi/risorse Google Cloud:
      • Nel menu a discesa Progetto, scegli Tutti i progetti.
      • Nel menu a discesa Servizi, scegli Servizi selezionati. e seleziona API Cloud Pub/Sub.
      • Nel menu a discesa Metodi, scegli Tutte le azioni.
  11. Fai clic su Salva.

Crea una regola in entrata per NotificationConfig

Per creare una regola in entrata per un NotificationConfig:

  1. Completa le istruzioni in Creazione di un NotificationConfig.
  2. Riapri il perimetro di servizio dalla sezione precedente.
  3. Fai clic su Criterio in entrata.
  4. Fai clic su Aggiungi regola.
  5. Per configurare la regola in entrata per l'account di servizio NotificationConfig che hai creato, inserisci i seguenti parametri:
    • Attributi FROM del client API:
      • Nel menu a discesa Origine, seleziona Tutte le fonti.
      • Nel menu a discesa Identità, scegli Identità selezionate.
      • Fai clic su Seleziona e inserisci il nome del NotificationConfig account di servizio: service-org-ORGANIZATION_ID@gcp-sa-scc-notification.iam.gserviceaccount.com
    • Attributi TO di servizi/risorse Google Cloud:
      • Nel menu a discesa Progetto, scegli Progetti selezionati.
      • Fai clic su Seleziona, quindi seleziona il progetto che contiene l'argomento Pub/Sub.
      • Nel menu a discesa Servizi, scegli Servizi selezionati, quindi seleziona API Cloud Pub/Sub.
      • Nel menu a discesa Metodi, scegli Tutte le azioni.
  6. Nel menu di navigazione, fai clic su Salva.

I progetti, gli utenti e gli account di servizio selezionati possono ora accedere all'infrastruttura risorse e creare notifiche.

Se hai seguito tutti i passaggi di questa guida e le notifiche funzionano correttamente, ora puoi eliminare quanto segue:

  • La regola in entrata per l'entità
  • La regola in uscita per l'entità

Queste regole erano necessarie solo per configurare NotificationConfig. Tuttavia, per delle notifiche per continuare a funzionare, devi mantenere la regola in entrata per NotificationConfig, che consente di pubblicare notifiche sul tuo Pub/Sub dietro il perimetro di servizio.

Passaggi successivi