Coletar registros de login do Azure AD
Este documento explica como exportar registros de login do Azure AD para o Google Security Operations usando uma conta de armazenamento do Azure. O analisador recebe registros brutos no formato JSON e os transforma em um formato estruturado compatível com o modelo de dados unificado (UDM, na sigla em inglês). Ele extrai campos relevantes, normaliza valores, processa carimbos de data/hora diferentes 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ê 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 Microsoft Entra ID > Monitoramento > Configurações de diagnóstico.
- Clique em Adicionar configuração de diagnóstico.
- Digite um nome descritivo para a configuração de diagnóstico.
- Selecione Registros de login.
- Selecione a caixa de seleção Arquivar em uma conta de armazenamento como destino.
- Especifique a assinatura e a conta de armazenamento.
Configurar um feed no Google SecOps para processar os registros de login do Azure
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo.
- No campo Nome do feed, insira um nome para o feed (por exemplo, Logs de login do Azure).
- Selecione Microsoft Azure Blob Storage como o Tipo de origem.
- Selecione Login do Azure 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,insights-logs-<logname>
)
- 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 de 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 no registro bruto. |
ConditionalAccessPolicies[].enforcedGrantControls[] | read_only_udm.security_result.rule_labels.value | Mapeado diretamente da matriz enforcedGrantControls dentro da 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 dentro da 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 no registro bruto. |
ConditionalAccessPolicies[].Result | read_only_udm.security_result.rule_labels.value | Mapeado diretamente do campo Result na matriz ConditionalAccessPolicies no 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 são mapeados para INFORMATIONAL ; Warning , 1 ou 3 são mapeados para MEDIUM ; Error ou 2 são mapeados para ERROR ; Critical são mapeados 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 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 no 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 no 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 no 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 no 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 no 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 no 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 ele 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 . |
Alterações
2024-05-07
- Parser recém-criado
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.