Trasmetti i risultati in BigQuery per l'analisi

Questa pagina descrive come trasmettere in flusso i risultati nuovi e aggiornati Set di dati BigQuery utilizzando Security Command Center di esportazione per BigQuery. I risultati esistenti non vengono inviati a a BigQuery che non vengano aggiornati.

BigQuery è Google Cloud completamente gestito, un data warehouse di analisi su scala petabyte ed economico che ti consente di eseguire l'analisi su grandi quantità di dati quasi in tempo reale. Puoi utilizzare la modalità BigQuery per eseguire query su risultati nuovi e aggiornati, filtrare i dati per trovare ciò di cui hai bisogno e generare report personalizzati. Per ulteriori informazioni per saperne di più su BigQuery, consulta Documentazione di BigQuery.

Panoramica

Quando abiliti questa funzionalità, i nuovi risultati scritti in Security Command Center vengono esportati in una tabella BigQuery quasi in tempo reale. Puoi quindi integrare i dati nei flussi di lavoro esistenti e crea analisi personalizzate. Puoi abilitare questa funzione a livello di organizzazione, cartella a livello di progetto e di progetto per esportare i risultati in base ai tuoi requisiti.

Questa funzionalità è il modo consigliato per esportare i risultati di Security Command Center in BigQuery, perché è completamente gestito e non richiede l'esecuzione di operazioni manuali o la scrittura di codice personalizzato.

Struttura del set di dati

Questa funzionalità aggiunge ogni nuovo risultato e i relativi aggiornamenti successivi come nuove righe nella tabella findings, raggruppata per source_id, finding_id, e event_time.

Quando un risultato viene aggiornato, questa funzionalità crea più record dei risultati con lo stesso Valori di source_id e finding_id, ma con valori di event_time diversi. Questa struttura del set di dati consente di visualizzare come cambia lo stato di ogni risultato nel tempo.

Tieni presente che nel set di dati potrebbero essere presenti voci duplicate. Per analizzarli, puoi utilizzare la clausola DISTINCT, come mostrato nella prima query di esempio.

Ogni set di dati contiene una tabella findings con i seguenti campi:

Campo Descrizione
source_id Un identificatore univoco assegnato da Security Command Center all'origine di un risultato. Ad esempio, tutti i risultati dell'anomalia Cloud La fonte di rilevamento ha lo stesso valore source_id.

Esempio: 1234567890
finding_id Identificatore univoco che rappresenta il risultato. È univoco all'interno di un'origine per un'organizzazione. È alfanumerico e contiene meno di 32 caratteri.
event_time L'ora in cui si è verificato l'evento o l'ora in cui è stato aggiornato il risultato. si è verificato un errore. Ad esempio, se il risultato rappresenta un firewall aperto, "event_time" registra l'ora in cui il rilevatore ritiene che il firewall sia stato aperto. Se il risultato viene risolto in seguito, questa volta rifletterà quando il risultato è stato risolto.

Esempio: 2019-09-26 12:48:00.985000 UTC
risultato Un registro di dati di valutazione, come sicurezza, rischio, salute o privacy, che viene importato in Security Command Center per l'analisi dei dati, la verifica dei criteri e l'applicazione delle norme. Ad esempio, un modello cross-site una vulnerabilità di scripting (XSS) in un'applicazione App Engine è una ricerca.

Per ulteriori informazioni sui campi nidificati, consulta la documentazione di riferimento dell'API per Finding .
risorsa Informazioni relative alla risorsa Google Cloud associata con questo risultato.

Per ulteriori informazioni sui campi nidificati, consulta la documentazione di riferimento dell'API per Resource .

Costo

Ti verranno addebitati i costi di BigQuery relativi a questa funzionalità. Per ulteriori informazioni, vedi Prezzi di BigQuery.

Prima di iniziare

Devi completare questi passaggi prima di attivare questa funzionalità.

Configurare le autorizzazioni

Per completare questa guida, devi disporre delle seguenti risorse Identity and Access Management (IAM) ruoli:

Crea un set di dati BigQuery

Creare un set di dati BigQuery. Per saperne di più, consulta la sezione Creazione di set di dati.

Piano per la residenza dei dati

Se la residenza dei dati è abilitata per Security Command Center, le configurazioni che delle esportazioni in modalità flusso BigQuery (BigQueryExport risorse) è soggetto al controllo della residenza dei dati e sono archiviati in Posizione di Security Command Center che selezioni.

Per esportare i risultati in una località di Security Command Center in devi configurare BigQuery, nella stessa posizione di Security Command Center dei risultati.

Poiché i filtri utilizzati in BigQuery 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 di BigQuery 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 in BigQuery, non puoi modificare la sua posizione. Per modificare la località, devi eliminare l'esportazione BigQuery e ricrearla nella nuova posizione.

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

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

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

gcloud scc scc bqexports get myBigQueryExport organizations/123 \
    --location=locations/us

Esporta i risultati da Security Command Center a BigQuery

Per esportare i risultati, 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 il quale vuoi abilitare l'API Security Command Center.

  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 per creare una nuova configurazione di esportazione in BigQuery.

Concessione dell'accesso al perimetro nei Controlli di servizio VPC

Se utilizzi Controlli di servizio VPC e il set di dati BigQuery fa parte di un progetto all'interno di un servizio devi concedere l'accesso ai progetti per esportare i risultati.

Per concedere l'accesso ai progetti, crea regole in entrata e in uscita per le entità e i progetti da cui esporti i risultati. Le regole consentire l'accesso alle risorse protette e lasciare che BigQuery verifichi gli utenti hanno l'autorizzazione setIamPolicy per BigQuery del set di dati.

Prima di configurare una nuova esportazione in BigQuery

  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 controllare i log per le voci che mostrano RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER violazioni. In 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. A configura le regole in entrata per gli utenti o gli account di servizio, utilizza i seguenti parametri:

    • Attributi FROM del client API:
      • Nel menu a discesa Identità, scegli Selezionate. identità".
      • Nel menu a discesa Origine, seleziona Tutte le fonti.
      • 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 contiene il set di dati BigQuery .
      • Nel menu a discesa Servizi, scegli Selezionati Services e seleziona API BigQuery.
      • 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. A configurare le regole in uscita Per gli account utente o di servizio, inserisci i seguenti parametri:

    • Attributi FROM del client API:
      • Nel menu a discesa Identità, scegli Selezionate. identità.
      • 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 Tutti i progetti.
      • Nel menu a discesa Servizi, scegli Selezionati Services e seleziona API BigQuery.
      • Nel menu a discesa Metodi, scegli Tutte le azioni.
  11. Fai clic su Salva.

Configura una nuova esportazione in BigQuery

In questo passaggio creerai una configurazione di esportazione per esportare i risultati in un'istanza BigQuery. Puoi creare configurazioni di esportazione a livello di progetto, cartella o organizzazione. Ad esempio, se vuoi esportare i risultati da un progetto a un set di dati BigQuery, crei una configurazione di esportazione a livello di progetto per esportare solo i risultati relativi a quel progetto. Facoltativamente, puoi specificare i filtri per esportare solo determinati risultati.

Assicurati di creare le configurazioni di esportazione al livello appropriato. Ad esempio, se crei una configurazione di esportazione nel progetto B per esportare i risultati dal progetto A e definisci filtri come resource.project_display_name: project-a-id, la configurazione non esporta alcun risultato.

Puoi creare un massimo di 500 configurazioni di esportazione in BigQuery per la tua organizzazione. Puoi utilizzare lo stesso set di dati per più configurazioni di esportazione. Se utilizzi lo stesso set di dati, tutti gli aggiornamenti verranno apportati alla stessa tabella dei risultati.

Quando crei la prima configurazione di esportazione, viene creato automaticamente un account di servizio. Questo account di servizio è necessario per creare o aggiornare la tabella dei risultati all'interno di un set di dati ed esportare i risultati nella tabella. Ha il formato service-org-ORGANIZATION_ID@gcp-sa-scc-notification.iam.gservicaccount.com e gli viene assegnato il ruolo Editor dati BigQuery (roles/bigquery.dataEditor) a livello del set di dati BigQuery.

gcloud

  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 una nuova configurazione di esportazione, esegui questo comando:

    gcloud scc bqexports create BIG_QUERY_EXPORT \
      --dataset=DATASET_NAME \
      --folder=FOLDER_ID | --organization=ORGANIZATION_ID | --project=PROJECT_ID \
      --location=LOCATION \
      [--description=DESCRIPTION] \
      [--filter=FILTER]
    

    Sostituisci quanto segue:

    • BIG_QUERY_EXPORT con un nome per questa configurazione di esportazione.

    • DATASET_NAME con il nome del set di dati BigQuery, ad esempio projects/<PROJECT_ID>/datasets/<DATASET_ID>.

    • FOLDER_ID, ORGANIZATION_ID o PROJECT_ID con il nome della cartella, dell'organizzazione o del progetto. Devi impostare una di queste opzioni. Per le cartelle e le organizzazioni, il nome è l'ID cartella o l'ID organizzazione. Per i progetti, il nome è il numero del progetto o l'ID progetto.

    • LOCATION: se la residenza dei dati è abilitata, specificare Posizione di Security Command Center in cui creare l'esportazione BigQuery. La La configurazione di BigQuery Export è archiviata in in ogni località. Nell'esportazione sono inclusi solo i risultati provenienti da questa località.

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

    • DESCRIPTION con una descrizione leggibile della configurazione dell'esportazione. Questa variabile è facoltativa.

    • FILTER con un'espressione che definisce da includere nell'esportazione. Ad esempio, se vuoi filtrare nella categoria XSS_SCRIPTING, digita "category=\"XSS_SCRIPTING\". Questa variabile è facoltativa.

Java

Per autenticarti in Security Command Center, configura l'impostazione predefinita dell'applicazione Credenziali. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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.BigQueryExport;
import com.google.cloud.securitycenter.v1.CreateBigQueryExportRequest;
import com.google.cloud.securitycenter.v1.SecurityCenterClient;
import java.io.IOException;
import java.util.UUID;

public class CreateBigQueryExport {

  public static void main(String[] args) throws IOException {
    // TODO(Developer): Modify the following variable values.

    // parent: Use any one of the following resource paths:
    //              - organizations/{organization_id}
    //              - folders/{folder_id}
    //              - projects/{project_id}
    String parent = String.format("projects/%s", "your-google-cloud-project-id");

    // filter: Expression that defines the filter to apply across create/update events of findings.
    String filter =
        "severity=\"LOW\" OR severity=\"MEDIUM\" AND "
            + "category=\"Persistence: IAM Anomalous Grant\" AND "
            + "-resource.type:\"compute\"";

    // bigQueryDatasetId: The BigQuery dataset to write findings' updates to.
    String bigQueryDatasetId = "your-bigquery-dataset-id";

    // bigQueryExportId: Unique identifier provided by the client.
    // For more info, see:
    // https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query#export_findings_from_to
    String bigQueryExportId = "default-" + UUID.randomUUID().toString().split("-")[0];

    createBigQueryExport(parent, filter, bigQueryDatasetId, bigQueryExportId);
  }

  // Create export configuration to export findings from a project to a BigQuery dataset.
  // Optionally specify filter to export certain findings only.
  public static void createBigQueryExport(
      String parent, String filter, String bigQueryDatasetId, String bigQueryExportId)
      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()) {

      // Create the BigQuery export configuration.
      BigQueryExport bigQueryExport =
          BigQueryExport.newBuilder()
              .setDescription(
                  "Export low and medium findings if the compute resource "
                      + "has an IAM anomalous grant")
              .setFilter(filter)
              .setDataset(String.format("%s/datasets/%s", parent, bigQueryDatasetId))
              .build();

      CreateBigQueryExportRequest bigQueryExportRequest =
          CreateBigQueryExportRequest.newBuilder()
              .setParent(parent)
              .setBigQueryExport(bigQueryExport)
              .setBigQueryExportId(bigQueryExportId)
              .build();

      // Create the export request.
      BigQueryExport response = client.createBigQueryExport(bigQueryExportRequest);

      System.out.printf("BigQuery export request created successfully: %s\n", response.getName());
    }
  }
}

Python

Per autenticarti in Security Command Center, configura l'impostazione predefinita dell'applicazione Credenziali. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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_bigquery_export(
    parent: str, export_filter: str, bigquery_dataset_id: str, bigquery_export_id: str
):
    from google.cloud import securitycenter

    """
    Create export configuration to export findings from a project to a BigQuery dataset.
    Optionally specify filter to export certain findings only.

    Args:
        parent: Use any one of the following resource paths:
             - organizations/{organization_id}
             - folders/{folder_id}
             - projects/{project_id}
        export_filter: Expression that defines the filter to apply across create/update events of findings.
        bigquery_dataset_id: The BigQuery dataset to write findings' updates to.
        bigquery_export_id: Unique identifier provided by the client.
             - example id: f"default-{str(uuid.uuid4()).split('-')[0]}"
        For more info, see:
        https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query#export_findings_from_to
    """
    client = securitycenter.SecurityCenterClient()

    # Create the BigQuery export configuration.
    bigquery_export = securitycenter.BigQueryExport()
    bigquery_export.description = "Export low and medium findings if the compute resource has an IAM anomalous grant"
    bigquery_export.filter = export_filter
    bigquery_export.dataset = f"{parent}/datasets/{bigquery_dataset_id}"

    request = securitycenter.CreateBigQueryExportRequest()
    request.parent = parent
    request.big_query_export = bigquery_export
    request.big_query_export_id = bigquery_export_id

    # Create the export request.
    response = client.create_big_query_export(request)

    print(f"BigQuery export request created successfully: {response.name}\n")

Dovresti vedere i risultati nel set di dati BigQuery entro circa 15 minuti dopo aver creato la configurazione di esportazione. Una volta creata la tabella BigQuery, tutti i risultati nuovi e aggiornati che corrispondono al filtro e all'ambito verranno visualizzati nella tabella quasi in tempo reale.

Per esaminare i risultati, consulta l'articolo Esaminare i risultati.

Crea una regola in entrata per la nuova esportazione in BigQuery

Se utilizzi Controlli di servizio VPC e il set di dati BigQuery fa parte di un progetto all'interno di un servizio devi creare una regola in entrata per una nuova esportazione in BigQuery.

  1. Riapri il perimetro di servizio da Configura una nuova esportazione in BigQuery.

    Vai a Controlli di servizio VPC

  2. Fai clic su Criterio in entrata.

  3. Fai clic su Aggiungi regola.

  4. Per configurare la regola in entrata per le configurazioni di esportazione, inserisci il seguenti parametri:

    • Attributi FROM del client API:
      • Nel menu a discesa Origine, seleziona Tutte le fonti.
      • Nel menu a discesa Identità, scegli Selezionate. identità.
      • Fai clic su Seleziona e inserisci il nome del Account di servizio di configurazione di BigQuery Export: 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 contiene il set di dati BigQuery.
      • Nel menu a discesa Servizi, scegli Selezionati Services e seleziona API BigQuery.
      • Nel menu a discesa Metodi, scegli Tutte le azioni.
  5. Nel menu di navigazione, fai clic su Salva.

I progetti, gli utenti e gli account di servizio selezionati possono ora accedere all'infrastruttura ed esportare i risultati.

Se hai seguito tutti i passaggi di questa guida e le esportazioni 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 la configurazione dell'esportazione. Tuttavia, Affinché le configurazioni di esportazione continuino a funzionare, devi mantenere la regola in entrata creato in precedenza, che consente a Security Command Center di esportare i risultati set di dati BigQuery dietro il perimetro di servizio.

Visualizzare i dettagli di una configurazione di esportazione

gcloud

  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 verificare i dettagli della configurazione dell'esportazione, esegui questo comando:

    gcloud scc bqexports get BIG_QUERY_EXPORT \
      --folder=FOLDER_ID | --organization=ORGANIZATION_ID | --project=PROJECT_ID \
      --location=LOCATION
    

    Sostituisci quanto segue:

    • BIG_QUERY_EXPORT con il nome di questa configurazione di esportazione.

    • FOLDER_ID, ORGANIZATION_ID o PROJECT_ID con il nome della cartella, dell'organizzazione o del progetto. Devi impostare una di queste opzioni. Per le cartelle e le organizzazioni, il nome è l'ID cartella o l'ID organizzazione. Per i progetti, il nome è il numero del progetto o l'ID progetto.

    • LOCATION: obbligatorio se la residenza dei dati è abilitato o la risorsa BigQueryExport è stata creata utilizzando API v2.

      Se la residenza dei dati è abilitata, specifica la Posizione di Security Command Center in cui è archiviata l'esportazione.

      Se la residenza dei dati non è abilitata, includi /locations/LOCATION solo se La risorsa BigQueryExport è stata creata utilizzando la proprietà API Security Command Center v2, in questo caso l'unica località valida è global.

    Ad esempio, per ottenere una configurazione di esportazione denominata my-bq-export da un'organizzazione con un ID organizzazione impostato su 123, esegui:

    gcloud scc bqexports get my-bq-export --organization=123
    

Java

Per autenticarti in Security Command Center, configura l'impostazione predefinita dell'applicazione Credenziali. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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.BigQueryExport;
import com.google.cloud.securitycenter.v1.GetBigQueryExportRequest;
import com.google.cloud.securitycenter.v1.SecurityCenterClient;
import java.io.IOException;

public class GetBigQueryExport {

  public static void main(String[] args) throws IOException {
    // TODO(Developer): Modify the following variable values.

    // parent: Use any one of the following resource paths:
    //              - organizations/{organization_id}
    //              - folders/{folder_id}
    //              - projects/{project_id}
    String parent = String.format("projects/%s", "your-google-cloud-project-id");

    // bigQueryExportId: Unique identifier that is used to identify the export.
    String bigQueryExportId = "export-id";

    getBigQueryExport(parent, bigQueryExportId);
  }

  // Retrieve an existing BigQuery export.
  public static void getBigQueryExport(String parent, String bigQueryExportId) 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()) {

      GetBigQueryExportRequest bigQueryExportRequest =
          GetBigQueryExportRequest.newBuilder()
              .setName(String.format("%s/bigQueryExports/%s", parent, bigQueryExportId))
              .build();

      BigQueryExport response = client.getBigQueryExport(bigQueryExportRequest);
      System.out.printf("Retrieved the BigQuery export: %s", response.getName());
    }
  }
}

Python

Per autenticarti in Security Command Center, configura l'impostazione predefinita dell'applicazione Credenziali. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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 get_bigquery_export(parent: str, bigquery_export_id: str):
    from google.cloud import securitycenter

    """
    Retrieve an existing BigQuery export.
    Args:
        parent: Use any one of the following resource paths:
                 - organizations/{organization_id}
                 - folders/{folder_id}
                 - projects/{project_id}
        bigquery_export_id: Unique identifier that is used to identify the export.
    """

    client = securitycenter.SecurityCenterClient()

    request = securitycenter.GetBigQueryExportRequest()
    request.name = f"{parent}/bigQueryExports/{bigquery_export_id}"

    response = client.get_big_query_export(request)
    print(f"Retrieved the BigQuery export: {response.name}")

Aggiorna una configurazione di esportazione

Se necessario, puoi modificare il filtro, il set di dati e la descrizione di una configurazione di esportazione esistente. Non puoi modificare il nome della configurazione di esportazione.

gcloud

  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 aggiornare una configurazione di esportazione, esegui questo comando:

    gcloud scc bqexports update BIG_QUERY_EXPORT \
      --dataset=DATASET_NAME \
      --folder=FOLDER_ID | --organization=ORGANIZATION_ID | --project=PROJECT_ID \
      --location=LOCATION \
      [--description=DESCRIPTION] \
      [--filter=FILTER]
    

    Sostituisci quanto segue:

    • BIG_QUERY_EXPORT con il nome della configurazione di esportazione che vuoi aggiornare.

    • DATASET_NAME con il nome del set di dati BigQuery, ad esempio projects/<PROJECT_ID>/datasets/<DATASET_ID>.

    • FOLDER_ID, ORGANIZATION_ID o PROJECT_ID con il nome della cartella, dell'organizzazione o del progetto. Devi impostare una di queste opzioni. Per le cartelle e le organizzazioni, il nome è l'ID cartella o l'ID organizzazione. Per i progetti, il nome è il numero del progetto o l'ID progetto.

    • LOCATION: obbligatorio se la residenza dei dati è abilitato o la risorsa BigQueryExport è stata creata utilizzando API v2.

      Se la residenza dei dati è abilitata, specifica la Posizione di Security Command Center in cui è archiviata l'esportazione.

      Se la residenza dei dati non è abilitata, includi /locations/LOCATION nel nome completo o specifica il flag --location solo se BigQueryExport è stata creata utilizzando l'API Security Command Center v2, nel qual caso, l'unica località valida è global.

    • DESCRIPTION con una descrizione leggibile della configurazione dell'esportazione. Questa variabile è facoltativa.

    • FILTER con un'espressione che definisce da includere nell'esportazione. Ad esempio, se vuoi filtrare nella categoria XSS_SCRIPTING, digita "category=\"XSS_SCRIPTING\". Questa variabile è facoltativa.

Java

Per autenticarti in Security Command Center, configura l'impostazione predefinita dell'applicazione Credenziali. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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.BigQueryExport;
import com.google.cloud.securitycenter.v1.SecurityCenterClient;
import com.google.cloud.securitycenter.v1.UpdateBigQueryExportRequest;
import com.google.protobuf.FieldMask;
import java.io.IOException;

public class UpdateBigQueryExport {

  public static void main(String[] args) throws IOException {
    // TODO(Developer): Modify the following variable values.

    // parent: Use any one of the following resource paths:
    //              - organizations/{organization_id}
    //              - folders/{folder_id}
    //              - projects/{project_id}
    String parent = String.format("projects/%s", "your-google-cloud-project-id");

    // filter: Expression that defines the filter to apply across create/update events of findings.
    String filter =
        "severity=\"LOW\" OR severity=\"MEDIUM\" AND "
            + "category=\"Persistence: IAM Anomalous Grant\" AND "
            + "-resource.type:\"compute\"";

    // bigQueryExportId: Unique identifier provided by the client.
    // For more info, see:
    // https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query#export_findings_from_to
    String bigQueryExportId = "big-query-export-id";

    updateBigQueryExport(parent, filter, bigQueryExportId);
  }

  // Updates an existing BigQuery export.
  public static void updateBigQueryExport(String parent, String filter, String bigQueryExportId)
      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()) {

      //  Set the new values for export configuration.
      BigQueryExport bigQueryExport =
          BigQueryExport.newBuilder()
              .setName(String.format("%s/bigQueryExports/%s", parent, bigQueryExportId))
              .setFilter(filter)
              .build();

      UpdateBigQueryExportRequest request =
          UpdateBigQueryExportRequest.newBuilder()
              .setBigQueryExport(bigQueryExport)
              // Set the update mask to specify which properties should be updated.
              // If empty, all mutable fields will be updated.
              // For more info on constructing field mask path, see the proto or:
              // https://cloud.google.com/java/docs/reference/protobuf/latest/com.google.protobuf.FieldMask
              .setUpdateMask(FieldMask.newBuilder().addPaths("filter").build())
              .build();

      BigQueryExport response = client.updateBigQueryExport(request);
      if (!response.getFilter().equalsIgnoreCase(filter)) {
        System.out.println("Failed to update BigQueryExport!");
        return;
      }
      System.out.println("BigQueryExport updated successfully!");
    }
  }
}

Python

Per autenticarti in Security Command Center, configura l'impostazione predefinita dell'applicazione Credenziali. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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 update_bigquery_export(parent: str, export_filter: str, bigquery_export_id: str):
    """
    Updates an existing BigQuery export.
    Args:
        parent: Use any one of the following resource paths:
                 - organizations/{organization_id}
                 - folders/{folder_id}
                 - projects/{project_id}
        export_filter: Expression that defines the filter to apply across create/update events of findings.
        bigquery_export_id: Unique identifier provided by the client.
        For more info, see:
        https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query#export_findings_from_to
    """
    from google.cloud import securitycenter
    from google.protobuf import field_mask_pb2

    client = securitycenter.SecurityCenterClient()

    # Set the new values for export configuration.
    bigquery_export = securitycenter.BigQueryExport()
    bigquery_export.name = f"{parent}/bigQueryExports/{bigquery_export_id}"
    bigquery_export.filter = export_filter

    # Field mask to only update the export filter.
    # Set the update mask to specify which properties should be updated.
    # If empty, all mutable fields will be updated.
    # For more info on constructing field mask path, see the proto or:
    # https://googleapis.dev/python/protobuf/latest/google/protobuf/field_mask_pb2.html
    field_mask = field_mask_pb2.FieldMask(paths=["filter"])

    request = securitycenter.UpdateBigQueryExportRequest()
    request.big_query_export = bigquery_export
    request.update_mask = field_mask

    response = client.update_big_query_export(request)

    if response.filter != export_filter:
        print("Failed to update BigQueryExport!")
        return
    print("BigQueryExport updated successfully!")

Visualizza tutte le configurazioni di esportazione

Puoi visualizzare tutte le configurazioni di esportazione all'interno dell'organizzazione, della cartella o del progetto.

gcloud

  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 elencare le configurazioni di esportazione, esegui questo comando:

    gcloud scc bqexports list \
      --folder=FOLDER_ID | --organization=ORGANIZATION_ID | --project=PROJECT_ID \
      --location=LOCATION \
      [--limit=LIMIT] \
      [--page-size=PAGE_SIZE]
    

    Sostituisci quanto segue:

    • FOLDER_ID, ORGANIZATION_ID o PROJECT_ID con il nome della cartella, dell'organizzazione o del progetto. Devi impostare una di queste opzioni. Per le cartelle e le organizzazioni, il nome è l'ID cartella o l'ID organizzazione. Per i progetti, il nome è il numero del progetto o l'ID progetto.

      Se specifichi un ID organizzazione, l'elenco includerà tutte le configurazioni di esportazione definite in quell'organizzazione, incluse quelle a livello di cartella e progetto. Se specifichi un ID cartella, l'elenco includerà tutte le configurazioni di esportazione definite a livello di cartella e nei progetti all'interno di quella cartella. Se specifichi un numero di progetto o un ID progetto, l'elenco includerà tutte le configurazioni di esportazione solo per quel progetto.

    • LOCATION: obbligatorio se la residenza dei dati è abilitato o le risorse BigQueryExport sono state create utilizzando API v2.

      Se la residenza dei dati è abilitata, specifica la Posizione di Security Command Center in cui sono archiviate le esportazioni.

      Se la residenza dei dati non è abilitata, inclusi Il flag --location elenca solo le risorse BigQueryExport creati utilizzando l'API Security Command Center v2 l'unica posizione valida è global.

    • LIMIT con il numero di configurazioni di esportazione che vuoi visualizzare. Questa variabile è facoltativa.

    • PAGE_SIZE con un valore per dimensione pagina. Questa variabile è facoltativa.

Java

Per autenticarti in Security Command Center, configura l'impostazione predefinita dell'applicazione Credenziali. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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.BigQueryExport;
import com.google.cloud.securitycenter.v1.ListBigQueryExportsRequest;
import com.google.cloud.securitycenter.v1.SecurityCenterClient;
import com.google.cloud.securitycenter.v1.SecurityCenterClient.ListBigQueryExportsPagedResponse;
import java.io.IOException;

public class ListBigQueryExports {

  public static void main(String[] args) throws IOException {
    // TODO(Developer): Modify the following variable values.

    // parent: The parent, which owns the collection of BigQuery exports.
    //         Use any one of the following resource paths:
    //              - organizations/{organization_id}
    //              - folders/{folder_id}
    //              - projects/{project_id}
    String parent = String.format("projects/%s", "your-google-cloud-project-id");

    listBigQueryExports(parent);
  }

  // List BigQuery exports in the given parent.
  public static void listBigQueryExports(String parent) 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()) {

      ListBigQueryExportsRequest request =
          ListBigQueryExportsRequest.newBuilder().setParent(parent).build();

      ListBigQueryExportsPagedResponse response = client.listBigQueryExports(request);

      System.out.println("Listing BigQuery exports:");
      for (BigQueryExport bigQueryExport : response.iterateAll()) {
        System.out.println(bigQueryExport.getName());
      }
    }
  }
}

Python

Per autenticarti in Security Command Center, configura l'impostazione predefinita dell'applicazione Credenziali. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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 list_bigquery_exports(parent: str):
    from google.cloud import securitycenter

    """
    List BigQuery exports in the given parent.
    Args:
         parent: The parent which owns the collection of BigQuery exports.
             Use any one of the following resource paths:
                 - organizations/{organization_id}
                 - folders/{folder_id}
                 - projects/{project_id}
    """

    client = securitycenter.SecurityCenterClient()

    request = securitycenter.ListBigQueryExportsRequest()
    request.parent = parent

    response = client.list_big_query_exports(request)

    print("Listing BigQuery exports:")
    for bigquery_export in response:
        print(bigquery_export.name)

Elimina una configurazione di esportazione

Se non hai più bisogno di una configurazione di esportazione, puoi eliminarla.

gcloud

  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 eliminare una configurazione di esportazione, esegui questo comando:

    gcloud scc bqexports delete BIG_QUERY_EXPORT \
      --folder=FOLDER_ID | --organization=ORGANIZATION_ID | --project=PROJECT_ID \
      --location=LOCATION
    

    Sostituisci quanto segue:

    • BIG_QUERY_EXPORT con un nome per la configurazione di esportazione che vuoi eliminare.

    • FOLDER_ID, ORGANIZATION_ID o PROJECT_ID con il nome della cartella, dell'organizzazione o del progetto. Devi impostare una di queste opzioni. Per le cartelle e le organizzazioni, il nome è l'ID cartella o l'ID organizzazione. Per i progetti, il nome è il numero del progetto o l'ID progetto.

    • LOCATION: obbligatorio se la residenza dei dati è abilitato o la risorsa BigQueryExport è stata creata utilizzando API v2.

      Se la residenza dei dati è abilitata, specifica la Posizione di Security Command Center in cui è archiviata l'esportazione.

      Se la residenza dei dati non è abilitata, includi /locations/LOCATION solo se La risorsa BigQueryExport è stata creata utilizzando la proprietà API Security Command Center v2, in questo caso l'unica località valida è global.

    Ad esempio, per eliminare una configurazione di esportazione denominata my-bq-export da un'organizzazione con un ID organizzazione impostato su 123, esegui:

    gcloud scc bqexports delete my-bq-export --organization=123
    

Java

Per autenticarti in Security Command Center, configura l'impostazione predefinita dell'applicazione Credenziali. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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.DeleteBigQueryExportRequest;
import com.google.cloud.securitycenter.v1.SecurityCenterClient;
import java.io.IOException;

public class DeleteBigQueryExport {

  public static void main(String[] args) throws IOException {
    // TODO(Developer): Modify the following variable values.

    // parent: Use any one of the following resource paths:
    //              - organizations/{organization_id}
    //              - folders/{folder_id}
    //              - projects/{project_id}
    String parent = String.format("projects/%s", "your-google-cloud-project-id");

    // bigQueryExportId: Unique identifier that is used to identify the export.
    String bigQueryExportId = "export-id";

    deleteBigQueryExport(parent, bigQueryExportId);
  }

  // Delete an existing BigQuery export.
  public static void deleteBigQueryExport(String parent, String bigQueryExportId)
      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()) {

      DeleteBigQueryExportRequest bigQueryExportRequest =
          DeleteBigQueryExportRequest.newBuilder()
              .setName(String.format("%s/bigQueryExports/%s", parent, bigQueryExportId))
              .build();

      client.deleteBigQueryExport(bigQueryExportRequest);
      System.out.printf("BigQuery export request deleted successfully: %s", bigQueryExportId);
    }
  }
}

Python

Per autenticarti in Security Command Center, configura l'impostazione predefinita dell'applicazione Credenziali. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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 delete_bigquery_export(parent: str, bigquery_export_id: str):
    """
    Delete an existing BigQuery export.
    Args:
        parent: Use any one of the following resource paths:
                 - organizations/{organization_id}
                 - folders/{folder_id}
                 - projects/{project_id}
        bigquery_export_id: Unique identifier that is used to identify the export.
    """
    from google.cloud import securitycenter

    client = securitycenter.SecurityCenterClient()

    request = securitycenter.DeleteBigQueryExportRequest()
    request.name = f"{parent}/bigQueryExports/{bigquery_export_id}"

    client.delete_big_query_export(request)
    print(f"BigQuery export request deleted successfully: {bigquery_export_id}")

Dopo aver eliminato la configurazione di esportazione, puoi rimuovere i dati da Looker Studio. Per ulteriori informazioni, vedi Rimuovere, eliminare e ripristinare un'origine dati.

Esamina i risultati in BigQuery

Dopo aver creato una configurazione di esportazione, i nuovi risultati vengono esportati nel set di dati BigQuery del progetto specificato.

Per esaminare i risultati in BigQuery, segui questi passaggi:

  1. Vai al progetto in BigQuery.

    Vai a BigQuery

  2. Se non ti trovi nel progetto corretto, segui questi passaggi:

    1. Nella barra degli strumenti, fai clic Selettore di progetti .
    2. Accanto a Seleziona da, seleziona la tua organizzazione.
    3. Nell'elenco dei progetti, seleziona il tuo progetto.
  3. Nel riquadro Explorer, espandi il nodo del tuo progetto.

  4. Espandi il set di dati.

  5. Fai clic sulla tabella dei risultati.

  6. Nella scheda che si apre, fai clic su Anteprima. Viene visualizzato un set di dati di esempio.

Query utili

Questa sezione fornisce query di esempio per analizzare i dati dei risultati. Negli esempi seguenti, sostituisci DATASET con il nome assegnato al set di dati e PROJECT_ID con il nome del progetto per il set di dati.

Per risolvere gli eventuali errori riscontrati, consulta Messaggi di errore.

Il numero di nuovi risultati creati e aggiornati ogni giorno

SELECT
    FORMAT_DATETIME("%Y-%m-%d", event_time) AS date,
    count(DISTINCT finding_id)
FROM `PROJECT_ID.DATASET.findings`
GROUP BY date
ORDER BY date DESC

Il record del risultato più recente per ogni risultato

SELECT
    * EXCEPT(row)
FROM (
    SELECT *, ROW_NUMBER() OVER(
        PARTITION BY finding_id
        ORDER BY event_time DESC, finding.mute_update_time DESC
    ) AS row
    FROM `PROJECT_ID.DATASET.findings`
)
WHERE row = 1

Risultati attuali attivi, ordinati per data

WITH latestFindings AS (
    SELECT * EXCEPT(row)
    FROM (
        SELECT *, ROW_NUMBER() OVER(
            PARTITION BY finding_id
            ORDER BY event_time DESC, finding.mute_update_time DESC
        ) AS row
        FROM `PROJECT_ID.DATASET.findings`
    ) WHERE row = 1
)
SELECT finding_id, event_time, finding
FROM latestFindings
WHERE finding.state = "ACTIVE"
ORDER BY event_time DESC

Risultati attuali in un progetto

WITH latestFindings AS (
    SELECT * EXCEPT(row)
    FROM (
        SELECT *, ROW_NUMBER() OVER(
            PARTITION BY finding_id
            ORDER BY event_time DESC, finding.mute_update_time DESC
        ) AS row
        FROM `PROJECT_ID.DATASET.findings`
    ) WHERE row = 1
)
SELECT finding_id, event_time, finding, resource
FROM latestFindings
WHERE resource.project_display_name = 'PROJECT'

Sostituisci PROJECT con il nome del progetto.

Risultati attuali che si trovano in una cartella

WITH latestFindings AS(
    SELECT * EXCEPT(row)
    FROM (
        SELECT *, ROW_NUMBER() OVER(
            PARTITION BY finding_id
            ORDER BY event_time DESC, finding.mute_update_time DESC
        ) AS row
        FROM `PROJECT_ID.DATASET.findings`
    ) WHERE row = 1
)
SELECT finding_id, event_time, finding, resource
FROM latestFindings
CROSS JOIN UNNEST(resource.folders) AS folder
WHERE folder.resource_folder_display_name = 'FOLDER'

Sostituisci FOLDER con il nome della cartella.

Risultati attuali dallo scanner Logging Scanner

WITH latestFindings AS (
    SELECT * EXCEPT(row)
    FROM (
        SELECT *, ROW_NUMBER() OVER(
            PARTITION BY finding_id
            ORDER BY event_time DESC, finding.mute_update_time DESC
        ) AS row
        FROM `PROJECT_ID.DATASET.findings`
    ) WHERE row = 1
)
SELECT finding_id, event_time, finding
FROM latestFindings
CROSS JOIN UNNEST(finding.source_properties) AS source_property
WHERE source_property.key = "ScannerName"
  AND source_property.value = "LOGGING_SCANNER"

Risultati attivi attuali di tipo Persistence: IAM Anomalous Grant

WITH latestFindings AS(
    SELECT * EXCEPT(row)
    FROM (
        SELECT *, ROW_NUMBER() OVER(
            PARTITION BY finding_id
            ORDER BY event_time DESC, finding.mute_update_time DESC
        ) AS row
        FROM `PROJECT_ID.DATASET.findings`
    ) WHERE row = 1
)
SELECT finding_id, event_time, finding
FROM latestFindings
WHERE finding.state = "ACTIVE"
  AND finding.category = "Persistence: IAM Anomalous Grant"

Correla i risultati attivi di un determinato tipo con Cloud Audit Logs

Questa query di esempio aiuta a esaminare i risultati anomali di concessioni IAM provenienti da Event Threat Detection utilizzando Cloud Audit Logs mostrando la sequenza di azioni dell'attività di amministrazione del concessore durante l'intervallo di tempo che precede l'azione anomala di concessione IAM e quella successiva. La seguente query correla i log dell'attività di amministrazione tra un'ora prima e un'ora dopo al timestamp del risultato.

WITH latestFindings AS(
    SELECT * EXCEPT(row)
    FROM (
        SELECT *, ROW_NUMBER() OVER(
            PARTITION BY finding_id
            ORDER BY event_time DESC, finding.mute_update_time DESC
        ) AS row
        FROM `PROJECT_ID.DATASET.findings`
    ) WHERE row = 1
)
SELECT
  finding_id,
  ANY_VALUE(event_time) as event_time,
  ANY_VALUE(finding.access.principal_email) as grantor,
  JSON_VALUE_ARRAY(ANY_VALUE(finding.source_properties_json), '$.properties.sensitiveRoleGrant.members') as grantees,
  ARRAY_AGG(
    STRUCT(
      timestamp,
      IF(timestamp < event_time, 'before', 'after') as timeline,
      protopayload_auditlog.methodName,
      protopayload_auditlog.resourceName,
      protopayload_auditlog.serviceName
    )
    ORDER BY timestamp ASC
  ) AS recent_activity
FROM (
  SELECT
    f.*,
    a.*,
  FROM latestFindings AS f
  LEFT JOIN `PROJECT_ID.DATASET.cloudaudit_googleapis_com_activity` AS a
  ON a.protopayload_auditlog.authenticationInfo.principalEmail = f.finding.access.principal_email
  WHERE f.finding.state = "ACTIVE"
    AND f.finding.category = "Persistence: IAM Anomalous Grant"
    AND a.timestamp >= TIMESTAMP_SUB(f.event_time, INTERVAL 1 HOUR)
    AND a.timestamp <= TIMESTAMP_ADD(f.event_time, INTERVAL 1 HOUR)
  )
GROUP BY
  finding_id
ORDER BY
  event_time DESC

L'output è simile al seguente:

Screenshot dei risultati della query che mostra i risultati con audit log correlati

Creare grafici in Looker Studio

Looker Studio ti consente di creare report e dashboard interattivi.

In generale, sono previsti costi di utilizzo di BigQuery quando accedi a BigQuery tramite Looker Studio. Per ulteriori informazioni, vedi Visualizzazione dei dati di BigQuery utilizzando Looker Studio.

Per creare un grafico che mostri i dati dei risultati per gravità e categoria, procedi le seguenti:

  1. Apri Looker Studio e accedi.
  2. Se richiesto, fornisci informazioni aggiuntive e imposta altre preferenze. Leggi i termini di servizio e, se il risultato ti soddisfa, continua.
  3. Fai clic su Report vuoto.
  4. Nella scheda Connessione ai dati, fai clic su BigQuery .
  5. Se richiesto, autorizza Looker Studio ad accedere a BigQuery in modo programmatico a gestire i progetti.
  6. Connettiti ai dati dei risultati:
    1. In Progetto, seleziona il progetto per il set di dati. Oppure, nel Nella scheda I miei progetti, inserisci l'ID progetto per cercare .
    2. In Set di dati, fai clic sul nome del set di dati.
    3. Per Tabella, fai clic su Risultati.
    4. Fai clic su Aggiungi.
    5. Nella finestra di dialogo, fai clic su Aggiungi al report.
  7. Dopo aver aggiunto il report, fai clic su Aggiungi un grafico.
  8. Fai clic su Grafico a colonne in pila e poi fai clic sull'area in cui vuoi inserire i dati. posizionarlo.

    Screenshot della selezione del grafico

  9. Nel grafico > Barra, nella scheda Dati, imposta i seguenti campi:

    1. Nel campo Dimensione, seleziona finding.severity.
    2. Nel campo Dimensione di distribuzione, seleziona finding.category.
    Screenshot di un grafico di risultati classificati per gravità e
          sottocategoria per categoria

Il report viene aggiornato in modo da mostrare più colonne con risultati suddivisi per gravità e categoria.

Passaggi successivi

Scopri come eseguire una query in BigQuery.