Microsoft Azure AD 로그 수집
이 문서에서는 Google Security Operations 피드를 설정하여 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 구성 방법
- Azure 포털에 로그인합니다.
- 홈 > 앱 등록으로 이동하여 등록된 애플리케이션을 선택하거나 아직 애플리케이션을 만들지 않은 경우 애플리케이션을 등록합니다.
- 애플리케이션을 등록하려면 앱 등록 섹션에서 새 등록을 클릭합니다.
- 이름 필드에 애플리케이션의 표시 이름을 입력합니다.
지원되는 계정 유형 섹션에서 이 조직 디렉터리의 계정만 (단일 테넌트)을 선택합니다.
- 리디렉션 URI: 비워 둡니다 (서비스 주 구성원 인증에는 필요하지 않음).
등록을 클릭합니다.
개요 페이지로 이동하여 Google Security Operations 피드를 구성하는 데 필요한 애플리케이션 (클라이언트) ID와 디렉터리(테넌트) ID를 복사합니다.
API 권한을 클릭합니다.
권한 추가를 클릭한 다음 새 창에서 Microsoft Graph를 선택합니다.
애플리케이션 권한을 클릭합니다.
AuditLog.Read.All, Directory.Read.All, SecurityEvents.Read.All 권한을 선택합니다. 권한이 애플리케이션 권한이고 위임된 권한이 아닌지 확인합니다.
기본 디렉터리에 대한 관리자 동의 부여를 클릭합니다. 동의 프로세스의 일환으로 사용자 또는 관리자가 권한을 부여하면 애플리케이션이 API를 호출할 수 있습니다.
설정 > 관리로 이동합니다.
인증서 및 보안 비밀을 클릭합니다.
'새 클라이언트 보안 비밀번호'를 클릭합니다. 값 필드에 클라이언트 보안 비밀이 표시됩니다.
클라이언트 보안 비밀번호 값을 복사합니다. 이 값은 생성 시에만 표시되며 Azure 앱 등록 및 Google Security Operations 피드를 구성하는 데 필요합니다.
피드 설정
Google SecOps 플랫폼에서 피드를 설정하는 방법은 두 가지입니다.
- SIEM 설정 > 피드 > 새 피드 추가
- 콘텐츠 허브 > 콘텐츠 팩 > 시작하기
Microsoft Entra ID (Azure AD) 피드를 설정하는 방법
- Azure 플랫폼 팩을 클릭합니다.
- Azure AD 로그 유형을 찾습니다.
다음 필드의 값을 지정합니다.
- 소스 유형: 서드 파티 API (권장)
- OAuth 클라이언트 ID: 이전에 가져온 클라이언트 ID를 지정합니다.
- OAUTH 클라이언트 보안 비밀번호: 이전에 가져온 클라이언트 보안 비밀번호를 지정합니다.
- 테넌트 ID: 이전에 가져온 테넌트 ID를 지정합니다.
- API 전체 경로: Microsoft Graph REST API 엔드포인트 URL입니다.
- API 인증 엔드포인트: Microsoft Active Directory 인증 엔드포인트입니다.
고급 옵션
- 피드 이름: 피드를 식별하는 미리 채워진 값입니다.
- 애셋 네임스페이스: 피드와 연결된 네임스페이스입니다.
- 수집 라벨: 이 피드의 모든 이벤트에 적용되는 라벨입니다.
피드 만들기를 클릭합니다.
이 제품군 내에서 다양한 로그 유형에 대해 여러 피드를 구성하는 방법에 관한 자세한 내용은 제품별 피드 구성을 참고하세요.
Google Security Operations 피드에 대한 자세한 내용은 Google Security Operations 피드 문서를 참조하세요. 각 피드 유형의 요구사항은 유형별 피드 구성을 참조하세요.
필드 매핑 참조
이 파서 코드는 JSON 형식의 원시 Azure AD 로그를 통합 데이터 모델 (UDM)로 변환합니다. 먼저 불필요한 필드를 삭제하여 데이터를 정규화한 다음 사용자 세부정보, 타임스탬프, 이벤트 세부정보와 같은 관련 정보를 추출하여 일관된 표현과 분석을 위해 해당 UDM 필드에 매핑합니다.
UDM 매핑 테이블
| 로그 필드 | UDM 매핑 | 비고 |
|---|---|---|
about |
about |
|
accountEnabled |
user.user_authentication_statususer.attribute.labels.value (키: accountEnabled) |
accountEnabled가 true이면 user.user_authentication_status이 ACTIVE로 설정되고 키가 accountEnabled이고 값이 true인 라벨이 추가됩니다. 그렇지 않으면 accountEnabled 키와 false 값이 있는 라벨이 추가됩니다. |
additionalDetails |
additional.fields |
|
appOwnerTenantId |
target.resource.attribute.labels |
|
authenticationAppDeviceDetails |
additional.fields |
|
authenticationContextClassReference |
security_result.detection_fields |
|
autonomousSystemNumber |
principal.resource.attribute.labels |
|
browser |
network.http.user_agent |
|
browser |
network.http.user_agent |
|
businessPhones |
user.phone_numbers |
여러 전화번호가 추출되어 별도의 항목으로 매핑됩니다. |
city |
user.personal_address.city |
|
clientCredentialType |
additional.fields |
|
companyName |
user.company_name |
|
country |
user.personal_address.country_or_region |
country이 비어 있으면 usageLocation에서 값을 가져옵니다. |
createdDateTime |
user.attribute.creation_time |
RFC 3339 형식을 사용하여 원시 로그의 createdDateTime 필드에서 타임스탬프로 변환됩니다. |
cribl_pipe |
additional.fields |
|
crossTenantAccessType |
additional.fields |
|
department |
user.department |
여러 부서가 추출되어 별도의 항목으로 매핑됩니다. |
deviceDetail.displayName |
principal.hostname,principal.asset.hostname |
|
displayName |
user.user_display_name |
|
employeeId |
user.employee_id |
employeeId이 비어 있으면 extension_employeeNumber에서 값을 가져옵니다. |
employeeType |
user.attribute.labels.value (키: employeeType) |
원시 로그의 employeeType 필드에서 매핑되었으며 키 employeeType이 있는 라벨로 추가되었습니다. |
empmanager-src.accountEnabled |
user.user_authentication_statususer.attribute.labels.value (키: accountEnabled) |
manager이 비어 있고 empmanager-src.accountEnabled이 true이면 user.user_authentication_status이 ACTIVE로 설정되고 accountEnabled 키와 true 값이 있는 라벨이 추가됩니다. 그렇지 않으면 accountEnabled 키와 false 값이 있는 라벨이 추가됩니다. |
empmanager-src.onPremisesDistinguishedName |
manager_role.type |
gopher-manager이 비어 있고 관리자의 고유 이름 중 OU 부분에 Users이 포함되어 있으면 manager_role.type이 ADMINISTRATOR로 설정됩니다. Service Accounts이 포함된 경우 manager_role.type은 SERVICE_ACCOUNT로 설정됩니다. |
empmanager-src.userPrincipalName |
manager_role.type |
gopher-manager이 비어 있고 empmanager-src.userPrincipalName이 svc-로 시작하면 manager_role.type이 SERVICE_ACCOUNT로 설정됩니다. |
errorCode |
security_result.detection_fields |
|
extension_employeeNumber |
user.employee_id |
employeeId가 비어 있으면 user.employee_id에 매핑됩니다. |
extension_wfc_AccountingUnitName |
event.idm.entity.entity.labels.value (키: extension_wfc_AccountingUnitName) |
원시 로그의 extension_wfc_AccountingUnitName 필드에서 매핑되었으며 키 extension_wfc_AccountingUnitName이 있는 라벨로 추가되었습니다. |
extension_wfc_AccountType |
event.idm.entity.entity.labels.value (키: wfc_AccountType) |
원시 로그의 extension_wfc_AccountType 필드에서 매핑되고 키 wfc_AccountType이 있는 라벨로 추가됩니다. |
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이 있는 라벨로 추가되었습니다. |
failureReason |
security_result.description |
|
federatedCredentialId |
additional.fields |
|
flaggedForReview |
additional.fields |
|
givenName |
user.first_name |
|
gopher-devices |
event.idm.entity.relations |
gopher-devices 배열의 각 기기는 별도의 관계 항목에 매핑됩니다. deviceId은 product_object_id에 매핑되고, operatingSystem와 operatingSystemVersion는 결합되어 platform_version 모델을 형성하고 직접 매핑되며, createdDateTime는 타임스탬프로 변환되어 created_timestamp에 매핑됩니다. 관계는 OWNS로 설정되고 방향은 UNIDIRECTIONAL로 설정됩니다. |
gopher-groups |
event.idm.entity.relations |
gopher-groups 배열의 각 그룹은 별도의 관계 항목에 매핑됩니다. id는 product_object_id에 매핑되고 displayName는 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.country과 gopher-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 |
manager 및 gopher-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_addressesempmanager.group_identifiers |
manager이 비어 있으면 gopher-manager.proxyAddresses 배열의 각 주소가 smtp 또는 SMTP로 시작하는지에 따라 empmanager.email_addresses 또는 empmanager.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에 매핑됩니다. |
homeTenantId |
target.resource.attribute.labels |
|
homeTenantName |
target.resource.attribute.labels |
|
id |
user.product_object_id |
|
identities |
user.attribute.labels.value (키: signInType)user.attribute.labels.value (키: userPrincipalName) |
signInType은 signInType 키가 있는 라벨로 매핑됩니다. signInType 및 userPrincipalName가 비어 있지 않으면 결합되어 키 userPrincipalName가 있는 라벨로 매핑됩니다. |
identity |
principal.user.user_display_name |
|
incomingTokenType |
additional.fields |
|
initiatedBy.app.displayName |
principal.application |
|
initiatedBy.app.servicePrincipalId |
principal.resource.product_object_id |
|
initiatedBy.user.homeTenantId |
target.resource.attribute.labels |
|
initiatedBy.user.homeTenantName |
target.resource.attribute.labels |
|
initiatedBy.user.userType |
additional.fields |
|
ipAddressFromResourceProvider |
principal.resource.attribute.labels |
|
isTenantRestricted |
additional.fields |
|
jobTitle |
user.title |
|
loggedByService |
observer.application |
|
mail |
user.email_addresses |
mail이 svc-로 시작하면 user_role.type이 SERVICE_ACCOUNT로 설정됩니다. |
mail |
user_role.type |
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.country과 manager.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-manager 및 manager.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_addressesempmanager.group_identifiers |
gopher-manager가 비어 있으면 manager.proxyAddresses 배열의 각 주소가 empmanager.email_addresses 또는 empmanager.group_identifiers based on whether it starts withsmtporSMTP에 매핑됩니다. |
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에 매핑됩니다. |
mfaDetail.authDetail |
principal.user.phone_numbers |
|
onPremisesDistinguishedName |
user.attribute.labels.value (키: onPremisesDistinguishedName)user.attribute.labels.value (키: onPremisesDistinguishedName-OU data) |
전체 고유 이름은 키가 onPremisesDistinguishedName인 라벨로 매핑됩니다. 식별 이름의 OU 부분이 추출되어 키 onPremisesDistinguishedName-OU data이 있는 라벨로 매핑됩니다. OU 부분에 Admin이 포함된 경우 user_role.type이 ADMINISTRATOR로 설정됩니다. Service Accounts이 포함된 경우 user_role.type은 SERVICE_ACCOUNT로 설정됩니다. |
onPremisesDistinguishedName |
user_role.type |
식별 이름의 OU 부분에 Admin이 포함된 경우 user_role.type은 ADMINISTRATOR으로 설정됩니다. Service Accounts이 포함된 경우 user_role.type은 SERVICE_ACCOUNT로 설정됩니다. |
onPremisesDomainName |
user.group_identifiersuser.attribute.labels.value (키: onPremisesDomainName) |
user.group_identifiers에 직접 매핑되고 onPremisesDomainName 키가 있는 라벨로 추가됩니다. |
onPremisesImmutableId |
user.attribute.labels.value (키: onPremisesImmutableId) |
원시 로그의 onPremisesImmutableId 필드에서 매핑되었으며 키 onPremisesImmutableId이 있는 라벨로 추가되었습니다. |
onPremisesSamAccountName |
user.useriduser.attribute.labels.value (키: onPremisesSamAccountName) |
sAMAccountName이 비어 있으면 user.userid에 매핑됩니다. onPremisesSamAccountName 키가 있는 라벨로도 추가됩니다. |
onPremisesSecurityIdentifier |
user.windows_sid |
|
operationName |
metadata.product_event_type |
|
OrganizationId |
principal.resource.product_object_id |
|
originalRequestId |
network.session_id |
|
originalTransferMethod |
additional.fields |
|
Parser Logic |
UDM Mapping |
논리 |
policies.enforcedGrantControls |
security_result.detection_fields |
|
processingTimeInMilliseconds |
additional.fields |
|
properties.__UDI_RequiredFields_RegionScope |
target.location.country_or_region |
|
properties.additionalDetails |
additional.fields |
|
properties.alternateSignInName |
target.user.userid |
|
properties.appId |
principal.user.product_object_id |
|
properties.atContentH |
additional.fields |
|
properties.atContentP |
additional.fields |
|
properties.authenticationContextClassReferences |
additional.fields |
|
properties.C_DeviceId |
additional.fields |
|
properties.C_Iat |
additional.fields |
|
properties.C_Idtyp |
additional.fields |
|
properties.C_Sid |
additional.fields |
|
properties.category |
security_result.category_details |
|
properties.clientAuthMethod |
additional.fields |
|
properties.clientCredentialType |
additional.fields |
|
properties.correlationId |
security_result.detection_fields |
|
properties.deviceDetail.browser |
network.http.user_agent |
|
properties.deviceDetail.deviceId |
principal.asset.asset_id |
|
properties.deviceDetail.displayName |
principal.hostname,principal.asset.hostname |
|
properties.deviceDetail.operatingSystem |
principal.platform_version |
operatingSystem이 Win, Mac 또는 Lin로 시작하면 principal.platform에 매핑됩니다. |
properties.deviceDetail.trustType |
principal.asset.attribute.labels |
|
properties.EventData.AuthenticationPackageName |
security_result.about.resource.name |
|
properties.EventData.CallerProcessId |
principal.process.pid |
|
properties.EventData.CallerProcessName |
principal.process.file.full_path |
|
properties.EventData.CertIssuerName |
additional.fields |
|
properties.EventData.CertSerialNumber |
about.artifact.last_https_certificate.serial_number |
|
properties.EventData.CertThumbprint |
additional.fields |
|
properties.EventData.HandleId |
target.resource.attribute.labels |
|
properties.EventData.ImpersonationLevel |
additional.fields |
|
properties.EventData.IpAddress |
principal.ipprincipal.asset.ip |
|
properties.EventData.IpPort |
principal.port |
|
properties.EventData.KeyLength |
additional.fields |
|
properties.EventData.LmPackageName |
target.resource.attribute.labels |
|
properties.EventData.LogonGuid |
security_result.detection_fields |
|
properties.EventData.LogonProcessName |
target.process.file.names |
|
properties.EventData.LogonType |
extensions.auth.auth_details |
|
properties.EventData.NewSd |
security_result.detection_fields |
|
properties.EventData.ObjectName |
target.resource.name |
|
properties.EventData.ObjectServer |
target.resource.attribute.labels |
|
properties.EventData.ObjectType |
target.resource.resource_subtype |
|
properties.EventData.OldSd |
security_result.detection_fields |
|
properties.EventData.PreAuthType |
extensions.auth.mechanism |
|
properties.EventData.ProcessId |
target.process.pid |
|
properties.EventData.ProcessName" |
target.process.file.full_path |
|
properties.EventData.ServiceName |
target.application |
|
properties.EventData.ServiceSid |
target.resource.user.windows_sid |
|
properties.EventData.Source |
principal.ipprincipal.asset.ip |
|
properties.EventData.Status |
security_result.detection_fields |
|
properties.EventData.SubjectDomainName |
principal.administrative_domain |
|
properties.EventData.SubjectLogonId |
principal.resource.attribute.labels |
|
properties.EventData.SubjectUserName |
principal.user.userid |
|
properties.EventData.SubjectUserSid |
principal.user.windows_sid |
|
properties.EventData.TargetDomainName |
target.administrative_domain |
|
properties.EventData.TargetLogonId |
target.resource.attribute.labels |
|
properties.EventData.TargetSid |
target.user.windows_sid |
|
properties.EventData.TargetUserName |
target.user.userid |
|
properties.EventData.TargetUserSid |
target.user.windows_sid |
|
properties.EventData.TicketEncryptionType |
security_result.detection_fields |
|
properties.EventData.TicketOptions |
security_result.detection_fields" |
|
properties.EventData.TransmittedServices |
security_result.detection_fields |
|
properties.EventData.WorkstationName |
target.hostnametarget.asset.hostname |
|
properties.flaggedForReview |
additional.fields |
|
properties.homeTenantId |
target.resource.attribute.labels |
|
properties.incomingTokenType |
additional.fields |
|
properties.initiatedBy.app.displayName |
principal.user.user_display_name |
|
properties.initiatedBy.user.displayName |
principal.user.user_display_name |
|
properties.initiatedBy.user.id |
principal.user.product_object_id |
|
properties.initiatedBy.user.ipAddress |
principal.ip,principal.asset.ip |
|
properties.ipAddressFromResourceProvider |
principal.resource.attribute.labels |
|
properties.isInteractive |
additional.fields |
|
properties.isTenantRestricted |
additional.fields |
|
properties.isThroughGlobalSecureAccess |
additional.fields |
|
properties.location.geoCoordinates.altitude |
additional.fields |
|
properties.loggedByService |
observer.application |
|
properties.mfaDetail.authDetail |
principal.user.phone_numbers |
|
properties.operationType |
target.resource.attribute.labels |
|
properties.originalRequestId |
network.session_id |
|
properties.originalTransferMethod |
additional.fields |
|
properties.processingTimeInMilliseconds |
additional.fields |
|
properties.RecordId |
metadata.product_log_id |
|
properties.requestId |
security_result.detection_fields |
|
properties.requestMethod |
network.http.method |
|
properties.requestUri |
network.http.referral_url |
|
properties.resourceDisplayName |
target.resource.name |
|
properties.resourceId |
target.resource.attribute.labels |
|
properties.resourceOwnerTenantId |
target.resource.attribute.labels |
|
properties.resourceTenantId |
target.resource.attribute.labels |
|
properties.responseSizeBytes |
network.received_bytes |
|
properties.responseStatusCode |
network.http.response_code |
|
properties.resultReason |
additional.fieldssecurity_result.summary |
|
properties.resultType |
additional.fields |
|
properties.riskDetail |
security_result.detection_fields |
|
properties.riskEventType |
security_result.detection_fields |
|
properties.riskLastUpdatedDateTime |
security_result.detection_fields |
|
properties.riskLevel |
security_result.detection_fields |
|
properties.riskLevelAggregated |
security_result.detection_fields |
|
properties.riskLevelDuringSignIn |
security_result.detection_fields |
|
properties.riskState |
security_result.detection_fields |
|
properties.riskType |
security_result.detection_fields |
|
properties.rngcStatus |
additional.fields |
|
properties.roles |
principal.user.attribute.roles |
|
properties.scopes |
security_result.detection_fields |
|
properties.servicePrincipalCredentialKeyId |
additional.fields |
|
properties.sessionLifetimePolicies |
security_result.detection_fields |
|
properties.signInActivityId |
additional.fields |
|
properties.SignInBondData.DeviceDetails.DeviceTrustType |
principal.asset.attribute.labels |
|
properties.SignInBondData.DeviceDetails.IsCompliant |
security_result.rule_labels |
|
properties.SignInBondData.DeviceDetails.IsManaged |
principal.asset.attribute.labels |
|
properties.SignInBondData.DisplayDetails.AttemptedUsername |
principal.user.email_addresses |
|
properties.SignInBondData.DisplayDetails.ProxyRestrictionTargetTenantName |
additional.fields |
|
properties.SignInBondData.DisplayDetails.ResourceDisplayName |
target.resource.name |
|
properties.SignInBondData.LocationDetails.IPChain |
target.ip |
|
properties.SignInBondData.LocationDetails.Latitude |
additional.fields |
|
properties.SignInBondData.LocationDetails.Longitude |
additional.fields |
|
properties.SignInBondData.MfaDetails |
additional.fields |
|
properties.SignInBondData.ProtocolDetails.AuthenticationMethodsUsed |
extensions.auth.auth_details |
|
properties.SignInBondData.ProtocolDetails.DomainHintPresent |
additional.fields |
|
properties.SignInBondData.ProtocolDetails.IsInteractive |
additional.fields |
|
properties.SignInBondData.ProtocolDetails.LoginHintPresent |
additional.fields |
|
properties.SignInBondData.ProtocolDetails.NetworkLocation |
additional.fields" |
|
properties.SignInBondData.ProtocolDetails.Protocol |
security_result.detection_fields |
properties.SignInBondData.ProtocolDetails.Protocol == WSTrust이면 security_result.detection_fields에 매핑되고 그렇지 않으면 network.application_protocol에 매핑됩니다. |
properties.SignInBondData.RamDetails.RamRecommendedAction |
additional.fields |
|
properties.SignInBondData.RamDetails.RamRecommender |
additional.fields |
|
properties.signInTokenProtectionStatus |
additional.fields |
|
properties.ssoExtensionVersion |
additional.fields |
|
properties.status.errorCode |
security_result.detection_fieldssecurity_result.action |
|
properties.targetResources |
target.resource.attribute.labels |
|
properties.tenantGeo |
Geolocation.country_or_region |
|
properties.tokenIssuerName |
additional.fields |
|
properties.tokenProtectionStatusDetails.signInSessionStatus |
additional.fields |
|
properties.tokenProtectionStatusDetails.signInSessionStatusCode |
additional.fields |
|
properties.userDisplayName |
principal.user.user_display_name |
|
properties.wids |
additional.fields |
|
proxyAddresses |
user.email_addressesuser.group_identifiers |
proxyAddresses 배열의 각 주소는 smtp 또는 SMTP로 시작하는지에 따라 user.email_addresses 또는 user.group_identifiers에 매핑됩니다. 주소가 smtp 또는 SMTP로 시작하면 smtp: 또는 SMTP: 접두사가 삭제되고 나머지 이메일 주소가 추출되어 user.email_addresses에 매핑됩니다. |
record.CorrelationId |
additional.fields |
|
record.CrossTenantAccessType |
additional.fields |
|
record.DeviceDetail.deviceId |
network.session_id |
|
record.DeviceDetail.operatingSystem |
principal.platform_version |
operatingSystem이 Win, Mac 또는 Lin로 시작하면 principal.platform에 매핑됩니다. |
record.IsInteractive |
additional.fields |
|
record.level |
security_result.severity_details |
record_level이 ["INFORMATION", "INFORMATIONAL", "0", "4", "WARNING", "1", "3","ERROR", "2","CRITICAL"]에 있으면 security_result.severity에 매핑됩니다. |
record.location |
principal.location.name |
|
record.properties.appServicePrincipalId |
additional.fields |
|
record.properties.authenticationProtocol |
additional.fields |
|
record.properties.autonomousSystemNumber |
principal.resource.attribute.labels |
|
record.properties.C_DeviceId |
principal.asset.asset_id |
|
record.properties.crossTenantAccessType |
additional.fields |
|
record.properties.deviceDetail.isCompliant |
security_result.rule_labels |
|
record.properties.deviceDetail.isManaged |
principal.asset.attribute.labels |
|
record.properties.deviceDetail.trustType |
principal.asset.attribute.labels |
|
record.properties.flaggedForReview |
additional.fields |
|
record.properties.incomingTokenType |
additional.fields |
|
record.properties.isInteractive |
extensions.auth.mechanism |
|
record.properties.isTenantRestricted |
additional.fields |
|
record.properties.isThroughGlobalSecureAccess |
additional.fields |
|
record.properties.location |
target.location.name |
|
record.properties.originalTransferMethod |
additional.fields |
|
record.properties.resourceDisplayName |
principal.resource.name |
|
record.properties.riskDetail |
security_result.detection_fields |
|
record.properties.riskLevelAggregated |
security_result.detection_fields |
|
record.properties.riskLevelDuringSignIn |
security_result.detection_fields |
|
record.properties.riskState |
security_result.detection_fields |
|
record.properties.rngcStatus |
additional.fields |
|
record.properties.roles |
principal.user.attribute.roles |
|
record.properties.scopes |
security_result.detection_fields |
|
record.properties.servicePrincipalId |
target.resource.attribute.labels |
|
record.properties.servicePrincipalId |
principal.user.userid |
|
record.properties.signInTokenProtectionStatus |
additional.fields |
|
record.properties.ssoExtensionVersion |
additional.fields |
|
record.properties.status.additionalDetails |
additional.fields |
|
record.properties.tokenProtectionStatusDetails.signInSessionStatus |
additional.fields |
|
record.properties.tokenProtectionStatusDetails.signInSessionStatusCode |
additional.fields |
|
record.RiskDetail |
security_result.detection_fields |
|
record.RiskEventTypes |
security_result.detection_fields |
|
record.RiskLevelAggregated |
security_result.detection_fields |
|
record.RiskLevelDuringSignIn |
security_result.detection_fields |
|
record.RiskState |
security_result.detection_fields |
|
refreshTokensValidFromDateTime |
user.attribute.labels.value (키: refreshTokensValidFromDateTime) |
원시 로그의 refreshTokensValidFromDateTime 필드에서 매핑되었으며 키 refreshTokensValidFromDateTime이 있는 라벨로 추가되었습니다. |
resourceOwnerTenantId |
target.resource.attribute.labels |
|
resourceTenantId |
target.resource.attribute.labels |
|
resultDescription |
security_result.description |
|
resultReason |
additional.fields |
|
resultType |
additional.fields |
|
riskDetail |
security_result.detection_fields |
|
riskLevelAggregated |
security_result.detection_fields |
|
riskLevelDuringSignIn |
security_result.detection_fields |
|
riskState |
security_result.detection_fields |
|
sAMAccountName |
user.userid |
|
servicePrincipalCredentialKeyId |
additional.fields |
|
servicePrincipalCredentialThumbprint |
additional.fields |
|
servicePrincipalId |
target.resource.attribute.labels |
|
servicePrincipalName |
additional.fields |
|
sessionId |
network.session_id |
|
signInIdentifier |
target.user.userid |
|
signInIdentifierType |
additional.fields |
|
signInTokenProtectionStatus |
additional.fields |
|
state |
user.personal_address.state |
|
status.additionalDetails |
additional.fields |
|
streetAddress |
user.personal_address.name |
|
surname |
user.last_name |
|
targets.modifiedProperties |
target.resource.attribute.labels |
|
tokenIssuerName |
additional.fields |
|
tokenIssuerType |
additional.fields |
|
tokenProtectionStatusDetails.signInSessionStatus |
security_result.detection_fields |
|
uniqueTokenIdentifier |
additional.fields |
|
usageLocation |
user.personal_address.country_or_region |
country이 비어 있으면 값이 user.personal_address.country_or_region에 매핑됩니다. |
userDisplayName |
principal.user.user_display_name |
|
userId |
principal.user.product_object_id |
|
userPrincipalName |
user.email_addresses |
userPrincipalName이 svc-로 시작하면 user_role.type이 SERVICE_ACCOUNT로 설정됩니다. |
userPrincipalName |
user_role.type |
userPrincipalName이 svc-로 시작하면 user_role.type이 SERVICE_ACCOUNT로 설정됩니다. |
userType |
additional.fields |
|
| 해당 사항 없음 | 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 필드로 설정됩니다. |
UDM 매핑 델타 참조
2026년 1월 1일 Google SecOps에서 Azure AD 로그 필드를 UDM 필드에 매핑하는 방식과 이벤트 유형 매핑에 상당한 변경사항이 포함된 새로운 버전의 Azure AD 파서를 출시했습니다.
로그 필드 매핑 델타
다음 표에는 2026년 1월 1일 이전에 노출된 Azure AD 로그-UDM 필드와 그 이후의 매핑 델타가 나와 있습니다 (각각 이전 매핑 및 현재 매핑 열에 나열됨).
| 로그 필드 | 이전 매핑 | 현재 매핑 |
|---|---|---|
additionalDetails |
security_result.description |
additional.fields |
browser |
principal.resource.attribute.labels |
network.http.user_agent |
browser |
principal.resource.attribute.labels |
network.http.user_agent |
deviceDetail.displayName |
principal.asset.hardware |
principal.hostname,principal.asset.hostname |
errorCode |
security_result.rule_id |
security_result.detection_fields |
failureReason |
additional.fields |
security_result.description |
identity |
target.user.user_display_name |
principal.user.user_display_name |
loggedByService |
target.application |
observer.application |
operationName |
additional.fields |
metadata.product_event_type |
OrganizationId |
principal.resource.id |
principal.resource.product_object_id |
properties.homeTenantId |
additional.fields |
target.resource.attribute.labels |
properties.initiatedBy.user.id |
principal.user.windows_sid |
principal.user.product_object_id |
properties.resourceOwnerTenantId |
additional.fields |
target.resource.attribute.labels |
properties.riskDetail |
additional.fields |
security_result.detection_fields |
properties.riskEventType |
additional.fields |
security_result.detection_fields |
properties.riskLastUpdatedDateTime |
additional.fields |
security_result.detection_fields |
properties.riskLevel |
additional.fields |
security_result.detection_fields |
properties.riskLevelAggregated |
additional.fields |
security_result.detection_fields |
properties.riskLevelDuringSignIn |
additional.fields |
security_result.detection_fields |
properties.riskState |
additional.fields |
security_result.detection_fields |
properties.riskType |
additional.fields |
security_result.detection_fields |
properties.userDisplayName |
target.user.user_display_name |
principal.user.user_display_name |
record.CorrelationId |
metadata.product_log_id |
additional.fields |
record.properties.C_DeviceId |
additional.fields |
principal.asset.asset_id |
record.properties.resourceDisplayName |
target.resource.attribute.labels |
principal.resource.name |
record.properties.riskDetail |
additional.fields |
security_result.detection_fields |
record.properties.riskLevelAggregated |
additional.fields |
security_result.detection_fields |
record.properties.riskLevelDuringSignIn |
additional.fields |
security_result.detection_fields |
record.properties.riskState |
additional.fields |
security_result.detection_fields |
record.properties.roles |
target.user.role_name |
principal.user.attribute.roles |
record.properties.servicePrincipalId |
additional.fields |
target.resource.attribute.labels |
record.properties.servicePrincipalId |
additional.fields |
principal.user.userid |
record.RiskDetail |
target.resource.attribute.labels |
security_result.detection_fields |
record.RiskEventTypes |
target.resource.attribute.labels |
security_result.detection_fields |
record.RiskLevelAggregated |
target.resource.attribute.labels |
security_result.detection_fields |
record.RiskState |
target.resource.attribute.labels |
security_result.detection_fields |
resultType |
security_result.rule_id |
additional.fields |
riskDetail |
additional.fields |
security_result.detection_fields |
riskLevelAggregated |
additional.fields |
security_result.detection_fields |
riskLevelDuringSignIn |
additional.fields |
security_result.detection_fields |
riskState |
additional.fields |
security_result.detection_fields |
riskState |
additional.fields |
security_result.detection_fields |
status.additionalDetails |
security_result.description |
additional.fields |
userDisplayName |
target.user.user_display_name |
principal.user.user_display_name |
userId |
target.user.product_object_id |
principal.user.product_object_id |
이벤트 유형 매핑 델타
다음 표에는 2026년 1월 1일 이전과 이후의 Azure AD 이벤트 유형 처리의 차이가 나와 있습니다 (각각 이전 event_type 및 현재 event_type 열에 나열됨).
| 로그의 이벤트 ID | 이전 event_type | 현재 event_type | 설명 |
|---|---|---|---|
has_resource = true |
GENERIC_EVENT |
USER_RESOURCE_ACCESS |
이벤트가 리소스 (has_resource = true로 표시됨)와 관련된 경우 이벤트 유형은 USER_RESOURCE_ACCESS에 매핑됩니다. |
operationName = Add member to group |
USER_CHANGE_PERMISSIONS |
GROUP_MODIFICATION |
이벤트 유형은 특히 그룹에 구성원을 추가하는 작업 (여기서 operationName = Add member to group)의 경우 GROUP_MODIFICATION에 매핑됩니다. |
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.