Coletar registros do Snowflake
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
- Crie um bucket do Amazon S3 seguindo este guia do usuário: Como criar um bucket
- Salve o Nome e a Região do bucket para referência futura.
Configurar a política do IAM da AWS do Snowflake
- Faça login no console de gerenciamento da AWS.
- Pesquise e selecione IAM.
- Selecione Configurações da conta.
- Em Security Token Service (STS) na lista Endpoints, encontre a região do Snowflake em que sua conta está localizada.
- Se o status do STS for inativo, mova a chave para Ativo.
- Selecione Políticas.
- Selecione Criar política.
- No Editor de políticas, selecione JSON.
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>/*" ] } } } ] }
Clique em Próxima.
Insira um Nome da política (por exemplo, snowflake_access) e uma Descrição opcional.
Clique em Criar política.
Configurar o papel do IAM da AWS no Snowflake
- No AWS Identity and Access Management (IAM), selecione Funções.
- Clique em Criar papel.
- Selecione Conta da AWS como o tipo de entidade confiável.
- Selecione Outra conta do AWS.
- 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.
- Selecione a opção Exigir ID externo.
- 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.
- Clique em Próxima.
- Selecione a política do IAM criada anteriormente.
- Clique em Próxima.
- Insira um nome e uma descrição para a função.
- Clique em Criar papel.
- 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
- Conecte-se ao banco de dados Snowflake.
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
- 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= | | +---------------------------+---------------+--------------------------------------------------------------------------------+------------------+
- Copie e salve os valores das seguintes propriedades:
- STORAGE_AWS_IAM_USER_ARN
- STORAGE_AWS_EXTERNAL_ID
- Acesse o AWS Management Console.
- Selecione IAM > Papéis.
- Selecione a função criada anteriormente.
- Selecione a guia Relações de confiança.
- Clique em Editar política de confiança.
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>" } } } ] }
Substitua:
snowflake_user_arn
é o valor deSTORAGE_AWS_IAM_USER_ARN
que você registrou.snowflake_external_id
é o valor deSTORAGE_AWS_EXTERNAL_ID
que você registrou.
Clique em Atualizar política.
Configurar o formato de arquivo JSON no Snowflake
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
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
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);
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
- Faça login no console de gerenciamento da AWS.
- Crie um usuário seguindo este guia: Como criar um usuário do IAM.
- Selecione o usuário criado.
- Selecione a guia Credenciais de segurança.
- Clique em Criar chave de acesso na seção Chaves de acesso.
- Selecione Serviço de terceiros como Caso de uso.
- Clique em Próxima.
- Opcional: adicione uma tag de descrição.
- Clique em Criar chave de acesso.
- Clique em Fazer o download do arquivo CSV para salvar a chave de acesso e a chave de acesso secreta para referência futura.
- Clique em Concluído.
- Selecione a guia Permissões.
- Clique em Adicionar permissões na seção Políticas de permissões.
- Selecione Adicionar permissões.
- Selecione Anexar políticas diretamente.
- Pesquise e selecione a política AmazonS3FullAccess.
- Clique em Próxima.
- 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:
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Na próxima página, clique em Configurar um único feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo, Registros do Snowflake).
- Selecione Amazon S3 como o Tipo de origem.
- Selecione Snowflake como o Tipo de registro.
- Clique em Próxima.
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.
Clique em Próxima.
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.
- URI do S3: o URI do bucket. O formato precisa ser
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.