Coletar registros de contexto do Microsoft Azure AD

Compatível com:

Neste documento, descrevemos como coletar registros do Microsoft Azure Active Directory (AD) configurando um feed do Google Security Operations.

O Azure Active Directory (AZURE_AD) agora se chama Microsoft Entra ID. 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 no Google Security Operations.

Um rótulo de ingestão identifica o analisador que normaliza dados de registro brutos para o formato UDM estruturado.

Antes de começar

Verifique se você atende aos seguintes pré-requisitos:

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

Como configurar o Azure AD

  1. Faça login no portal do Azure.
  2. Acesse Página inicial > Registro de app, selecione um aplicativo registrado ou registre um se ainda não tiver criado um.
  3. Para registrar um aplicativo, na seção Registro do app, clique em Novo registro.
  4. No campo Nome, insira 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 (locatário), que são necessários para configurar o feed do Google Security Operations.
  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 aplicativo.
  11. Selecione as permissões AuditLog.Read.All, Directory.Read.All e SecurityEvents.Read.All. Verifique se as permissões são permissões de aplicativo 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 segredos.
  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 feeds

Há dois pontos de entrada diferentes para configurar feeds na plataforma do Google SecOps:

  • Configurações do SIEM > Feeds
  • Central de conteúdo > Pacotes de conteúdo

Configure feeds em Configurações do SIEM > Feeds

Para configurar vários feeds para diferentes tipos de registros nessa família de produtos, consulte Configurar feeds por produto.

Para configurar um único feed, siga estas etapas:

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na próxima página, clique em Configurar um único feed.
  4. No campo Nome do feed, insira um nome para o feed, por exemplo, Registros de contexto do Azure AD.
  5. Selecione API de terceiros como o Tipo de origem.
  6. Selecione Contexto organizacional do Azure AD como o Tipo de registro.
  7. Clique em Próxima.
  8. 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.
  9. 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 feed por tipo. Se você tiver problemas ao criar feeds, entre em contato com o suporte do Google Security Operations.

Configurar feeds na Central de conteúdo

Especifique valores para os seguintes campos:

  • 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.

Opções avançadas

  • Nome do feed: um valor pré-preenchido que identifica o feed.
  • Tipo de origem: método usado para coletar registros no Google SecOps.
  • Namespace do recurso: namespace associado ao feed.
  • Rótulos de ingestão: rótulos aplicados a todos os eventos deste feed.

Referência de mapeamento de campos

Esse código de analisador transforma registros brutos formatados em JSON do Azure Active Directory em um modelo de dados unificado (UDM). Ele extrai informações de usuários e administradores, incluindo atributos, funções, relações e rótulos, além de processar 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á extraído de usageLocation.
createdDateTime user.attribute.creation_time Convertido para um carimbo de data/hora do campo createdDateTime no registro bruto usando o formato RFC 3339.
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á extraído de extension_employeeNumber.
employeeType user.attribute.labels.value (key: employeeType) Mapeado diretamente do campo employeeType no registro bruto e adicionado como um rótulo com a chave employeeType.
extension_employeeNumber user.employee_id 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 (key: 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 como UNIDIRECTIONAL.
gopher-groups event.idm.entity.relations Cada grupo na matriz gopher-groups é mapeado para uma entrada de relação separada. O id é mapeado para product_object_id, e o displayName é mapeado para group_display_name. A relação é definida como MEMBER e a direção como UNIDIRECTIONAL.
gopher-manager.businessPhones empmanager.phone_numbers 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 será deixado em branco.
gopher-manager.department empmanager.department Mapeado para empmanager.department se manager estiver vazio.
gopher-manager.displayName empmanager.user_display_name Mapeado para empmanager.user_display_name se manager estiver vazio.
gopher-manager.employeeId empmanager.employee_id Mapeado para empmanager.employee_id se manager estiver vazio e gopher-manager.employeeId não estiver.
gopher-manager.extension_employeeNumber empmanager.employee_id Mapeado para empmanager.employee_id se manager e gopher-manager.employeeId estiverem vazios e gopher-manager.extension_employeeNumber não estiver.
gopher-manager.givenName empmanager.first_name 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 Mapeado para empmanager.title se manager estiver vazio.
gopher-manager.mail empmanager.email_addresses 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 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á mapeado para empmanager.email_addresses ou empmanager.group_identifiers, dependendo se ele começa com "smtp" ou "SMTP".
gopher-manager.refreshTokensValidFromDateTime empmanager.attribute.labels.value (key: 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 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 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 (key: signInType), user.attribute.labels.value (key: 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-", o 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 Mapeado para empmanager.phone_numbers se gopher-manager estiver vazio.
manager.city empmanager.personal_address.city Mapeado para empmanager.personal_address.city se gopher-manager estiver vazio.
manager.companyName empmanager.company_name Mapeado para empmanager.company_name se gopher-manager estiver vazio.
manager.country empmanager.personal_address.country_or_region Mapeado para empmanager.personal_address.country_or_region se gopher-manager estiver vazio. Se manager.country e manager.usageLocation estiverem vazios, o campo será deixado em branco.
manager.department empmanager.department Mapeado para empmanager.department se gopher-manager estiver vazio.
manager.displayName empmanager.user_display_name Mapeado para empmanager.user_display_name se gopher-manager estiver vazio.
manager.employeeId empmanager.employee_id Mapeado para empmanager.employee_id se gopher-manager estiver vazio e manager.employeeId não estiver.
manager.extension_employeeNumber empmanager.employee_id Mapeado para empmanager.employee_id se gopher-manager e manager.employeeId estiverem vazios e manager.extension_employeeNumber não estiver.
manager.givenName empmanager.first_name Mapeado para empmanager.first_name se gopher-manager estiver vazio.
manager.id empmanager.product_object_id Mapeado para empmanager.product_object_id se gopher-manager estiver vazio.
manager.jobTitle empmanager.title Mapeado para empmanager.title se gopher-manager estiver vazio.
manager.mail empmanager.email_addresses Mapeado para empmanager.email_addresses se gopher-manager estiver vazio.
manager.onPremisesSamAccountName empmanager.userid Mapeado para empmanager.userid se gopher-manager estiver vazio.
manager.onPremisesSecurityIdentifier empmanager.windows_sid 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á mapeado para empmanager.email_addresses ou empmanager.group_identifiers, dependendo se ele começa com "smtp" ou "SMTP".
manager.refreshTokensValidFromDateTime empmanager.attribute.labels.value (key: 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 Mapeado para empmanager.personal_address.name se gopher-manager estiver vazio.
manager.surname empmanager.last_name Mapeado para empmanager.last_name se gopher-manager estiver vazio.
manager.usageLocation user.attribute.labels.value (key: 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 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 (key: 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 (key: onPremisesSamAccountName) 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 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 restante do endereço de e-mail será extraído e mapeado para user.email_addresses.
refreshTokensValidFromDateTime user.attribute.labels.value (key: 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-", o 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 do 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 Definido como o campo create_time do registro bruto.
accountEnabled user.user_authentication_status, user.attribute.labels.value (key: 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 (key: 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-", o user_role.type será definido como SERVICE_ACCOUNT.
empmanager-src.onPremisesDistinguishedName manager_role.type Se gopher-manager estiver vazio e a parte da OU do nome distinto do gerente contiver "Users", 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-", o user_role.type será definido como SERVICE_ACCOUNT.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.