Coletar registros do AWS CloudWatch
Este documento explica como ingerir registros do AWS CloudWatch no Google Security Operations usando o Amazon S3.
O AWS CloudWatch é um serviço de monitoramento e observabilidade que coleta dados operacionais na forma de registros, métricas e eventos de recursos e aplicativos da AWS. Essa integração usa o Amazon Data Firehose para transmitir dados de registros do CloudWatch para um bucket do S3, que o Google SecOps ingere usando um feed do Amazon S3 V2.
Antes de começar
- Uma instância do Google SecOps
- Acesso privilegiado ao AWS Management Console com permissões para gerenciar:
- Amazon CloudWatch Logs (grupos de registros, filtros de assinatura)
- Amazon Data Firehose (fluxos de entrega)
- Amazon S3 (buckets)
- IAM da AWS (papéis, políticas, usuários)
Configurar o bucket da AWS 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,
cwlogs-to-secops).
Configurar a função do IAM para o Amazon Data Firehose
O Amazon Data Firehose exige uma função do IAM para gravar registros no bucket do S3.
Criar a política do IAM
- No console da AWS, acesse IAM > Políticas > Criar política.
- Selecione a guia JSON.
Cole a seguinte política (substitua
cwlogs-to-secopspelo nome real do bucket):{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3Delivery", "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::cwlogs-to-secops", "arn:aws:s3:::cwlogs-to-secops/*" ] }, { "Sid": "CloudWatchLogging", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/kinesisfirehose/cwlogs-to-secops:log-stream:*" } ] }Clique em Próxima.
No campo Nome da política, digite
FirehoseS3DeliveryPolicy.Clique em Criar política.
Criar o papel do IAM
- Acesse IAM > Papéis > Criar papel.
- Selecione Política de confiança personalizada.
Cole a seguinte política de confiança:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "firehose.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }Clique em Próxima.
Pesquise e selecione FirehoseS3DeliveryPolicy.
Clique em Próxima.
No campo Nome da função, insira
FirehoseToS3Role.Clique em Criar papel.
Criar o fluxo do Amazon Data Firehose
- Abra o console do Kinesis em https://console.aws.amazon.com/kinesis.
- No painel de navegação, selecione Amazon Data Firehose.
- Clique em Criar stream do Firehose.
- Em Escolher origem e destino, forneça a seguinte configuração:
- Origem: selecione PUT direto.
- Destino: selecione Amazon S3.
- No campo Nome do fluxo do Firehose, insira
cwlogs-to-secops. Em Transformar registros, na seção Descompactar registros de origem do Amazon CloudWatch Logs:
- Selecione Ativar a descompactação.
- Não selecione Ativar a extração de mensagens.
Em Configurações de destino:
- Bucket do S3: selecione o bucket do S3
cwlogs-to-secops. - Prefixo do bucket do S3 (opcional): insira
cloudwatch-logs/. - Prefixo de saída de erro do bucket do S3 (opcional): insira
firehose-errors/.
- Bucket do S3: selecione o bucket do S3
Em Dicas de buffer:
- Tamanho do buffer:
5MiB (padrão). - Intervalo do buffer:
300segundos (padrão).
- Tamanho do buffer:
Em Configurações avançadas:
- Criptografia no servidor: opcional. Ative se a criptografia for necessária.
- Registro de erros: selecione Ativado (recomendado).
- Permissões: selecione Escolher papel do IAM atual e
FirehoseToS3Role.
Clique em Criar stream do Firehose.
Aguarde até que o Status do fluxo seja Ativo.
Configurar o papel do IAM para o CloudWatch Logs
O CloudWatch Logs exige uma função do IAM para enviar dados de registros ao fluxo do Firehose.
Criar a política do IAM
- Acesse IAM > Políticas > Criar política.
- Selecione a guia JSON.
Cole a seguinte política (substitua
<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" } ] }Clique em Próxima.
No campo Nome da política, digite
CWLtoFirehoseWritePolicy.Clique em Criar política.
Criar o papel do IAM
- Acesse IAM > Papéis > Criar papel.
- Selecione Política de confiança personalizada.
Cole a seguinte política de confiança (substitua
<region>pela sua região da AWS):{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.<region>.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }Clique em Próxima.
Pesquise e selecione CWLtoFirehoseWritePolicy.
Clique em Próxima.
No campo Nome da função, insira
CWLtoFirehoseRole.Clique em Criar papel.
Criar um filtro de assinatura do CloudWatch Logs
- No console da AWS, acesse CloudWatch > Registros > Grupos de registros.
- Selecione o grupo de registros de destino que você quer transmitir para o Google SecOps.
- Selecione a guia Filtros de assinatura.
- Clique em Criar > Criar filtro de assinatura do Amazon Data Firehose.
- Informe os seguintes detalhes de configuração:
- Destino: selecione o fluxo do Firehose
cwlogs-to-secops. - Conceder permissão: selecione a função
CWLtoFirehoseRole. - Nome do filtro de assinatura: insira um nome descritivo, por exemplo,
secops-all-events. - Formato do registro: selecione Outro.
- Padrão de filtro de assinatura: deixe em branco para enviar todos os eventos ou insira um padrão de filtro para enviar apenas eventos específicos.
- Destino: selecione o fluxo do Firehose
Clique em Iniciar streaming.
Configurar o usuário do IAM para o Google SecOps
O Google SecOps precisa de um usuário do IAM com acesso ao bucket do S3 para ingerir os registros entregues.
- 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 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 a política AmazonS3FullAccess.
- Selecione a política.
- Clique em Próxima.
- Clique em Adicionar permissões
Configurar um feed no Google SecOps para ingerir registros do Amazon CloudWatch
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Na próxima página, clique em Configurar um único feed.
- Insira um nome exclusivo para o Nome do feed.
- Selecione Amazon S3 V2 como o Tipo de origem.
- Selecione AWS CloudWatch como o Tipo de registro.
- Clique em Próxima e em Enviar.
- Especifique valores para os seguintes campos:
- URI do S3:
s3://cwlogs-to-secops/cloudwatch-logs/ - 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: inclui arquivos modificados nos últimos 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 e em Enviar.
Tabela de mapeamento do 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 de remover o 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 presente. |
security_result |
security_result |
O objeto security_result é construído com vários campos e lógica de análise. |
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.