Coletar registros do Azure App Service
Este documento explica como exportar registros do Azure App Service para o Google Security Operations usando uma conta de armazenamento do Azure. O analisador transforma os registros brutos formatados em JSON do Azure App Service em um modelo de dados unificado (UDM) estruturado. Ele extrai campos relevantes dos registros brutos, realiza a limpeza e a normalização de dados e mapeia as informações extraídas para os campos UDM correspondentes, gerando um objeto JSON compatível com a UDM para cada entrada de registro.
Antes de começar
- Verifique se você tem uma instância do Google SecOps.
- Verifique se você tem um locatário do Azure ativo.
- Verifique se você tem acesso privilegiado ao Azure.
Configurar a conta de 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 (padrão recomendado).
- Redundância: selecione a redundância (GRS ou LRS recomendado).
- Nome da conta de armazenamento: insira um nome para a nova conta de armazenamento.
- Clique em Revisar + criar.
- Leia 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 e rede.
- Clique em Mostrar ao lado de chave1 ou chave2.
- Clique em Copiar para a área de transferência para copiar a chave.
- Salve a chave em um local seguro para uso futuro.
- 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 endpoint do serviço Blob (por exemplo,
https://<storageaccountname>.blob.core.windows.net
). - Salve o URL do endpoint em um local seguro para uso futuro.
Configurar a exportação de registros para os registros de login do Azure AD
- Faça login no portal do Azure usando sua conta privilegiada.
- Acesse Serviços de app e selecione o serviço de app necessário.
- Selecione Monitoramento > Registros do serviço de app.
- Ative a Geração de registros de aplicativos (blob).
- Selecione Armazenamento em Gerar registros de serviço da Web.
- Selecione a Assinatura e a Conta de armazenamento.
- Defina o período de retenção e a cota de acordo com seus requisitos.
- Ative a opção ATIVADO para receber mensagens de erro detalhadas.
- Ative a opção Ativar para o Rastreamento de solicitações com falha.
- Clique em Salvar.
Configurar um feed no Google SecOps para processar os registros do Azure App Service
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo.
- No campo Nome do feed, insira um nome para o feed (por exemplo, Logs do serviço de aplicativos do Azure).
- Selecione Armazenamento de Blobs do Microsoft Azure como o Tipo de origem.
- Selecione Azure APP Service como o Tipo de registro.
- Clique em Próxima.
Especifique valores para os seguintes parâmetros de entrada:
- 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
)
- URI é um: selecione o TIPO DE URI de acordo com a configuração do fluxo de registros (Arquivo único | Diretório | 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.
Chave compartilhada: a chave de acesso ao Armazenamento de blobs do Azure.
Namespace de recursos: o namespace de recursos.
Rótulos de ingestão: o rótulo a ser aplicado aos eventos desse feed.
- URI do Azure: o URL do endpoint do blob.
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 |
---|---|---|
AppRoleInstance | read_only_udm.principal.resource.product_object_id | Mapeamento direto |
AppRoleName | read_only_udm.principal.resource.name | Mapeamento direto |
AppVersion | read_only_udm.principal.resource.attribute.labels.value | Mapeamento direto |
Categoria | read_only_udm.metadata.product_event_type | Mapeamento direto |
CIp | read_only_udm.target.asset.ip | Mapeamento direto |
CIp | read_only_udm.target.ip | Mapeamento direto |
ClientCity | read_only_udm.principal.location.city | Mapeamento direto |
ClientCountryOrRegion | read_only_udm.principal.location.country_or_region | Mapeamento direto |
ClientIP | read_only_udm.principal.asset.ip | Mapeamento direto |
ClientIP | read_only_udm.principal.ip | Mapeamento direto |
ClientStateOrProvince | read_only_udm.principal.location.state | Mapeamento direto |
ClientType | read_only_udm.additional.fields.value.string_value | Mapeamento direto |
ComputerName | read_only_udm.principal.asset.hostname | Mapeamento direto |
ComputerName | read_only_udm.principal.hostname | Mapeamento direto |
Cookie | read_only_udm.principal.resource.attribute.labels.value | Mapeamento direto |
CsBytes | read_only_udm.network.sent_bytes | Renomeado de CsBytes |
CsHost | read_only_udm.additional.fields.value.string_value | Mapeamento direto |
CsMethod | read_only_udm.network.http.method | Mapeamento direto |
CsUriQuery | read_only_udm.principal.resource.attribute.labels.value | Mapeamento direto |
CsUriStem | read_only_udm.additional.fields.value.string_value | Mapeamento direto |
CsUriStem | read_only_udm.target.url | Mapeamento direto |
CsUsername | read_only_udm.principal.user.user_display_name | Mapeamento direto |
EventIpAddress | read_only_udm.principal.asset.ip | Mapeamento direto |
EventIpAddress | read_only_udm.principal.ip | Mapeamento direto |
EventPrimaryStampName | read_only_udm.additional.fields.value.string_value | Mapeamento direto |
EventStampName | read_only_udm.additional.fields.value.string_value | Mapeamento direto |
EventStampType | read_only_udm.additional.fields.value.string_value | Mapeamento direto |
Host | read_only_udm.principal.asset.hostname | Mapeamento direto |
Host | read_only_udm.principal.hostname | Mapeamento direto |
IKey | read_only_udm.target.resource.attribute.labels.value | Mapeamento direto |
Instância | read_only_udm.additional.fields.value.string_value | Mapeamento direto |
Nome | read_only_udm.additional.fields.value.string_value | Mapeamento direto |
Protocolo | read_only_udm.additional.fields.value.string_value | Mapeamento direto |
Protocolo | read_only_udm.network.application_protocol | Mapeado para HTTP se o protocolo for HTTP/1.1 |
Referenciador | read_only_udm.network.http.referral_url | Mapeamento direto |
ResourceGUID | read_only_udm.target.resource.product_object_id | Renomeado de ResourceGUID |
SDKVersion | read_only_udm.additional.fields.value.string_value | Mapeamento direto |
SDKVersion | read_only_udm.principal.resource.attribute.labels.value | Mapeamento direto |
SPort | read_only_udm.principal.port | Renomeado de SPort |
ScBytes | read_only_udm.network.received_bytes | Renomeado de ScBytes |
ScStatus | read_only_udm.network.http.response_code | Renomeado de "ScStatus" |
TimeTaken | read_only_udm.additional.fields.value.string_value | Mapeamento direto |
Tipo | read_only_udm.additional.fields.value.string_value | Mapeamento direto |
Usuário | read_only_udm.principal.user.userid | Mapeamento direto |
UserAddress | read_only_udm.principal.asset.ip | Extraídos de UserAddress se for um endereço IP válido |
UserAddress | read_only_udm.principal.ip | Extraídos de UserAddress se for um endereço IP válido |
UserAgent | read_only_udm.network.http.user_agent | Mapeamento direto |
UserDisplayName | read_only_udm.principal.user.user_display_name | Mapeamento direto |
categoria | read_only_udm.metadata.product_event_type | Mapeamento direto |
level | read_only_udm.security_result.severity | Nome mudado de "level" para maiúsculas |
local | read_only_udm.principal.location.name | Mapeamento direto |
operationName | read_only_udm.additional.fields.value.string_value | Mapeamento direto |
record.properties.Protocol | read_only_udm.additional.fields.value.string_value | Mapeamento direto |
record.properties.Result | read_only_udm.security_result.summary | Mapeamento direto |
record.time | read_only_udm.metadata.event_timestamp | Analisado como carimbo de data/hora RFC 3339 |
resourceId | read_only_udm.target.resource.attribute.labels.value | Mapeamento direto |
resourceId | read_only_udm.target.resource.product_object_id | Renomeado de resourceId |
read_only_udm.metadata.event_type | Determinado com base na presença do principal, do destino e do protocolo. Defina como NETWORK_HTTP se principal, destino e Protocol=HTTP estiverem presentes. Defina como NETWORK_CONNECTION se o principal e o destino estiverem presentes. Definido como STATUS_UPDATE se apenas o principal estiver presente. Caso contrário, defina como GENERIC_EVENT . |
Alterações
2024-10-18
Melhoria:
- Mapeamento de
properties.XForwardedHost
paraprincipal.hostname
eprincipal.asset.hostname
. properties_category
foi mapeado paraadditional.fields
.properties.roleInstance
foi mapeado paraprincipal.resource.product_object_id
.properties.message
foi mapeado parasecurity_result.summary
.
2024-09-30
Melhoria:
- Foi adicionado suporte para analisar o novo formato de registros JSON não analisados.
2024-06-24
Melhoria:
- Mapeamento de
metadata.product_name
emetadata.vendor_name
paraAZURE_APP_SERVICE
.
2024-06-07
Melhoria:
- Adicionado suporte a registros JSON quando eles não estão em um formato de matriz.
properties.ScSubStatus
foi mapeado paraadditional.fields
.properties.ScWin32Status
foi mapeado paraadditional.fields
.
2024-04-25
Melhoria:
properties.User
foi mapeado paraprincipal.user.userid
.properties.UserDisplayName
foi mapeado paraprincipal.user.user_display_name
.properties.UserAddress
foi mapeado paraprincipal.ip
.- Mapeamos
properties.Protocol
,ClientBrowser
,ClientModel
,ClientOS
,OperationId
,ParentId
eItemCount
paraadditional.fields
. CsUriQuery
,SDKVersion
eCookie
foram mapeados paraprincipal.resource.attribute.labels
.SessionId
foi mapeado paranetwork.session_id
.Message
foi mapeado parasecurity_result.summary
.SeverityLevel
foi mapeado parasecurity_result.severity_details
.
2024-02-20
Melhoria:
record.AppRoleInstance
foi mapeado paraprincipal.resource.product_object_id
.record.AppRoleName
foi mapeado paraprincipal.resource.name
.record.ClientCity
foi mapeado paraprincipal.location.city
.record.ClientCountryOrRegion
foi mapeado paraprincipal.location.country_or_region
.record.ClientStateOrProvince
foi mapeado paraprincipal.location.state
.record.ClientIP
foi mapeado paraprincipal.ip
.Result
foi mapeado parasecurity_result.summary
.UserAgent
foi mapeado paranetwork.http.user_agent
.Referer
foi mapeado paranetwork.http.referral_url
.record.ResourceGUID
foi mapeado paratarget.resource.product_object_id
.- Se
record.ResourceGUID
não estiver presente, mapeierecord.resourceId
paratarget.resource.product_object_id
. - Se
record.ResourceGUID
estiver presente, mapeierecord.resourceId
paraadditional.fields
. record.Type
foi mapeado paraadditional.fields
.record.ClientType
foi mapeado paraadditional.fields
.record.SDKVersion
foi mapeado paraadditional.fields
.record.Name
foi mapeado paraadditional.fields
.record.Instance
foi mapeado paraadditional.fields
.record.TimeTaken
foi mapeado paraadditional.fields
.record.Cookie
foi mapeado paraadditional.fields
.record.AppVersion
foi mapeado paraprincipal.resource.attribute.labels
.record.IKey
foi mapeado paratarget.resource.attribute.labels
.record.Category
foi mapeado parametadata.product_event_type
.CsUriStem
foi mapeado paratarget.url
.- O mapeamento de
CsBytes
foi alterado denetwork.received_bytes
paranetwork.sent_bytes
. - O mapeamento de
ScBytes
foi alterado denetwork.sent_bytes
paranetwork.received_bytes
.
2023-12-07
- Parser recém-criado.
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.