收集 Microsoft Azure AD Context 日志

支持的语言:

本文档介绍了如何通过设置 Google Security Operations Feed 来收集 Microsoft Azure Active Directory (AD) 日志。

Azure Active Directory (AZURE_AD) 现在称为 Microsoft Entra ID。Azure AD 审核日志 (AZURE_AD_AUDIT) 现在称为 Microsoft Entra ID 审核日志。

如需了解详情,请参阅将数据注入 Google Security Operations

注入标签用于标识将原始日志数据标准化为结构化 UDM 格式的解析器。

准备工作

确保您满足以下前提条件:

  • 您可以登录的 Azure 订阅
  • 全局管理员或 Azure AD 管理员角色
  • Azure 中的 Azure AD(租户)

如何配置 Azure AD

  1. 登录 Azure 门户。
  2. 前往首页 > 应用注册,选择已注册的应用,或者如果您尚未创建应用,请注册应用。
  3. 如需注册应用,请在应用注册部分点击新注册
  4. 名称字段中,提供应用的显示名称。
  5. 支持的账号类型部分,选择所需选项以指定哪些人可以使用应用或访问 API。
  6. 点击注册
  7. 前往概览页面,然后复制应用(客户端)ID 和目录(租户)ID,这些信息是配置 Google Security Operations Feed 所必需的。
  8. 点击 API 权限
  9. 点击添加权限,然后在新窗格中选择 Microsoft Graph
  10. 点击应用权限
  11. 选择 AuditLog.Read.AllDirectory.Read.AllSecurityEvents.Read.All 权限。确保权限是应用权限,而不是委托权限
  12. 点击为默认目录授予管理员同意书。当应用在许可流程中获得用户或管理员授予的权限时,便有权调用 API。
  13. 依次前往设置 > 管理
  14. 点击证书和密钥
  15. 点击 New client secret(新建客户端密钥)。 在字段中,系统会显示客户端密钥。
  16. 复制客户端密钥值。该值仅在创建时显示,并且是 Azure 应用注册和配置 Google Security Operations Feed 所必需的。

设置 Feed

您可以通过两种不同的入口点在 Google SecOps 平台中设置 Feed:

  • SIEM 设置 > Feed
  • 内容中心 > 内容包

通过“SIEM 设置”>“Feed”设置 Feed

如需为相应产品系列中的不同日志类型配置多个 Feed,请参阅按产品配置 Feed

如需配置单个 Feed,请按以下步骤操作:

  1. 依次前往 SIEM 设置> Feed
  2. 点击添加新 Feed
  3. 在下一页上,点击配置单个 Feed
  4. Feed 名称字段中,输入 Feed 的名称,例如 Azure AD 上下文日志
  5. 选择第三方 API 作为来源类型
  6. 选择 Azure AD Organizational Context 作为日志类型
  7. 点击下一步
  8. 配置以下必需的输入参数:
    • OAuth 客户端 ID:指定您之前获得的客户端 ID。
    • OAuth 客户端密钥:指定您之前获得的客户端密钥。
    • 租户 ID:指定您之前获得的租户 ID。
  9. 点击下一步,然后点击提交

如需详细了解 Google Security Operations Feed,请参阅 Google Security Operations Feed 文档。如需了解每种 Feed 类型的要求,请参阅按类型划分的 Feed 配置。 如果您在创建 Feed 时遇到问题,请与 Google 安全运营支持团队联系

设置来自内容中心的 Feed

为以下字段指定值:

  • OAuth 客户端 ID:指定您之前获得的客户端 ID。
  • OAuth 客户端密钥:指定您之前获得的客户端密钥。
  • 租户 ID:指定您之前获得的租户 ID。

高级选项

  • Feed 名称:用于标识 Feed 的预填充值。
  • 来源类型:用于将日志收集到 Google SecOps 中的方法。
  • 资产命名空间与 Feed 关联的命名空间
  • 提取标签:应用于相应 Feed 中所有事件的标签。

字段映射参考

此解析器代码可将 Azure Active Directory 中的原始 JSON 格式日志转换为统一数据模型 (UDM)。它会提取用户和经理信息,包括属性、角色、关系和标签,同时处理各种数据不一致问题,并使用标准化字段丰富输出内容。

UDM 映射表

日志字段 UDM 映射 逻辑
businessPhones user.phone_numbers 直接从原始日志中的 businessPhones 字段映射。系统会提取多个手机号码,并将其分别映射为单独的条目。
city user.personal_address.city 直接从原始日志中的 city 字段映射。
companyName user.company_name 直接从原始日志中的 companyName 字段映射。
国家/地区 user.personal_address.country_or_region 直接从原始日志中的 country 字段映射。如果 country 为空,则该值取自 usageLocation
createdDateTime user.attribute.creation_time 使用 RFC 3339 格式从原始日志的 createdDateTime 字段转换为时间戳。
部门 user.department 直接从原始日志中的 department 字段映射。系统会提取多个部门,并将其分别映射为单独的条目。
displayName user.user_display_name 直接从原始日志中的 displayName 字段映射。
employeeId user.employee_id 直接从原始日志中的 employeeId 字段映射。如果 employeeId 为空,则该值取自 extension_employeeNumber
employeeType user.attribute.labels.value(键:employeeType) 直接从原始日志中的 employeeType 字段映射,并添加为键为 employeeType 的标签。
extension_employeeNumber user.employee_id 如果 employeeId 为空,则映射到 user.employee_id
extension_wfc_AccountType event.idm.entity.entity.labels.value(键:wfc_AccountType) 直接从原始日志中的 extension_wfc_AccountType 字段映射,并添加为键为 wfc_AccountType 的标签。
extension_wfc_AccountingUnitName event.idm.entity.entity.labels.value(键:extension_wfc_AccountingUnitName) 直接从原始日志中的 extension_wfc_AccountingUnitName 字段映射,并添加为键为 extension_wfc_AccountingUnitName 的标签。
extension_wfc_execDescription event.idm.entity.entity.labels.value(键:extension_wfc_execDescription) 直接从原始日志中的 extension_wfc_execDescription 字段映射,并添加为键为 extension_wfc_execDescription 的标签。
extension_wfc_groupDescription event.idm.entity.entity.labels.value(键:extension_wfc_groupDescription) 直接从原始日志中的 extension_wfc_groupDescription 字段映射,并添加为键为 extension_wfc_groupDescription 的标签。
extension_wfc_orgDescription event.idm.entity.entity.labels.value(键:extension_wfc_orgDescription) 直接从原始日志中的 extension_wfc_orgDescription 字段映射,并添加为键为 extension_wfc_orgDescription 的标签。
givenName user.first_name 直接从原始日志中的 givenName 字段映射。
gopher-devices event.idm.entity.relations gopher-devices 数组中的每个设备都映射到单独的关系条目。deviceId 映射到 product_object_idoperatingSystemoperatingSystemVersion 组合形成 platform_versionmodel 直接映射,createdDateTime 转换为时间戳并映射到 created_timestamp。关系设置为 OWNS,方向设置为 UNIDIRECTIONAL
gopher-groups event.idm.entity.relations gopher-groups 数组中的每个组都映射到一个单独的关系条目。id 映射到 product_object_iddisplayName 映射到 group_display_name。关系设置为 MEMBER,方向设置为 UNIDIRECTIONAL
gopher-manager.businessPhones empmanager.phone_numbers 如果 manager 为空,则映射到 empmanager.phone_numbers
gopher-manager.country empmanager.personal_address.country_or_region 如果 manager 为空,则映射到 empmanager.personal_address.country_or_region。如果 gopher-manager.countrygopher-manager.usageLocation 均为空,则该字段留空。
gopher-manager.department empmanager.department 如果 manager 为空,则映射到 empmanager.department
gopher-manager.displayName empmanager.user_display_name 如果 manager 为空,则映射到 empmanager.user_display_name
gopher-manager.employeeId empmanager.employee_id 如果 manager 为空且 gopher-manager.employeeId 不为空,则映射到 empmanager.employee_id
gopher-manager.extension_employeeNumber empmanager.employee_id 如果 managergopher-manager.employeeId 为空,但 gopher-manager.extension_employeeNumber 不为空,则映射到 empmanager.employee_id
gopher-manager.givenName empmanager.first_name 如果 manager 为空,则映射到 empmanager.first_name
gopher-manager.id empmanager.product_object_id 如果 manager 为空,则映射到 empmanager.product_object_id
gopher-manager.jobTitle empmanager.title 如果 manager 为空,则映射到 empmanager.title
gopher-manager.mail empmanager.email_addresses 如果 manager 为空,则映射到 empmanager.email_addresses
gopher-manager.onPremisesImmutableId user.attribute.labels.value(键:gopher-manager onPremisesImmutableId) 映射为键为 gopher-manager onPremisesImmutableId 的标签。
gopher-manager.onPremisesSamAccountName empmanager.userid 如果 manager 为空,则映射到 empmanager.userid
gopher-manager.onPremisesSecurityIdentifier empmanager.windows_sid 如果 manager 为空,则映射到 empmanager.windows_sid
gopher-manager.proxyAddresses empmanager.email_addresses, empmanager.group_identifiers 如果 manager 为空,则 gopher-manager.proxyAddresses 数组中的每个地址都会根据其是否以“smtp”或“SMTP”开头映射到 empmanager.email_addressesempmanager.group_identifiers
gopher-manager.refreshTokensValidFromDateTime empmanager.attribute.labels.value(键:refreshTokensValidFromDateTime) 如果 manager 为空,则映射为键为 refreshTokensValidFromDateTime 的标签。
gopher-manager.streetAddress empmanager.personal_address.name 如果 manager 为空,则映射到 empmanager.personal_address.name
gopher-manager.surname empmanager.last_name 如果 manager 为空,则映射到 empmanager.last_name
gopher-manager.usageLocation user.attribute.labels.value(键:manager_src_usageLocation) 映射为键为 manager_src_usageLocation 的标签。
gopher-manager.userType empmanager.attribute.roles.name 如果 manager 为空,则映射到 empmanager.attribute.roles.name
id user.product_object_id 直接从原始日志中的 id 字段映射。
身份 user.attribute.labels.value(键:signInType)、user.attribute.labels.value(键:userPrincipalName) signInType 会映射为键为 signInType 的标签。如果 signInTypeuserPrincipalName 不为空,则将它们合并并映射为键为 userPrincipalName 的标签。
jobTitle user.title 直接从原始日志中的 jobTitle 字段映射。
mail user.email_addresses 直接从原始日志中的 mail 字段映射。如果 mail 以“svc-”开头,则 user_role.type 会设置为 SERVICE_ACCOUNT
mailNickname user.attribute.labels.value(键:mailNickname) 直接从原始日志中的 mailNickname 字段映射,并添加为键为 mailNickname 的标签。
manager.businessPhones empmanager.phone_numbers 如果 gopher-manager 为空,则映射到 empmanager.phone_numbers
manager.city empmanager.personal_address.city 如果 gopher-manager 为空,则映射到 empmanager.personal_address.city
manager.companyName empmanager.company_name 如果 gopher-manager 为空,则映射到 empmanager.company_name
manager.country empmanager.personal_address.country_or_region 如果 gopher-manager 为空,则映射到 empmanager.personal_address.country_or_region。如果 manager.countrymanager.usageLocation 均为空,则该字段留空。
manager.department empmanager.department 如果 gopher-manager 为空,则映射到 empmanager.department
manager.displayName empmanager.user_display_name 如果 gopher-manager 为空,则映射到 empmanager.user_display_name
manager.employeeId empmanager.employee_id 如果 gopher-manager 为空且 manager.employeeId 不为空,则映射到 empmanager.employee_id
manager.extension_employeeNumber empmanager.employee_id 如果 gopher-managermanager.employeeId 为空,但 manager.extension_employeeNumber 不为空,则映射到 empmanager.employee_id
manager.givenName empmanager.first_name 如果 gopher-manager 为空,则映射到 empmanager.first_name
manager.id empmanager.product_object_id 如果 gopher-manager 为空,则映射到 empmanager.product_object_id
manager.jobTitle empmanager.title 如果 gopher-manager 为空,则映射到 empmanager.title
manager.mail empmanager.email_addresses 如果 gopher-manager 为空,则映射到 empmanager.email_addresses
manager.onPremisesSamAccountName empmanager.userid 如果 gopher-manager 为空,则映射到 empmanager.userid
manager.onPremisesSecurityIdentifier empmanager.windows_sid 如果 gopher-manager 为空,则映射到 empmanager.windows_sid
manager.proxyAddresses empmanager.email_addresses, empmanager.group_identifiers 如果 gopher-manager 为空,则 manager.proxyAddresses 数组中的每个地址都会根据其是否以“smtp”或“SMTP”开头映射到 empmanager.email_addressesempmanager.group_identifiers
manager.refreshTokensValidFromDateTime empmanager.attribute.labels.value(键:refreshTokensValidFromDateTime) 如果 gopher-manager 为空,则映射为键为 refreshTokensValidFromDateTime 的标签。
manager.state empmanager.personal_address.state 如果 gopher-manager 为空,则映射到 empmanager.personal_address.state
manager.streetAddress empmanager.personal_address.name 如果 gopher-manager 为空,则映射到 empmanager.personal_address.name
manager.surname empmanager.last_name 如果 gopher-manager 为空,则映射到 empmanager.last_name
manager.usageLocation user.attribute.labels.value(键:manager_src_usageLocation)、empmanager.personal_address.country_or_region 映射为键为 manager_src_usageLocation 的标签。如果 manager.country 为空,则该值也会映射到 empmanager.personal_address.country_or_region
manager.userType empmanager.attribute.roles.name 如果 gopher-manager 为空,则映射到 empmanager.attribute.roles.name
onPremisesDistinguishedName user.attribute.labels.value(键:onPremisesDistinguishedName)、user.attribute.labels.value(键:onPremisesDistinguishedName-OU 数据) 完整标识名会映射为键为 onPremisesDistinguishedName 的标签。提取标识名的组织单位部分,并将其映射为键为 onPremisesDistinguishedName-OU data 的标签。如果 OU 部分包含“Admin”,则 user_role.type 设置为 ADMINISTRATOR。如果包含“服务账号”,则 user_role.type 设置为 SERVICE_ACCOUNT
onPremisesDomainName user.group_identifiers, user.attribute.labels.value(键:onPremisesDomainName) 直接映射到 user.group_identifiers 并添加为键为 onPremisesDomainName 的标签。
onPremisesImmutableId user.attribute.labels.value(键:onPremisesImmutableId) 直接从原始日志中的 onPremisesImmutableId 字段映射,并添加为键为 onPremisesImmutableId 的标签。
onPremisesSamAccountName user.userid、user.attribute.labels.value(键:onPremisesSamAccountName) 如果 sAMAccountName 为空,则映射到 user.userid。还会以键 onPremisesSamAccountName 的标签形式添加。
onPremisesSecurityIdentifier user.windows_sid 直接从原始日志中的 onPremisesSecurityIdentifier 字段映射。
proxyAddresses user.email_addresses, user.group_identifiers proxyAddresses 数组中的每个地址都会映射到 user.email_addressesuser.group_identifiers,具体取决于该地址是否以“smtp”或“SMTP”开头。如果地址以“smtp”或“SMTP”开头,则会移除“smtp:”或“SMTP:”前缀,并提取剩余的电子邮件地址,然后将其映射到 user.email_addresses
refreshTokensValidFromDateTime user.attribute.labels.value(键:refreshTokensValidFromDateTime) 直接从原始日志中的 refreshTokensValidFromDateTime 字段映射,并添加为键为 refreshTokensValidFromDateTime 的标签。
sAMAccountName user.userid 直接从原始日志中的 sAMAccountName 字段映射。
state user.personal_address.state 直接从原始日志中的 state 字段映射。
streetAddress user.personal_address.name 直接从原始日志中的 streetAddress 字段映射。
surname user.last_name 直接从原始日志中的 surname 字段映射。
usageLocation user.personal_address.country_or_region 如果 country 为空,则该值会映射到 user.personal_address.country_or_region
userPrincipalName user.email_addresses 直接从原始日志中的 userPrincipalName 字段映射。如果 userPrincipalName 以“svc-”开头,则 user_role.type 会设置为 SERVICE_ACCOUNT
userType user.attribute.roles.name 直接从原始日志中的 userType 字段映射,并添加到 user.attribute.roles.name
解析器逻辑 UDM 映射 逻辑
不适用 event.idm.entity.metadata.vendor_name 设置为“Microsoft”。
不适用 event.idm.entity.metadata.product_name 设置为“Azure Active Directory”。
不适用 event.idm.entity.metadata.entity_type 设置为“USER”。
不适用 event.idm.entity.metadata.collected_timestamp 设置为原始日志中的 create_time 字段。
accountEnabled user.user_authentication_status、user.attribute.labels.value(键:accountEnabled) 如果 accountEnabled 为 true,则 user.user_authentication_status 会设置为“ACTIVE”,并添加一个键为 accountEnabled、值为“true”的标签。否则,系统会添加一个键为 accountEnabled、值为“false”的标签。
empmanager-src.accountEnabled user.user_authentication_status、user.attribute.labels.value(键:accountEnabled) 如果 manager 为空且 empmanager-src.accountEnabled 为“true”,则 user.user_authentication_status 会设置为“ACTIVE”,并添加一个键为 accountEnabled 且值为“true”的标签。否则,系统会添加一个键为 accountEnabled、值为“false”的标签。
onPremisesDistinguishedName user_role.type 如果标识名的组织单位部分包含“Admin”,则 user_role.type 设置为 ADMINISTRATOR。如果包含“服务账号”,则 user_role.type 设置为 SERVICE_ACCOUNT
userPrincipalName user_role.type 如果 userPrincipalName 以“svc-”开头,则 user_role.type 会设置为 SERVICE_ACCOUNT
empmanager-src.onPremisesDistinguishedName manager_role.type 如果 gopher-manager 为空,并且经理的标识名的 OU 部分包含“Users”,则 manager_role.type 会设置为 ADMINISTRATOR。如果包含“服务账号”,则 manager_role.type 设置为 SERVICE_ACCOUNT
empmanager-src.userPrincipalName manager_role.type 如果 gopher-manager 为空且 empmanager-src.userPrincipalName 以“svc-”开头,则 manager_role.type 会设置为 SERVICE_ACCOUNT
mail user_role.type 如果 mail 以“svc-”开头,则 user_role.type 会设置为 SERVICE_ACCOUNT

需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。