Coletar registros do Snowflake

Compatível com:

Este documento explica como ingerir registros do Snowflake no Google Security Operations usando o AWS S3. O analisador extrai campos das mensagens de registro usando uma série de regras de correspondência de padrões Grok e KV, projetadas especificamente para processar o formato de registro do Snowflake. Em seguida, ele mapeia os campos extraídos para o Modelo de Dados Unificado (UDM), enriquecendo os dados com mais contexto e padronizando a representação para análises futuras.

Antes de começar

Verifique se você tem os pré-requisitos a seguir:

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

Configurar um bucket do Amazon S3

  1. Crie um bucket do Amazon S3 seguindo este guia do usuário: Como criar um bucket
  2. Salve o Nome e a Região do bucket para referência futura.

Configurar a política do IAM da AWS do Snowflake

  1. Faça login no console de gerenciamento da AWS.
  2. Pesquise e selecione IAM.
  3. Selecione Configurações da conta.
  4. Em Security Token Service (STS) na lista Endpoints, encontre a região do Snowflake em que sua conta está localizada.
  5. Se o status do STS for inativo, mova a chave para Ativo.
  6. Selecione Políticas.
  7. Selecione Criar política.
  8. No Editor de políticas, selecione JSON.
  9. Copie e cole a política a seguir (em formato JSON) para fornecer ao Snowflake as permissões necessárias para carregar ou descarregar dados usando um único bucket e caminho de pasta. Também é possível limpar arquivos de dados usando a 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. Clique em Próxima.

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

  12. Clique em Criar política.

Configurar o papel do IAM da AWS no Snowflake

  1. No AWS Identity and Access Management (IAM), selecione Funções.
  2. Clique em Criar papel.
  3. Selecione Conta da AWS como o tipo de entidade confiável.
  4. Selecione Outra conta do AWS.
  5. No campo "ID da conta", insira seu próprio ID da conta da AWS temporariamente. Depois, você modifica a relação de confiança e concede acesso ao Snowflake.
  6. Selecione a opção Exigir ID externo.
  7. Insira um ID de marcador de posição, como 0000. Em uma etapa posterior, você vai modificar a relação de confiança da sua função do IAM e especificar o ID externo da integração de armazenamento.
  8. Clique em Próxima.
  9. Selecione a política do IAM criada anteriormente.
  10. Clique em Próxima.
  11. Insira um nome e uma descrição para a função.
  12. Clique em Criar papel.
  13. Na página de resumo da função, copie e salve o valor do ARN da função.

Configurar a integração do Snowflake com o S3

  1. Conecte-se ao banco 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 de Recurso da Amazon (ARN) da função que você criou anteriormente.
    • <aws_s3_bucket_path> é o caminho para o bucket que você criou antes (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>')
    

Configurar permissões de usuário do IAM da AWS para acessar o bucket

  1. Recupere o ARN do usuário do IAM criado automaticamente para sua conta do Snowflake e substitua <integration_name> pelo nome real da integração criada anteriormente: none DESC INTEGRATION <integration_name>;
  • 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 salve os valores das seguintes propriedades:
    • STORAGE_AWS_IAM_USER_ARN
    • STORAGE_AWS_EXTERNAL_ID
  2. Acesse o AWS Management Console.
  3. Selecione IAM > Papéis.
  4. Selecione a função criada anteriormente.
  5. Selecione a guia Relações de confiança.
  6. Clique em Editar política de confiança.
  7. Atualize o documento da 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. Substitua:

    • snowflake_user_arn é o valor de STORAGE_AWS_IAM_USER_ARN que você registrou.
    • snowflake_external_id é o valor de STORAGE_AWS_EXTERNAL_ID que você registrou.
  9. Clique em Atualizar política.

Configurar o formato de arquivo JSON no Snowflake

  1. No Snowflake, insira o seguinte comando:

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

Criar um estágio do S3 no Snowflake

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

Configurar o Snowflake para exportar dados

  1. Execute o comando UNLOAD para exportar dados de tabelas para a área de teste 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 tabelas a seguir em que o Snowflake armazena registros e dados relacionados à 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 ;
    

Configurar o IAM da AWS para o Google SecOps

  1. Faça login no console de gerenciamento da AWS.
  2. Crie um usuário seguindo este guia: Como criar um usuário do IAM.
  3. Selecione o usuário criado.
  4. Selecione a guia Credenciais de segurança.
  5. Clique em Criar chave de acesso na seção Chaves de acesso.
  6. Selecione Serviço de terceiros como Caso de uso.
  7. Clique em Próxima.
  8. Opcional: adicione uma tag de descrição.
  9. Clique em Criar chave de acesso.
  10. Clique em Fazer o download do arquivo CSV para salvar a chave de acesso e a chave de acesso secreta para referência futura.
  11. Clique em Concluído.
  12. Selecione a guia Permissões.
  13. Clique em Adicionar permissões na seção Políticas de permissões.
  14. Selecione Adicionar permissões.
  15. Selecione Anexar políticas diretamente.
  16. Pesquise e selecione a política AmazonS3FullAccess.
  17. Clique em Próxima.
  18. Clique em Adicionar permissões

Configurar feeds

Há dois pontos de entrada diferentes para configurar feeds na plataforma do Google SecOps:

  • Configurações do SIEM > Feeds
  • Central de conteúdo > Pacotes de conteúdo

Configure feeds em "Configurações do SIEM" > "Feeds".

Para configurar um feed, siga estas etapas:

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na próxima página, clique em Configurar um único feed.
  4. No campo Nome do feed, insira um nome para o feed (por exemplo, Registros do Snowflake).
  5. Selecione Amazon S3 como o Tipo de origem.
  6. Selecione Snowflake como o Tipo de registro.
  7. Clique em Próxima.
  8. Especifique valores para os seguintes parâmetros de entrada:

    • Região: a região em que o bucket do Amazon S3 está localizado.
    • URI do S3: o URI do bucket. O formato precisa ser s3://your-log-bucket-name/. Substitua o seguinte:
      • your-log-bucket-name: o nome do bucket
    • O URI é um: selecione Diretório ou Diretório que inclui subdiretórios.
    • Opções de exclusão de fontes: selecione a opção de exclusão de acordo com sua preferência.
    • ID da chave de acesso: a chave de acesso do usuário com acesso ao bucket do S3.
    • Chave de acesso secreta: a chave secreta do usuário com acesso ao bucket do S3.
  9. Clique em Próxima.

  10. Revise a nova configuração do feed na tela Finalizar e clique em Enviar.

Configurar feeds na Central de conteúdo

Especifique valores para os seguintes campos:

  • Região: a região em que o bucket do Amazon S3 está localizado.

    • URI do S3: o URI do bucket. O formato precisa ser s3://your-log-bucket-name/. Substitua o seguinte:
      • your-log-bucket-name: o nome do bucket
    • O URI é um: selecione Diretório ou Diretório que inclui subdiretórios.
    • Opções de exclusão de fontes: selecione a opção de exclusão de acordo com sua preferência.
    • ID da chave de acesso: a chave de acesso do usuário com acesso ao bucket do S3.
    • Chave de acesso secreta: a chave secreta do usuário com acesso ao bucket do S3.

Opções avançadas

  • Nome do feed: um valor pré-preenchido que identifica o feed.
  • Tipo de origem: método usado para coletar registros no Google SecOps.
  • Namespace do recurso: namespace associado ao feed.
  • Rótulos de ingestão: rótulos aplicados a todos os eventos deste feed.

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