Coletar registros de login do Azure AD
Este documento explica como exportar registros de entrada do Azure AD para o Google Security Operations usando uma conta de armazenamento do Azure. O analisador usa registros brutos no formato JSON e os transforma em um formato estruturado compatível com o modelo de dados unificado (UDM). Ele extrai campos relevantes, normaliza valores, processa diferentes carimbos de data/hora e enriquece os dados com contexto relacionado à segurança, como informações do usuário, endereços IP e políticas de acesso condicional.
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 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.
- 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 endpoint do serviço de blob. 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 para registros de login do Azure AD
- Faça login no portal do Azure usando sua conta privilegiada.
- Acesse Microsoft Entra ID > Monitoramento > Configurações de diagnóstico.
- Clique em Adicionar configuração de diagnóstico.
- Insira um nome descritivo para a configuração de diagnóstico.
- Selecione Registros de login.
- Marque a caixa de seleção Arquivar em uma conta de armazenamento como destino.
- Especifique a Assinatura e a Conta de armazenamento.
Configurar feeds
Há dois pontos de entrada diferentes para configurar feeds na plataforma do Google SecOps:
- Configurações do SIEM > Feeds > Adicionar novo feed
- Central de conteúdo > Pacotes de conteúdo > Começar
Como configurar o feed de login do Azure AD
- Clique no pacote Plataforma do Azure.
- Localize o tipo de registro Login do Azure AD.
Especifique valores para os seguintes campos:
- Tipo de origem: armazenamento de blobs V2 do Microsoft Azure.
- 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,insights-logs-<logname>
)
- 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: arquivos modificados nos últimos dias. O padrão é de 180 dias.
Chave compartilhada: a chave de acesso ao Azure Blob Storage.
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 deste feed.
Clique em Criar feed.
Para mais informações sobre como configurar vários feeds para diferentes tipos de registros nessa família de produtos, consulte Configurar feeds por produto.
Tabela de mapeamento do UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
AppDisplayName | read_only_udm.target.application | Mapeado diretamente do campo AppDisplayName no registro bruto. |
AppId | read_only_udm.security_result.detection_fields.value | Mapeado diretamente do campo AppId no registro bruto. A chave está definida como appId . |
Categoria | read_only_udm.security_result.category_details | Mapeado diretamente do campo Category no registro bruto. |
ConditionalAccessPolicies[].displayName | read_only_udm.security_result.rule_name | Mapeado diretamente do campo displayName na matriz ConditionalAccessPolicies do registro bruto. |
ConditionalAccessPolicies[].enforcedGrantControls[] | read_only_udm.security_result.rule_labels.value | Mapeado diretamente da matriz enforcedGrantControls na matriz ConditionalAccessPolicies no registro bruto. A chave está definida como applied_conditional_access_policies_enforced_grant_controls . |
ConditionalAccessPolicies[].enforcedSessionControls[] | read_only_udm.security_result.rule_labels.value | Mapeado diretamente da matriz enforcedSessionControls na matriz ConditionalAccessPolicies no registro bruto. A chave está definida como applied_conditional_access_policies_enforced_session_controls . |
ConditionalAccessPolicies[].id | read_only_udm.security_result.rule_id | Mapeado diretamente do campo id na matriz ConditionalAccessPolicies do registro bruto. |
ConditionalAccessPolicies[].Result | read_only_udm.security_result.rule_labels.value | Mapeado diretamente do campo Result na matriz ConditionalAccessPolicies do registro bruto. A chave está definida como applied_conditional_access_policies_result . |
ConditionalAccessStatus | read_only_udm.additional.fields.value.string_value | Mapeado diretamente do campo ConditionalAccessStatus no registro bruto. A chave está definida como conditionalAccessStatus . |
CorrelationId | read_only_udm.security_result.detection_fields.value | Mapeado diretamente do campo CorrelationId no registro bruto. A chave está definida como correlationId . |
DurationMs | read_only_udm.additional.fields.value.string_value | Mapeado diretamente do campo DurationMs no registro bruto. A chave está definida como durationMs . |
HomeTenantId | read_only_udm.security_result.detection_fields.value | Mapeado diretamente do campo HomeTenantId no registro bruto. A chave está definida como HomeTenantId . |
IPAddress | read_only_udm.principal.asset.ip, read_only_udm.principal.ip | Mapeado diretamente do campo IPAddress no registro bruto. |
ID | read_only_udm.security_result.detection_fields.value | Mapeado diretamente do campo Id no registro bruto. A chave está definida como id . |
Identidade | read_only_udm.target.resource.attribute.labels.value | Mapeado diretamente do campo Identity no registro bruto. A chave está definida como identity . |
Nível | read_only_udm.security_result.severity, read_only_udm.security_result.severity_details | Mapeado diretamente do campo Level no registro bruto. A gravidade é determinada com base no valor de Level : Information , Informational , 0 ou 4 mapeiam para INFORMATIONAL ; Warning , 1 ou 3 mapeiam para MEDIUM ; Error ou 2 mapeiam para ERROR ; Critical mapeia para CRITICAL . |
OperationName | read_only_udm.metadata.product_event_type | Mapeado diretamente do campo OperationName no registro bruto. |
ResourceGroup | read_only_udm.security_result.detection_fields.value | Mapeado diretamente do campo ResourceGroup no registro bruto. A chave está definida como ResourceGroup . |
ResultSignature | read_only_udm.additional.fields.value.string_value | Mapeado diretamente do campo ResultSignature no registro bruto. A chave está definida como resultSignature . |
ResultType | read_only_udm.additional.fields.value.string_value | Mapeado diretamente do campo ResultType no registro bruto. A chave está definida como resultType . |
TenantId | read_only_udm.metadata.product_deployment_id | Mapeado diretamente do campo TenantId no registro bruto. |
TimeGenerated | read_only_udm.metadata.event_timestamp.seconds, read_only_udm.metadata.event_timestamp.nanos | Mapeado diretamente do campo TimeGenerated no registro bruto. O campo é analisado como um carimbo de data/hora e usado para preencher os campos seconds e nanos . |
TokenIssuerType | read_only_udm.security_result.detection_fields.value | Mapeado diretamente do campo TokenIssuerType no registro bruto. A chave está definida como TokenIssuerType . |
UniqueTokenIdentifier | read_only_udm.security_result.detection_fields.value | Mapeado diretamente do campo UniqueTokenIdentifier no registro bruto. A chave está definida como UniqueTokenIdentifier . |
UserAgent | read_only_udm.network.http.user_agent, read_only_udm.network.http.parsed_user_agent | Mapeado diretamente do campo UserAgent no registro bruto. O campo é analisado como uma string de user agent e usado para preencher o objeto parsed_user_agent . |
UserDisplayName | read_only_udm.target.user.user_display_name | Mapeado diretamente do campo UserDisplayName no registro bruto. |
UserId | read_only_udm.target.user.userid | Mapeado diretamente do campo UserId no registro bruto. |
UserPrincipalName | read_only_udm.target.user.email_addresses | Mapeado diretamente do campo UserPrincipalName no registro bruto, mas somente se ele corresponder ao padrão de endereço de e-mail. |
UserType | read_only_udm.target.user.attribute.roles.name | Mapeado diretamente do campo UserType no registro bruto. |
_Internal_WorkspaceResourceId | read_only_udm.security_result.detection_fields.value | Mapeado diretamente do campo _Internal_WorkspaceResourceId no registro bruto. A chave está definida como Internal_WorkspaceResourceId . |
_ItemId | read_only_udm.security_result.detection_fields.value | Mapeado diretamente do campo _ItemId no registro bruto. A chave está definida como ItemId . |
properties.appId | read_only_udm.security_result.detection_fields.value | Mapeado diretamente do campo appId no objeto properties no registro bruto. A chave está definida como appId . |
properties.authenticationDetails[].authenticationMethod | read_only_udm.security_result.detection_fields.value | Mapeado diretamente do campo authenticationMethod na matriz authenticationDetails do registro bruto. A chave está definida como authenticationMethod . |
properties.authenticationDetails[].authenticationMethodDetail | read_only_udm.security_result.detection_fields.value | Mapeado diretamente do campo authenticationMethodDetail na matriz authenticationDetails do registro bruto. A chave está definida como authenticationMethodDetail . |
properties.authenticationDetails[].authenticationStepDateTime | read_only_udm.security_result.detection_fields.value | Mapeado diretamente do campo authenticationStepDateTime na matriz authenticationDetails do registro bruto. A chave está definida como authenticationStepDateTime . |
properties.authenticationDetails[].authenticationStepRequirement | read_only_udm.security_result.detection_fields.value | Mapeado diretamente do campo authenticationStepRequirement na matriz authenticationDetails do registro bruto. A chave está definida como authenticationStepRequirement . |
properties.authenticationDetails[].authenticationStepResultDetail | read_only_udm.security_result.detection_fields.value | Mapeado diretamente do campo authenticationStepResultDetail na matriz authenticationDetails do registro bruto. A chave está definida como authenticationStepResultDetail . |
properties.authenticationDetails[].succeeded | read_only_udm.security_result.action, read_only_udm.security_result.action_details | Mapeado diretamente do campo succeeded na matriz authenticationDetails do registro bruto. Se o valor for true , a ação será definida como ALLOW . Caso contrário, será definida como BLOCK . |
properties.conditionalAccessStatus | read_only_udm.additional.fields.value.string_value | Mapeado diretamente do campo conditionalAccessStatus no objeto properties no registro bruto. A chave está definida como conditionalAccessStatus . |
properties.id | read_only_udm.security_result.detection_fields.value | Mapeado diretamente do campo id no objeto properties no registro bruto. A chave está definida como id . |
properties.status.errorCode | read_only_udm.security_result.action | Se o valor for 0, a ação será definida como ALLOW . Caso contrário, será definida como BLOCK . |
properties.userId | read_only_udm.target.user.userid | Mapeado diretamente do campo userId no objeto properties no registro bruto. |
properties.userPrincipalName | read_only_udm.target.user.email_addresses | Mapeado diretamente do campo userPrincipalName no objeto properties no registro bruto, mas somente se corresponder ao padrão de endereço de e-mail. |
resourceId | read_only_udm.target.resource.name | Mapeado diretamente do campo resourceId no registro bruto. |
tempo | read_only_udm.metadata.event_timestamp.seconds, read_only_udm.metadata.event_timestamp.nanos | Mapeado diretamente do campo time no registro bruto. O campo é analisado como um carimbo de data/hora e usado para preencher os campos seconds e nanos . |
read_only_udm.extensions.auth.type | O valor é definido como AUTHTYPE_UNSPECIFIED . |
|
read_only_udm.metadata.event_type | O valor é determinado com base na presença dos campos principal.ip e target.user.userid : se ambos estiverem presentes, o tipo será definido como USER_LOGIN ; se apenas principal.ip estiver presente, o tipo será definido como STATUS_UPDATE ; caso contrário, será definido como GENERIC_EVENT . |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.