Coletar registros do AWS CloudWatch
Neste documento, explicamos como ingerir registros do AWS CloudWatch no Google Security Operations usando o Amazon S3 ou o Amazon Kinesis Data Firehose. O AWS CloudWatch é um serviço de monitoramento e observabilidade que coleta dados operacionais na forma de registros, métricas e eventos. Com essa integração, é possível enviar esses registros ao Google SecOps para análise e monitoramento.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- Instância do Google SecOps
- Acesso privilegiado à AWS
Configurar a exportação de registros do CloudWatch usando o AWS S3
Esse processo de exportação precisa ser feito regularmente para que os registros mais recentes do CloudWatch sejam ingeridos no S3.
Criar um bucket do Amazon S3
Recomendamos usar um bucket criado especificamente para registros do CloudWatch.
- Abra o console do Amazon S3.
- Se necessário, mude a Região.
- Na barra de navegação, selecione a região em que os registros do CloudWatch estão localizados.
- Clique em Criar bucket.
- Nome do bucket: insira um nome significativo para o bucket.
- Região: selecione a região em que seus dados do CloudWatch Logs estão localizados.
- Clique em Criar.
Criar um usuário do IAM com acesso total ao Amazon S3 e ao CloudWatch Logs
- Abra o console do IAM.
- Clique em Usuários > Criar usuário.
- Insira um nome no campo Nome de usuário (por exemplo,
CWExport
). - Selecione Acesso programático e Acesso ao console de gerenciamento da AWS.
- Selecione Senha gerada automaticamente ou Senha personalizada.
- Clique em Next: Permissions.
- Escolha Anexar políticas atuais diretamente.
- Pesquise e selecione as políticas AmazonS3FullAccess e CloudWatchLogsFullAccess para o usuário.
- Clique em Avançar: tags.
- Clique em PRÓXIMO: REVISAR.
- Clique em Criar usuário.
Configurar permissões no bucket do Amazon S3
- No console do Amazon S3, escolha o bucket que você criou anteriormente.
- Clique em Permissões > Política do bucket.
No Editor de políticas do bucket, adicione a política a seguir.
{ "Version": "2012-10-17", "Statement": [ { "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::cw-exported-logs", "Principal": { "Service": "logs.us-east-1.amazonaws.com" } }, { "Action": "s3:PutObject" , "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs/random-string/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } }, "Principal": { "Service": "logs.us-east-1.amazonaws.com" } } ] }
Mude e atualize as seguintes variáveis
json
:- Mude
cw-exported-logs
para o nome do seu bucket do S3. - Mude
random-string
para uma string de caracteres gerada aleatoriamente. - Especifique o endpoint da região correto para o Principal.
- Mude
Clique em Salvar.
Configurar a exportação do CloudWatch
- Faça login como o usuário do IAM que você criou anteriormente.
- Abra o console do CloudWatch.
- No menu de navegação, selecione Grupos de registros.
- Selecione o nome de um grupo de registros ou crie um novo.
- Escolha Ações > Exportar dados para o Amazon S3.
- Na tela Exportar dados para o Amazon S3, localize Definir exportação de dados.
Defina o período dos dados a serem exportados usando De e Até.
Escolher bucket do S3: selecione a conta associada ao bucket do Amazon S3.
Nome do bucket do S3: selecione um bucket do Amazon S3.
Prefixo do bucket do S3: insira a string gerada aleatoriamente que você especificou na política do bucket.
Escolha Exportar para exportar os dados de registro para o Amazon S3.
Para conferir o status dos dados de registro que você exportou para o Amazon S3, selecione Ações > Ver todas as exportações para o Amazon S3.
Configurar um feed no Google SecOps para ingerir registros do AWS CloudWatch
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo,
AWS CloudWatch Logs
). - Selecione Amazon S3 V2 como o Tipo de origem.
- Selecione AWS CloudWatch como o Tipo de registro.
- Clique em Próxima.
Especifique valores para os seguintes parâmetros de entrada:
- URI do S3: o URI do bucket
s3://your-log-bucket-name/
- Substitua
your-log-bucket-name
pelo nome real do bucket.
- Substitua
Opções de exclusão de fontes: selecione a opção de exclusão de acordo com sua preferência.
Idade máxima do arquivo: padrão de 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.
Clique em Próxima.
Revise a nova configuração do feed na tela Finalizar e clique em Enviar.
Configurar a exportação de registros do CloudWatch usando o AWS Data Firehose
Não é necessário fazer esse processo de exportação regularmente após a configuração inicial.
Configurar um feed no Google SecOps para ingerir registros do Amazon CloudWatch
- Acesse Configurações do SIEM > Feeds.
- Clique em + Adicionar novo feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo,
AWS CloudWatch Logs
). - Selecione Amazon Data Firehose como o Tipo de origem.
- Selecione AWS CloudWatch como o Tipo de registro.
- Clique em Próxima.
- Especifique valores para os seguintes parâmetros de entrada:
- Delimitador de divisão:
\n
opcional. - Namespace do recurso: o namespace do recurso.
- Rótulos de ingestão: o rótulo a ser aplicado aos eventos deste feed.
- Delimitador de divisão:
- Clique em Próxima.
- Revise a configuração do feed e clique em Enviar.
- Clique em Gerar chave secreta para autenticar o feed.
- Copie e salve a chave secreta, porque não será possível ver esse valor novamente.
- Acesse a guia Detalhes.
- Copie o URL do endpoint do feed no campo Informações do endpoint.
- Clique em Concluído.
Criar uma chave de API para o feed do Amazon Data Firehose
- Acesse a página Credenciais do console Google Cloud.
- Clique em Criar credenciais e selecione Chave de API.
- Restrinja o acesso da chave de API à API Google SecOps.
Especifique o URL do endpoint
Para especificar o endpoint HTTPS e a chave de acesso no Amazon Data Firehose, siga estas etapas:
Acrescente a chave de API ao URL do endpoint do feed e especifique esse URL como o URL do endpoint HTTP no seguinte formato:
ENDPOINT_URL?key=API_KEY
Substitua:
ENDPOINT_URL
: o URL do endpoint do feed.API_KEY
: a chave de API para autenticar no Google SecOps.
Para a chave de acesso, especifique a chave secreta que você recebeu ao criar o feed do Amazon Data Firehose.
Configure o Amazon Kinesis Data Firehose para o Google SecOps {:#configure-kinesis-secops}.
- No console da AWS, acesse Kinesis > Data Firehose > Criar fluxo de entrega.
- Informe os seguintes detalhes de configuração:
- Origem: selecione PUT direto ou outras origens.
- Destino: escolha Endpoint HTTP.
- URL do endpoint HTTP: insira o URL do endpoint HTTPS do feed do Google SecOps com a chave de API.
- Método HTTP: selecione POST.
- Em Chave de acesso, insira os seguintes detalhes:
- Cabeçalho da chave secreta:
<HEADER_NAME_FOR_SECRET>
com valor<YOUR_SECRET_KEY>
- Dicas de buffer: defina Tamanho do buffer = 1 MiB, Intervalo do buffer = 60 segundos.
- Compactação: selecione Desativada.
- Backup do S3: selecione Desativado.
- Deixe as configurações de retry e logging como default.
- Cabeçalho da chave secreta:
- Clique em Criar fluxo de entrega.
Configurar permissões do IAM e inscrever o grupo de registros
- No console da AWS, acesse IAM > Políticas > Criar política > JSON.
Cole o seguinte JSON de política, substituindo
<region>
e<account-id>
pela sua região da AWS e ID da conta:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "firehose:PutRecord", "firehose:PutRecordBatch" ], "Resource": "arn:aws:firehose:<region>:<account-id>:deliverystream/cwlogs-to-secops" } ] }
- Nomeie a política como
CWLtoFirehoseWrite
e clique em Criar política. - Acesse IAM > Papéis > Criar papel.
- Selecione Política de confiança personalizada e cole:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.<your-region>.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
- Nomeie a política como
Anexe a política
CWLtoFirehoseWrite
à função.Nomeie a função como
CWLtoFirehoseRole
e clique em Criar função.Acesse CloudWatch > Registros > Grupos de registros.
Selecione o grupo de registros de destino.
Abra a guia Filtros de assinatura e clique em Criar.
Escolha Criar filtro de assinatura do Amazon Kinesis Data Firehose.
Informe os seguintes detalhes de configuração:
- Destino: selecione o fluxo de exibição
cwlogs-to-secops
. - Conceder permissão: escolha o papel
CWLtoFirehoseRole
. - Nome do filtro: insira
all-events
. - Deixe Padrão de filtro em branco para enviar todos os eventos.
- Destino: selecione o fluxo de exibição
Clique em Iniciar streaming.
Tabela de mapeamento da UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
account |
principal.user.userid |
O valor de account do registro bruto é mapeado para o campo principal.user.userid . |
account_id |
principal.user.userid |
O valor de account_id do registro bruto é mapeado para o campo principal.user.userid . |
AlertId |
metadata.product_log_id |
O valor de AlertId do registro bruto é mapeado para o campo metadata.product_log_id . |
arrivalTimestamp |
metadata.event_timestamp |
O valor de arrivalTimestamp do registro bruto é convertido em um carimbo de data/hora e mapeado para o campo metadata.event_timestamp . |
attemptsMade |
additional.fields |
O valor de attemptsMade do registro bruto é convertido em uma string e adicionado como um par de chave-valor ao additional.fields com a chave "Attempts Made". |
awsAccountId |
principal.asset_id |
O valor de awsAccountId do registro bruto é precedido por "ID da conta da AWS: " e mapeado para o campo principal.asset_id . |
billed_duration |
additional.fields |
O valor de billed_duration do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "billed_duration". |
BytesIn |
network.received_bytes |
O valor de BytesIn do registro bruto é convertido em um número inteiro sem sinal e mapeado para o campo network.received_bytes . |
cipher |
network.tls.cipher |
O valor de cipher do registro bruto é mapeado para o campo network.tls.cipher . |
Ciphers |
network.tls.client.supported_ciphers |
O valor de Ciphers do registro bruto é dividido por vírgulas, e cada valor é adicionado à matriz network.tls.client.supported_ciphers . |
cloudwatchLog |
security_result.description |
O valor de cloudwatchLog do registro bruto é mapeado para o campo security_result.description . |
CloudAccountId |
metadata.product_deployment_id |
O valor de CloudAccountId do registro bruto é mapeado para o campo metadata.product_deployment_id . |
CloudType |
target.resource.attribute.cloud.environment |
O valor de CloudType do registro bruto determina o valor de target.resource.attribute.cloud.environment . Se CloudType for "gcp", o valor será "GOOGLE_CLOUD_PLATFORM". Se CloudType for "aws", o valor será "AMAZON_WEB_SERVICES". Se CloudType for "azure", o valor será "MICROSOFT_AZURE". |
Context.Execution.Id |
target.resource.attribute.labels |
O valor de Context.Execution.Id do registro bruto é adicionado como um par de chave-valor ao target.resource.attribute.labels com a chave "Context Id". |
Context.Execution.Name |
target.resource.attribute.labels |
O valor de Context.Execution.Name do registro bruto é adicionado como um par de chave-valor ao target.resource.attribute.labels com a chave "Nome do contexto". |
Context.Execution.RoleArn |
target.resource.product_object_id |
O valor de Context.Execution.RoleArn do registro bruto é mapeado para o campo target.resource.product_object_id . |
descr |
metadata.description |
O valor de descr do registro bruto, depois da remoção do espaço em branco extra, é mapeado para o campo metadata.description , a menos que seja "-". Se descr estiver vazio, o valor de log será usado. |
destination.name |
target.location.country_or_region |
O valor de destination.name do registro bruto é mapeado para o campo target.location.country_or_region . |
destination.properties.prefix |
target.resource.attribute.labels |
O valor de destination.properties.prefix do registro bruto é adicionado como um par de chave-valor ao target.resource.attribute.labels com a chave "Prefixo das propriedades de destino". |
detail.additionalEventData.configRuleArn |
security_result.rule_id |
O valor de detail.additionalEventData.configRuleArn do registro bruto é mapeado para o campo security_result.rule_id . |
detail.additionalEventData.configRuleName |
security_result.rule_name |
O valor de detail.additionalEventData.configRuleName do registro bruto é mapeado para o campo security_result.rule_name . |
detail.additionalEventData.managedRuleIdentifier |
additional.fields |
O valor de detail.additionalEventData.managedRuleIdentifier do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "managedRuleIdentifier". |
detail.additionalEventData.notificationJobType |
additional.fields |
O valor de detail.additionalEventData.notificationJobType do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "notificationJobType". |
detail.awsAccountId |
principal.asset_id |
O valor de detail.awsAccountId do registro bruto é precedido por "ID da conta da AWS: " e mapeado para o campo principal.asset_id . |
detail.awsRegion |
principal.location.name |
O valor de detail.awsRegion do registro bruto é mapeado para o campo principal.location.name . |
detail.configRuleArn |
security_result.rule_id |
O valor de detail.configRuleArn do registro bruto é mapeado para o campo security_result.rule_id . |
detail.configRuleName |
security_result.rule_name |
O valor de detail.configRuleName do registro bruto é mapeado para o campo security_result.rule_name . |
detail.configurationItem.awsAccountId |
principal.user.userid |
O valor de detail.configurationItem.awsAccountId do registro bruto é mapeado para o campo principal.user.userid . |
detail.configurationItem.awsRegion |
target.location.country_or_region |
O valor de detail.configurationItem.awsRegion do registro bruto é mapeado para o campo target.location.country_or_region . |
detail.configurationItem.configuration.complianceType |
security_result.summary |
O valor de detail.configurationItem.configuration.complianceType do registro bruto é mapeado para o campo security_result.summary . |
detail.configurationItem.configuration.targetResourceId |
target.resource.attribute.labels |
O valor de detail.configurationItem.configuration.targetResourceId do registro bruto é adicionado como um par de chave-valor ao target.resource.attribute.labels com a chave "configurationItem configuration targetResourceId". |
detail.configurationItem.configuration.targetResourceType |
target.resource.attribute.labels |
O valor de detail.configurationItem.configuration.targetResourceType do registro bruto é adicionado como um par de chave-valor ao target.resource.attribute.labels com a chave "configurationItem configuration targetResourceType". |
detail.configurationItem.configurationItemCaptureTime |
_target.asset.attribute.creation_time |
O valor de detail.configurationItem.configurationItemCaptureTime do registro bruto é convertido em um carimbo de data/hora e mapeado para o campo _target.asset.attribute.creation_time . |
detail.configurationItem.configurationItemStatus |
target.resource.attribute.labels |
O valor de detail.configurationItem.configurationItemStatus do registro bruto é adicionado como um par de chave-valor ao target.resource.attribute.labels com a chave "configurationItem configurationItemStatus". |
detail.configurationItem.configurationStateId |
target.resource.attribute.labels |
O valor de detail.configurationItem.configurationStateId do registro bruto é convertido em uma string e adicionado como um par de chave-valor ao target.resource.attribute.labels com a chave "configurationItem configurationStateId". |
detail.configurationItem.resourceId |
target.resource.id |
O valor de detail.configurationItem.resourceId do registro bruto é mapeado para o campo target.resource.id . |
detail.configurationItem.resourceType |
target.resource.resource_subtype |
O valor de detail.configurationItem.resourceType do registro bruto é mapeado para o campo target.resource.resource_subtype . |
detail.configurationItemDiff.changedProperties.Configuration.configRuleList.1.updatedValue.configRuleArn |
security_result.rule_id |
O valor de detail.configurationItemDiff.changedProperties.Configuration.configRuleList.1.updatedValue.configRuleArn do registro bruto é mapeado para o campo security_result.rule_id . |
detail.eventCategory |
security_result.category_details |
O valor de detail.eventCategory do registro bruto é mapeado para o campo security_result.category_details . |
detail.eventID |
metadata.product_log_id |
O valor de detail.eventID do registro bruto é mapeado para o campo metadata.product_log_id . |
detail.eventName |
additional.fields |
O valor de detail.eventName do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "Nome do evento". |
detail.eventSource |
target.application |
O valor de detail.eventSource do registro bruto é mapeado para o campo target.application . |
detail.eventType |
additional.fields |
O valor de detail.eventType do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "Tipo de evento". |
detail.eventVersion |
metadata.product_version |
O valor de detail.eventVersion do registro bruto é mapeado para o campo metadata.product_version . |
detail.managementEvent |
additional.fields |
O valor de detail.managementEvent do registro bruto é convertido em uma string e adicionado como um par de chave-valor ao additional.fields com a chave "detail managementEvent". |
detail.messageType |
target.resource.attribute.labels |
O valor de detail.messageType do registro bruto é adicionado como um par de chave-valor ao target.resource.attribute.labels com a chave "Message Type". |
detail.newEvaluationResult.complianceType |
security_result.summary |
O valor de detail.newEvaluationResult.complianceType do registro bruto é mapeado para o campo security_result.summary . |
detail.newEvaluationResult.configRuleInvokedTime |
additional.fields |
O valor de detail.newEvaluationResult.configRuleInvokedTime do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "newEvaluationResult_configRuleInvokedTime". |
detail.newEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.configRuleName |
additional.fields |
O valor de detail.newEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.configRuleName do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "newEvaluationResult_configRuleName". |
detail.newEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.resourceId |
additional.fields |
O valor de detail.newEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.resourceId do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "newEvaluationResult_resourceId". |
detail.newEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.resourceType |
additional.fields |
O valor de detail.newEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.resourceType do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "newEvaluationResult_resourceType". |
detail.newEvaluationResult.resultRecordedTime |
additional.fields |
O valor de detail.newEvaluationResult.resultRecordedTime do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "newEvaluationResult_resultRecordedTime". |
detail.oldEvaluationResult.configRuleInvokedTime |
additional.fields |
O valor de detail.oldEvaluationResult.configRuleInvokedTime do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "oldEvaluationResult_configRuleInvokedTime". |
detail.oldEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.configRuleName |
additional.fields |
O valor de detail.oldEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.configRuleName do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "oldEvaluationResult_configRuleName". |
detail.oldEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.resourceId |
additional.fields |
O valor de detail.oldEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.resourceId do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "oldEvaluationResult_resourceId". |
detail.oldEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.resourceType |
additional.fields |
O valor de detail.oldEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.resourceType do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "oldEvaluationResult_resourceType". |
detail.oldEvaluationResult.resultRecordedTime |
additional.fields |
O valor de detail.oldEvaluationResult.resultRecordedTime do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "oldEvaluationResult_resultRecordedTime". |
detail.readOnly |
additional.fields |
O valor de detail.readOnly do registro bruto é convertido em uma string e adicionado como um par de chave-valor ao additional.fields com a chave "detail readOnly". |
detail.recipientAccountId |
target.resource.attribute.labels |
O valor de detail.recipientAccountId do registro bruto é adicionado como um par de chave-valor ao target.resource.attribute.labels com a chave "Recipient Account Id". |
detail.recordVersion |
metadata.product_version |
O valor de detail.recordVersion do registro bruto é mapeado para o campo metadata.product_version . |
detail.requestID |
target.resource.attribute.labels |
O valor de detail.requestID do registro bruto é adicionado como um par de chave-valor ao target.resource.attribute.labels com a chave "ID da solicitação de detalhes". |
detail.resourceType |
target.resource.resource_subtype |
O valor de detail.resourceType do registro bruto é mapeado para o campo target.resource.resource_subtype . |
detail.s3Bucket |
about.resource.name |
O valor de detail.s3Bucket do registro bruto é mapeado para o campo about.resource.name . |
detail.s3ObjectKey |
target.resource.attribute.labels |
O valor de detail.s3ObjectKey do registro bruto é adicionado como um par de chave-valor ao target.resource.attribute.labels com a chave "s3ObjectKey". |
detail.userAgent |
network.http.user_agent |
O valor de detail.userAgent do registro bruto é mapeado para o campo network.http.user_agent . |
detail.userIdentity.accessKeyId |
target.user.userid |
O valor de detail.userIdentity.accessKeyId do registro bruto é mapeado para o campo target.user.userid . |
detail.userIdentity.accountId |
metadata.product_deployment_id |
O valor de detail.userIdentity.accountId do registro bruto é mapeado para o campo metadata.product_deployment_id . |
detail.userIdentity.arn |
target.user.userid |
O valor de detail.userIdentity.arn do registro bruto é mapeado para o campo target.user.userid . |
detail.userIdentity.principalId |
principal.user.product_object_id |
O valor de detail.userIdentity.principalId do registro bruto é mapeado para o campo principal.user.product_object_id . |
detail.userIdentity.sessionContext.attributes.mfaAuthenticated |
principal.user.attribute.labels |
O valor de detail.userIdentity.sessionContext.attributes.mfaAuthenticated do registro bruto é adicionado como um par de chave-valor ao principal.user.attribute.labels com a chave "mfaAuthenticated". |
detail.userIdentity.sessionContext.sessionIssuer.userName |
target.user.user_display_name |
O valor de detail.userIdentity.sessionContext.sessionIssuer.userName do registro bruto é mapeado para o campo target.user.user_display_name . |
detail.userIdentity.type |
principal.resource.type |
O valor de detail.userIdentity.type do registro bruto é mapeado para o campo principal.resource.type . |
detail-type |
metadata.product_event_type |
O valor de detail-type do registro bruto é mapeado para o campo metadata.product_event_type . |
device |
principal.asset.product_object_id |
O valor de device do registro bruto é mapeado para o campo principal.asset.product_object_id . |
digestPublicKeyFingerprint |
target.file.sha1 |
O valor de digestPublicKeyFingerprint do registro bruto é mapeado para o campo target.file.sha1 . |
digestS3Bucket |
principal.resource.name |
O valor de digestS3Bucket do registro bruto é mapeado para o campo principal.resource.name . |
digestS3Object |
principal.asset.asset_id |
O valor de digestS3Object do registro bruto é precedido por "S3 Object: " e mapeado para o campo principal.asset.asset_id . |
digestSignatureAlgorithm |
network.tls.cipher |
O valor de digestSignatureAlgorithm do registro bruto é mapeado para o campo network.tls.cipher . |
digestStartTime |
metadata.event_timestamp |
O valor de digestStartTime do registro bruto é convertido em um carimbo de data/hora e mapeado para o campo metadata.event_timestamp . |
dimensions.VolumeId |
additional.fields |
O valor de dimensions.VolumeId do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "VolumeId". |
duration |
additional.fields |
O valor de duration do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "duration". |
errorCode |
security_result.rule_name |
O valor de errorCode do registro bruto é mapeado para o campo security_result.rule_name . |
errorMessage |
security_result.summary |
O valor de errorMessage do registro bruto é mapeado para o campo security_result.summary . |
executionId |
principal.process.pid |
O valor de executionId do registro bruto é mapeado para o campo principal.process.pid . |
host |
principal.hostname , principal.ip |
O valor de host do registro bruto, com hífens substituídos por pontos, é analisado como um endereço IP e mapeado para o campo principal.ip se a operação for bem-sucedida. Caso contrário, ele será mapeado para o campo principal.hostname . |
http_verb |
network.http.method |
O valor de http_verb do registro bruto é convertido para maiúsculas e mapeado para o campo network.http.method . |
kubernetes.container_hash |
additional.fields |
O valor de kubernetes.container_hash do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "container_hash". |
kubernetes.container_image |
additional.fields |
O valor de kubernetes.container_image do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "container_image". |
kubernetes.container_name |
additional.fields |
O valor de kubernetes.container_name do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "container_name". |
kubernetes.docker_id |
principal.asset_id |
O valor de kubernetes.docker_id do registro bruto é precedido por "id: " e mapeado para o campo principal.asset_id . |
kubernetes.host |
principal.hostname , principal.ip |
O valor de kubernetes.host do registro bruto, com hífens substituídos por pontos, é analisado como um endereço IP e mapeado para o campo principal.ip se a operação for bem-sucedida. Caso contrário, ele será mapeado para o campo principal.hostname . |
kubernetes.namespace |
principal.namespace |
O valor de kubernetes.namespace do registro bruto é mapeado para o campo principal.namespace . |
kubernetes.namespace_name |
principal.namespace |
O valor de kubernetes.namespace_name do registro bruto é mapeado para o campo principal.namespace . |
kubernetes.pod_id |
principal.asset.asset_id |
O valor de kubernetes.pod_id do registro bruto é precedido por "pod_id: " e mapeado para o campo principal.asset.asset_id . |
kubernetes.pod_name |
additional.fields |
O valor de kubernetes.pod_name do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "nome do pod". |
lambdaArn |
principal.hostname |
O valor de lambdaArn do registro bruto é mapeado para o campo principal.hostname . |
level |
security_result.severity |
O valor de level do registro bruto determina o valor de security_result.severity . Se level for "Info", o valor será "INFORMATIONAL". Se level for "Error", o valor será "ERROR". Se level for "Warning", o valor será "MEDIUM". |
log |
metadata.description |
O valor de log do registro bruto é mapeado para o campo metadata.description se descr estiver vazio. |
logFiles |
about |
Para cada elemento na matriz logFiles do registro bruto, um objeto about é criado com file.full_path definido como s3Object , asset.hostname definido como s3Bucket e file.sha256 definido como hashValue . |
log_processed.cause |
security_result.summary |
O valor de log_processed.cause do registro bruto é mapeado para o campo security_result.summary . |
log_processed.ids |
intermediary.hostname |
Para cada elemento na matriz log_processed.ids do registro bruto, um objeto intermediary é criado com hostname definido como o valor do elemento. |
log_processed.level |
security_result.severity |
O valor de log_processed.level do registro bruto é mapeado para o campo security_result.severity . |
log_processed.msg |
metadata.description |
O valor de log_processed.msg do registro bruto é mapeado para o campo metadata.description . |
log_processed.ts |
metadata.event_timestamp |
O valor de log_processed.ts do registro bruto é convertido em um carimbo de data/hora e mapeado para o campo metadata.event_timestamp . |
log_type |
metadata.log_type |
O valor de log_type do registro bruto é mapeado para o campo metadata.log_type . Este é um campo personalizado adicionado para contexto. |
logevent.message |
security_result.description |
O valor de logevent.message do registro bruto é mapeado para o campo security_result.description . Ele também é analisado usando grok para extrair outros campos. |
logGroup |
security_result.about.resource.name |
O valor de logGroup do registro bruto é mapeado para o campo security_result.about.resource.name . |
logStream |
security_result.about.resource.attribute.labels |
O valor de logStream do registro bruto é adicionado como um par de chave-valor ao security_result.about.resource.attribute.labels com a chave "logStream". |
memory_used |
additional.fields |
O valor de memory_used do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "memory_used". |
metric_name |
additional.fields |
O valor de metric_name do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "metric_name". |
metric_stream_name |
additional.fields |
O valor de metric_stream_name do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "metric_stream_name". |
namespace |
principal.namespace |
O valor de namespace do registro bruto é mapeado para o campo principal.namespace . |
owner |
principal.user.userid |
O valor de owner do registro bruto é mapeado para o campo principal.user.userid . |
parameters |
additional.fields |
O valor de parameters do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "Parameters". |
Path |
principal.process.file.full_path |
O valor de Path do registro bruto é mapeado para o campo principal.process.file.full_path . |
pid |
principal.process.pid |
O valor de pid do registro bruto é mapeado para o campo principal.process.pid . |
PolicyName |
security_result.rule_name |
O valor de PolicyName do registro bruto é mapeado para o campo security_result.rule_name . |
prin_host |
principal.hostname |
O valor de prin_host do registro bruto é mapeado para o campo principal.hostname . |
principal_hostname |
principal.hostname |
O valor de principal_hostname do registro bruto é mapeado para o campo principal.hostname . |
process |
principal.application |
O valor de process do registro bruto é mapeado para o campo principal.application . |
rawData |
additional.fields |
O valor de rawData do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "Dados brutos". |
Recommendation |
security_result.detection_fields |
O valor de Recommendation do registro bruto é adicionado como um par de chave-valor ao security_result.detection_fields com a chave "Recommendation". |
referral_url |
network.http.referral_url |
O valor de referral_url do registro bruto é mapeado para o campo network.http.referral_url . |
region |
principal.location.name |
O valor de region do registro bruto é mapeado para o campo principal.location.name . |
resp_code |
network.http.response_code |
O valor de resp_code do registro bruto é convertido em um número inteiro e mapeado para o campo network.http.response_code . |
resource_url |
network.http.referral_url |
O valor de resource_url do registro bruto é mapeado para o campo network.http.referral_url . |
ResourceType |
target.resource.resource_subtype |
O valor de ResourceType do registro bruto é mapeado para o campo target.resource.resource_subtype . |
response_body |
additional.fields |
O valor de response_body do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "Corpo da resposta". |
Role |
target.resource.product_object_id |
O valor de Role do registro bruto é mapeado para o campo target.resource.product_object_id . |
s3_bucket_path |
target.file.full_path |
O valor de s3_bucket_path do registro bruto é mapeado para o campo target.file.full_path . |
sec_result.category |
security_result.category |
O valor de sec_result.category é derivado da lógica do analisador. Se descr contiver "autenticação é necessária", o valor será "AUTH_VIOLATION". |
sec_result.description |
security_result.description |
O valor de sec_result.description é derivado da lógica do analisador. Ele é definido como o valor de cloudwatchLog , se presente. |
sec_result.severity |
security_result.severity |
O valor de sec_result.severity é derivado da lógica do analisador. Ele é definido com base no valor de severity ou level . |
sec_result.summary |
security_result.summary |
O valor de sec_result.summary é derivado da lógica do analisador. Ele é definido como o valor de log_processed.cause ou errorMessage , se estiver presente. |
security_result |
security_result |
O objeto security_result é construído com base em vários campos e lógica de analisador. |
serverId |
additional.fields |
O valor de serverId do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "server_id". |
severity |
security_result.severity |
O valor de severity do registro bruto, convertido para maiúsculas e normalizado, é mapeado para o campo security_result.severity . |
Source |
principal.hostname |
O valor de Source do registro bruto é mapeado para o campo principal.hostname . |
source |
principal.hostname |
O valor de source do registro bruto é mapeado para o campo principal.hostname . |
SourceIP |
principal.ip |
O valor de SourceIP do registro bruto é mapeado para o campo principal.ip . |
src_port |
principal.port |
Se src_port for "80", ele será convertido em um número inteiro e mapeado para o campo principal.port , e network.application_protocol será definido como "HTTP". |
stream |
additional.fields |
O valor de stream do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "stream". |
subscriptionFilters |
security_result.about.resource.attribute.labels |
Para cada elemento na matriz subscriptionFilters do registro bruto, um par de chave-valor é adicionado ao security_result.about.resource.attribute.labels com a chave "subscriptionFilter" e o valor da matriz. |
support_contact |
target.resource.attribute.labels |
O valor de support_contact do registro bruto é adicionado como um par de chave-valor ao target.resource.attribute.labels com a chave "Contato de suporte". |
t_ip |
target.ip |
O valor de t_ip do registro bruto, depois de remover os hífens, é analisado como um endereço IP e mapeado para o campo target.ip se for bem-sucedido. |
time |
metadata.event_timestamp |
O valor de time do registro bruto é convertido em um carimbo de data/hora e mapeado para o campo metadata.event_timestamp . |
timestamp |
metadata.event_timestamp |
O valor de timestamp do registro bruto é convertido em um carimbo de data/hora usando vários formatos e mapeado para o campo metadata.event_timestamp . |
tls |
network.tls.version |
O valor de tls do registro bruto é mapeado para o campo network.tls.version . |
transferDetails.serverId |
additional.fields |
O valor de transferDetails.serverId do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "server_id". |
transferDetails.sessionId |
network.session_id |
O valor de transferDetails.sessionId do registro bruto é mapeado para o campo network.session_id . |
transferDetails.username |
principal.user.user_display_name |
O valor de transferDetails.username do registro bruto é mapeado para o campo principal.user.user_display_name . |
ts |
metadata.event_timestamp |
O valor de ts do registro bruto, combinado com o fuso horário, se disponível, é convertido em um carimbo de data/hora e mapeado para o campo metadata.event_timestamp . |
type |
metadata.product_event_type |
O valor de type do registro bruto é mapeado para o campo metadata.product_event_type . |
unit |
additional.fields |
O valor de unit do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "unit". |
url |
target.url |
O valor de url do registro bruto é mapeado para o campo target.url . |
url_back_to_product |
metadata.url_back_to_product |
O valor de url_back_to_product do registro bruto é mapeado para o campo metadata.url_back_to_product . |
User |
principal.user.userid |
O valor de User do registro bruto é mapeado para o campo principal.user.userid . |
user |
target.user.userid , metadata.event_type , extensions.auth.mechanism |
Se user estiver presente, metadata.event_type será definido como "USER_LOGIN", extensions.auth.mechanism será definido como "NETWORK", e o valor de user será mapeado para target.user.userid . |
value.count |
additional.fields |
O valor de value.count do registro bruto é convertido em uma string e adicionado como um par de chave-valor ao additional.fields com a chave "count". |
value.max |
additional.fields |
O valor de value.max do registro bruto é convertido em uma string e adicionado como um par de chave-valor ao additional.fields com a chave "max". |
value.min |
additional.fields |
O valor de value.min do registro bruto é convertido em uma string e adicionado como um par de chave-valor ao additional.fields com a chave "min". |
value.sum |
additional.fields |
O valor de value.sum do registro bruto é convertido em uma string e adicionado como um par de chave-valor ao additional.fields com a chave "sum". |
workflowId |
additional.fields |
O valor de workflowId do registro bruto é adicionado como um par de chave-valor ao additional.fields com a chave "workflowId". |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.