Coletar registros de auditoria do Armazenamento do Azure
Versão do analisador:9.0
Este documento explica como exportar registros de auditoria do Armazenamento do Azure para o Google Security Operations usando uma conta do Armazenamento do Azure. O analisador processa registros no formato JSON, transformando-os no modelo de dados unificado (UDM). Ele extrai campos do registro bruto, realiza conversões de tipo de dados, enriquece os dados com contexto adicional (como análise de user agent e detalhamento de endereço IP) e mapeia os campos extraídos para os campos UDM correspondentes.
Antes de começar
Verifique se você atende aos seguintes pré-requisitos:
- Instância do Google SecOps
- Um locatário ativo do Azure
- Acesso privilegiado ao Azure
Configurar a conta do Armazenamento do Azure
- No console do Azure, pesquise Contas de armazenamento.
- Clique em Criar.
- Especifique valores para os seguintes parâmetros de entrada:
- Assinatura: selecione a assinatura.
- Grupo de recursos: selecione o grupo de recursos.
- Região: selecione a região.
- Performance: selecione a performance (recomendamos a opção "Padrão").
- Redundância: selecione a redundância (recomendamos GRS ou LRS).
- Nome da conta de armazenamento: insira um nome para a nova conta de armazenamento.
- Clique em Revisar + criar.
- Revise a visão geral da conta e clique em Criar.
- Na página Visão geral da conta de armazenamento, selecione o submenu Chaves de acesso em Segurança + rede.
- Clique em Mostrar ao lado de key1 ou key2.
- Clique em Copiar para a área de transferência para copiar a chave.
- Salve a chave em um local seguro para uso posterior.
- Na página Visão geral da conta de armazenamento, selecione o submenu Endpoints em Configurações.
- Clique em Copiar para a área de transferência para copiar o URL do ponto de extremidade do Serviço de blobs; por exemplo,
https://<storageaccountname>.blob.core.windows.net. - Salve o URL do endpoint em um local seguro para uso posterior.
Como configurar a exportação de registros de auditoria do Armazenamento do Azure
- Faça login no portal do Azure usando sua conta privilegiada.
- Acesse Contas de armazenamento > Configurações de diagnóstico.
- Clique em + Adicionar configuração de diagnóstico.
- Selecione as configurações de diagnóstico para
blob,queue,tableefile.- Selecione a opção allLogs em Grupos de categorias para cada configuração de diagnóstico.
- Insira um nome descritivo para cada configuração de diagnóstico.
- Selecione a caixa de seleção Arquivar em uma conta de armazenamento como destino.
- Especifique a Assinatura e a Conta de armazenamento.
- Clique em Salvar.
Configurar feeds
Há dois pontos de entrada diferentes para configurar feeds na plataforma do Google SecOps:
- Configurações do SIEM > Feeds > Adicionar novo feed
- Hub de conteúdo > Pacotes de conteúdo > Comece já
Como configurar o feed de auditoria do Armazenamento do Azure
- Clique no pacote Plataforma do Azure.
- Localize o tipo de registro Auditoria do Armazenamento do Azure e clique em Adicionar novo feed.
Especifique valores para os seguintes campos:
- Tipo de origem: Armazenamento de Blobs do Microsoft Azure V2.
- URI do Azure: o URL do endpoint do blob.
ENDPOINT_URL/BLOB_NAME- Substitua:
ENDPOINT_URL: o URL do endpoint do blob (https://<storageaccountname>.blob.core.windows.net)BLOB_NAME: o nome do blob (por exemplo,<logname>-logs)
- Substitua:
Opções de exclusão de origem: selecione a opção de exclusão de acordo com suas preferências de ingestão.
Idade máxima do arquivo: inclui arquivos modificados nos últimos dias. O padrão é 180 dias.
Chave compartilhada: a chave de acesso ao Armazenamento de Blobs do Azure.
Opções avançadas
- Nome do feed: um valor pré-preenchido que identifica o feed.
- Namespace do recurso: namespace associado ao feed.
- Rótulos de ingestão: rótulos aplicados a todos os eventos desse feed.
Clique em Criar feed.
Para mais informações sobre como configurar vários feeds para diferentes tipos de registro nessa família de produtos, consulte Configurar feeds por produto.
Tabela de mapeamento de UDM
| Campo de registro | Mapeamento de UDM | Lógica |
|---|---|---|
callerIpAddress |
principal.asset.ip |
O endereço IP é extraído do campo callerIpAddress usando um padrão grok e atribuído a principal.asset.ip. |
callerIpAddress |
principal.ip |
O endereço IP é extraído do campo callerIpAddress usando um padrão grok e atribuído a principal.ip. |
callerIpAddress |
principal.port |
O número da porta é extraído do campo callerIpAddress usando um padrão grok e atribuído a principal.port. |
category |
security_result.category_details |
O valor do campo category é atribuído a security_result.category_details. |
correlationId |
security_result.detection_fields[0].key |
A string literal correlationId é atribuída ao campo de chave. |
correlationId |
security_result.detection_fields[0].value |
O valor do campo correlationId é atribuído a security_result.detection_fields[0].value. O valor do campo time é analisado como um carimbo de data/hora e atribuído a event.idm.read_only_udm.metadata.event_timestamp. Se category for StorageWrite e principal.user.userid existir (derivado de properties.accountName), o valor será definido como USER_RESOURCE_UPDATE_CONTENT. Se category for StorageDelete e principal.user.userid existir, o valor será definido como USER_RESOURCE_DELETION. Caso contrário, o valor será definido como USER_RESOURCE_ACCESS. A string literal AZURE_STORAGE_AUDIT é atribuída a event.idm.read_only_udm.metadata.log_type. A string literal AZURE_STORAGE_AUDIT é atribuída a event.idm.read_only_udm.metadata.product_name. O valor do campo schemaVersion é atribuído a event.idm.read_only_udm.metadata.product_version. A string literal AZURE_STORAGE_AUDIT é atribuída a event.idm.read_only_udm.metadata.vendor_name. |
location |
target.location.name |
O valor do campo location é atribuído a target.location.name. |
operationName |
additional.fields[x].key |
A string literal operationName é atribuída ao campo de chave. |
operationName |
additional.fields[x].value.string_value |
O valor do campo operationName é atribuído a additional.fields[x].value.string_value. |
operationVersion |
additional.fields[x].key |
A string literal operationVersion é atribuída ao campo de chave. |
operationVersion |
additional.fields[x].value.string_value |
O valor do campo operationVersion é atribuído a additional.fields[x].value.string_value. |
properties.accountName |
principal.user.userid |
O valor do campo properties.accountName é atribuído a principal.user.userid. |
properties.clientRequestId |
additional.fields[x].key |
A string literal clientRequestId é atribuída ao campo de chave. |
properties.clientRequestId |
additional.fields[x].value.string_value |
O valor do campo properties.clientRequestId é atribuído a additional.fields[x].value.string_value. |
properties.etag |
additional.fields[x].key |
A string literal etag é atribuída ao campo de chave. |
properties.etag |
additional.fields[x].value.string_value |
O valor do campo properties.etag é atribuído a additional.fields[x].value.string_value. |
properties.objectKey |
additional.fields[x].key |
A string literal objectKey é atribuída ao campo de chave. |
properties.objectKey |
additional.fields[x].value.string_value |
O valor do campo properties.objectKey é atribuído a additional.fields[x].value.string_value. |
properties.requestMd5 |
additional.fields[x].key |
A string literal requestMd5 é atribuída ao campo de chave. |
properties.requestMd5 |
additional.fields[x].value.string_value |
O valor do campo properties.requestMd5 é atribuído a additional.fields[x].value.string_value. |
properties.responseMd5 |
additional.fields[x].key |
A string literal responseMd5 é atribuída ao campo de chave. |
properties.responseMd5 |
additional.fields[x].value.string_value |
O valor do campo properties.responseMd5 é atribuído a additional.fields[x].value.string_value. |
properties.serviceType |
additional.fields[x].key |
A string literal serviceType é atribuída ao campo de chave. |
properties.serviceType |
additional.fields[x].value.string_value |
O valor do campo properties.serviceType é atribuído a additional.fields[x].value.string_value. |
properties.tlsVersion |
network.tls.version |
O valor do campo properties.tlsVersion é atribuído a network.tls.version. |
properties.userAgentHeader |
network.http.parsed_user_agent |
O valor do campo properties.userAgentHeader é analisado como uma string de user agent e atribuído a network.http.parsed_user_agent. |
properties.userAgentHeader |
network.http.user_agent |
O valor do campo properties.userAgentHeader é atribuído a network.http.user_agent. |
protocol |
network.application_protocol |
O valor do campo protocol é atribuído a network.application_protocol. |
resourceId |
target.resource.id |
O valor do campo resourceId é atribuído a target.resource.id. |
resourceId |
target.resource.product_object_id |
O valor do campo resourceId é atribuído a target.resource.product_object_id. A string literal DATABASE é atribuída a target.resource.resource_type. |
resourceType |
additional.fields[x].key |
A string literal resourceType é atribuída ao campo de chave. |
resourceType |
additional.fields[x].value.string_value |
O valor do campo resourceType é atribuído a additional.fields[x].value.string_value. Se statusText for Success, o valor será definido como ALLOW. |
statusCode |
network.http.response_code |
O valor do campo statusCode é convertido em um número inteiro e atribuído a network.http.response_code. A string literal MICROSOFT_AZURE é atribuída a target.cloud.environment. |
time |
timestamp |
O valor do campo time é analisado como um carimbo de data/hora e atribuído a timestamp. |
uri |
network.http.referral_url |
O valor do campo uri é atribuído a network.http.referral_url. |
Registro de alterações
Consulte o registro de alterações desse analisador
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.