Recopila registros de Snowflake

Compatible con:

En este documento, se explica cómo transferir registros de Snowflake a Google Security Operations con AWS S3. El analizador extrae campos de los mensajes de registro con una serie de reglas de coincidencia de patrones de Grok y KV, diseñadas específicamente para controlar el formato de registro de Snowflake. Luego, asigna los campos extraídos al modelo de datos unificado (UDM), enriquece los datos con contexto adicional y estandariza la representación para un análisis más detallado.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Instancia de Google SecOps
  • Acceso con privilegios a AWS
  • Acceso con privilegios a Snowflake (ACCOUNTADMIN)

Configura un bucket de Amazon S3

  1. Crea un bucket de Amazon S3 siguiendo esta guía del usuario: Cómo crear un bucket
  2. Guarda el Nombre y la Región del bucket para usarlos como referencia en el futuro.

Configura la política de IAM de AWS de Snowflake

  1. Accede a la consola de administración de AWS.
  2. Busca y selecciona IAM.
  3. Selecciona Configuración de la cuenta.
  4. En Servicio de tokens de seguridad (STS) en la lista Puntos finales, busca la región de Snowflake en la que se encuentra tu cuenta.
  5. Si el estado de STS es inactivo, mueve el botón de activación a Activo.
  6. Selecciona Políticas.
  7. Selecciona Crear política.
  8. En Editor de políticas, selecciona JSON.
  9. Copia y pega la siguiente política (en formato JSON) para proporcionarle a Snowflake los permisos necesarios para cargar o descargar datos con un solo bucket y una sola ruta de acceso a la carpeta. También puedes purgar archivos de datos con la opción de 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. Haz clic en Siguiente.

  11. Ingresa un Nombre de la política (por ejemplo, snowflake_access) y una Descripción opcional.

  12. Haz clic en Crear política.

Configura el rol de IAM de AWS de Snowflake

  1. En Identity and Access Management (IAM) de AWS, selecciona Roles.
  2. Haz clic en Crear rol.
  3. Selecciona Cuenta de AWS como el tipo de entidad de confianza.
  4. Seleccione Otra cuenta de AWS.
  5. En el campo ID de cuenta, ingresa tu propio ID de cuenta de AWS de forma temporal. Más adelante, modificas la relación de confianza y otorgas acceso a Snowflake.
  6. Selecciona la opción ID externa obligatoria.
  7. Ingresa un ID de marcador de posición, como 0000. En un paso posterior, modificarás la relación de confianza de tu rol de IAM y especificarás el ID externo de tu integración de almacenamiento.
  8. Haz clic en Siguiente.
  9. Selecciona la política de IAM que creaste antes.
  10. Haz clic en Siguiente.
  11. Ingresa un nombre y una descripción para el rol.
  12. Haz clic en Crear rol.
  13. En la página de resumen del rol, copia y guarda el valor del ARN del rol.

Configura la integración de S3 de Snowflake

  1. Conéctate a la base de datos de Snowflake.
  2. Reemplaza los siguientes campos y ejecuta el comando:

    • <integration_name> es el nombre de la integración nueva (por ejemplo, s3_integration).
    • <iam_role> es el nombre de recurso de Amazon (ARN) del rol que creaste antes.
    • <aws_s3_bucket_path> es la ruta de acceso al bucket que creaste antes (por ejemplo, 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>')
    

Configura los permisos del usuario de IAM de AWS para acceder al bucket

  1. Recupera el ARN del usuario de IAM que se creó automáticamente para tu cuenta de Snowflake y reemplaza <integration_name> por el nombre real de la integración que creaste antes: none DESC INTEGRATION <integration_name>;
  • Por ejemplo: 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 y guarda los valores de las siguientes propiedades:
    • STORAGE_AWS_IAM_USER_ARN
    • STORAGE_AWS_EXTERNAL_ID
  2. Ve a la consola de administración de AWS.
  3. Selecciona IAM > Roles.
  4. Selecciona el rol que creaste antes.
  5. Selecciona la pestaña Relaciones de confianza.
  6. Haz clic en Editar política de confianza.
  7. Actualiza el documento de políticas con los valores de salida de 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. Reemplaza lo siguiente:

    • snowflake_user_arn es el valor de STORAGE_AWS_IAM_USER_ARN que registraste.
    • snowflake_external_id es el valor de STORAGE_AWS_EXTERNAL_ID que registraste.
  9. Haz clic en Actualizar política.

Configura el formato de archivo JSON en Snowflake

  1. En Snowflake, ingresa el siguiente comando:

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

Crea una etapa de S3 en Snowflake

  1. En Snowflake, reemplaza los siguientes campos y, luego, ingresa el 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;
    

Configura Snowflake para exportar datos

  1. Ejecuta el comando unload para exportar datos de las tablas a la etapa y, luego, a 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. Repite el proceso de exportación para todas las siguientes tablas en las que Snowflake almacena registros y datos relacionados con la auditoría:

    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 ;
    

Configura AWS IAM para Google SecOps

  1. Accede a la consola de administración de AWS.
  2. Crea un usuario siguiendo esta guía del usuario: Cómo crear un usuario de IAM.
  3. Selecciona el Usuario creado.
  4. Selecciona la pestaña Credenciales de seguridad.
  5. Haz clic en Crear clave de acceso en la sección Claves de acceso.
  6. Selecciona Servicio de terceros como Caso de uso.
  7. Haz clic en Siguiente.
  8. Opcional: Agrega una etiqueta de descripción.
  9. Haz clic en Crear clave de acceso.
  10. Haz clic en Descargar archivo CSV para guardar la clave de acceso y la clave de acceso secreta como referencia para el futuro.
  11. Haz clic en Listo.
  12. Selecciona la pestaña Permisos.
  13. Haz clic en Agregar permisos en la sección Políticas de permisos.
  14. Selecciona Agregar permisos.
  15. Selecciona Adjuntar políticas directamente.
  16. Busca y selecciona la política AmazonS3FullAccess.
  17. Haz clic en Siguiente.
  18. Haz clic en Agregar permisos.

Cómo configurar feeds

Existen dos puntos de entrada diferentes para configurar feeds en la plataforma de Google SecOps:

  • Configuración de SIEM > Feeds
  • Centro de contenido > Paquetes de contenido

Configura los feeds desde Configuración de SIEM > Feeds

Para configurar un feed, sigue estos pasos:

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Agregar feed nuevo.
  3. En la página siguiente, haz clic en Configurar un solo feed.
  4. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros de Snowflake).
  5. Selecciona Amazon S3 como el Tipo de fuente.
  6. Selecciona Snowflake como el tipo de registro.
  7. Haz clic en Siguiente.
  8. Especifica valores para los siguientes parámetros de entrada:

    • Región: Es la región donde se encuentra el bucket de Amazon S3.
    • URI de S3: Es el URI del bucket (el formato debe ser s3://your-log-bucket-name/). Reemplaza lo siguiente:
      • your-log-bucket-name: el nombre del bucket.
    • El URI es un: Selecciona Directorio o Directorio que incluye subdirectorios.
    • Opciones de eliminación de fuentes: Selecciona la opción de eliminación según tu preferencia.
    • ID de clave de acceso: Es la clave de acceso del usuario con acceso al bucket de S3.
    • Clave de acceso secreta: Es la clave secreta del usuario con acceso al bucket de S3.
  9. Haz clic en Siguiente.

  10. Revisa la configuración de tu nuevo feed en la pantalla Finalizar y, luego, haz clic en Enviar.

Cómo configurar feeds desde el Content Hub

Especifica valores para los siguientes campos:

  • Región: Es la región donde se encuentra el bucket de Amazon S3.

    • URI de S3: Es el URI del bucket (el formato debe ser s3://your-log-bucket-name/). Reemplaza lo siguiente:
      • your-log-bucket-name: el nombre del bucket.
    • El URI es un: Selecciona Directorio o Directorio que incluye subdirectorios.
    • Opciones de eliminación de fuentes: Selecciona la opción de eliminación según tu preferencia.
    • ID de clave de acceso: Es la clave de acceso del usuario con acceso al bucket de S3.
    • Clave de acceso secreta: Es la clave secreta del usuario con acceso al bucket de S3.

Opciones avanzadas

  • Nombre del feed: Es un valor prepropagado que identifica el feed.
  • Tipo de fuente: Es el método que se usa para recopilar registros en Google SecOps.
  • Espacio de nombres del activo: Es el espacio de nombres asociado con el feed.
  • Etiquetas de transferencia: Son las etiquetas que se aplican a todos los eventos de este feed.

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.