Recolha registos de início de sessão do Azure AD
Este documento explica como exportar registos de início de sessão do Azure AD para o Google Security Operations através de uma conta de armazenamento do Azure. O analisador sintático usa registos não processados no formato JSON e transforma-os num formato estruturado em conformidade com o modelo de dados unificado (UDM). Extrai campos relevantes, normaliza valores, processa diferentes datas/horas e enriquece os dados com contexto relacionado com a segurança, como informações do utilizador, endereços IP e políticas de acesso condicional.
Antes de começar
Certifique-se de que cumpre os seguintes pré-requisitos:
- Instância do Google SecOps
- Um inquilino do Azure ativo
- Acesso privilegiado ao Azure
Configure a conta de armazenamento do Azure
- Na consola do Azure, pesquise Contas de armazenamento.
- Clique em + Criar.
- Especifique valores para os seguintes parâmetros de entrada:
- Subscrição: selecione a subscrição.
- Grupo de recursos: selecione o grupo de recursos.
- Região: selecione a região.
- Desempenho: selecione o desempenho (padrão recomendado).
- Redundância: selecione a redundância (GRS ou LRS recomendado).
- Nome da conta de armazenamento: introduza um nome para a nova conta de armazenamento.
- Clique em Rever + criar.
- Reveja a vista geral da conta e clique em Criar.
- Na página Vista geral da conta de armazenamento, selecione o submenu Chaves de acesso em Segurança + rede.
- Clique em Mostrar junto a key1 ou key2.
- Clique em Copiar para a área de transferência para copiar a chave.
- Guarde a chave num local seguro para utilização posterior.
- Na página Vista geral da conta de armazenamento, selecione o submenu Pontos finais em Definições.
- Clique em Copiar para a área de transferência para copiar o URL do ponto final do serviço Blob; por exemplo,
https://<storageaccountname>.blob.core.windows.net
. - Guarde o URL do ponto final numa localização segura para utilização posterior.
Como configurar a exportação de registos para registos de início de sessão do Azure AD
- Inicie sessão no Portal do Azure com a sua conta privilegiada.
- Aceda a Microsoft Entra ID > Monitorização > Definições de diagnóstico.
- Clique em Adicionar definição de diagnóstico.
- Introduza um nome descritivo para a definição de diagnóstico.
- Selecione Registos de início de sessão.
- Selecione a caixa de verificação Arquivar numa conta de armazenamento como destino.
- Especifique a Subscrição e a Conta de armazenamento.
Configure feeds
Existem dois pontos de entrada diferentes para configurar feeds na plataforma Google SecOps:
- Definições do SIEM > Feeds > Adicionar novo
- Content Hub > Pacotes de conteúdo > Começar
Como configurar o feed de início de sessão do Azure AD
- Clique no pacote Plataforma Azure.
- Localize o tipo de registo Início de sessão do Azure AD.
Especifique valores para os seguintes campos:
- Source Type: Microsoft Azure Blob Storage V2.
- URI do Azure: o URL do ponto final do blob.
ENDPOINT_URL/BLOB_NAME
- Substitua o seguinte:
ENDPOINT_URL
: o URL do ponto final do blob (https://<storageaccountname>.blob.core.windows.net
)BLOB_NAME
: o nome do blob (por exemplo,insights-logs-<logname>
)
- Substitua o seguinte:
Opções de eliminação de origens: selecione a opção de eliminação de acordo com as suas preferências de carregamento.
Idade máxima do ficheiro: ficheiros modificados no último número de dias. A predefinição é 180 dias.
Chave partilhada: 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.
- Espaço de nomes do recurso: espaço de nomes associado ao feed.
- Etiquetas de carregamento: etiquetas aplicadas a todos os eventos deste feed.
Clique em Criar feed.
Para mais informações sobre a configuração de vários feeds para diferentes tipos de registos nesta família de produtos, consulte o artigo Configure feeds por produto.
Tabela de mapeamento da UDM
Campo de registo | Mapeamento do UDM | Lógica |
---|---|---|
AppDisplayName | read_only_udm.target.application | Mapeado diretamente a partir do campo AppDisplayName no registo não processado. |
AppId | read_only_udm.security_result.detection_fields.value | Mapeado diretamente a partir do campo AppId no registo não processado. A tecla está definida como appId . |
Categoria | read_only_udm.security_result.category_details | Mapeado diretamente a partir do campo Category no registo não processado. |
ConditionalAccessPolicies[].displayName | read_only_udm.security_result.rule_name | Mapeado diretamente a partir do campo displayName na matriz ConditionalAccessPolicies no registo não processado. |
ConditionalAccessPolicies[].enforcedGrantControls[] | read_only_udm.security_result.rule_labels.value | Mapeado diretamente a partir da matriz enforcedGrantControls na matriz ConditionalAccessPolicies no registo não processado. A tecla está definida como applied_conditional_access_policies_enforced_grant_controls . |
ConditionalAccessPolicies[].enforcedSessionControls[] | read_only_udm.security_result.rule_labels.value | Mapeado diretamente a partir da matriz enforcedSessionControls na matriz ConditionalAccessPolicies no registo não processado. A tecla está definida como applied_conditional_access_policies_enforced_session_controls . |
ConditionalAccessPolicies[].id | read_only_udm.security_result.rule_id | Mapeado diretamente a partir do campo id na matriz ConditionalAccessPolicies no registo não processado. |
ConditionalAccessPolicies[].Result | read_only_udm.security_result.rule_labels.value | Mapeado diretamente a partir do campo Result na matriz ConditionalAccessPolicies no registo não processado. A tecla está definida como applied_conditional_access_policies_result . |
ConditionalAccessStatus | read_only_udm.additional.fields.value.string_value | Mapeado diretamente a partir do campo ConditionalAccessStatus no registo não processado. A tecla está definida como conditionalAccessStatus . |
CorrelationId | read_only_udm.security_result.detection_fields.value | Mapeado diretamente a partir do campo CorrelationId no registo não processado. A tecla está definida como correlationId . |
DurationMs | read_only_udm.additional.fields.value.string_value | Mapeado diretamente a partir do campo DurationMs no registo não processado. A tecla está definida como durationMs . |
HomeTenantId | read_only_udm.security_result.detection_fields.value | Mapeado diretamente a partir do campo HomeTenantId no registo não processado. A tecla está definida como HomeTenantId . |
IPAddress | read_only_udm.principal.asset.ip, read_only_udm.principal.ip | Mapeado diretamente a partir do campo IPAddress no registo não processado. |
ID | read_only_udm.security_result.detection_fields.value | Mapeado diretamente a partir do campo Id no registo não processado. A tecla está definida como id . |
Identidade | read_only_udm.target.resource.attribute.labels.value | Mapeado diretamente a partir do campo Identity no registo não processado. A tecla está definida como identity . |
Nível | read_only_udm.security_result.severity, read_only_udm.security_result.severity_details | Mapeado diretamente a partir do campo Level no registo não processado. A gravidade é determinada com base no valor de Level : Information , Informational , 0 ou 4 é mapeado para INFORMATIONAL ; Warning , 1 ou 3 é mapeado para MEDIUM ; Error ou 2 é mapeado para ERROR ; Critical é mapeado para CRITICAL . |
OperationName | read_only_udm.metadata.product_event_type | Mapeado diretamente a partir do campo OperationName no registo não processado. |
ResourceGroup | read_only_udm.security_result.detection_fields.value | Mapeado diretamente a partir do campo ResourceGroup no registo não processado. A tecla está definida como ResourceGroup . |
ResultSignature | read_only_udm.additional.fields.value.string_value | Mapeado diretamente a partir do campo ResultSignature no registo não processado. A tecla está definida como resultSignature . |
ResultType | read_only_udm.additional.fields.value.string_value | Mapeado diretamente a partir do campo ResultType no registo não processado. A tecla está definida como resultType . |
TenantId | read_only_udm.metadata.product_deployment_id | Mapeado diretamente a partir do campo TenantId no registo não processado. |
TimeGenerated | read_only_udm.metadata.event_timestamp.seconds, read_only_udm.metadata.event_timestamp.nanos | Mapeado diretamente a partir do campo TimeGenerated no registo não processado. O campo é analisado como uma data/hora e usado para preencher os campos seconds e nanos . |
TokenIssuerType | read_only_udm.security_result.detection_fields.value | Mapeado diretamente a partir do campo TokenIssuerType no registo não processado. A tecla está definida como TokenIssuerType . |
UniqueTokenIdentifier | read_only_udm.security_result.detection_fields.value | Mapeado diretamente a partir do campo UniqueTokenIdentifier no registo não processado. A tecla está definida como UniqueTokenIdentifier . |
UserAgent | read_only_udm.network.http.user_agent, read_only_udm.network.http.parsed_user_agent | Mapeado diretamente a partir do campo UserAgent no registo não processado. O campo é analisado como uma string de agente do utilizador e usado para preencher o objeto parsed_user_agent . |
UserDisplayName | read_only_udm.target.user.user_display_name | Mapeado diretamente a partir do campo UserDisplayName no registo não processado. |
Id do utilizador | read_only_udm.target.user.userid | Mapeado diretamente a partir do campo UserId no registo não processado. |
UserPrincipalName | read_only_udm.target.user.email_addresses | Mapeado diretamente a partir do campo UserPrincipalName no registo não processado, mas apenas se corresponder ao padrão de endereço de email. |
UserType | read_only_udm.target.user.attribute.roles.name | Mapeado diretamente a partir do campo UserType no registo não processado. |
_Internal_WorkspaceResourceId | read_only_udm.security_result.detection_fields.value | Mapeado diretamente a partir do campo _Internal_WorkspaceResourceId no registo não processado. A tecla está definida como Internal_WorkspaceResourceId . |
_ItemId | read_only_udm.security_result.detection_fields.value | Mapeado diretamente a partir do campo _ItemId no registo não processado. A tecla está definida como ItemId . |
properties.appId | read_only_udm.security_result.detection_fields.value | Mapeado diretamente a partir do campo appId no objeto properties no registo não processado. A tecla está definida como appId . |
properties.authenticationDetails[].authenticationMethod | read_only_udm.security_result.detection_fields.value | Mapeado diretamente a partir do campo authenticationMethod na matriz authenticationDetails no registo não processado. A tecla está definida como authenticationMethod . |
properties.authenticationDetails[].authenticationMethodDetail | read_only_udm.security_result.detection_fields.value | Mapeado diretamente a partir do campo authenticationMethodDetail na matriz authenticationDetails no registo não processado. A tecla está definida como authenticationMethodDetail . |
properties.authenticationDetails[].authenticationStepDateTime | read_only_udm.security_result.detection_fields.value | Mapeado diretamente a partir do campo authenticationStepDateTime na matriz authenticationDetails no registo não processado. A tecla está definida como authenticationStepDateTime . |
properties.authenticationDetails[].authenticationStepRequirement | read_only_udm.security_result.detection_fields.value | Mapeado diretamente a partir do campo authenticationStepRequirement na matriz authenticationDetails no registo não processado. A tecla está definida como authenticationStepRequirement . |
properties.authenticationDetails[].authenticationStepResultDetail | read_only_udm.security_result.detection_fields.value | Mapeado diretamente a partir do campo authenticationStepResultDetail na matriz authenticationDetails no registo não processado. A tecla está definida como authenticationStepResultDetail . |
properties.authenticationDetails[].succeeded | read_only_udm.security_result.action, read_only_udm.security_result.action_details | Mapeado diretamente a partir do campo succeeded na matriz authenticationDetails no registo não processado. Se o valor for true , a ação é definida como ALLOW ; caso contrário, é definida como BLOCK . |
properties.conditionalAccessStatus | read_only_udm.additional.fields.value.string_value | Mapeado diretamente a partir do campo conditionalAccessStatus no objeto properties no registo não processado. A tecla está definida como conditionalAccessStatus . |
properties.id | read_only_udm.security_result.detection_fields.value | Mapeado diretamente a partir do campo id no objeto properties no registo não processado. A tecla está definida como id . |
properties.status.errorCode | read_only_udm.security_result.action | Se o valor for 0, a ação é definida como ALLOW ; caso contrário, é definida como BLOCK . |
properties.userId | read_only_udm.target.user.userid | Mapeado diretamente a partir do campo userId no objeto properties no registo não processado. |
properties.userPrincipalName | read_only_udm.target.user.email_addresses | Mapeado diretamente a partir do campo userPrincipalName no objeto properties no registo não processado, mas apenas se corresponder ao padrão de endereço de email. |
resourceId | read_only_udm.target.resource.name | Mapeado diretamente a partir do campo resourceId no registo não processado. |
tempo | read_only_udm.metadata.event_timestamp.seconds, read_only_udm.metadata.event_timestamp.nanos | Mapeado diretamente a partir do campo time no registo não processado. O campo é analisado como uma 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 é definido como USER_LOGIN ; se apenas principal.ip estiver presente, o tipo é definido como STATUS_UPDATE ; caso contrário, é definido como GENERIC_EVENT . |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.