Coletar registros de login do ID do Microsoft Entra (antigo Azure Active Directory)
Este documento descreve como coletar registros de login do Microsoft Entra ID (antigo Azure Active Directory) configurando um feed do Google Security Operations usando o Microsoft Azure Blob Storage V2.
O Microsoft Entra ID é um serviço de gerenciamento de identidade e acesso baseado na nuvem. Os registros de login capturam atividades de autenticação em toda a organização, incluindo logins interativos e não interativos de usuários, logins de entidades de serviço e logins de identidades gerenciadas. Esses registros são essenciais para monitorar padrões de acesso, detectar tentativas de autenticação suspeitas e investigar incidentes de segurança.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- Uma instância do Google SecOps
- Acesso privilegiado ao portal do Azure com permissões para:
- Criar contas de armazenamento
- Configurar as configurações de diagnóstico para o Microsoft Entra ID
- Gerenciar chaves de acesso
Função de administrador de segurança ou superior no Microsoft Entra ID (necessário para configurar as configurações de diagnóstico)
Configurar a conta de armazenamento do Azure
Criar conta de armazenamento
- No portal do Azure, pesquise Contas de armazenamento.
- Clique em Criar.
Informe os seguintes detalhes de configuração:
Configuração Valor Assinatura Selecione sua assinatura do Azure Grupo de recursos Selecionar ou criar Nome da conta de armazenamento Insira um nome exclusivo (por exemplo, secops-entraid-signin).Região Selecione a região (por exemplo, East US).Desempenho Padrão (recomendado) Redundância GRS (armazenamento com redundância geográfica) ou LRS (armazenamento com redundância local) Clique em Revisar + criar.
Revise a visão geral da conta e clique em Criar.
Aguarde até que a implantação seja concluída.
Receber credenciais da conta de armazenamento
- Acesse a Conta de armazenamento que você acabou de criar.
- Na navegação à esquerda, selecione Chaves de acesso em Segurança e rede.
- Clique em Mostrar chaves.
- Copie e salve o seguinte para uso posterior:
- Nome da conta de armazenamento: o nome da sua conta de armazenamento (por exemplo,
secops-entraid-signin) - Chave 1 ou Chave 2: a chave de acesso compartilhado (uma string aleatória de 512 bits na codificação base64).
- Nome da conta de armazenamento: o nome da sua conta de armazenamento (por exemplo,
Receber endpoint do serviço de blob
- Na mesma conta de armazenamento, selecione Endpoints na navegação à esquerda.
- Copie e salve o URL do endpoint do serviço de blob.
- Exemplo:
https://secops-entraid-signin.blob.core.windows.net/
- Exemplo:
Configurar as configurações de diagnóstico do Microsoft Entra ID
Para exportar os registros de login do Entra ID para a conta de armazenamento:
- No portal do Azure, pesquise Microsoft Entra ID.
- No painel de navegação à esquerda, acesse Monitoramento e integridade > Configurações de diagnóstico.
- Clique em + Adicionar configuração de diagnóstico.
- Informe os seguintes detalhes de configuração:
- Nome da configuração de diagnóstico: insira um nome descritivo (por exemplo,
signin-logs-to-secops). - Na seção Registros, selecione as seguintes categorias de registros de acesso:
- SignInLogs: logins interativos de usuários
- NonInteractiveUserSignInLogs: logins de usuários não interativos.
- ServicePrincipalSignInLogs: logins de principais de serviço e aplicativos
- ManagedIdentitySignInLogs: logins de identidade gerenciada
- ADFSSignInLogs: atividade de login para aplicativos dos Serviços de Federação do Active Directory (AD FS). Selecione apenas se o AD FS estiver em uso.
- Na seção Detalhes do destino, marque a caixa de seleção Arquivar em uma conta de armazenamento.
- Assinatura: selecione a assinatura que contém sua conta de armazenamento.
- Conta de armazenamento: selecione a conta de armazenamento criada anteriormente (por exemplo,
secops-entraid-signin).
- Nome da configuração de diagnóstico: insira um nome descritivo (por exemplo,
Clique em Salvar.
Configurar um feed no Google SecOps para ingerir registros de login do Microsoft Entra ID
É necessário criar um feed separado para cada contêiner de registros de login. A tabela a seguir mostra o mapeamento entre contêineres e categorias de registros:
| Nome do contêiner | Categoria de registro |
|---|---|
insights-logs-signinlogs |
Registros de login interativos |
insights-logs-noninteractiveusersigninlogs |
Registros de login não interativos |
insights-logs-serviceprincipalsigninlogs |
Registros de login do principal de serviço |
insights-logs-managedidentitysigninlogs |
Registros de login da identidade gerenciada |
insights-logs-adfssigninlogs |
Registros de login do AD FS |
Criar feed para registros de login interativo
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Na próxima página, clique em Configurar um único feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo,
Entra ID Interactive Sign-in Logs). - Selecione Microsoft Azure Blob Storage V2 como o Tipo de origem.
- Selecione Login do Azure AD como o Tipo de registro.
- Clique em Próxima.
Especifique valores para os seguintes parâmetros de entrada:
- URI do Azure: insira o URL do endpoint do serviço de blobs com o caminho do contêiner:
https://secops-entraid-signin.blob.core.windows.net/insights-logs-signinlogs/Substitua
secops-entraid-signinpelo nome da sua conta de armazenamento do Azure.- Opção de exclusão da fonte: selecione a opção de exclusão de acordo com sua preferência:
- Nunca: nunca exclui arquivos após as transferências.
- Excluir arquivos transferidos: exclui os arquivos após a transferência bem-sucedida.
- Excluir arquivos transferidos e diretórios vazios: exclui arquivos e diretórios vazios após a transferência bem-sucedida.
- Idade máxima do arquivo: inclui arquivos modificados nos últimos dias. O padrão é 180 dias.
- No menu suspenso de autenticação (o padrão é Chave de acesso/compartilhada), selecione o método que você quer usar e forneça a credencial correspondente. O esquema de solicitação exato de cada método está documentado na referência da API Feed Management:
- Chave de acesso/compartilhada: no campo Chave, cole uma chave de acesso da conta de armazenamento (Chave 1 ou Chave 2) capturada anteriormente.
- Token SAS: no campo Token, cole um token de assinatura de acesso compartilhado (SAS) emitido para o contêiner.
- Federação de identidade da carga de trabalho do Azure V2: insira o ID do cliente e o ID do locatário do aplicativo do Microsoft Entra. Copie o ID do assunto somente leitura que o feed mostra e configure-o como o assunto de uma credencial federada do Microsoft Entra no aplicativo do Azure. Em seguida, conceda a esse aplicativo a função Leitor de dados de blob de armazenamento na conta de armazenamento.
- Namespace do recurso: o namespace do recurso
- Rótulos de ingestão: o rótulo a ser aplicado aos eventos deste feed
Clique em Próxima.
Revise a nova configuração do feed na tela Finalizar e clique em Enviar.
Criar feeds para outras categorias de registros de login
Repita as etapas anteriores de criação de feed para cada contêiner de registro de acesso adicional, usando as mesmas configurações, mas com o URI do Azure adequado:
Para registros de acesso não interativos:
- Nome do feed:
Entra ID Non-interactive Sign-in Logs - Tipo de registro:
Azure AD Sign-In - URI do Azure:
https://secops-entraid-signin.blob.core.windows.net/insights-logs-noninteractiveusersigninlogs/
Para registros de login de entidade de serviço:
- Nome do feed:
Entra ID Service Principal Sign-in Logs - Tipo de registro:
Azure AD Sign-In - URI do Azure:
https://secops-entraid-signin.blob.core.windows.net/insights-logs-serviceprincipalsigninlogs/
Para registros de login de identidade gerenciada:
- Nome do feed:
Entra ID Managed Identity Sign-in Logs - Tipo de registro:
Azure AD Sign-In - URI do Azure:
https://secops-entraid-signin.blob.core.windows.net/insights-logs-managedidentitysigninlogs/
Para registros de login do AD FS:
- Nome do feed:
Entra ID AD FS Sign-in Logs - Tipo de registro:
Azure AD Sign-In URI do Azure:
https://secops-entraid-signin.blob.core.windows.net/insights-logs-adfssigninlogs/
Configurar o firewall do Azure Storage (se ativado)
Se a sua conta do Azure Storage usar um firewall, adicione os intervalos de IP do Google SecOps.
- No portal do Azure, acesse sua Conta de armazenamento.
- Selecione Rede em Segurança e rede.
- Em Firewalls e redes virtuais, selecione Ativado nas redes virtuais e endereços IP selecionados.
- Na seção Firewall, em Intervalo de endereços, clique em + Adicionar intervalo de IP.
Adicione cada intervalo de IP do Google SecOps na notação CIDR.
Para acessar os intervalos de IP atuais:
- Consulte a documentação sobre a lista de permissões de IP
- Ou recupere-os de maneira programática usando a API Management do Feed.
Clique em Salvar.
Tabela de mapeamento do UDM
| Campo de registro | Mapeamento do UDM | Lógica |
|---|---|---|
AuthenticationContextClassReferences_label |
additional.fields |
Mesclado |
AuthenticationProtocol_label |
additional.fields |
Mesclado |
ClientCredentialType_label |
additional.fields |
Mesclado |
TimeGenerated_label |
additional.fields |
Mesclado |
additional_AuthenticationProtocol |
additional.fields |
Mesclado |
additional_AuthenticationRequirement |
additional.fields |
Mesclado |
additional_DurationMs |
additional.fields |
Mesclado |
additional_ResultSignature |
additional.fields |
Mesclado |
additional_TokenIssuerType |
additional.fields |
Mesclado |
additional_resultSignature |
additional.fields |
Mesclado |
additional_resultType |
additional.fields |
Mesclado |
additional_tokenIssuerType |
additional.fields |
Mesclado |
agentSubjectType_label |
additional.fields |
Mesclado |
agentType_label |
additional.fields |
Mesclado |
authconclassref_detail_label |
additional.fields |
Mesclado |
authconclassref_id_label |
additional.fields |
Mesclado |
authenticationDetail_label |
additional.fields |
Mesclado |
authenticationRequirement_label |
additional.fields |
Mesclado |
authentication_Detail_label |
additional.fields |
Mesclado |
clientCredentialType_fields |
additional.fields |
Mesclado |
conditionalAccessAudiences_label |
additional.fields |
Mesclado |
conditionalAccessStatus_fields |
additional.fields |
Mesclado |
conditionalAccessStatus_label |
additional.fields |
Mesclado |
crossTenantAccessType_fields |
additional.fields |
Mesclado |
field_ |
additional.fields |
Mesclado |
incomingTokenType_fields |
additional.fields |
Mesclado |
incoming_token_type_label |
additional.fields |
Mesclado |
originalRequestId_label |
additional.fields |
Mesclado |
originalTransferMethod_fields |
additional.fields |
Mesclado |
originalTransferMethod_label |
additional.fields |
Mesclado |
processingTimeInMilliseconds_label |
additional.fields |
Mesclado |
prp_networkType_additional_fields |
additional.fields |
Mesclado |
prp_network_names_additional_fields |
additional.fields |
Mesclado |
resource_label |
additional.fields |
Mesclado |
riskDetail_fields |
additional.fields |
Mesclado |
riskEventTypeV2_label |
additional.fields |
Mesclado |
riskEventType_label |
additional.fields |
Mesclado |
riskLevelAggregated_fields |
additional.fields |
Mesclado |
riskLevelDuringSignIn_fields |
additional.fields |
Mesclado |
riskState_fields |
additional.fields |
Mesclado |
risk_event_types_label |
additional.fields |
Mesclado |
risk_event_types_v2_label |
additional.fields |
Mesclado |
signInEventTypes_label |
additional.fields |
Mesclado |
signInTokenProtectionStatus_fields |
additional.fields |
Mesclado |
sign_In_Token_Protection_Status_fields |
additional.fields |
Mesclado |
status_additional_details_label |
additional.fields |
Mesclado |
has_principal |
extensions.auth.type |
Mapeado: true → AUTHTYPE_UNSPECIFIED |
has_target_user |
extensions.auth.type |
Mapeado: true → AUTHTYPE_UNSPECIFIED |
Category |
metadata.description |
Mapeado diretamente |
CreatedDateTime |
metadata.event_timestamp |
Analisado como ISO8601 |
createdDateTime |
metadata.event_timestamp |
Analisado como yyyy-MM-ddTHH:mm:ssZ |
properties.createdDateTime |
metadata.event_timestamp |
Analisado como yyyy-MM-ddTHH:mm:ssZ |
when |
metadata.event_timestamp |
Analisado como yyyy-MM-dd HH:mm:ss |
has_principal |
metadata.event_type |
Mapeado: true → USER_LOGIN, true → STATUS_UPDATE |
has_target_user |
metadata.event_type |
Mapeado: true → USER_LOGIN |
TenantId |
metadata.product_deployment_id |
Mapeado diretamente |
tenantId |
metadata.product_deployment_id |
Mapeado diretamente |
operationName |
metadata.product_event_type |
Mapeado diretamente |
id |
metadata.product_log_id |
Mapeado diretamente |
prop_id |
metadata.product_log_id |
Mapeado diretamente |
operationVersion |
metadata.product_version |
Mapeado diretamente |
UserAgent |
network.http.parsed_user_agent |
Mapeado diretamente |
properties.userAgent |
network.http.parsed_user_agent |
Renomeado/mapeado |
Status_errorCode |
network.http.response_code |
Mapeado diretamente |
status.errorCode |
network.http.response_code |
Mapeado diretamente |
Browser |
network.http.user_agent |
Mapeado diretamente |
UserAgent |
network.http.user_agent |
Mapeado diretamente |
properties.userAgent |
network.http.user_agent |
Mapeado diretamente |
CorrelationId |
network.session_id |
Mapeado diretamente |
properties.sessionId |
network.session_id |
Mapeado diretamente |
appDisplayName |
principal.application |
Mapeado diretamente |
hardware |
principal.asset.hardware |
Mesclado |
callerIpAddress |
principal.asset.ip |
Mesclado |
ipAddress |
principal.asset.ip |
Mesclado |
principal_ip |
principal.asset.ip |
Mesclado |
callerIpAddress |
principal.ip |
Mesclado |
ipAddress |
principal.ip |
Mesclado |
principal_ip |
principal.ip |
Mesclado |
City |
principal.location.city |
Mapeado diretamente |
city |
principal.location.city |
Mapeado diretamente |
city_value |
principal.location.city |
Mapeado diretamente |
CountryOrRegion |
principal.location.country_or_region |
Mapeado diretamente |
countryOrRegion |
principal.location.country_or_region |
Mapeado diretamente |
country_or_region_value |
principal.location.country_or_region |
Mapeado diretamente |
geoCoordinates_latitude |
principal.location.region_coordinates.latitude |
Mapeado diretamente |
geo_latitude |
principal.location.region_coordinates.latitude |
Mapeado diretamente |
geo_latitude_value |
principal.location.region_coordinates.latitude |
Mapeado diretamente |
geoCoordinates_longitude |
principal.location.region_coordinates.longitude |
Mapeado diretamente |
geo_longitude |
principal.location.region_coordinates.longitude |
Mapeado diretamente |
geo_longitude_value |
principal.location.region_coordinates.longitude |
Mapeado diretamente |
State |
principal.location.state |
Mapeado diretamente |
state |
principal.location.state |
Mapeado diretamente |
state_value |
principal.location.state |
Mapeado diretamente |
OperatingSystem |
principal.platform |
Mapeado: Win → WINDOWS, Mac → MAC, Lin → LINUX |
DeviceDetail_operatingSystem |
principal.platform_version |
Mapeado diretamente |
OperatingSystem |
principal.platform_version |
Mapeado diretamente |
ServicePrincipalId_label |
principal.resource.attribute.labels |
Mesclado |
resourceServicePrincipalId_label |
principal.resource.attribute.labels |
Mesclado |
userPrincipalName |
principal.user.email_addresses |
Mesclado |
userDisplayName |
principal.user.user_display_name |
Mapeado diretamente |
userId |
principal.user.userid |
Mapeado diretamente |
auth_detail_sec |
security_result |
Mesclado |
auth_sec_res |
security_result |
Mesclado |
sec_res |
security_result |
Mesclado |
sr_result |
security_result |
Mesclado |
OperationName |
security_result.action |
Mapeado: Sign-in activity → action |
ResultType |
security_result.action |
Mapeado: 0 → action |
action |
security_result.action |
Mesclado |
security_action |
security_result.action |
Mesclado |
Category |
security_result.category |
Mesclado |
OperationName |
security_result.category |
Mapeado: Sign-in activity → Category |
category |
security_result.category_details |
Mesclado |
AADTenantId_label |
security_result.detection_fields |
Mesclado |
AppOwnerTenantId_label |
security_result.detection_fields |
Mesclado |
AutonomousSystemNumber_label |
security_result.detection_fields |
Mesclado |
CorrelationId_label |
security_result.detection_fields |
Mesclado |
CrossTenantAccessType_label |
security_result.detection_fields |
Mesclado |
DeviceDetail_browser_label |
security_result.detection_fields |
Mesclado |
IsTenantRestricted_label |
security_result.detection_fields |
Mesclado |
IsThroughGlobalSecureAccess_label |
security_result.detection_fields |
Mesclado |
TokenIssuerType_label |
security_result.detection_fields |
Mesclado |
Type_label |
security_result.detection_fields |
Mesclado |
UniqueTokenIdentifier_label |
security_result.detection_fields |
Mesclado |
_Internal_WorkspaceResourceId_label |
security_result.detection_fields |
Mesclado |
_TimeReceived_label |
security_result.detection_fields |
Mesclado |
alternateSignInName_label |
security_result.detection_fields |
Mesclado |
appId_label |
security_result.detection_fields |
Mesclado |
appid_label |
security_result.detection_fields |
Mesclado |
browser_label |
security_result.detection_fields |
Mesclado |
clientAppUsed_label |
security_result.detection_fields |
Mesclado |
conditionalAccessStatus_label |
security_result.detection_fields |
Mesclado |
correlationId_field |
security_result.detection_fields |
Mesclado |
cribl_source_label |
security_result.detection_fields |
Mesclado |
cribl_topic_name_label |
security_result.detection_fields |
Mesclado |
detail_label |
security_result.detection_fields |
Mesclado |
deviceId_label |
security_result.detection_fields |
Mesclado |
deviceName_label |
security_result.detection_fields |
Mesclado |
displayName_label |
security_result.detection_fields |
Mesclado |
flaggedForReview_label |
security_result.detection_fields |
Mesclado |
home_id_label |
security_result.detection_fields |
Mesclado |
home_tenant_name_label |
security_result.detection_fields |
Mesclado |
id_label |
security_result.detection_fields |
Mesclado |
isCompliant_label |
security_result.detection_fields |
Mesclado |
isInteractive_label |
security_result.detection_fields |
Mesclado |
isManaged_label |
security_result.detection_fields |
Mesclado |
item_id_label |
security_result.detection_fields |
Mesclado |
message |
security_result.detection_fields |
Mapeado: cribl_pipe → cribl_topic_name_label, cribl_pipe → cribl_source_label |
method_label |
security_result.detection_fields |
Mesclado |
networkNames_label |
security_result.detection_fields |
Mesclado |
networkType_label |
security_result.detection_fields |
Mesclado |
network_Names_label |
security_result.detection_fields |
Mesclado |
network_Type_label |
security_result.detection_fields |
Mesclado |
network_type_label |
security_result.detection_fields |
Mesclado |
operationVersion_label |
security_result.detection_fields |
Mesclado |
properties_resourceDisplayName_label |
security_result.detection_fields |
Mesclado |
properties_resourceId_label |
security_result.detection_fields |
Mesclado |
requirement_provider_label |
security_result.detection_fields |
Mesclado |
resourceOwnerTenantId_label |
security_result.detection_fields |
Mesclado |
resourceTenantId_label |
security_result.detection_fields |
Mesclado |
resource_group_field |
security_result.detection_fields |
Mesclado |
riskDetail_label |
security_result.detection_fields |
Mesclado |
riskLevelAggregated_label |
security_result.detection_fields |
Mesclado |
riskLevelDuringSignIn_label |
security_result.detection_fields |
Mesclado |
riskState_label |
security_result.detection_fields |
Mesclado |
sessionId_label |
security_result.detection_fields |
Mesclado |
sessionLifetimePolicies_label |
security_result.detection_fields |
Mesclado |
siginsess_status_code_label |
security_result.detection_fields |
Mesclado |
signInIdentifier_label |
security_result.detection_fields |
Mesclado |
source_system_label |
security_result.detection_fields |
Mesclado |
step_date_label |
security_result.detection_fields |
Mesclado |
step_detail_label |
security_result.detection_fields |
Mesclado |
step_requirement_label |
security_result.detection_fields |
Mesclado |
tokenIssuerName_label |
security_result.detection_fields |
Mesclado |
token_protection_status_details_label |
security_result.detection_fields |
Mesclado |
trustType_label |
security_result.detection_fields |
Mesclado |
RiskLevelDuringSignIn |
security_result.priority |
Mapeado: medium → MEDIUM_PRIORITY |
ResultType |
security_result.rule_id |
Mapeado diretamente |
OperationName |
security_result.severity |
Mapeado: Sign-in activity → ERROR |
level |
security_result.severity |
Mapeado diretamente |
level |
security_result.severity_details |
Mapeado diretamente |
OperationName |
security_result.summary |
Mapeado: Sign-in activity → Successful login occurred, Sign-in activity → `Falha no login... |
ResultType |
security_result.summary |
Mapeado: 0 → Successful login occurred |
Status_failureReason |
security_result.summary |
Mapeado diretamente |
status.failureReason |
security_result.summary |
Mapeado diretamente |
AppDisplayName |
target.application |
Mapeado diretamente |
properties.appDisplayName |
target.application |
Mapeado diretamente |
resourceDisplayName |
target.application |
Mapeado diretamente |
AppId_label |
target.resource.attribute.labels |
Mesclado |
identity_label |
target.resource.attribute.labels |
Mesclado |
resourceIdentity_label |
target.resource.attribute.labels |
Mesclado |
resourceId |
target.resource.name |
Mapeado diretamente |
ResourceId |
target.resource.product_object_id |
Mapeado diretamente |
target_role_name |
target.user.attribute.roles |
Mesclado |
UserPrincipalName |
target.user.email_addresses |
Mapeado: ^.+@.+$ → UserPrincipalName |
properties.userPrincipalName |
target.user.email_addresses |
Mesclado |
UserId |
target.user.product_object_id |
Mapeado diretamente |
Identity |
target.user.user_display_name |
Mapeado diretamente |
properties.userDisplayName |
target.user.user_display_name |
Mapeado diretamente |
UserPrincipalName |
target.user.userid |
Mapeado diretamente |
properties.userId |
target.user.userid |
Mapeado diretamente |
| N/A | extensions.auth.type |
Constante: AUTHTYPE_UNSPECIFIED |
| N/A | metadata.event_type |
Constante: USER_LOGIN |
| N/A | network.http.parsed_user_agent |
Constante: parseduseragent |
| N/A | principal.platform |
Constante: WINDOWS |
| N/A | security_result.priority |
Constante: MEDIUM_PRIORITY |
| N/A | security_result.severity |
Constante: INFORMATIONAL |
| N/A | security_result.summary |
Constante: Successful login occurred |
Registro de alterações
Ver o registro de alterações deste analisador
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.