Coletar registros de contexto do Microsoft Azure AD

Compatível com:

Este documento descreve como coletar registros do Microsoft Azure Active Directory (AD) configurando um feed de operações de segurança do Google.

O Azure Active Directory (AZURE_AD) agora é chamado de ID do Microsoft Entra. Os registros de auditoria do Azure AD (AZURE_AD_AUDIT) agora são registros de auditoria do ID do Microsoft Entra.

Para mais informações, consulte Ingestão de dados para as operações de segurança do Google.

Um rótulo de transferência identifica o analisador que normaliza os dados de registro brutos para o formato estruturado do UDM.

Antes de começar

Para concluir as tarefas desta página, confira se você tem o seguinte:

  • Uma assinatura do Azure em que você pode fazer login.
  • Uma função de administrador global ou administrador do Azure AD.
  • Um Azure AD (locatário) no Azure.

Configurar o Azure AD

  1. Faça login no portal do Azure.
  2. Acesse Início > Registro de apps, selecione um app registrado ou registre um app se você ainda não criou um.
  3. Para registrar um aplicativo, clique em Novo registro na seção Registro do app.
  4. No campo Nome, informe o nome de exibição do aplicativo.
  5. Na seção Tipos de contas compatíveis, selecione a opção necessária para especificar quem pode usar o aplicativo ou acessar a API.
  6. Clique em Registrar.
  7. Acesse a página Visão geral e copie o ID do aplicativo (cliente) e o ID do diretório (tenant), que são necessários para configurar o feed das Operações de segurança do Google.
  8. Clique em Permissões da API.
  9. Clique em Adicionar uma permissão e selecione Microsoft Graph no novo painel.
  10. Clique em Permissões do app.
  11. Selecione as permissões AuditLog.Read.All, Directory.Read.All e SecurityEvents.Read.All. Verifique se as permissões são permissões do app e não permissões delegadas.
  12. Clique em Conceder consentimento de administrador para o diretório padrão. Os aplicativos são autorizados a chamar APIs quando recebem permissões de usuários ou administradores como parte do processo de consentimento.
  13. Acesse Configurações > Gerenciar.
  14. Clique em Certificados e chaves secretas.
  15. Clique em New client secret. No campo Valor, a chave secreta do cliente aparece.
  16. Copie o valor da chave secreta do cliente. O valor é mostrado apenas no momento da criação e é necessário para o registro do app do Azure e para configurar o feed do Google Security Operations.

Configurar um feed nas Operações de segurança do Google para processar registros de contexto do Azure AD

  1. Selecione Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo.
  3. Insira um nome exclusivo para o nome do feed.
  4. Selecione API de terceiros como o Tipo de origem.
  5. Selecione Contexto organizacional do Azure AD como o Tipo de registro.
  6. Clique em Próxima.
  7. Configure os seguintes parâmetros de entrada obrigatórios:
    • ID do cliente OAUTH: especifique o ID do cliente que você recebeu anteriormente.
    • Chave secreta do cliente OAUTH: especifique a chave secreta do cliente que você recebeu anteriormente.
    • ID do locatário: especifique o ID do locatário que você recebeu anteriormente.
  8. Clique em Próxima e em Enviar.

Para mais informações sobre os feeds do Google Security Operations, consulte a documentação dos feeds do Google Security Operations. Para informações sobre os requisitos de cada tipo de feed, consulte Configuração de feeds por tipo. Se você tiver problemas ao criar feeds, entre em contato com o suporte da Google Security Operations.

Referência do mapeamento de campo

Esse código de analisador transforma registros formatados em JSON brutos do Azure Active Directory em um modelo de dados unificado (UDM, na sigla em inglês). Ele extrai informações de usuários e administradores, incluindo atributos, funções, relações e rótulos, além de lidar com várias inconsistências de dados e enriquecer a saída com campos padronizados.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
businessPhones user.phone_numbers Mapeado diretamente do campo businessPhones no registro bruto. Vários números de telefone são extraídos e mapeados como entradas separadas.
cidade user.personal_address.city Mapeado diretamente do campo city no registro bruto.
companyName user.company_name Mapeado diretamente do campo companyName no registro bruto.
país user.personal_address.country_or_region Mapeado diretamente do campo country no registro bruto. Se country estiver vazio, o valor será retirado de usageLocation.
createdDateTime user.attribute.creation_time Convertido em um carimbo de data/hora do campo createdDateTime no registro bruto usando o formato RFC3339.
departamento user.department Mapeado diretamente do campo department no registro bruto. Vários departamentos são extraídos e mapeados como entradas separadas.
displayName user.user_display_name Mapeado diretamente do campo displayName no registro bruto.
employeeId user.employee_id Mapeado diretamente do campo employeeId no registro bruto. Se employeeId estiver vazio, o valor será retirado de extension_employeeNumber.
employeeType user.attribute.labels.value (chave: employeeType) Mapeado diretamente do campo employeeType no registro bruto e adicionado como um rótulo com a chave employeeType.
extension_employeeNumber user.employee_id Será mapeado para user.employee_id se employeeId estiver vazio.
extension_wfc_AccountType event.idm.entity.entity.labels.value (chave: wfc_AccountType) Mapeado diretamente do campo extension_wfc_AccountType no registro bruto e adicionado como um rótulo com a chave wfc_AccountType.
extension_wfc_AccountingUnitName event.idm.entity.entity.labels.value (chave: extension_wfc_AccountingUnitName) Mapeado diretamente do campo extension_wfc_AccountingUnitName no registro bruto e adicionado como um rótulo com a chave extension_wfc_AccountingUnitName.
extension_wfc_execDescription event.idm.entity.entity.labels.value (chave: extension_wfc_execDescription) Mapeado diretamente do campo extension_wfc_execDescription no registro bruto e adicionado como um rótulo com a chave extension_wfc_execDescription.
extension_wfc_groupDescription event.idm.entity.entity.labels.value (chave: extension_wfc_groupDescription) Mapeado diretamente do campo extension_wfc_groupDescription no registro bruto e adicionado como um rótulo com a chave extension_wfc_groupDescription.
extension_wfc_orgDescription event.idm.entity.entity.labels.value (chave: extension_wfc_orgDescription) Mapeado diretamente do campo extension_wfc_orgDescription no registro bruto e adicionado como um rótulo com a chave extension_wfc_orgDescription.
givenName user.first_name Mapeado diretamente do campo givenName no registro bruto.
gopher-devices event.idm.entity.relations Cada dispositivo na matriz gopher-devices é mapeado para uma entrada de relação separada. O deviceId é mapeado para product_object_id, operatingSystem e operatingSystemVersion são combinados para formar platform_version, model é mapeado diretamente e createdDateTime é convertido em um carimbo de data/hora e mapeado para created_timestamp. A relação é definida como OWNS e a direção é definida como UNIDIRECTIONAL.
gopher-groups event.idm.entity.relations Cada grupo na matriz gopher-groups é mapeado para uma entrada de relação separada. id é mapeado para product_object_id, e displayName é mapeado para group_display_name. A relação é definida como MEMBER e a direção é definida como UNIDIRECTIONAL.
gopher-manager.businessPhones empmanager.phone_numbers Será mapeado para empmanager.phone_numbers se manager estiver vazio.
gopher-manager.country empmanager.personal_address.country_or_region Mapeado para empmanager.personal_address.country_or_region se manager estiver vazio. Se gopher-manager.country e gopher-manager.usageLocation estiverem vazios, o campo vai ficar vazio.
gopher-manager.department empmanager.department Será mapeado para empmanager.department se manager estiver vazio.
gopher-manager.displayName empmanager.user_display_name Será mapeado para empmanager.user_display_name se manager estiver vazio.
gopher-manager.employeeId empmanager.employee_id Será associado a empmanager.employee_id se manager estiver vazio e gopher-manager.employeeId não estiver.
gopher-manager.extension_employeeNumber empmanager.employee_id Será mapeado para empmanager.employee_id se manager e gopher-manager.employeeId estiverem vazios e gopher-manager.extension_employeeNumber não estiver vazio.
gopher-manager.givenName empmanager.first_name Será mapeado para empmanager.first_name se manager estiver vazio.
gopher-manager.id empmanager.product_object_id Mapeado para empmanager.product_object_id se manager estiver vazio.
gopher-manager.jobTitle empmanager.title Será mapeado para empmanager.title se manager estiver vazio.
gopher-manager.mail empmanager.email_addresses Será mapeado para empmanager.email_addresses se manager estiver vazio.
gopher-manager.onPremisesImmutableId user.attribute.labels.value (chave: gopher-manager onPremisesImmutableId) Mapeado como um rótulo com a chave gopher-manager onPremisesImmutableId.
gopher-manager.onPremisesSamAccountName empmanager.userid Mapeado para empmanager.userid se manager estiver vazio.
gopher-manager.onPremisesSecurityIdentifier empmanager.windows_sid Será mapeado para empmanager.windows_sid se manager estiver vazio.
gopher-manager.proxyAddresses empmanager.email_addresses, empmanager.group_identifiers Se manager estiver vazio, cada endereço na matriz gopher-manager.proxyAddresses será associado a empmanager.email_addresses ou empmanager.group_identifiers, dependendo se ele começa com "smtp" ou "SMTP".
gopher-manager.refreshTokensValidFromDateTime empmanager.attribute.labels.value (chave: refreshTokensValidFromDateTime) Mapeado como um rótulo com a chave refreshTokensValidFromDateTime se manager estiver vazio.
gopher-manager.streetAddress empmanager.personal_address.name Mapeado para empmanager.personal_address.name se manager estiver vazio.
gopher-manager.surname empmanager.last_name Será mapeado para empmanager.last_name se manager estiver vazio.
gopher-manager.usageLocation user.attribute.labels.value (chave: manager_src_usageLocation) Mapeado como um rótulo com a chave manager_src_usageLocation.
gopher-manager.userType empmanager.attribute.roles.name Será mapeado para empmanager.attribute.roles.name se manager estiver vazio.
id user.product_object_id Mapeado diretamente do campo id no registro bruto.
identidades user.attribute.labels.value (chave: signInType), user.attribute.labels.value (chave: userPrincipalName) O signInType é mapeado como um rótulo com a chave signInType. Se signInType e userPrincipalName não estiverem vazios, eles serão combinados e mapeados como um rótulo com a chave userPrincipalName.
jobTitle user.title Mapeado diretamente do campo jobTitle no registro bruto.
carta user.email_addresses Mapeado diretamente do campo mail no registro bruto. Se mail começar com "svc-", user_role.type será definido como SERVICE_ACCOUNT.
mailNickname user.attribute.labels.value (chave: mailNickname) Mapeado diretamente do campo mailNickname no registro bruto e adicionado como um rótulo com a chave mailNickname.
manager.businessPhones empmanager.phone_numbers Será mapeado para empmanager.phone_numbers se gopher-manager estiver vazio.
manager.city empmanager.personal_address.city Será mapeado para empmanager.personal_address.city se gopher-manager estiver vazio.
manager.companyName empmanager.company_name Será mapeado para empmanager.company_name se gopher-manager estiver vazio.
manager.country empmanager.personal_address.country_or_region Será mapeado para empmanager.personal_address.country_or_region se gopher-manager estiver vazio. Se manager.country e manager.usageLocation estiverem vazios, o campo vai ficar vazio.
manager.department empmanager.department Será mapeado para empmanager.department se gopher-manager estiver vazio.
manager.displayName empmanager.user_display_name Será mapeado para empmanager.user_display_name se gopher-manager estiver vazio.
manager.employeeId empmanager.employee_id Será associado a empmanager.employee_id se gopher-manager estiver vazio e manager.employeeId não estiver.
manager.extension_employeeNumber empmanager.employee_id Será mapeado para empmanager.employee_id se gopher-manager e manager.employeeId estiverem vazios e manager.extension_employeeNumber não estiver vazio.
manager.givenName empmanager.first_name Será mapeado para empmanager.first_name se gopher-manager estiver vazio.
manager.id empmanager.product_object_id Será mapeado para empmanager.product_object_id se gopher-manager estiver vazio.
manager.jobTitle empmanager.title Será mapeado para empmanager.title se gopher-manager estiver vazio.
manager.mail empmanager.email_addresses Será mapeado para empmanager.email_addresses se gopher-manager estiver vazio.
manager.onPremisesSamAccountName empmanager.userid Será mapeado para empmanager.userid se gopher-manager estiver vazio.
manager.onPremisesSecurityIdentifier empmanager.windows_sid Será mapeado para empmanager.windows_sid se gopher-manager estiver vazio.
manager.proxyAddresses empmanager.email_addresses, empmanager.group_identifiers Se gopher-manager estiver vazio, cada endereço na matriz manager.proxyAddresses será associado a empmanager.email_addresses ou empmanager.group_identifiers, dependendo se ele começa com "smtp" ou "SMTP".
manager.refreshTokensValidFromDateTime empmanager.attribute.labels.value (chave: refreshTokensValidFromDateTime) Mapeado como um rótulo com a chave refreshTokensValidFromDateTime se gopher-manager estiver vazio.
manager.state empmanager.personal_address.state Mapeado para empmanager.personal_address.state se gopher-manager estiver vazio.
manager.streetAddress empmanager.personal_address.name Será mapeado para empmanager.personal_address.name se gopher-manager estiver vazio.
manager.surname empmanager.last_name Será mapeado para empmanager.last_name se gopher-manager estiver vazio.
manager.usageLocation user.attribute.labels.value (chave: manager_src_usageLocation), empmanager.personal_address.country_or_region Mapeado como um rótulo com a chave manager_src_usageLocation. Se manager.country estiver vazio, o valor também será mapeado para empmanager.personal_address.country_or_region.
manager.userType empmanager.attribute.roles.name Será mapeado para empmanager.attribute.roles.name se gopher-manager estiver vazio.
onPremisesDistinguishedName user.attribute.labels.value (chave: onPremisesDistinguishedName), user.attribute.labels.value (chave: onPremisesDistinguishedName-OU data) O nome completo é mapeado como um rótulo com a chave onPremisesDistinguishedName. A parte da UO do nome distinto é extraída e mapeada como um rótulo com a chave onPremisesDistinguishedName-OU data. Se a parte da UO contiver "Admin", o user_role.type será definido como ADMINISTRATOR. Se ele contiver "Contas de serviço", o user_role.type será definido como SERVICE_ACCOUNT.
onPremisesDomainName user.group_identifiers, user.attribute.labels.value (chave: onPremisesDomainName) Mapeado diretamente para user.group_identifiers e adicionado como um rótulo com a chave onPremisesDomainName.
onPremisesImmutableId user.attribute.labels.value (chave: onPremisesImmutableId) Mapeado diretamente do campo onPremisesImmutableId no registro bruto e adicionado como um rótulo com a chave onPremisesImmutableId.
onPremisesSamAccountName user.userid, user.attribute.labels.value (chave: onPremisesSamAccountName) Será mapeado para user.userid se sAMAccountName estiver vazio. Também adicionado como um rótulo com a chave onPremisesSamAccountName.
onPremisesSecurityIdentifier user.windows_sid Mapeado diretamente do campo onPremisesSecurityIdentifier no registro bruto.
proxyAddresses user.email_addresses, user.group_identifiers Cada endereço na matriz proxyAddresses é mapeado para user.email_addresses ou user.group_identifiers, dependendo se ele começa com "smtp" ou "SMTP". Se o endereço começar com "smtp" ou "SMTP", o prefixo "smtp:" ou "SMTP:" será removido, e o endereço de e-mail restante será extraído e mapeado para user.email_addresses.
refreshTokensValidFromDateTime user.attribute.labels.value (chave: refreshTokensValidFromDateTime) Mapeado diretamente do campo refreshTokensValidFromDateTime no registro bruto e adicionado como um rótulo com a chave refreshTokensValidFromDateTime.
sAMAccountName user.userid Mapeado diretamente do campo sAMAccountName no registro bruto.
estado user.personal_address.state Mapeado diretamente do campo state no registro bruto.
streetAddress user.personal_address.name Mapeado diretamente do campo streetAddress no registro bruto.
sobrenome user.last_name Mapeado diretamente do campo surname no registro bruto.
usageLocation user.personal_address.country_or_region Se country estiver vazio, o valor será mapeado para user.personal_address.country_or_region.
userPrincipalName user.email_addresses Mapeado diretamente do campo userPrincipalName no registro bruto. Se userPrincipalName começar com "svc-", user_role.type será definido como SERVICE_ACCOUNT.
userType user.attribute.roles.name Mapeado diretamente do campo userType no registro bruto e adicionado a user.attribute.roles.name.
Lógica do analisador Mapeamento de UDM Lógica
N/A event.idm.entity.metadata.vendor_name Defina como "Microsoft".
N/A event.idm.entity.metadata.product_name Defina como "Azure Active Directory".
N/A event.idm.entity.metadata.entity_type Defina como "USER".
N/A event.idm.entity.metadata.collected_timestamp Defina o campo create_time do registro bruto.
accountEnabled user.user_authentication_status, user.attribute.labels.value (chave: accountEnabled) Se accountEnabled for verdadeiro, user.user_authentication_status será definido como "ACTIVE" e um rótulo com a chave accountEnabled e o valor "true" será adicionado. Caso contrário, um rótulo com a chave accountEnabled e o valor "false" será adicionado.
empmanager-src.accountEnabled user.user_authentication_status, user.attribute.labels.value (chave: accountEnabled) Se manager estiver vazio e empmanager-src.accountEnabled for "true", user.user_authentication_status será definido como "ACTIVE" e um rótulo com a chave accountEnabled e o valor "true" será adicionado. Caso contrário, um rótulo com a chave accountEnabled e o valor "false" será adicionado.
onPremisesDistinguishedName user_role.type Se a parte da UO do nome distinto contiver "Admin", o user_role.type será definido como ADMINISTRATOR. Se ele contiver "Contas de serviço", o user_role.type será definido como SERVICE_ACCOUNT.
userPrincipalName user_role.type Se userPrincipalName começar com "svc-", user_role.type será definido como SERVICE_ACCOUNT.
empmanager-src.onPremisesDistinguishedName manager_role.type Se gopher-manager estiver vazio e a parte da unidade organizacional do nome distinto do administrador contiver "Usuários", manager_role.type será definido como ADMINISTRATOR. Se ele contiver "Contas de serviço", o manager_role.type será definido como SERVICE_ACCOUNT.
empmanager-src.userPrincipalName manager_role.type Se gopher-manager estiver vazio e empmanager-src.userPrincipalName começar com "svc-", manager_role.type será definido como SERVICE_ACCOUNT.
carta user_role.type Se mail começar com "svc-", user_role.type será definido como SERVICE_ACCOUNT.

Alterações

2024-04-29

  • "officeLocation" foi mapeado para "entity.location.name".
  • Mapeou "extension_wfc_groupDescription", "extension_wfc_execDescription", "extension_wfc_orgDescription", "extension_wfc_AccountingUnitName" e "extension_wfc_AccountType" para "entity.labels".

2024-05-02

Correção de bugs:

  • Foram adicionadas verificações para o campo "accountEnabled" para analisar o valor correto no campo "entity.user.attribute.labels.value".

2024-03-14

  • Mapeamos "onPremisesImmutableId" para "entity.user.attribute.labels".
  • "gopher-manager.onPremisesImmutableId" foi mapeado para "entity.user.attribute.labels".

2024-01-12

Correção de bugs:

  • O mapeamento "empmanager-src.usageLocation" mudou de "entity.user.personal_address.country_or_region" para "entity.user.attribute.labels".

2023-11-24

Melhoria

  • O atributo "employeeType" foi mapeado para "entity.user.attribute.labels".
  • Registros JSON malformados com a tag "TAG_MALFORMED_MESSAGE" foram descartados.

2023-10-25

Correção de bugs

  • Foram adicionadas verificações de valores nulos e uma verificação "on_error" para valores ausentes.

2023-09-25

Melhoria

  • A função de renomeação foi adicionada em vez de substituir para mapear "group.displayName" para "relation_entity.entity.group.group_display_name".
  • "country" foi mapeado para "user.personal_address.country_or_region". Se "country" não estiver presente, mapeie "usageLocation" para "user.personal_address.country_or_region".

2023-02-09

Melhoria

  • Adição de uma verificação de valor nulo antes do mapeamento de dados para o campo "onPremisesDistinguishedName".
  • Adicionado gsub para extrair o endereço de e-mail do campo "proxyAddresses".

2023-01-23

  • Mapeou "onPremisesExtensionAttributes.extensionAttribute4" para "entity.entity.user.attribute.labels" se "onPremisesExtensionAttributes.extensionAttribute4" for "Employee".
  • Adição de gsub para "onPremisesDistinguishedName" para remover barras invertidas extras.

2022-12-15

Correção de bugs:

  • "mailNickname" foi mapeado para "entity.user.attribute.labels".
  • Mapeou apenas "country_n_code" para "user.manager.personal_address.country_or_region" se "empmanager-src.usageLocation" for nulo.

2022-09-19

  • Correção de bugs:
  • Mapeamos "entity.user.attribute.roles" para "ADMINISTRATOR", em que a OU inclui "Administrador"

2022-08-11

  • "accountEnabled" foi associado a "user.attribute.labels".

2022-05-16

  • Mapeamentos adicionados para os seguintes campos:
  • "createdDateTime" mapeado para "entity.user.attribute.creation_time"
  • "accountEnabled" mapeado para "entity.user.user_authentication_status"

2022-05-09

  • Melhoria: campos mapeados que começam com extension_GUID_sbuxXXXXXXX para user.attribute.labels ou manager.attribute.labels, dependendo da ocorrência no registro.

2022-03-24

  • Melhoria: adição de alguns campos ausentes
  • onPremisesSamAccountName, onPremisesDomainName, onPremisesDistinguishedName mapeados para entity.user.attribute.labels.
  • Para signInType, userPrincipalName é mapeado para entity.user.attribute.labels.