Raccogliere i log di Snowflake
Questo documento spiega come importare i log di Snowflake in Google Security Operations. Puoi configurare l'importazione utilizzando due metodi: Cloud Storage V2 (consigliato) o Amazon S3 V2. Entrambi i metodi utilizzano lo stesso meccanismo lato Snowflake: un'attività pianificata scarica i dati di utilizzo dell'account in uno stage esterno e Google SecOps legge i file esportati con un feed.
Snowflake è una piattaforma cloud di dati che archivia l'attività dell'account nello schema SNOWFLAKE.ACCOUNT_USAGE. La visualizzazione LOGIN_HISTORY registra i tentativi di autenticazione, inclusi l'indirizzo IP client, il fattore di autenticazione e il motivo dell'errore. La visualizzazione QUERY_HISTORY registra ogni istruzione eseguita nell'account, inclusi l'utente, il ruolo, il warehouse e gli oggetti toccati.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un'istanza Google SecOps
- Accesso a Snowflake con un ruolo che può creare integrazioni di archiviazione (solo
ACCOUNTADMINdispone di questo privilegio per impostazione predefinita), database, warehouse, stage e attività - Per Cloud Storage V2: un progetto Google Cloud con l'API Storage Cloud abilitata e le autorizzazioni per creare bucket, creare ruoli Identity and Access Management (IAM) e gestire le policy IAM dei bucket
- Per Amazon S3 V2: accesso privilegiato ad AWS per creare bucket S3, criteri IAM, ruoli IAM e utenti IAM
Concedere l'accesso ai dati sull'utilizzo dell'account Snowflake
Le visualizzazioni SNOWFLAKE.ACCOUNT_USAGE sono leggibili da ACCOUNTADMIN solo finché non viene concesso l'accesso esplicito. Crea un ruolo dedicato per l'esportazione e concedigli i due ruoli del database che coprono le visualizzazioni esportate da questo documento.
- Accedi a Snowflake e apri un foglio di lavoro.
Crea il ruolo di esportazione e concedi l'accesso in lettura alle visualizzazioni dell'utilizzo dell'account nel seguente modo:
USE ROLE ACCOUNTADMIN; CREATE ROLE IF NOT EXISTS SECOPS_EXPORTER; GRANT DATABASE ROLE SNOWFLAKE.SECURITY_VIEWER TO ROLE SECOPS_EXPORTER; GRANT DATABASE ROLE SNOWFLAKE.GOVERNANCE_VIEWER TO ROLE SECOPS_EXPORTER;Crea il database, lo schema e il warehouse utilizzati dall'esportazione e concedili al ruolo come segue:
CREATE DATABASE IF NOT EXISTS SECOPS_EXPORT; CREATE SCHEMA IF NOT EXISTS SECOPS_EXPORT.ACTIVITY; CREATE WAREHOUSE IF NOT EXISTS SECOPS_EXPORT_WH WITH WAREHOUSE_SIZE = 'XSMALL' AUTO_SUSPEND = 60 AUTO_RESUME = TRUE INITIALLY_SUSPENDED = TRUE; GRANT USAGE ON DATABASE SECOPS_EXPORT TO ROLE SECOPS_EXPORTER; GRANT USAGE, CREATE STAGE, CREATE TABLE, CREATE PROCEDURE, CREATE TASK, CREATE FILE FORMAT ON SCHEMA SECOPS_EXPORT.ACTIVITY TO ROLE SECOPS_EXPORTER; GRANT USAGE, OPERATE ON WAREHOUSE SECOPS_EXPORT_WH TO ROLE SECOPS_EXPORTER; GRANT EXECUTE TASK ON ACCOUNT TO ROLE SECOPS_EXPORTER; GRANT ROLE SECOPS_EXPORTER TO USER <YOUR_USER>;- Sostituisci
<YOUR_USER>con l'utente Snowflake proprietario dell'esportazione.
- Sostituisci
Metodo 1: Cloud Storage V2 (consigliato)
Crea un bucket Cloud Storage
- Vai alla consoleGoogle Cloud .
- Seleziona il tuo progetto o creane uno nuovo.
- Nel menu di navigazione, vai a Cloud Storage > Bucket.
- Fai clic su Crea bucket.
Fornisci i seguenti dettagli di configurazione:
Impostazione Valore Assegna un nome al bucket Inserisci un nome univoco globale (ad esempio snowflake-activity-logs).Tipo di località Scegli in base alle tue esigenze (regione singola, a due regioni, multiregionale) Località Seleziona la posizione (ad esempio, us-central1).Classe di archiviazione Standard (consigliato per i log a cui si accede di frequente) Controllo degli accessi Uniforme (consigliato) Strumenti di protezione (Facoltativo) Abilita il controllo delle versioni degli oggetti o la policy di conservazione Fai clic su Crea.
Crea un ruolo Cloud Storage personalizzato per Snowflake
- Nella console Google Cloud , vai a IAM e amministrazione > Ruoli.
- Fai clic su Crea ruolo.
- Fornisci i seguenti dettagli di configurazione:
- Titolo: inserisci
Snowflake Unload - ID: inserisci
snowflake_unload - Fase di lancio del ruolo: seleziona Disponibilità generale.
- Titolo: inserisci
- Fai clic su Aggiungi autorizzazioni e aggiungi le seguenti autorizzazioni:
storage.buckets.getstorage.objects.createstorage.objects.deletestorage.objects.list
Fai clic su Crea.
Crea l'integrazione di archiviazione Snowflake per Cloud Storage
In un foglio di lavoro Snowflake, crea l'integrazione di archiviazione nel seguente modo:
USE ROLE ACCOUNTADMIN; CREATE STORAGE INTEGRATION SECOPS_GCS_INT TYPE = EXTERNAL_STAGE STORAGE_PROVIDER = 'GCS' ENABLED = TRUE STORAGE_ALLOWED_LOCATIONS = ('gcs://snowflake-activity-logs/snowflake/'); GRANT USAGE ON INTEGRATION SECOPS_GCS_INT TO ROLE SECOPS_EXPORTER;- Sostituisci
snowflake-activity-logscon il nome del tuo bucket.
- Sostituisci
Recupera il account di servizio creato da Snowflake per l'integrazione nel seguente modo:
DESC STORAGE INTEGRATION SECOPS_GCS_INT;Copia il valore della proprietà
STORAGE_GCP_SERVICE_ACCOUNT. Il valore ha il seguente formato:service-account-id@project1-123456.iam.gserviceaccount.com
Concedi al account di servizio Snowflake l'accesso al bucket
- Nella console Google Cloud , vai a Cloud Storage > Bucket.
- Fai clic sul bucket che hai creato (ad esempio
snowflake-activity-logs). - Vai alla scheda Autorizzazioni.
- Fai clic su Concedi l'accesso.
- Fornisci i seguenti dettagli di configurazione:
- Aggiungi entità: incolla il valore di
STORAGE_GCP_SERVICE_ACCOUNT. - Assegna ruoli: seleziona Snowflake Unload
- Aggiungi entità: incolla il valore di
- Fai clic su Salva.
Crea il formato file e lo staging esterno
In un foglio di lavoro Snowflake, crea il formato del file e lo stage che scrive nel bucket come segue:
USE ROLE SECOPS_EXPORTER; USE SCHEMA SECOPS_EXPORT.ACTIVITY; CREATE OR REPLACE FILE FORMAT SECOPS_JSON_FORMAT TYPE = JSON; CREATE OR REPLACE STAGE SECOPS_EXPORT_STAGE URL = 'gcs://snowflake-activity-logs/snowflake/' STORAGE_INTEGRATION = SECOPS_GCS_INT FILE_FORMAT = SECOPS_JSON_FORMAT;
Crea la tabella dello stato di esportazione
L'esportazione tiene traccia di quanto è stato letto in ogni visualizzazione. Senza questa filigrana, ogni esecuzione riesporterebbe l'intera visualizzazione e gli stessi eventi verrebbero importati di nuovo.
Crea la tabella degli stati e inizializzala come segue:
CREATE TABLE IF NOT EXISTS SECOPS_EXPORT_STATE ( VIEW_NAME STRING NOT NULL, LAST_EXPORTED TIMESTAMP_LTZ NOT NULL, WINDOW_END TIMESTAMP_LTZ ); INSERT INTO SECOPS_EXPORT_STATE (VIEW_NAME, LAST_EXPORTED) SELECT 'LOGIN_HISTORY', DATEADD('day', -7, CURRENT_TIMESTAMP()) UNION ALL SELECT 'QUERY_HISTORY', DATEADD('day', -7, CURRENT_TIMESTAMP());
Crea la procedura di esportazione
Crea la procedura che scarica entrambe le visualizzazioni e fa avanzare il watermark nel seguente modo:
CREATE OR REPLACE PROCEDURE SECOPS_EXPORT_ACTIVITY() RETURNS STRING LANGUAGE SQL AS $$ BEGIN UPDATE SECOPS_EXPORT_STATE SET WINDOW_END = DATEADD('hour', -3, CURRENT_TIMESTAMP()); COPY INTO @SECOPS_EXPORT_STAGE/login_history/ FROM ( SELECT OBJECT_CONSTRUCT( 'application', 'snowflake', 'log_type', 'login_history', 'EVENT_TIMESTAMP', EVENT_TIMESTAMP, 'EVENT_TYPE', EVENT_TYPE, 'USER_NAME', USER_NAME, 'CLIENT_IP', CLIENT_IP, 'REPORTED_CLIENT_TYPE', REPORTED_CLIENT_TYPE, 'REPORTED_CLIENT_VERSION', REPORTED_CLIENT_VERSION, 'FIRST_AUTHENTICATION_FACTOR', FIRST_AUTHENTICATION_FACTOR, 'SECOND_AUTHENTICATION_FACTOR', SECOND_AUTHENTICATION_FACTOR, 'IS_SUCCESS', IS_SUCCESS, 'ERROR_CODE', ERROR_CODE, 'ERROR_MESSAGE', ERROR_MESSAGE) FROM SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORY WHERE EVENT_TIMESTAMP > (SELECT LAST_EXPORTED FROM SECOPS_EXPORT_STATE WHERE VIEW_NAME = 'LOGIN_HISTORY') AND EVENT_TIMESTAMP <= (SELECT WINDOW_END FROM SECOPS_EXPORT_STATE WHERE VIEW_NAME = 'LOGIN_HISTORY') ) FILE_FORMAT = (TYPE = JSON) INCLUDE_QUERY_ID = TRUE; UPDATE SECOPS_EXPORT_STATE SET LAST_EXPORTED = WINDOW_END WHERE VIEW_NAME = 'LOGIN_HISTORY'; COPY INTO @SECOPS_EXPORT_STAGE/query_history/ FROM ( SELECT OBJECT_CONSTRUCT( 'application', 'snowflake', 'log_type', 'query_history', 'START_TIME', START_TIME, 'END_TIME', END_TIME, 'QUERY_ID', QUERY_ID, 'QUERY_TYPE', QUERY_TYPE, 'EXECUTION_STATUS', EXECUTION_STATUS, 'ERROR_MESSAGE', ERROR_MESSAGE, 'USER_NAME', USER_NAME, 'ROLE_NAME', ROLE_NAME, 'WAREHOUSE_NAME', WAREHOUSE_NAME, 'WAREHOUSE_SIZE', WAREHOUSE_SIZE, 'DATABASE_NAME', DATABASE_NAME, 'SCHEMA_NAME', SCHEMA_NAME, 'SESSION_ID', SESSION_ID, 'BYTES_SCANNED', BYTES_SCANNED, 'ROWS_PRODUCED', ROWS_PRODUCED, 'TOTAL_ELAPSED_TIME', TOTAL_ELAPSED_TIME) FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY WHERE START_TIME > (SELECT LAST_EXPORTED FROM SECOPS_EXPORT_STATE WHERE VIEW_NAME = 'QUERY_HISTORY') AND START_TIME <= (SELECT WINDOW_END FROM SECOPS_EXPORT_STATE WHERE VIEW_NAME = 'QUERY_HISTORY') ) FILE_FORMAT = (TYPE = JSON) INCLUDE_QUERY_ID = TRUE; UPDATE SECOPS_EXPORT_STATE SET LAST_EXPORTED = WINDOW_END WHERE VIEW_NAME = 'QUERY_HISTORY'; RETURN 'Export completed'; END; $$;
Ogni elemento della procedura esiste per un motivo:
- La finestra si chiude tre ore dopo l'ora attuale. Snowflake compila
LOGIN_HISTORYcon una latenza massima di due ore eQUERY_HISTORYcon una latenza massima di 45 minuti, quindi una finestra che termina ora ignora le righe che la visualizzazione non ha ancora materializzato. Pertanto, gli eventi raggiungono Google SecOps circa tre ore dopo il loro verificarsi. La riduzione del ritardo compromette la completezza delle operazioni per la freschezza. WINDOW_ENDviene scritto nella tabella prima dello scaricamento, quindi il valore utilizzato dall'istruzioneCOPY INTOe il valore riscritto inLAST_EXPORTEDsono identici. Il ricalcolo dell'ora corrente nella seconda istruzione salterebbe tutto ciò che è successo nel frattempo.- Ogni aggiornamento di
LAST_EXPORTEDviene eseguito dopo la propria istruzioneCOPY INTO. Se un caricamento non riesce, la procedura si interrompe, la filigrana rimane dov'era e la successiva esecuzione ripete la finestra anziché saltarla. INCLUDE_QUERY_ID = TRUEaggiunge un UUID a ogni nome file. Senza, i file scaricati vengono denominatidata_0_0_0e le esportazioni ripetute nello stesso percorso si scontrano, il che Snowflake documenta come fonte di dati duplicati nello stage.
Pianifica l'attività di esportazione
Crea e avvia l'attività nel seguente modo:
CREATE OR REPLACE TASK SECOPS_EXPORT_TASK WAREHOUSE = SECOPS_EXPORT_WH SCHEDULE = 'USING CRON 0 * * * * UTC' AS CALL SECOPS_EXPORT_ACTIVITY(); ALTER TASK SECOPS_EXPORT_TASK RESUME;Esegui l'attività una volta per verificare la configurazione senza attendere la pianificazione come segue:
EXECUTE TASK SECOPS_EXPORT_TASK;Controlla il risultato dell'esecuzione e i file che hanno raggiunto la fase nel seguente modo:
SELECT NAME, STATE, ERROR_MESSAGE, SCHEDULED_TIME FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY(TASK_NAME => 'SECOPS_EXPORT_TASK')) ORDER BY SCHEDULED_TIME DESC LIMIT 5; LIST @SECOPS_EXPORT_STAGE;
Recuperare il account di servizio Google SecOps
Google SecOps utilizza un account di servizio univoco per leggere i dati dal tuo bucket Cloud Storage. Devi concedere a questo account di servizio l'accesso al tuo bucket.
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo feed.
- Fai clic su Configura un singolo feed.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio,
Snowflake activity logs). - Seleziona Google Cloud Storage V2 come Tipo di origine.
- Seleziona Snowflake come Tipo di log.
- Fai clic su Ottieni service account.
Verrà visualizzato un indirizzo email del account di servizio univoco, ad esempio:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comCopia questo indirizzo email per utilizzarlo nel passaggio successivo.
Fai clic su Avanti.
Specifica i valori per i seguenti parametri di input:
URL bucket di archiviazione: inserisci l'URI del bucket Cloud Storage con il percorso del prefisso:
gs://snowflake-activity-logs/snowflake/
Opzione di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze:
- Non eliminare mai i file: non eliminare mai i file dall'origine (opzione consigliata per i test).
- Elimina file trasferiti e directory vuote: elimina i file e le directory vuote dall'origine dopo il completamento di un recupero riuscito.
Età massima del file: includi i file modificati nell'ultimo numero di giorni (il valore predefinito è 180 giorni)
Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset
Etichette di importazione: l'etichetta da applicare agli eventi di questo feed
Fai clic su Avanti.
Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.
Concedi le autorizzazioni IAM al account di servizio Google SecOps
Il account di servizio Google SecOps richiede due ruoli nel bucket Cloud Storage: Storage Object Viewer per leggere gli oggetti log e un ruolo a livello di bucket per leggere i metadati del bucket.
- Vai a Cloud Storage > Bucket.
- Fai clic sul nome del bucket.
- Vai alla scheda Autorizzazioni.
- Fai clic su Concedi l'accesso.
- Fornisci i seguenti dettagli di configurazione:
- Aggiungi entità: incolla l'email del account di servizio Google SecOps
- Assegna ruoli: seleziona entrambi i seguenti ruoli:
- Visualizzatore oggetti Storage: legge gli oggetti log.
- Storage Legacy Bucket Reader: legge i metadati del bucket. Se hai selezionato l'opzione di eliminazione Elimina file trasferiti e directory vuote, seleziona Storage Legacy Bucket Writer, che concede anche l'autorizzazione di eliminazione.
- Fai clic su Salva.
Metodo 2: Amazon S3 V2
Utilizza questo metodo quando i log devono essere inseriti in Amazon S3. Il lato Snowflake è identico, a parte l'integrazione dell'archiviazione e lo stage, quindi la procedura e l'attività di esportazione del Metodo 1 vengono riutilizzate senza modifiche.
Configura un bucket Amazon S3
- Crea un bucket Amazon S3 seguendo questa guida utente: Creazione di un bucket.
- Salva il nome e la regione del bucket per riferimento futuro. Ad esempio:
snowflake-activity-logs.
Configura la policy IAM AWS di Snowflake
- Accedi alla console di gestione AWS.
- Cerca e seleziona IAM.
- Seleziona Impostazioni account.
- In Security Token Service (STS) nell'elenco Endpoint, trova la regione Snowflake in cui si trova il tuo account.
- Se lo stato di STS è inattivo, sposta il pulsante di attivazione/disattivazione su Attivo.
- Seleziona Norme.
- Seleziona Crea policy.
- In Editor policy, seleziona JSON.
Copia e incolla la seguente policy, che concede a Snowflake le autorizzazioni necessarie per scaricare i dati in un bucket e un percorso di cartella:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:GetObjectVersion", "s3:DeleteObject", "s3:DeleteObjectVersion" ], "Resource": "arn:aws:s3:::snowflake-activity-logs/snowflake/*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::snowflake-activity-logs", "Condition": { "StringLike": { "s3:prefix": [ "snowflake/*" ] } } } ] }Fai clic su Avanti.
Inserisci un Nome della norma (ad esempio,
snowflake_access) e una descrizione facoltativa.Fai clic su Crea policy.
Configura il ruolo IAM AWS Snowflake
- In IAM, seleziona Ruoli.
- Fai clic su Crea ruolo.
- Seleziona Account AWS come tipo di entità attendibile.
- Seleziona Un altro account AWS.
- Nel campo ID account, inserisci temporaneamente il tuo ID account AWS. Modifica la relazione di trust in un secondo momento e concedi l'accesso a Snowflake.
- Seleziona l'opzione Richiedi ID esterno.
- Inserisci un ID segnaposto, ad esempio
0000. In un secondo momento, lo sostituirai con l'ID esterno dell'integrazione dell'archiviazione. - Fai clic su Avanti.
- Seleziona la policy IAM che hai creato in precedenza.
- Fai clic su Avanti.
- Inserisci un nome e una descrizione per il ruolo.
- Fai clic su Crea ruolo.
- Nella pagina di riepilogo del ruolo, copia e salva il valore ARN ruolo.
Crea l'integrazione dell'archiviazione Snowflake per Amazon S3
In un foglio di lavoro Snowflake, crea l'integrazione di archiviazione nel seguente modo:
USE ROLE ACCOUNTADMIN; CREATE STORAGE INTEGRATION SECOPS_S3_INT TYPE = EXTERNAL_STAGE STORAGE_PROVIDER = 'S3' ENABLED = TRUE STORAGE_AWS_ROLE_ARN = '<IAM_ROLE_ARN>' STORAGE_ALLOWED_LOCATIONS = ('s3://snowflake-activity-logs/snowflake/'); GRANT USAGE ON INTEGRATION SECOPS_S3_INT TO ROLE SECOPS_EXPORTER;- Sostituisci
<IAM_ROLE_ARN>con l'ARN del ruolo che hai salvato.
- Sostituisci
Recupera l'identità AWS creata da Snowflake per l'integrazione nel seguente modo:
DESC INTEGRATION SECOPS_S3_INT;Copia e salva i valori delle seguenti proprietà come indicato:
- STORAGE_AWS_IAM_USER_ARN
- STORAGE_AWS_EXTERNAL_ID
Concedi all'utente IAM Snowflake l'accesso al bucket
- Vai alla console di gestione AWS.
- Seleziona IAM > Ruoli.
- Seleziona il ruolo che hai creato in precedenza.
- Seleziona la scheda Relazioni di trust.
- Fai clic su Modifica policy di attendibilità.
Aggiorna il documento della policy con i valori di output
DESC INTEGRATIONnel seguente modo:{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "<STORAGE_AWS_IAM_USER_ARN>" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "<STORAGE_AWS_EXTERNAL_ID>" } } } ] }Fai clic su Aggiorna policy.
Crea il formato file, esegui lo staging ed esporta gli oggetti
In un foglio di lavoro Snowflake, crea il formato del file e lo stage che scrive nel bucket come segue:
USE ROLE SECOPS_EXPORTER; USE SCHEMA SECOPS_EXPORT.ACTIVITY; CREATE OR REPLACE FILE FORMAT SECOPS_JSON_FORMAT TYPE = JSON; CREATE OR REPLACE STAGE SECOPS_EXPORT_STAGE URL = 's3://snowflake-activity-logs/snowflake/' STORAGE_INTEGRATION = SECOPS_S3_INT FILE_FORMAT = SECOPS_JSON_FORMAT;Crea la tabella di stato, la procedura e l'attività esattamente come descritto nel Metodo 1, nelle sezioni Crea la tabella di stato dell'esportazione, Crea la procedura di esportazione e Pianifica l'attività di esportazione. Le istruzioni fanno riferimento alla fase per nome, quindi non devono essere modificate.
Configurare AWS IAM per Google SecOps
- Accedi alla console di gestione AWS.
- Crea un utente seguendo questa guida utente: Creazione di un utente IAM.
- Seleziona l'utente creato.
- Seleziona la scheda Credenziali di sicurezza.
- Fai clic su Crea chiave di accesso nella sezione Chiavi di accesso.
- Seleziona Servizio di terze parti come Caso d'uso.
- Fai clic su Avanti.
- (Facoltativo) Aggiungi un tag di descrizione.
- Fai clic su Crea chiave di accesso.
- Fai clic su Scarica file .csv per salvare la chiave di accesso e la chiave di accesso segreta per riferimento futuro.
- Fai clic su Fine.
- Seleziona la scheda Autorizzazioni.
- Fai clic su Aggiungi autorizzazioni nella sezione Criteri di autorizzazione.
- Seleziona Aggiungi autorizzazioni.
- Seleziona Allega direttamente le norme.
- Cerca e seleziona il criterio AmazonS3FullAccess.
- Fai clic su Avanti.
- Fai clic su Aggiungi autorizzazioni.
Configura un feed in Google SecOps per importare i log di Snowflake
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo feed.
- Nella pagina successiva, fai clic su Configura un singolo feed.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio,
Snowflake activity logs). - Seleziona Amazon S3 V2 come Tipo di origine.
- Seleziona Snowflake come Tipo di log.
- Fai clic su Avanti.
Specifica i valori per i seguenti parametri di input come segue:
- URI S3:
s3://snowflake-activity-logs/snowflake/ - Opzione di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
- Età massima del file: includi i file modificati nell'ultimo numero di giorni (il valore predefinito è 180 giorni)
- ID chiave di accesso: chiave di accesso utente con accesso al bucket S3
- Chiave di accesso segreta: chiave segreta dell'utente con accesso al bucket S3
- Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset
- Etichette di importazione: l'etichetta da applicare agli eventi di questo feed
- URI S3:
Fai clic su Avanti.
Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logica |
|---|---|---|
column4_label |
additional.fields |
Unita |
column7_label |
additional.fields |
Unita |
first_authentication_factor_label |
additional.fields |
Unita |
host_list |
additional.fields |
Unita |
query_text_label |
additional.fields |
Unita |
query_type_label |
additional.fields |
Unita |
roleIds_list |
additional.fields |
Unita |
roleNames_list |
additional.fields |
Unita |
rolecount_label |
additional.fields |
Unita |
user_count_label |
additional.fields |
Unita |
has_principal |
extensions.auth.type |
Mappato: true → AUTHTYPE_UNSPECIFIED |
START_TIME |
metadata.event_timestamp |
Analizzato come yyyy-MM-dd HH:mm:ss.SSS Z |
column2 |
metadata.event_timestamp |
Analizzato come yyyy-MM-dd HH:mm:ss.SSS Z |
column20 |
metadata.event_timestamp |
Analizzato come yyyy-MM-dd HH:mm:ss.SSS Z |
ts |
metadata.event_timestamp |
Analizzato come ISO8601 |
event_type |
metadata.event_type |
Mappato direttamente |
has_principal |
metadata.event_type |
Mappato: true → NETWORK_CONNECTION, true → STATUS_UPDATE, true → USER_LOGIN |
has_principal_user |
metadata.event_type |
Mappato: true → USER_UNCATEGORIZED |
column10 |
metadata.product_event_type |
Mappato direttamente |
QUERY_ID |
metadata.product_log_id |
Mappato direttamente |
column1 |
metadata.product_log_id |
Mappato direttamente |
column6 |
metadata.product_version |
Mappato direttamente |
SESSION_ID |
network.http.session_id |
Mappato direttamente |
RECEIVED_BYTES |
network.received_bytes |
Rinominate/mappate |
BYTES_SENT_OVER_THE_NETWORK |
network.sent_bytes |
Rinominate/mappate |
SENT_BYTES |
network.sent_bytes |
Rinominate/mappate |
APPLICATION |
principal.application |
Mappato direttamente |
data.user_name |
principal.asset.hostname |
Mappato direttamente |
CLIENT_IP |
principal.asset.ip |
Unita |
IP |
principal.asset.ip |
Unita |
column5 |
principal.asset.ip |
Unita |
SOURCE_REGION |
principal.cloud.availability_zone |
Mappato direttamente |
SOURCE_CLOUD |
principal.cloud.environment |
Mappato: (?i)azure → MICROSOFT_AZURE, (?i)amazon → AMAZON_WEB_SERVICES, (?i)google … |
data.user_name |
principal.hostname |
Mappato direttamente |
CLIENT_IP |
principal.ip |
Unita |
IP |
principal.ip |
Unita |
column5 |
principal.ip |
Unita |
OS |
principal.platform |
Mappato: (?i)Linux → LINUX, (?i)windows → WINDOWS, (?i)mac/ios → MAC |
OS_VERSION |
principal.platform_version |
Mappato direttamente |
SOURCE_CLOUD_label |
principal.resource.attribute.labels |
Unita |
roles |
principal.user.attribute.roles |
Unita |
data.role_name |
principal.user.role_name |
Mappato direttamente |
column9 |
principal.user.user_display_name |
Mappato direttamente |
USER_NAME |
principal.user.userid |
Mappato direttamente |
column10 |
principal.user.userid |
Mappato direttamente |
column3 |
principal.user.userid |
Mappato direttamente |
EXECUTION_STATUS |
security_result.action |
Mappato: (?i)success → action, (?i)fail → security_result_action_block |
STATUS |
security_result.action |
Mappato: (?i)success → action, (?i)fail → action |
action |
security_result.action |
Unita |
security_result_action_block |
security_result.action |
Unita |
OCSP_MODE |
security_result.action_details |
Mappato direttamente |
column11 |
security_result.action_details |
Mappato direttamente |
column3 |
security_result.action_details |
Mappato direttamente |
BYTES_DELETED_label |
security_result.detection_fields |
Unita |
BYTES_READ_FROM_RESULT_label |
security_result.detection_fields |
Unita |
BYTES_SCANNED_label |
security_result.detection_fields |
Unita |
BYTES_SPILLED_TO_LOCAL_STORAGE_label |
security_result.detection_fields |
Unita |
BYTES_SPILLED_TO_REMOTE_STORAGE_label |
security_result.detection_fields |
Unita |
BYTES_WRITTEN_TO_RESULT_label |
security_result.detection_fields |
Unita |
BYTES_WRITTEN_label |
security_result.detection_fields |
Unita |
CHILD_QUERIES_WAIT_TIME_label |
security_result.detection_fields |
Unita |
CLUSTER_NUMBER_label |
security_result.detection_fields |
Unita |
COMPILATION_TIME_label |
security_result.detection_fields |
Unita |
CREDITS_USED_CLOUD_SERVICES_label |
security_result.detection_fields |
Unita |
DATABASE_ID_label |
security_result.detection_fields |
Unita |
DATABASE_NAME_label |
security_result.detection_fields |
Unita |
END_TIME_label |
security_result.detection_fields |
Unita |
ERROR_MESSAGE_label |
security_result.detection_fields |
Unita |
EXECUTION_TIME_label |
security_result.detection_fields |
Unita |
EXTERNAL_FUNCTION_TOTAL_INVOCATIONS_label |
security_result.detection_fields |
Unita |
EXTERNAL_FUNCTION_TOTAL_RECEIVED_BYTES_label |
security_result.detection_fields |
Unita |
EXTERNAL_FUNCTION_TOTAL_RECEIVED_ROWS_label |
security_result.detection_fields |
Unita |
EXTERNAL_FUNCTION_TOTAL_SENT_BYTES_label |
security_result.detection_fields |
Unita |
EXTERNAL_FUNCTION_TOTAL_SENT_ROWS_label |
security_result.detection_fields |
Unita |
INBOUND_DATA_TRANSFER_BYTES_label |
security_result.detection_fields |
Unita |
IS_CLIENT_GENERATED_STATEMENT_label |
security_result.detection_fields |
Unita |
LIST_EXTERNAL_FILES_TIME_label |
security_result.detection_fields |
Unita |
OUTBOUND_DATA_TRANSFER_BYTES_label |
security_result.detection_fields |
Unita |
PARTITIONS_SCANNED_label |
security_result.detection_fields |
Unita |
PARTITIONS_TOTAL_label |
security_result.detection_fields |
Unita |
PERCENTAGE_SCANNED_FROM_CACHE_label |
security_result.detection_fields |
Unita |
QUERY_ACCELERATION_BYTES_SCANNED_label |
security_result.detection_fields |
Unita |
QUERY_ACCELERATION_PARTITIONS_SCANNED_label |
security_result.detection_fields |
Unita |
QUERY_ACCELERATION_UPPER_LIMIT_SCALE_FACTOR_label |
security_result.detection_fields |
Unita |
QUERY_HASH_VERSION_label |
security_result.detection_fields |
Unita |
QUERY_HASH_label |
security_result.detection_fields |
Unita |
QUERY_LOAD_PERCENT_label |
security_result.detection_fields |
Unita |
QUERY_PARAMETERIZED_HASH_VERSION_label |
security_result.detection_fields |
Unita |
QUERY_TAG_label |
security_result.detection_fields |
Unita |
QUERY_TYPE_label |
security_result.detection_fields |
Unita |
QUEUED_OVERLOAD_TIME_label |
security_result.detection_fields |
Unita |
QUEUED_PROVISIONING_TIME_label |
security_result.detection_fields |
Unita |
QUEUED_REPAIR_TIME_label |
security_result.detection_fields |
Unita |
RELEASE_VERSION_label |
security_result.detection_fields |
Unita |
ROLE_TYPE_label |
security_result.detection_fields |
Unita |
ROWS_DELETED_label |
security_result.detection_fields |
Unita |
ROWS_INSERTED_label |
security_result.detection_fields |
Unita |
ROWS_PRODUCED_label |
security_result.detection_fields |
Unita |
ROWS_UNLOADED_label |
security_result.detection_fields |
Unita |
ROWS_UPDATED_label |
security_result.detection_fields |
Unita |
ROWS_WRITTEN_TO_RESULT_label |
security_result.detection_fields |
Unita |
SCHEMA_ID_label |
security_result.detection_fields |
Unita |
SCHEMA_NAME_label |
security_result.detection_fields |
Unita |
TOTAL_ELAPSED_TIME_label |
security_result.detection_fields |
Unita |
TRANSACTION_BLOCKED_TIME_label |
security_result.detection_fields |
Unita |
TRANSACTION_ID_label |
security_result.detection_fields |
Unita |
WAREHOUSE_ID_label |
security_result.detection_fields |
Unita |
WAREHOUSE_NAME_label |
security_result.detection_fields |
Unita |
WAREHOUSE_SIZE_label |
security_result.detection_fields |
Unita |
WAREHOUSE_TYPE_label |
security_result.detection_fields |
Unita |
authentication_factor_label |
security_result.detection_fields |
Unita |
column4_label |
security_result.detection_fields |
Unita |
column6_label |
security_result.detection_fields |
Unita |
column7_label |
security_result.detection_fields |
Unita |
column8_label |
security_result.detection_fields |
Unita |
event_id_label |
security_result.detection_fields |
Unita |
event_type_label |
security_result.detection_fields |
Unita |
is_success_label |
security_result.detection_fields |
Unita |
python_compiler_label |
security_result.detection_fields |
Unita |
python_runtime_label |
security_result.detection_fields |
Unita |
python_version_label |
security_result.detection_fields |
Unita |
reported_client_type_label |
security_result.detection_fields |
Unita |
reported_client_version_label |
security_result.detection_fields |
Unita |
tracing_label |
security_result.detection_fields |
Unita |
EXECUTION_STATUS |
security_result.summary |
Mappato direttamente |
STATUS |
security_result.summary |
Mappato direttamente |
column17 |
security_result.summary |
Mappato direttamente |
TARGET_REGION |
target.cloud.availability_zone |
Mappato direttamente |
TARGET_CLOUD |
target.cloud.environment |
Mappato: (?i)azure → MICROSOFT_AZURE, (?i)amazon → AMAZON_WEB_SERVICES, (?i)google … |
TARGET_CLOUD_label |
target.resource.attribute.labels |
Unita |
column2_label |
target.resource.attribute.labels |
Unita |
column7_label |
target.resource.attribute.labels |
Unita |
USER_NAME |
target.user.userid |
Mappato direttamente |
column4 |
target.user.userid |
Mappato direttamente |
| N/D | extensions.auth.type |
Costante: AUTHTYPE_UNSPECIFIED |
| N/D | metadata.event_type |
Costante: NETWORK_CONNECTION |
| N/D | metadata.product_name |
Costante: SNOWFLAKE |
| N/D | metadata.vendor_name |
Costante: SNOWFLAKE |
| N/D | principal.cloud.environment |
Costante: MICROSOFT_AZURE |
| N/D | principal.platform |
Costante: LINUX |
| N/D | target.cloud.environment |
Costante: MICROSOFT_AZURE |
Log delle modifiche
Visualizza il log delle modifiche per questo parser
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.