Raccogliere i log di Snowflake

Supportato in:

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 di Snowflake. Quindi, esegue il mapping dei campi estratti al modello di dati unificato (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 con privilegi ad AWS
  • Accesso con privilegi a Snowflake (ACCOUNTADMIN)

Configurare un bucket Amazon S3

  1. Crea un bucket Amazon S3 seguendo questa guida utente: Creazione di un bucket
  2. Salva il nome e la regione del bucket per riferimento futuro.

Configurare la policy IAM AWS di Snowflake

  1. Accedi alla console di gestione AWS.
  2. Cerca e seleziona IAM.
  3. Seleziona Impostazioni account.
  4. In Servizio token di sicurezza (STS) nell'elenco Endpoint, trova la regione Snowflake in cui si trova il tuo account.
  5. Se lo stato di STS è Inattivo, sposta l'opzione di attivazione/disattivazione su Attivo.
  6. Seleziona Policy.
  7. Seleziona Crea policy.
  8. Nell'editor di policy, seleziona JSON.
  9. Copia e incolla la seguente policy (in formato JSON) per fornire a Snowflake le autorizzazioni necessarie per caricare o scaricare i dati utilizzando un singolo bucket e un 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>/*"
                        ]
                    }
                }
            }
        ]
    }
    
  10. Fai clic su Avanti.

  11. Inserisci un nome della policy (ad esempio, snowflake_access) e una descrizione facoltativa.

  12. Fai clic su Crea policy.

Configurare il ruolo IAM AWS di Snowflake

  1. In AWS Identity and Access Management (IAM), seleziona Ruoli.
  2. Fai clic su Crea ruolo.
  3. Seleziona Account AWS come tipo di entità attendibile.
  4. Seleziona Un altro account AWS.
  5. Nel campo ID account, inserisci temporaneamente il tuo ID account AWS. In un secondo momento, modificherai la relazione di attendibilità e concederai l'accesso a Snowflake.
  6. Seleziona l'opzione Richiedi ID esterno.
  7. Inserisci un ID segnaposto, ad esempio 0000. In un passaggio successivo, modificherai la relazione di attendibilità per il tuo ruolo IAM e specificherai l'ID esterno per l'integrazione dell'archiviazione.
  8. Fai clic su Avanti.
  9. Seleziona la policy IAM che hai creato in precedenza.
  10. Fai clic su Avanti.
  11. Inserisci un nome e una descrizione per il ruolo.
  12. Fai clic su Crea ruolo.
  13. Nella pagina di riepilogo del ruolo, copia e salva il valore ARN del ruolo.

Configurare l'integrazione di Snowflake S3

  1. Connettiti al database Snowflake.
  2. Sostituisci i seguenti campi ed esegui il comando:

    • <integration_name> è il nome della nuova integrazione (ad esempio, s3_integration).
    • <iam_role> è il nome della risorsa Amazon (ARN) del ruolo che hai creato in precedenza.
    • <aws_s3_bucket_path> è il percorso del bucket che hai creato in precedenza (ad esempio, s3://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 dell'utente IAM AWS per accedere al bucket

  1. Recupera l'ARN dell'utente IAM creato automaticamente per il tuo account Snowflake, sostituendo <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= | | +---------------------------+---------------+--------------------------------------------------------------------------------+------------------+
  1. Copia e salva i valori delle seguenti proprietà:
    • STORAGE_AWS_IAM_USER_ARN
    • STORAGE_AWS_EXTERNAL_ID
  2. Vai alla console di gestione AWS.
  3. Seleziona IAM > Ruoli.
  4. Seleziona il ruolo che hai creato in precedenza.
  5. Seleziona la scheda Relazioni di attendibilità.
  6. Fai clic su Modifica policy di attendibilità.
  7. Aggiorna il documento della policy con i valori di output 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>"
            }
          }
        }
      ]
    }
    
  8. Sostituisci:

    • snowflake_user_arn è il valore STORAGE_AWS_IAM_USER_ARN che hai registrato.
    • snowflake_external_id è il valore STORAGE_AWS_EXTERNAL_ID che hai registrato.
  9. Fai clic su Aggiorna policy.

Configurare il formato dei file JSON in Snowflake

  1. In Snowflake, inserisci il seguente comando:

    CREATE OR REPLACE FILE FORMAT my_json_format
      type = json
      COMPRESSION = 'gzip'
      null_if = ('NULL', 'null');
    

Creare un'area temporanea S3 in Snowflake

  1. 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

  1. Esegui il comando di scaricamento per esportare i dati dalle tabelle all'area temporanea 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);
    
  2. Ripeti la procedura di esportazione per tutte le seguenti tabelle in cui Snowflake archivia i dati relativi a log e 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

  1. Accedi alla console di gestione AWS.
  2. Crea un utente seguendo questa guida utente: Creazione di un utente IAM.
  3. Seleziona l'utente creato.
  4. Seleziona la scheda Credenziali di sicurezza.
  5. Fai clic su Crea chiave di accesso nella sezione Chiavi di accesso.
  6. Seleziona Servizio di terze parti come Caso d'uso.
  7. Fai clic su Avanti.
  8. (Facoltativo) Aggiungi un tag di descrizione.
  9. Fai clic su Crea chiave di accesso.
  10. Fai clic su Scarica file CSV per salvare la chiave di accesso e la chiave di accesso secret per riferimento futuro.
  11. Fai clic su Fine.
  12. Seleziona la scheda Autorizzazioni.
  13. Fai clic su Aggiungi autorizzazioni nella sezione Policy di autorizzazione.
  14. Seleziona Aggiungi autorizzazioni.
  15. Seleziona Collega policy direttamente.
  16. Cerca e seleziona la policy AmazonS3FullAccess.
  17. Fai clic su Avanti.
  18. Fai clic su Aggiungi autorizzazioni.

Configurare i feed

Per configurare un feed:

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Nella pagina successiva, fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, Log di Snowflake).
  5. Seleziona Amazon S3 V2 come Tipo di origine.
  6. Seleziona Snowflake come Tipo di log.
  7. Fai clic su Avanti.
  8. Specifica i valori per i seguenti parametri di input:

    • 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.
    • Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
  9. Fai clic su Avanti.

  10. Esamina la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.

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.