Coletar registros do AWS CloudWatch
Este documento explica como transferir os registros do AWS CloudWatch para o Google Security Operations. O AWS CloudWatch é um serviço de monitoramento e observabilidade que coleta dados operacionais na forma de registros, métricas e eventos. Essa integração permite enviar esses registros ao Google SecOps para análise e monitoramento.
Antes de começar
- Verifique se você tem uma instância do Google SecOps.
- Verifique se você tem acesso privilegiado à AWS.
Criar um bucket do Amazon S3
É recomendável usar um bucket criado especificamente para os registros do CloudWatch.
- Abra o console do Amazon S3.
- Se necessário, você pode mudar a região.
- Na barra de navegação, selecione a região onde os CloudWatch Logs estão armazenados.
- Clique em Criar bucket.
- Nome do bucket: insira um nome significativo.
- Região: selecione a região onde os dados do CloudWatch Logs estão armazenados.
- Clique em Criar.
Criar um usuário do IAM com acesso total ao Amazon S3 e aos registros do CloudWatch
- Abra o console do IAM.
- Clique em Usuários > Adicionar usuário.
- Digite um 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 de bucket.
No Editor de políticas de bucket, adicione a seguinte política.
{ "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 regional correto para Principal.
- Mude
Clique em Salvar para definir a política que você acabou de adicionar como a política de acesso no seu bucket.
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 registro.
- Selecione o nome de um grupo de registros ou crie um novo.
- Escolha Ações > Exportar dados para o Amazon S3.
- Na tela Export data to Amazon S3, localize Define data export.
- Defina o período de exportação dos dados 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 Export para exportar os dados de registro para o Amazon S3.
- Para conferir o status dos dados de registro exportados para o Amazon S3, selecione Ações > Conferir 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.
- No campo Nome do feed, insira um nome para o feed (por exemplo, AWS CloudWatch Logs).
- Selecione Amazon S3 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:
- Região: a região em que o bucket do Amazon S3 está localizado.
- URI do S3: o URI do bucket.
s3://your-log-bucket-name/
- Substitua
your-log-bucket-name
pelo nome real do bucket.
- Substitua
- O URI é: selecione Diretório ou Diretório que inclui subdiretórios.
Opções de exclusão da origem: selecione a opção de exclusão de acordo com sua preferência.
ID da chave de acesso: a chave de acesso do usuário com acesso ao bucket do S3.
Chave de acesso secreta: a chave secreta do usuário com acesso ao bucket do S3.
Namespace de recursos: o namespace de recursos.
Rótulos de ingestão: o rótulo a ser aplicado aos eventos desse feed.
Clique em Próxima.
Revise a configuração do novo feed na tela Finalizar e clique 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, após a remoção de espaços em branco extras, é 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 de 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 "Tipo de mensagem". |
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 de 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 hifens substituídos por pontos, é analisado como um endereço IP e mapeado para o campo principal.ip , se bem-sucedido. 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 hifens substituídos por pontos, é analisado como um endereço IP e mapeado para o campo principal.ip , se bem-sucedido. 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 "pod name". |
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 "Erro", 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 fornecer 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 "Parâmetros". |
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 "a 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 base em vários campos e na lógica do 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 em 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, após a remoção de hifens, é analisado como um endereço IP e mapeado para o campo target.ip , se 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". |
Alterações
2024-02-12
- Melhoria:
- Carimbo de data/hora mapeado para UNIX_MS.
2023-09-02
- Melhoria:
- Um "bloco kv" foi adicionado para analisar registros no formato de chave-valor.
- "SourceIP" foi mapeado para "principal.ip".
- "prin_host" foi mapeado para "principal.hostname".
- "User" foi associado a "principal.user.userid".
- "Ciphers" foi mapeado para "network.tls.client.supported_ciphers".
- "executionId" foi mapeado para "principal.process.pid".
- Mapeamos "transferDetails.sessionId" para "network.session_id".
- "transferDetails.username" foi associado a "principal.user.user_display_name".
- Mapeados "transferDetails.serverId", "workflowId", "details.input.initialFileLocation.etag", "details.input.initialFileLocation.backingStore", "details.input.initialFileLocation.bucket", "details.input.initialFileLocation.key",
- "Mode", "Kex" para "additional.fields".
- "BytesIn" foi mapeado para "network.received_bytes".
- "Role" foi mapeado para "target.resource.product_object_id".
2023-08-18
- Melhoria:
- Adicionamos um padrão Grok para analisar os registros brutos não analisados.
2023-07-07
- Melhoria:
- Adição de suporte a registros JSON relacionados a "logEvents".
2022-12-17
- "CloudType" foi mapeado para "target.resource.attribute.cloud.environment".
- Mapeamos "AlertId" para "metadata.product_log_id".
- "ResourceType" foi mapeado para "target.resource.resource_subtype".
- "ResourceRegion" foi mapeado para "target.location.country_or_region".
- A "Recomendação" foi mapeada para "security_result.detection_fields".
- "PolicyName" e "detail.additionalEventData.configRuleName" foram associados a "security_result.rule_name".
- "detail-type" foi associado a "metadata.product_event_type".
- Mapeamos "region","detail.awsRegion" para "principal.location.name".
- "detail.eventSource" foi associado a "target.application".
- "detail.requestID" foi associado a "target.resource.attribute.labels".
- "detail.userAgent" foi associado a "network.http.user_agent".
- "detail.eventVersion" foi mapeado para "metadata.product_version".
- "detail.userIdentity.accountId" foi associado a "metadata.product_deployment_id".
- "detail.userIdentity.accessKeyId" foi associado a "target.user.userid".
- Mapeamos "detail.userIdentity.type" para "principal.resource.type".
- "detail.userIdentity.principalId" foi associado a "principal.user.product_object_id".
- Mapeamos "detail.user.arn" para "target.user.userid".
- Mapeamos "detail.user.sessionContext.sessionIssuer.userName" para "target.user.user_display_name".
- "detail.user.mfaAuthenticated" foi associado a "principal.user.attribute.labels".
- "detail.recipientAccountId" foi associado a "target.resource.attribute.labels".
- Mapeou "detail.managementEvent", "detail.eventType", "detail.readOnly", "detail.eventName", "detail.additionalEventData.notificationJobType", "detail.additionalEventData.managedRuleIdentifier", "duration", "billed_duration", "memory_used" para "additional.fields".
- "detail.eventCategory" foi associado a "security_result.category_details".
- "detail.eventID" foi associado a "metadata.product_log_id".
- "detail.additionalEventData.configRuleArn" foi associado a "security_result.rule_id".
- "level" foi mapeado para "security_result.severity".
- "src_port" foi mapeado para "principal.port".
- "request_id" foi mapeado para "target.resource.attribute.labels".
- "url" foi mapeado para "target.url".
2022-09-03
- Melhoria:
- O grok foi adicionado para analisar os registros recém-ingeridos.
- "package" foi associado a "event.idm.read_only_udm.principal.process.command_line".
- Mapeamos "session_id" para "event.idm.read_only_udm.network.session_id".
- "Network_dir" foi mapeado para "event.idm.read_only_udm.network.direction".
- "Port" foi mapeado para "event.idm.read_only_udm.target.port".
- O mapeamento de "digestPublicKeyFingerprint" foi alterado de "additional.fields" para "event.idm.read_only_udm.target.file.sha1".
- Foram adicionados outros níveis de registro, como "AUDIT", "TRACE", "DEBUG", "NOTICE" e "ERROR" para o mapeamento de gravidade.
- O valor em "target.ip" foi duplicado para "principal.ip" para definir event_type como "STATUS_UPDATE", reduzindo a porcentagem genérica.
- Foram adicionadas condições para "event_type" "USER_UNCATEGORIZED", "NETWORK_HTTP", "NETWORK_CONNECTION" e "STATUS_UPADTE" para reduzir a porcentagem genérica.
2022-08-11
- Correção de bug: "digestS3Bucket" foi remapeado para "principal.resource.name".
- "kubernetes.pod_name" foi remapeado para "additional.fields".
2022-05-27
- Melhoria:
- O valor armazenado em metadata.product_name foi modificado para "AWS CloudWatch" e metadata.vendor_name para "AMAZON".
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.