Recolha registos do Snowflake

Compatível com:

Este documento explica como carregar registos do Snowflake para o Google Security Operations através do AWS S3. O analisador extrai campos das mensagens de registo através de uma série de regras de correspondência de padrões Grok e KV, especificamente concebidas para processar o formato de registo do Snowflake. Em seguida, mapeia os campos extraídos para o modelo de dados unificado (UDM), enriquecendo os dados com contexto adicional e padronizando a representação para análise posterior.

Antes de começar

Certifique-se de que tem os seguintes pré-requisitos:

  • Instância do Google SecOps
  • Acesso privilegiado ao AWS
  • Acesso privilegiado ao Snowflake (ACCOUNTADMIN)

Configure um contentor do Amazon S3

  1. Crie um contentor do Amazon S3 seguindo este manual do utilizador: Criar um contentor
  2. Guarde o Nome e a Região do contentor para referência futura.

Configure a política de IAM do AWS do Snowflake

  1. Inicie sessão na AWS Management Console.
  2. Pesquise e selecione IAM.
  3. Selecione Definições da conta.
  4. Em Serviço de tokens de segurança (STS) na lista Pontos finais, encontre a região do Snowflake onde a sua conta está localizada.
  5. Se o estado do STS for inativo, mova o botão para Ativo.
  6. Selecione Políticas.
  7. Selecione Criar política.
  8. No Editor de políticas, selecione JSON.
  9. Copie e cole a seguinte política (no formato JSON) para fornecer ao Snowflake as autorizações necessárias para carregar ou descarregar dados através de um único caminho de pasta e contentor. Também pode limpar ficheiros de dados através da opção de cópia 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. Clicar em Seguinte.

  11. Introduza um Nome da política (por exemplo, snowflake_access) e uma Descrição opcional.

  12. Clique em Criar política.

Configure a função IAM do AWS do Snowflake

  1. No AWS Identity and Access Management (IAM), selecione Funções.
  2. Clique em Criar função.
  3. Selecione Conta da AWS como o tipo de entidade fidedigna.
  4. Selecione Outra conta da AWS.
  5. No campo ID da conta, introduza o seu próprio ID da conta da AWS temporariamente. Posteriormente, modifica a relação de confiança e concede acesso ao Snowflake.
  6. Selecione a opção Exigir ID externo.
  7. Introduza um ID de marcador de posição, como 0000. Num passo posterior, vai modificar a relação de confiança para a sua função do IAM e especificar o ID externo para a integração de armazenamento.
  8. Clicar em Seguinte.
  9. Selecione a política de IAM que criou anteriormente.
  10. Clicar em Seguinte.
  11. Introduza um nome e uma descrição para a função.
  12. Clique em Criar função.
  13. Na página de resumo da função, copie e guarde o valor ARN da função.

Configure a integração do Snowflake S3

  1. Associe-se à base de dados Snowflake.
  2. Substitua os seguintes campos e execute o comando:

    • <integration_name> é o nome da nova integração (por exemplo, s3_integration).
    • <iam_role> é o Nome do recurso da Amazon (ARN) da função que criou anteriormente.
    • <aws_s3_bucket_path> é o caminho para o contentor que criou anteriormente (por exemplo, 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>')
    

Configure as autorizações do utilizador do IAM da AWS para aceder ao contentor

  1. Obtenha o ARN do utilizador do IAM que foi criado automaticamente para a sua conta do Snowflake, substitua <integration_name> pelo nome real da integração que criou anteriormente: none DESC INTEGRATION <integration_name>;
  • Por exemplo: 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. Copie e guarde os valores das seguintes propriedades:
    • STORAGE_AWS_IAM_USER_ARN
    • STORAGE_AWS_EXTERNAL_ID
  2. Aceda à AWS Management Console.
  3. Selecione IAM > Funções.
  4. Selecione a função que criou anteriormente.
  5. Selecione o separador Relações de confiança.
  6. Clique em Editar política de confiança.
  7. Atualize o documento de política com os valores de saída 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. Substituir:

    • snowflake_user_arn é o valor STORAGE_AWS_IAM_USER_ARN que registou.
    • snowflake_external_id é o valor STORAGE_AWS_EXTERNAL_ID que registou.
  9. Clique em Atualizar política.

Configure o formato de ficheiro JSON no Snowflake

  1. No Snowflake, introduza o seguinte comando:

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

Crie uma fase S3 no Snowflake

  1. No Snowflake, substitua os seguintes campos e introduza o 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;
    

Configure o Snowflake para exportar dados

  1. Execute o comando de descarregamento para exportar dados de tabelas para a fase e, por sua vez, para o 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. Repita o processo de exportação para todas as seguintes tabelas nas quais o Snowflake armazena registos e dados relacionados com a auditoria:

    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 ;
    

Configure o AWS IAM para o Google SecOps

  1. Inicie sessão na AWS Management Console.
  2. Crie um utilizador seguindo este guia do utilizador: criar um utilizador do IAM.
  3. Selecione o utilizador criado.
  4. Selecione o separador Credenciais de segurança.
  5. Clique em Criar chave de acesso na secção Chaves de acesso.
  6. Selecione Serviço de terceiros como Exemplo de utilização.
  7. Clicar em Seguinte.
  8. Opcional: adicione a etiqueta de descrição.
  9. Clique em Criar chave de acesso.
  10. Clique em Transferir ficheiro CSV para guardar a chave de acesso e a chave de acesso secreta para referência futura.
  11. Clique em Concluído.
  12. Selecione o separador Autorizações.
  13. Clique em Adicionar autorizações na secção Políticas de autorizações.
  14. Selecione Adicionar autorizações.
  15. Selecione Anexar políticas diretamente.
  16. Pesquise e selecione a política AmazonS3FullAccess.
  17. Clicar em Seguinte.
  18. Clique em Adicionar autorizações.

Configure feeds

Para configurar um feed, siga estes passos:

  1. Aceda a Definições do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na página seguinte, clique em Configurar um único feed.
  4. No campo Nome do feed, introduza um nome para o feed (por exemplo, Registos do Snowflake).
  5. Selecione Amazon S3 como o Tipo de origem.
  6. Selecione Snowflake como o Tipo de registo.
  7. Clicar em Seguinte.
  8. Especifique valores para os seguintes parâmetros de entrada:

    • Região: a região onde o contentor do Amazon S3 está localizado.
    • URI do S3: o URI do contentor (o formato deve ser: s3://your-log-bucket-name/). Substitua o seguinte:
      • your-log-bucket-name: o nome do segmento.
    • O URI é um: selecione Diretório ou Diretório que inclui subdiretórios.
    • Opções de eliminação de origens: selecione a opção de eliminação de acordo com a sua preferência.
    • ID da chave de acesso: a chave de acesso do utilizador com acesso ao contentor do S3.
    • Chave de acesso secreta: a chave secreta do utilizador com acesso ao contentor do S3.
  9. Clicar em Seguinte.

  10. Reveja a nova configuração do feed no ecrã Finalizar e, de seguida, clique em Enviar.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.