Coletar registros do Snowflake
Este documento explica como ingerir registros do Snowflake no Google Security Operations. É possível configurar a ingestão usando dois métodos: Cloud Storage V2 (recomendado) ou Amazon S3 V2. Os dois métodos usam o mesmo mecanismo no Snowflake: uma tarefa programada descarrega os dados de uso da conta em um estágio externo, e o Google SecOps lê os arquivos exportados com um feed.
O Snowflake é uma plataforma de dados em nuvem que armazena a atividade da conta no esquema SNOWFLAKE.ACCOUNT_USAGE. A visualização LOGIN_HISTORY registra tentativas de autenticação, incluindo o endereço IP do cliente, o fator de autenticação e o motivo da falha. A visualização QUERY_HISTORY registra todas as instruções executadas na conta, incluindo o usuário, a função, o data warehouse e os objetos afetados.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- Uma instância do Google SecOps
- Acesso ao Snowflake com uma função que pode criar integrações de armazenamento (somente
ACCOUNTADMINtem esse privilégio por padrão), bancos de dados, data warehouses, estágios e tarefas - Para o Cloud Storage V2: um projeto Google Cloud com a API Cloud Storage ativada e permissões para criar buckets, papéis do Identity and Access Management (IAM) e gerenciar políticas do IAM do bucket.
- Para o Amazon S3 V2: acesso privilegiado à AWS para criar buckets do S3, políticas do IAM, papéis do IAM e usuários do IAM
Conceder acesso aos dados de uso da conta do Snowflake
As visualizações SNOWFLAKE.ACCOUNT_USAGE só podem ser lidas por ACCOUNTADMIN até que o acesso seja concedido explicitamente. Crie uma função dedicada para a exportação e conceda a ela as duas funções de banco de dados que abrangem as visualizações exportadas por este documento.
- Faça login no Snowflake e abra uma planilha.
Crie a função de exportação e conceda a ela acesso de leitura às visualizações de uso da conta da seguinte maneira:
USE ROLE ACCOUNTADMIN; CREATE ROLE IF NOT EXISTS SECOPS_EXPORTER; GRANT DATABASE ROLE SNOWFLAKE.SECURITY_VIEWER TO ROLE SECOPS_EXPORTER; GRANT DATABASE ROLE SNOWFLAKE.GOVERNANCE_VIEWER TO ROLE SECOPS_EXPORTER;Crie o banco de dados, o esquema e o warehouse que a exportação usa e conceda acesso a eles para a função da seguinte maneira:
CREATE DATABASE IF NOT EXISTS SECOPS_EXPORT; CREATE SCHEMA IF NOT EXISTS SECOPS_EXPORT.ACTIVITY; CREATE WAREHOUSE IF NOT EXISTS SECOPS_EXPORT_WH WITH WAREHOUSE_SIZE = 'XSMALL' AUTO_SUSPEND = 60 AUTO_RESUME = TRUE INITIALLY_SUSPENDED = TRUE; GRANT USAGE ON DATABASE SECOPS_EXPORT TO ROLE SECOPS_EXPORTER; GRANT USAGE, CREATE STAGE, CREATE TABLE, CREATE PROCEDURE, CREATE TASK, CREATE FILE FORMAT ON SCHEMA SECOPS_EXPORT.ACTIVITY TO ROLE SECOPS_EXPORTER; GRANT USAGE, OPERATE ON WAREHOUSE SECOPS_EXPORT_WH TO ROLE SECOPS_EXPORTER; GRANT EXECUTE TASK ON ACCOUNT TO ROLE SECOPS_EXPORTER; GRANT ROLE SECOPS_EXPORTER TO USER <YOUR_USER>;- Substitua
<YOUR_USER>pelo usuário do Snowflake proprietário da exportação.
- Substitua
Método 1: Cloud Storage V2 (recomendado)
Criar um bucket do Cloud Storage
- Acesse o console doGoogle Cloud .
- Selecione ou crie um projeto.
- No menu de navegação, acesse Cloud Storage > Buckets.
- Clique em Criar bucket.
Informe os seguintes detalhes de configuração:
Configuração Valor Nomeie seu bucket Insira um nome globalmente exclusivo, por exemplo, snowflake-activity-logs.Tipo de local Escolha de acordo com suas necessidades (região, birregional, multirregional) Local Selecione o local (por exemplo, us-central1).Classe de armazenamento Padrão (recomendado para registros acessados com frequência) Controle de acesso Uniforme (recomendado) Ferramentas de proteção Opcional: ativar o controle de versões de objetos ou a política de retenção Clique em Criar.
Criar uma função personalizada do Cloud Storage para o Snowflake
- No console do Google Cloud , acesse IAM e administrador > Papéis.
- Clique em Criar papel.
- Informe os seguintes detalhes de configuração:
- Título: insira
Snowflake Unload - ID: insira
snowflake_unload - Etapa da criação do papel: selecione Disponibilidade geral.
- Título: insira
- Clique em Adicionar permissões e adicione as seguintes permissões:
storage.buckets.getstorage.objects.createstorage.objects.deletestorage.objects.list
Clique em Criar.
Criar a integração de armazenamento do Snowflake para o Cloud Storage
Em uma planilha do Snowflake, crie a integração de armazenamento da seguinte maneira:
USE ROLE ACCOUNTADMIN; CREATE STORAGE INTEGRATION SECOPS_GCS_INT TYPE = EXTERNAL_STAGE STORAGE_PROVIDER = 'GCS' ENABLED = TRUE STORAGE_ALLOWED_LOCATIONS = ('gcs://snowflake-activity-logs/snowflake/'); GRANT USAGE ON INTEGRATION SECOPS_GCS_INT TO ROLE SECOPS_EXPORTER;- Substitua
snowflake-activity-logspelo nome do seu bucket.
- Substitua
Recupere a conta de serviço que o Snowflake criou para a integração da seguinte maneira:
DESC STORAGE INTEGRATION SECOPS_GCS_INT;Copie o valor da propriedade
STORAGE_GCP_SERVICE_ACCOUNT. O valor tem o seguinte formato:service-account-id@project1-123456.iam.gserviceaccount.com
Conceder à conta de serviço do Snowflake acesso ao bucket
- No Google Cloud console, acesse Cloud Storage > Buckets.
- Clique no bucket que você criou (por exemplo,
snowflake-activity-logs). - Acesse a guia Permissões.
- Clique em Conceder acesso.
- Informe os seguintes detalhes de configuração:
- Adicionar principais: cole o valor
STORAGE_GCP_SERVICE_ACCOUNT. - Atribuir funções: selecione Descarregamento do Snowflake.
- Adicionar principais: cole o valor
- Clique em Salvar.
Criar o formato de arquivo e o estágio externo
Em uma planilha do Snowflake, crie o formato de arquivo e o estágio que grava no bucket da seguinte maneira:
USE ROLE SECOPS_EXPORTER; USE SCHEMA SECOPS_EXPORT.ACTIVITY; CREATE OR REPLACE FILE FORMAT SECOPS_JSON_FORMAT TYPE = JSON; CREATE OR REPLACE STAGE SECOPS_EXPORT_STAGE URL = 'gcs://snowflake-activity-logs/snowflake/' STORAGE_INTEGRATION = SECOPS_GCS_INT FILE_FORMAT = SECOPS_JSON_FORMAT;
Criar a tabela de estado de exportação
A exportação rastreia o quanto foi lido em cada visualização. Sem essa marca d'água, cada execução reexportaria toda a visualização, e os mesmos eventos seriam ingeridos novamente.
Crie e inicialize a tabela de estado da seguinte maneira:
CREATE TABLE IF NOT EXISTS SECOPS_EXPORT_STATE ( VIEW_NAME STRING NOT NULL, LAST_EXPORTED TIMESTAMP_LTZ NOT NULL, WINDOW_END TIMESTAMP_LTZ ); INSERT INTO SECOPS_EXPORT_STATE (VIEW_NAME, LAST_EXPORTED) SELECT 'LOGIN_HISTORY', DATEADD('day', -7, CURRENT_TIMESTAMP()) UNION ALL SELECT 'QUERY_HISTORY', DATEADD('day', -7, CURRENT_TIMESTAMP());
Criar o procedimento de exportação
Crie o procedimento que descarrega as duas visualizações e avança a marca d'água da seguinte maneira:
CREATE OR REPLACE PROCEDURE SECOPS_EXPORT_ACTIVITY() RETURNS STRING LANGUAGE SQL AS $$ BEGIN UPDATE SECOPS_EXPORT_STATE SET WINDOW_END = DATEADD('hour', -3, CURRENT_TIMESTAMP()); COPY INTO @SECOPS_EXPORT_STAGE/login_history/ FROM ( SELECT OBJECT_CONSTRUCT( 'application', 'snowflake', '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, 'REPORTED_CLIENT_VERSION', REPORTED_CLIENT_VERSION, 'FIRST_AUTHENTICATION_FACTOR', FIRST_AUTHENTICATION_FACTOR, 'SECOND_AUTHENTICATION_FACTOR', SECOND_AUTHENTICATION_FACTOR, 'IS_SUCCESS', IS_SUCCESS, 'ERROR_CODE', ERROR_CODE, 'ERROR_MESSAGE', ERROR_MESSAGE) FROM SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORY WHERE EVENT_TIMESTAMP > (SELECT LAST_EXPORTED FROM SECOPS_EXPORT_STATE WHERE VIEW_NAME = 'LOGIN_HISTORY') AND EVENT_TIMESTAMP <= (SELECT WINDOW_END FROM SECOPS_EXPORT_STATE WHERE VIEW_NAME = 'LOGIN_HISTORY') ) FILE_FORMAT = (TYPE = JSON) INCLUDE_QUERY_ID = TRUE; UPDATE SECOPS_EXPORT_STATE SET LAST_EXPORTED = WINDOW_END WHERE VIEW_NAME = 'LOGIN_HISTORY'; COPY INTO @SECOPS_EXPORT_STAGE/query_history/ FROM ( SELECT OBJECT_CONSTRUCT( 'application', 'snowflake', 'log_type', 'query_history', 'START_TIME', START_TIME, 'END_TIME', END_TIME, 'QUERY_ID', QUERY_ID, 'QUERY_TYPE', QUERY_TYPE, 'EXECUTION_STATUS', EXECUTION_STATUS, 'ERROR_MESSAGE', ERROR_MESSAGE, 'USER_NAME', USER_NAME, 'ROLE_NAME', ROLE_NAME, 'WAREHOUSE_NAME', WAREHOUSE_NAME, 'WAREHOUSE_SIZE', WAREHOUSE_SIZE, 'DATABASE_NAME', DATABASE_NAME, 'SCHEMA_NAME', SCHEMA_NAME, 'SESSION_ID', SESSION_ID, 'BYTES_SCANNED', BYTES_SCANNED, 'ROWS_PRODUCED', ROWS_PRODUCED, 'TOTAL_ELAPSED_TIME', TOTAL_ELAPSED_TIME) FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY WHERE START_TIME > (SELECT LAST_EXPORTED FROM SECOPS_EXPORT_STATE WHERE VIEW_NAME = 'QUERY_HISTORY') AND START_TIME <= (SELECT WINDOW_END FROM SECOPS_EXPORT_STATE WHERE VIEW_NAME = 'QUERY_HISTORY') ) FILE_FORMAT = (TYPE = JSON) INCLUDE_QUERY_ID = TRUE; UPDATE SECOPS_EXPORT_STATE SET LAST_EXPORTED = WINDOW_END WHERE VIEW_NAME = 'QUERY_HISTORY'; RETURN 'Export completed'; END; $$;
Cada elemento do procedimento existe por um motivo:
- A janela fecha três horas antes do horário atual. O Snowflake preenche
LOGIN_HISTORYcom até duas horas de latência eQUERY_HISTORYcom até 45 minutos. Portanto, uma janela que termina agora vai pular linhas que a visualização ainda não materializou. Portanto, os eventos chegam ao Google SecOps cerca de três horas depois que acontecem. Reduzir a defasagem das negociações para aumentar a atualização. WINDOW_ENDé gravado na tabela antes do descarregamento. Portanto, o valor usado pela instruçãoCOPY INTOe o valor gravado de volta emLAST_EXPORTEDsão idênticos. Recalcular a hora atual na segunda instrução ignoraria tudo o que aconteceu nesse período.- Cada atualização de
LAST_EXPORTEDé executada após a própria instruçãoCOPY INTO. Se um descarregamento falhar, o procedimento será interrompido, a marca d'água vai permanecer onde estava, e a próxima execução vai repetir essa janela em vez de pular. - O
INCLUDE_QUERY_ID = TRUEadiciona um UUID a cada nome de arquivo. Sem ele, os arquivos descarregados são nomeados comodata_0_0_0, e as exportações repetidas para o mesmo caminho entram em conflito, o que o Snowflake documenta como uma fonte de dados duplicados no estágio.
Agendar a tarefa de exportação
Crie e inicie a tarefa da seguinte forma:
CREATE OR REPLACE TASK SECOPS_EXPORT_TASK WAREHOUSE = SECOPS_EXPORT_WH SCHEDULE = 'USING CRON 0 * * * * UTC' AS CALL SECOPS_EXPORT_ACTIVITY(); ALTER TASK SECOPS_EXPORT_TASK RESUME;Execute a tarefa uma vez para verificar a configuração sem esperar pela programação da seguinte maneira:
EXECUTE TASK SECOPS_EXPORT_TASK;Verifique o resultado da execução e os arquivos que chegaram ao estágio da seguinte maneira:
SELECT NAME, STATE, ERROR_MESSAGE, SCHEDULED_TIME FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY(TASK_NAME => 'SECOPS_EXPORT_TASK')) ORDER BY SCHEDULED_TIME DESC LIMIT 5; LIST @SECOPS_EXPORT_STAGE;
Recuperar a conta de serviço do Google SecOps
O Google SecOps usa uma conta de serviço exclusiva para ler dados do seu bucket do Cloud Storage. Você precisa conceder a essa conta de serviço acesso ao seu bucket.
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Clique em Configurar um único feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo,
Snowflake activity logs). - Selecione Google Cloud Storage V2 como o Tipo de origem.
- Selecione Snowflake como o Tipo de registro.
- Clique em Receber conta de serviço.
Um e-mail exclusivo da conta de serviço será exibido, por exemplo:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comCopie esse endereço de e-mail para usar na próxima etapa.
Clique em Próxima.
Especifique valores para os seguintes parâmetros de entrada:
URL do bucket de armazenamento: insira o URI do bucket do Cloud Storage com o caminho do prefixo:
gs://snowflake-activity-logs/snowflake/
Opção de exclusão da fonte: selecione a opção de exclusão de acordo com sua preferência:
- Nunca excluir arquivos: nunca exclua arquivos da origem (recomendado para testes).
- Excluir arquivos transferidos e diretórios vazios: exclui arquivos e diretórios vazios da origem após a conclusão de uma busca bem-sucedida.
Idade máxima do arquivo: inclua arquivos modificados no último número de dias (o padrão é 180 dias).
Namespace do recurso: o namespace do recurso
Rótulos de ingestão: o rótulo a ser aplicado aos eventos deste feed
Clique em Próxima.
Revise a nova configuração do feed na tela Finalizar e clique em Enviar.
Conceder permissões do IAM à conta de serviço do Google SecOps
A conta de serviço do Google SecOps precisa de duas funções no seu bucket do Cloud Storage: Storage Object Viewer para ler os objetos de registro e uma função no nível do bucket para ler os metadados dele.
- Acesse Cloud Storage > Buckets.
- Clique no nome do bucket.
- Acesse a guia Permissões.
- Clique em Conceder acesso.
- Informe os seguintes detalhes de configuração:
- Adicionar principais: cole o e-mail da conta de serviço do Google SecOps.
- Atribuir papéis: selecione as duas opções a seguir:
- Leitor de objetos do Storage: lê os objetos de registro.
- Leitor de bucket legado do Storage: lê os metadados do bucket. Se você selecionou a opção de exclusão Excluir arquivos transferidos e diretórios vazios, escolha Gravador de bucket legados do Storage, que também concede a permissão de exclusão.
- Clique em Salvar.
Método 2: Amazon S3 V2
Use esse método quando os registros precisarem ser armazenados no Amazon S3. O lado do Snowflake é idêntico, exceto pela integração de armazenamento e o estágio. Portanto, o procedimento e a tarefa de exportação do método 1 são reutilizados sem alterações.
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. Por exemplo,
snowflake-activity-logs.
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 estiver 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, que concede ao Snowflake as permissões necessárias para descarregar dados em um bucket e um caminho de pasta:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:GetObjectVersion", "s3:DeleteObject", "s3:DeleteObjectVersion" ], "Resource": "arn:aws:s3:::snowflake-activity-logs/snowflake/*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::snowflake-activity-logs", "Condition": { "StringLike": { "s3:prefix": [ "snowflake/*" ] } } } ] }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 do Snowflake
- Em IAM, selecione Papéis.
- 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 temporariamente seu ID da conta da AWS. Você modifica a relação de confiança mais tarde e concede acesso ao Snowflake.
- Selecione a opção Exigir ID externo.
- Insira um ID de marcador de posição, como
0000. Você vai substituir pelo ID externo da integração de armazenamento mais tarde. - Clique em Próxima.
- Selecione a política do IAM que você criou anteriormente.
- Clique em Próxima.
- Digite 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.
Criar a integração de armazenamento do Snowflake para o Amazon S3
Em uma planilha do Snowflake, crie a integração de armazenamento da seguinte maneira:
USE ROLE ACCOUNTADMIN; CREATE STORAGE INTEGRATION SECOPS_S3_INT TYPE = EXTERNAL_STAGE STORAGE_PROVIDER = 'S3' ENABLED = TRUE STORAGE_AWS_ROLE_ARN = '<IAM_ROLE_ARN>' STORAGE_ALLOWED_LOCATIONS = ('s3://snowflake-activity-logs/snowflake/'); GRANT USAGE ON INTEGRATION SECOPS_S3_INT TO ROLE SECOPS_EXPORTER;- Substitua
<IAM_ROLE_ARN>pelo ARN da função que você salvou.
- Substitua
Recupere a identidade da AWS que o Snowflake criou para a integração da seguinte maneira:
DESC INTEGRATION SECOPS_S3_INT;Copie e salve os valores das seguintes propriedades:
- STORAGE_AWS_IAM_USER_ARN
- STORAGE_AWS_EXTERNAL_ID
Conceder ao usuário do IAM do Snowflake acesso ao bucket
- Acesse o console de gerenciamento da AWS.
- Selecione IAM > Papéis.
- Selecione a função que você criou 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 INTEGRATIONda seguinte maneira:{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "<STORAGE_AWS_IAM_USER_ARN>" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "<STORAGE_AWS_EXTERNAL_ID>" } } } ] }Clique em Atualizar política.
Criar o formato de arquivo, organizar e exportar objetos
Em uma planilha do Snowflake, crie o formato de arquivo e o estágio que grava no bucket da seguinte maneira:
USE ROLE SECOPS_EXPORTER; USE SCHEMA SECOPS_EXPORT.ACTIVITY; CREATE OR REPLACE FILE FORMAT SECOPS_JSON_FORMAT TYPE = JSON; CREATE OR REPLACE STAGE SECOPS_EXPORT_STAGE URL = 's3://snowflake-activity-logs/snowflake/' STORAGE_INTEGRATION = SECOPS_S3_INT FILE_FORMAT = SECOPS_JSON_FORMAT;Crie a tabela de estado, o procedimento e a tarefa exatamente como descrito no Método 1, nas seções Criar a tabela de estado de exportação, Criar o procedimento de exportação e Programar a tarefa de exportação. As instruções fazem referência à etapa por nome, então não precisam ser alteradas.
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: 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 o Caso de uso.
- Clique em Próxima.
- Opcional: adicione uma tag de descrição.
- Clique em Criar chave de acesso.
- Clique em Baixar 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 um feed no Google SecOps para ingerir registros do Snowflake
- 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,
Snowflake activity logs). - Selecione Amazon S3 V2 como o Tipo de origem.
- Selecione Snowflake como o Tipo de registro.
- Clique em Próxima.
Especifique os valores dos seguintes parâmetros de entrada:
- URI do S3:
s3://snowflake-activity-logs/snowflake/ - Opção de exclusão da fonte: selecione a opção de exclusão de acordo com sua preferência.
- Idade máxima do arquivo: inclua arquivos modificados no último número de dias (o padrão é 180 dias).
- ID da chave de acesso: chave de acesso do usuário com acesso ao bucket do S3
- Chave de acesso secreta: chave secreta do usuário com acesso ao bucket do S3
- Namespace do recurso: o namespace do recurso
- Rótulos de ingestão: o rótulo a ser aplicado aos eventos deste feed
- URI do S3:
Clique em Próxima.
Revise a nova configuração do feed na tela Finalizar e clique em Enviar.
Tabela de mapeamento de UDM
| Campo de registro | Mapeamento do UDM | Lógica |
|---|---|---|
column4_label |
additional.fields |
Mesclado |
column7_label |
additional.fields |
Mesclado |
first_authentication_factor_label |
additional.fields |
Mesclado |
host_list |
additional.fields |
Mesclado |
query_text_label |
additional.fields |
Mesclado |
query_type_label |
additional.fields |
Mesclado |
roleIds_list |
additional.fields |
Mesclado |
roleNames_list |
additional.fields |
Mesclado |
rolecount_label |
additional.fields |
Mesclado |
user_count_label |
additional.fields |
Mesclado |
has_principal |
extensions.auth.type |
Mapeado: true → AUTHTYPE_UNSPECIFIED |
START_TIME |
metadata.event_timestamp |
Analisado como yyyy-MM-dd HH:mm:ss.SSS Z |
column2 |
metadata.event_timestamp |
Analisado como yyyy-MM-dd HH:mm:ss.SSS Z |
column20 |
metadata.event_timestamp |
Analisado como yyyy-MM-dd HH:mm:ss.SSS Z |
ts |
metadata.event_timestamp |
Analisado como ISO8601 |
event_type |
metadata.event_type |
Mapeado diretamente |
has_principal |
metadata.event_type |
Mapeado: true → NETWORK_CONNECTION, true → STATUS_UPDATE, true → USER_LOGIN |
has_principal_user |
metadata.event_type |
Mapeado: true → USER_UNCATEGORIZED |
column10 |
metadata.product_event_type |
Mapeado diretamente |
QUERY_ID |
metadata.product_log_id |
Mapeado diretamente |
column1 |
metadata.product_log_id |
Mapeado diretamente |
column6 |
metadata.product_version |
Mapeado diretamente |
SESSION_ID |
network.http.session_id |
Mapeado diretamente |
RECEIVED_BYTES |
network.received_bytes |
Renomeado/mapeado |
BYTES_SENT_OVER_THE_NETWORK |
network.sent_bytes |
Renomeado/mapeado |
SENT_BYTES |
network.sent_bytes |
Renomeado/mapeado |
APPLICATION |
principal.application |
Mapeado diretamente |
data.user_name |
principal.asset.hostname |
Mapeado diretamente |
CLIENT_IP |
principal.asset.ip |
Mesclado |
IP |
principal.asset.ip |
Mesclado |
column5 |
principal.asset.ip |
Mesclado |
SOURCE_REGION |
principal.cloud.availability_zone |
Mapeado diretamente |
SOURCE_CLOUD |
principal.cloud.environment |
Mapeado: (?i)azure → MICROSOFT_AZURE, (?i)amazon → AMAZON_WEB_SERVICES, (?i)google ... |
data.user_name |
principal.hostname |
Mapeado diretamente |
CLIENT_IP |
principal.ip |
Mesclado |
IP |
principal.ip |
Mesclado |
column5 |
principal.ip |
Mesclado |
OS |
principal.platform |
Mapeado: (?i)Linux → LINUX, (?i)windows → WINDOWS, (?i)mac/ios → MAC |
OS_VERSION |
principal.platform_version |
Mapeado diretamente |
SOURCE_CLOUD_label |
principal.resource.attribute.labels |
Mesclado |
roles |
principal.user.attribute.roles |
Mesclado |
data.role_name |
principal.user.role_name |
Mapeado diretamente |
column9 |
principal.user.user_display_name |
Mapeado diretamente |
USER_NAME |
principal.user.userid |
Mapeado diretamente |
column10 |
principal.user.userid |
Mapeado diretamente |
column3 |
principal.user.userid |
Mapeado diretamente |
EXECUTION_STATUS |
security_result.action |
Mapeado: (?i)success → action, (?i)fail → security_result_action_block |
STATUS |
security_result.action |
Mapeado: (?i)success → action, (?i)fail → action |
action |
security_result.action |
Mesclado |
security_result_action_block |
security_result.action |
Mesclado |
OCSP_MODE |
security_result.action_details |
Mapeado diretamente |
column11 |
security_result.action_details |
Mapeado diretamente |
column3 |
security_result.action_details |
Mapeado diretamente |
BYTES_DELETED_label |
security_result.detection_fields |
Mesclado |
BYTES_READ_FROM_RESULT_label |
security_result.detection_fields |
Mesclado |
BYTES_SCANNED_label |
security_result.detection_fields |
Mesclado |
BYTES_SPILLED_TO_LOCAL_STORAGE_label |
security_result.detection_fields |
Mesclado |
BYTES_SPILLED_TO_REMOTE_STORAGE_label |
security_result.detection_fields |
Mesclado |
BYTES_WRITTEN_TO_RESULT_label |
security_result.detection_fields |
Mesclado |
BYTES_WRITTEN_label |
security_result.detection_fields |
Mesclado |
CHILD_QUERIES_WAIT_TIME_label |
security_result.detection_fields |
Mesclado |
CLUSTER_NUMBER_label |
security_result.detection_fields |
Mesclado |
COMPILATION_TIME_label |
security_result.detection_fields |
Mesclado |
CREDITS_USED_CLOUD_SERVICES_label |
security_result.detection_fields |
Mesclado |
DATABASE_ID_label |
security_result.detection_fields |
Mesclado |
DATABASE_NAME_label |
security_result.detection_fields |
Mesclado |
END_TIME_label |
security_result.detection_fields |
Mesclado |
ERROR_MESSAGE_label |
security_result.detection_fields |
Mesclado |
EXECUTION_TIME_label |
security_result.detection_fields |
Mesclado |
EXTERNAL_FUNCTION_TOTAL_INVOCATIONS_label |
security_result.detection_fields |
Mesclado |
EXTERNAL_FUNCTION_TOTAL_RECEIVED_BYTES_label |
security_result.detection_fields |
Mesclado |
EXTERNAL_FUNCTION_TOTAL_RECEIVED_ROWS_label |
security_result.detection_fields |
Mesclado |
EXTERNAL_FUNCTION_TOTAL_SENT_BYTES_label |
security_result.detection_fields |
Mesclado |
EXTERNAL_FUNCTION_TOTAL_SENT_ROWS_label |
security_result.detection_fields |
Mesclado |
INBOUND_DATA_TRANSFER_BYTES_label |
security_result.detection_fields |
Mesclado |
IS_CLIENT_GENERATED_STATEMENT_label |
security_result.detection_fields |
Mesclado |
LIST_EXTERNAL_FILES_TIME_label |
security_result.detection_fields |
Mesclado |
OUTBOUND_DATA_TRANSFER_BYTES_label |
security_result.detection_fields |
Mesclado |
PARTITIONS_SCANNED_label |
security_result.detection_fields |
Mesclado |
PARTITIONS_TOTAL_label |
security_result.detection_fields |
Mesclado |
PERCENTAGE_SCANNED_FROM_CACHE_label |
security_result.detection_fields |
Mesclado |
QUERY_ACCELERATION_BYTES_SCANNED_label |
security_result.detection_fields |
Mesclado |
QUERY_ACCELERATION_PARTITIONS_SCANNED_label |
security_result.detection_fields |
Mesclado |
QUERY_ACCELERATION_UPPER_LIMIT_SCALE_FACTOR_label |
security_result.detection_fields |
Mesclado |
QUERY_HASH_VERSION_label |
security_result.detection_fields |
Mesclado |
QUERY_HASH_label |
security_result.detection_fields |
Mesclado |
QUERY_LOAD_PERCENT_label |
security_result.detection_fields |
Mesclado |
QUERY_PARAMETERIZED_HASH_VERSION_label |
security_result.detection_fields |
Mesclado |
QUERY_TAG_label |
security_result.detection_fields |
Mesclado |
QUERY_TYPE_label |
security_result.detection_fields |
Mesclado |
QUEUED_OVERLOAD_TIME_label |
security_result.detection_fields |
Mesclado |
QUEUED_PROVISIONING_TIME_label |
security_result.detection_fields |
Mesclado |
QUEUED_REPAIR_TIME_label |
security_result.detection_fields |
Mesclado |
RELEASE_VERSION_label |
security_result.detection_fields |
Mesclado |
ROLE_TYPE_label |
security_result.detection_fields |
Mesclado |
ROWS_DELETED_label |
security_result.detection_fields |
Mesclado |
ROWS_INSERTED_label |
security_result.detection_fields |
Mesclado |
ROWS_PRODUCED_label |
security_result.detection_fields |
Mesclado |
ROWS_UNLOADED_label |
security_result.detection_fields |
Mesclado |
ROWS_UPDATED_label |
security_result.detection_fields |
Mesclado |
ROWS_WRITTEN_TO_RESULT_label |
security_result.detection_fields |
Mesclado |
SCHEMA_ID_label |
security_result.detection_fields |
Mesclado |
SCHEMA_NAME_label |
security_result.detection_fields |
Mesclado |
TOTAL_ELAPSED_TIME_label |
security_result.detection_fields |
Mesclado |
TRANSACTION_BLOCKED_TIME_label |
security_result.detection_fields |
Mesclado |
TRANSACTION_ID_label |
security_result.detection_fields |
Mesclado |
WAREHOUSE_ID_label |
security_result.detection_fields |
Mesclado |
WAREHOUSE_NAME_label |
security_result.detection_fields |
Mesclado |
WAREHOUSE_SIZE_label |
security_result.detection_fields |
Mesclado |
WAREHOUSE_TYPE_label |
security_result.detection_fields |
Mesclado |
authentication_factor_label |
security_result.detection_fields |
Mesclado |
column4_label |
security_result.detection_fields |
Mesclado |
column6_label |
security_result.detection_fields |
Mesclado |
column7_label |
security_result.detection_fields |
Mesclado |
column8_label |
security_result.detection_fields |
Mesclado |
event_id_label |
security_result.detection_fields |
Mesclado |
event_type_label |
security_result.detection_fields |
Mesclado |
is_success_label |
security_result.detection_fields |
Mesclado |
python_compiler_label |
security_result.detection_fields |
Mesclado |
python_runtime_label |
security_result.detection_fields |
Mesclado |
python_version_label |
security_result.detection_fields |
Mesclado |
reported_client_type_label |
security_result.detection_fields |
Mesclado |
reported_client_version_label |
security_result.detection_fields |
Mesclado |
tracing_label |
security_result.detection_fields |
Mesclado |
EXECUTION_STATUS |
security_result.summary |
Mapeado diretamente |
STATUS |
security_result.summary |
Mapeado diretamente |
column17 |
security_result.summary |
Mapeado diretamente |
TARGET_REGION |
target.cloud.availability_zone |
Mapeado diretamente |
TARGET_CLOUD |
target.cloud.environment |
Mapeado: (?i)azure → MICROSOFT_AZURE, (?i)amazon → AMAZON_WEB_SERVICES, (?i)google ... |
TARGET_CLOUD_label |
target.resource.attribute.labels |
Mesclado |
column2_label |
target.resource.attribute.labels |
Mesclado |
column7_label |
target.resource.attribute.labels |
Mesclado |
USER_NAME |
target.user.userid |
Mapeado diretamente |
column4 |
target.user.userid |
Mapeado diretamente |
| N/A | extensions.auth.type |
Constante: AUTHTYPE_UNSPECIFIED |
| N/A | metadata.event_type |
Constante: NETWORK_CONNECTION |
| N/A | metadata.product_name |
Constante: SNOWFLAKE |
| N/A | metadata.vendor_name |
Constante: SNOWFLAKE |
| N/A | principal.cloud.environment |
Constante: MICROSOFT_AZURE |
| N/A | principal.platform |
Constante: LINUX |
| N/A | target.cloud.environment |
Constante: MICROSOFT_AZURE |
Registro de alterações
Ver o registro de alterações deste analisador
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.