Raccogliere i log di Snowflake
Questo documento spiega come importare i log di Snowflake in Google Security Operations utilizzando AWS S3. Il parser estrae i campi dai messaggi di log utilizzando una serie di regole di corrispondenza dei pattern Grok e KV, progettate specificamente per gestire il formato dei log Snowflake. Quindi mappa i campi estratti al modello Unified Data Model (UDM), arricchendo i dati con un contesto aggiuntivo e standardizzando la rappresentazione per ulteriori analisi.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Istanza Google SecOps
- Accesso privilegiato ad AWS
- Accesso privilegiato a Snowflake (ACCOUNTADMIN)
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.
Configura il criterio 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 criterio.
- In Editor policy, seleziona JSON.
Copia e incolla il seguente criterio (in formato JSON) per fornire a Snowflake le autorizzazioni necessarie per caricare o scaricare dati utilizzando un singolo bucket e un singolo percorso di cartella. Puoi anche eliminare i file di dati utilizzando l'opzione di copia PURGE.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:GetObjectVersion", "s3:DeleteObject", "s3:DeleteObjectVersion" ], "Resource": "arn:aws:s3:::<bucket>/<prefix>/*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::<bucket>", "Condition": { "StringLike": { "s3:prefix": [ "<prefix>/*" ] } } } ] }
Fai clic su Avanti.
Inserisci un nome della norma (ad esempio, snowflake_access) e una descrizione facoltativa.
Fai clic su Crea criterio.
Configura il ruolo IAM AWS di Snowflake
- In AWS Identity and Access Management (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. In un secondo momento, modifichi la relazione di trust e concedi l'accesso a Snowflake.
- Seleziona l'opzione Richiedi ID esterno.
- Inserisci un ID segnaposto come 0000. In un passaggio successivo, modificherai la relazione di trust per il tuo ruolo IAM e specificherai l'ID esterno per l'integrazione dell'archiviazione.
- Fai clic su Avanti.
- Seleziona il criterio 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.
Configura l'integrazione di Snowflake S3
- Connettiti al database Snowflake.
Sostituisci i seguenti campi ed esegui il comando:
<integration_name>
è il nome della nuova integrazione (ad esempio, s3_integration).<iam_role>
è l'Amazon Resource Name (ARN) del ruolo che hai creato in precedenza.<aws_s3_bucket_path>
è il percorso del bucket che hai creato in precedenza (ad esempios3://your-log-bucket-name/
).
CREATE OR REPLACE STORAGE INTEGRATION <integration_name> TYPE = EXTERNAL_STAGE STORAGE_PROVIDER = 'S3' ENABLED = TRUE STORAGE_AWS_ROLE_ARN = '<iam_role>' STORAGE_ALLOWED_LOCATIONS = ('<aws_s3_bucket_path>')
Configurare le autorizzazioni utente AWS IAM per accedere al bucket
- Recupera l'ARN dell'utente IAM creato automaticamente per il tuo account Snowflake, sostituisci
<integration_name>
con il nome effettivo dell'integrazione che hai creato in precedenza:none DESC INTEGRATION <integration_name>;
- Ad esempio:
none DESC INTEGRATION s3_integration; +---------------------------+---------------+--------------------------------------------------------------------------------+------------------+ | property | property_type | property_value | property_default | +---------------------------+---------------+--------------------------------------------------------------------------------+------------------| | ENABLED | Boolean | true | false | | STORAGE_ALLOWED_LOCATIONS | List | s3://mybucket1/mypath1/,s3://mybucket2/mypath2/ | [] | | STORAGE_BLOCKED_LOCATIONS | List | s3://mybucket1/mypath1/sensitivedata/,s3://mybucket2/mypath2/sensitivedata/ | [] | | STORAGE_AWS_IAM_USER_ARN | String | arn:aws:iam::123456789001:user/abc1-b-self1234 | | | STORAGE_AWS_ROLE_ARN | String | arn:aws:iam::001234567890:role/myrole | | | STORAGE_AWS_EXTERNAL_ID | String | MYACCOUNT_SFCRole=2_a123456/s0aBCDEfGHIJklmNoPq= | | +---------------------------+---------------+--------------------------------------------------------------------------------+------------------+
- Copia e salva i valori delle seguenti proprietà:
- STORAGE_AWS_IAM_USER_ARN
- STORAGE_AWS_EXTERNAL_ID
- Vai alla Console di gestione AWS.
- Seleziona IAM > Ruoli.
- Seleziona il ruolo creato in precedenza.
- Seleziona la scheda Relazioni di trust.
- Fai clic su Modifica policy di attendibilità.
Aggiorna il documento delle norme con i valori di output di DESC INTEGRATION:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "<snowflake_user_arn>" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "<snowflake_external_id>" } } } ] }
Sostituisci:
snowflake_user_arn
è il valore diSTORAGE_AWS_IAM_USER_ARN
che hai registrato.snowflake_external_id
è il valore diSTORAGE_AWS_EXTERNAL_ID
che hai registrato.
Fai clic su Aggiorna criteri.
Configura il formato del file JSON in Snowflake
In Snowflake, inserisci questo comando:
CREATE OR REPLACE FILE FORMAT my_json_format type = json COMPRESSION = 'gzip' null_if = ('NULL', 'null');
Crea un'area temporanea S3 in Snowflake
In Snowflake, sostituisci i seguenti campi e inserisci il comando:
<DB_NAME>
<DB_SCHEMA_NAME>
<AWS_S3_BUCKET_PATH>
use database '<DB_NAME>'; use schema '<DB_SCHEMA_NAME>'; CREATE OR REPLACE STAGE my_s3_stage storage_integration = s3_integration url = '<AWS_S3_BUCKET_PATH>' file_format = my_json_format;
Configurare Snowflake per esportare i dati
Esegui il comando unload per esportare i dati dalle tabelle alla fase e a sua volta ad AWS S3:
use database '<DB_NAME>'; use WAREHOUSE '<WAREHOUSE_NAME>'; copy into @my_s3_stage/login_history from (SELECT OBJECT_CONSTRUCT('application', 'snowflake' ,'environment', '<PUT_HERE_ENV_NAME>', '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, 'FIRST_AUTHENTICATION_FACTOR',FIRST_AUTHENTICATION_FACTOR, 'IS_SUCCESS', IS_SUCCESS, 'ERROR_CODE', ERROR_CODE, 'ERROR_MESSAGE', ERROR_MESSAGE) from snowflake.account_usage.Login_history) FILE_FORMAT = (TYPE = JSON) ; copy into @my_s3_stage/access_history from (SELECT OBJECT_CONSTRUCT('application', 'snowflake' ,'environment', '<PUT_HERE_DB_NAME>', 'log_type', 'access_history', 'QUERY_START_TIME',QUERY_START_TIME, 'USER_NAME', USER_NAME, 'DIRECT_OBJECTS_ACCESSED',DIRECT_OBJECTS_ACCESSED, 'BASE_OBJECTS_ACCESSED', BASE_OBJECTS_ACCESSED, 'OBJECTS_MODIFIED', OBJECTS_MODIFIED) from snowflake.account_usage.Access_History ) FILE_FORMAT = (TYPE = JSON);
Ripeti la procedura di esportazione per tutte le seguenti tabelle in cui Snowflake archivia i log e i dati correlati all'audit:
Databases ; WAREHOUSE_EVENTS_HISTORY ; WAREHOUSE_LOAD_HISTORY ; WAREHOUSE_METERING_HISTORY ; DATABASE_STORAGE_USAGE_HISTORY ; DATA_TRANSFER_HISTORY ; GRANTS_TO_ROLES ; GRANTS_TO_USERS ; METERING_DAILY_HISTORY ; PIPE_USAGE_HISTORY ; REPLICATION_USAGE_HISTORY ; STAGE_STORAGE_USAGE_HISTORY ; STORAGE_USAGE ; TASK_HISTORY ; COPY_HISTORY ;
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 il tag della 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 per le autorizzazioni.
- Seleziona Aggiungi autorizzazioni.
- Seleziona Allega direttamente le norme.
- Cerca e seleziona il criterio AmazonS3FullAccess.
- Fai clic su Avanti.
- Fai clic su Aggiungi autorizzazioni.
Configurare i feed
Esistono due diversi punti di accesso per configurare i feed nella piattaforma Google SecOps:
- Impostazioni SIEM > Feed
- Hub dei contenuti > Pacchetti di contenuti
Configura i feed da Impostazioni SIEM > Feed
Per configurare un feed:
- 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, Log Snowflake).
- Seleziona Amazon S3 come Tipo di origine.
- Seleziona Snowflake come Tipo di log.
- Fai clic su Avanti.
Specifica i valori per i seguenti parametri di input:
- Region (Regione): la regione in cui si trova il bucket Amazon S3.
- URI S3: l'URI del bucket (il formato deve essere
s3://your-log-bucket-name/
). Sostituisci quanto segue:your-log-bucket-name
: il nome del bucket.
- L'URI è una: seleziona Directory o Directory che include sottodirectory.
- Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
- ID chiave di accesso: la chiave di accesso utente con accesso al bucket S3.
- Chiave di accesso segreta: la chiave segreta dell'utente con accesso al bucket S3.
Fai clic su Avanti.
Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.
Configurare i feed dall'hub dei contenuti
Specifica i valori per i seguenti campi:
Region (Regione): la regione in cui si trova il bucket Amazon S3.
- URI S3: l'URI del bucket (il formato deve essere
s3://your-log-bucket-name/
). Sostituisci quanto segue:your-log-bucket-name
: il nome del bucket.
- L'URI è una: seleziona Directory o Directory che include sottodirectory.
- Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
- ID chiave di accesso: la chiave di accesso utente con accesso al bucket S3.
- Chiave di accesso segreta: la chiave segreta dell'utente con accesso al bucket S3.
- URI S3: l'URI del bucket (il formato deve essere
Opzioni avanzate
- Nome feed: un valore precompilato che identifica il feed.
- Tipo di origine: metodo utilizzato per raccogliere i log in Google SecOps.
- Spazio dei nomi dell'asset: lo spazio dei nomi associato al feed.
- Etichette di importazione: etichette applicate a tutti gli eventi di questo feed.
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.