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 포털에 로그인합니다.
- 홈 > 앱 등록으로 이동하여 등록된 애플리케이션을 선택하거나 아직 애플리케이션을 만들지 않은 경우 애플리케이션을 등록합니다.
- 애플리케이션을 등록하려면 앱 등록 섹션에서 새 등록을 클릭합니다.
- 이름 필드에 애플리케이션의 표시 이름을 입력합니다.
- 지원되는 계정 유형 섹션에서 필요한 옵션을 선택하여 애플리케이션을 사용하거나 API에 액세스할 수 있는 사용자를 지정합니다.
- 등록을 클릭합니다.
- 개요 페이지로 이동하여 Google Security Operations 피드를 구성하는 데 필요한 애플리케이션 (클라이언트) ID와 디렉터리(테넌트) ID를 복사합니다.
- API 권한을 클릭합니다.
- 권한 추가를 클릭한 다음 새 창에서 Microsoft Graph를 선택합니다.
- 애플리케이션 권한을 클릭합니다.
- AuditLog.Read.All, Directory.Read.All, SecurityEvents.Read.All 권한을 선택합니다. 권한이 위임된 권한이 아닌 애플리케이션 권한인지 확인합니다.
- 기본 디렉터리에 대한 관리자 동의 허용을 클릭합니다. 동의 절차의 일환으로 사용자 또는 관리자가 애플리케이션에 권한을 부여하면 애플리케이션은 API를 호출할 수 있습니다.
- 설정 > 관리로 이동합니다.
- 인증서 및 보안 비밀을 클릭합니다.
- '새 클라이언트 암호'를 클릭합니다. 값 필드에 클라이언트 보안 비밀이 표시됩니다.
- 클라이언트 보안 비밀번호 값을 복사합니다. 이 값은 생성 시점에만 표시되며 Azure 앱 등록 및 Google Security Operations 피드 구성에 필요합니다.
Azure AD 로그를 수집하도록 Google Security Operations에서 피드 구성
- SIEM 설정 > 피드를 선택합니다.
- 새로 추가를 클릭합니다.
- 피드 이름에 고유한 이름을 입력합니다.
- 소스 유형으로 서드 파티 API를 선택합니다.
- 로그 유형으로 Azure AD를 선택합니다.
- 다음을 클릭합니다.
- 다음 필수 입력 매개변수를 구성합니다.
- OAUTH 클라이언트 ID: 이전에 가져온 클라이언트 ID를 지정합니다.
- OAUTH 클라이언트 보안 비밀: 이전에 가져온 클라이언트 보안 비밀을 지정합니다.
- 테넌트 ID: 이전에 가져온 테넌트 ID를 지정합니다.
- 다음을 클릭한 후 제출을 클릭합니다.
Google Security Operations 피드에 대한 자세한 내용은 Google Security Operations 피드 문서를 참조하세요. 각 피드 유형의 요구사항은 유형별 피드 구성을 참조하세요. 피드를 만들 때 문제가 발생하면 Google Security Operations 지원팀에 문의하세요.
필드 매핑 참조
이 파서 코드는 JSON 형식의 원시 Azure AD 로그를 통합 데이터 모델 (UDM)로 변환합니다. 먼저 불필요한 필드를 삭제하여 데이터를 정규화한 다음 사용자 세부정보, 타임스탬프, 이벤트 세부정보와 같은 관련 정보를 추출하여 일관된 표현과 분석을 위해 해당 UDM 필드에 매핑합니다.
UDM 매핑 표
로그 필드 | UDM 매핑 | 논리 |
---|---|---|
activityDateTime | read_only_udm.metadata.event_timestamp.seconds | 값은 activityDateTime 필드에서 추출되고 에포크 이후 초로 변환됩니다. |
activityDisplayName | read_only_udm.security_result.summary | 값은 activityDisplayName 필드에서 직접 매핑됩니다. |
additionalDetails.0.value | read_only_udm.network.http.user_agent | 값은 additionalDetails.0.value 필드에서 직접 매핑됩니다. |
additionalDetails.1.key | read_only_udm.target.resource.attribute.labels.key | 값은 additionalDetails.1.key 필드에서 직접 매핑됩니다. |
additionalDetails.1.value | read_only_udm.target.resource.attribute.labels.value | 값은 additionalDetails.1.value 필드에서 직접 매핑됩니다. |
am_category | read_only_udm.metadata.description | 값은 am_category 필드에서 직접 매핑됩니다. |
am_tenantId | read_only_udm.metadata.product_deployment_id | 값은 am_tenantId 필드에서 직접 매핑됩니다. |
appDisplayName | read_only_udm.target.application | 값은 appDisplayName 필드에서 직접 매핑됩니다. appDisplayName 가 비어 있으면 resourceDisplayName 에서 값을 가져옵니다. |
appId | read_only_udm.target.resource.attribute.labels.value | 값은 appId 필드에서 직접 매핑됩니다. |
appliedConditionalAccessPolicies.displayName | read_only_udm.about.user.user_display_name | 값은 appliedConditionalAccessPolicies.displayName 필드에서 직접 매핑됩니다. |
appliedConditionalAccessPolicies.enforcedGrantControls | read_only_udm.security_result.rule_labels.value | 값은 appliedConditionalAccessPolicies.enforcedGrantControls 필드에서 직접 매핑됩니다. |
appliedConditionalAccessPolicies.enforcedSessionControls | read_only_udm.security_result.rule_labels.value | 값은 appliedConditionalAccessPolicies.enforcedSessionControls 필드에서 직접 매핑됩니다. |
appliedConditionalAccessPolicies.id | read_only_udm.about.user.userid | 값은 appliedConditionalAccessPolicies.id 필드에서 직접 매핑됩니다. |
appliedConditionalAccessPolicies.result | read_only_udm.about.labels.value | 값은 appliedConditionalAccessPolicies.result 필드에서 직접 매핑됩니다. |
authenticationDetails.authenticationMethod | read_only_udm.security_result.detection_fields.value | 값은 authenticationDetails.authenticationMethod 필드에서 직접 매핑됩니다. |
authenticationDetails.authenticationMethodDetail | read_only_udm.security_result.detection_fields.value | 값은 authenticationDetails.authenticationMethodDetail 필드에서 직접 매핑됩니다. |
authenticationDetails.authenticationStepDateTime | read_only_udm.security_result.detection_fields.value | 값은 authenticationDetails.authenticationStepDateTime 필드에서 직접 매핑됩니다. |
authenticationDetails.authenticationStepRequirement | read_only_udm.security_result.detection_fields.value | 값은 authenticationDetails.authenticationStepRequirement 필드에서 직접 매핑됩니다. |
authenticationDetails.authenticationStepResultDetail | read_only_udm.security_result.detection_fields.value | 값은 authenticationDetails.authenticationStepResultDetail 필드에서 직접 매핑됩니다. |
authenticationProcessingDetails.key | read_only_udm.additional.fields.key | 이 값은 authenticationProcessingDetails.key 필드에서 직접 매핑되며 접두사는 'authenticationProcessingDetails - '입니다. |
authenticationProcessingDetails.value | read_only_udm.additional.fields.value.string_value | 값은 authenticationProcessingDetails.value 필드에서 직접 매핑됩니다. |
callerIpAddress | read_only_udm.principal.ip | 값은 callerIpAddress 필드에서 직접 매핑됩니다. |
callerIpAddress | read_only_udm.principal.asset.ip | 값은 callerIpAddress 필드에서 직접 매핑됩니다. |
카테고리 | read_only_udm.metadata.description | 값은 category 필드에서 직접 매핑됩니다. |
clientAppUsed | read_only_udm.principal.application | 값은 clientAppUsed 필드에서 직접 매핑됩니다. |
conditionalAccessStatus | read_only_udm.additional.fields.value.string_value | 값은 conditionalAccessStatus 필드에서 직접 매핑됩니다. |
correlationId | read_only_udm.network.session_id | 값은 correlationId 필드에서 직접 매핑됩니다. |
correlationId | read_only_udm.security_result.detection_fields.value | 값은 correlationId 필드에서 직접 매핑됩니다. |
createdDateTime | read_only_udm.metadata.event_timestamp.seconds | 값은 createdDateTime 필드에서 추출되고 에포크 이후의 초로 변환됩니다. |
deviceDetail.browser | read_only_udm.network.http.user_agent | 값은 deviceDetail.browser 필드에서 직접 매핑됩니다. |
deviceDetail.deviceId | read_only_udm.principal.asset.asset_id | 값은 deviceDetail.deviceId 필드에서 직접 매핑되며 접두사로 '기기 ID:'가 추가됩니다. |
deviceDetail.deviceId | read_only_udm.principal.asset_id | 값은 deviceDetail.deviceId 필드에서 직접 매핑되며 접두사로 '기기 ID:'가 추가됩니다. |
deviceDetail.displayName | read_only_udm.principal.asset.hostname | 값은 deviceDetail.displayName 필드에서 직접 매핑됩니다. |
deviceDetail.isCompliant | read_only_udm.principal.asset.attribute.labels.value | 값은 deviceDetail.isCompliant 필드에서 직접 매핑됩니다. |
deviceDetail.isManaged | read_only_udm.principal.asset.attribute.labels.value | 값은 deviceDetail.isManaged 필드에서 직접 매핑됩니다. |
deviceDetail.operatingSystem | read_only_udm.principal.platform_version | 값은 deviceDetail.operatingSystem 필드에서 직접 매핑됩니다. |
deviceDetail.trustType | read_only_udm.principal.asset.attribute.labels.value | 값은 deviceDetail.trustType 필드에서 직접 매핑됩니다. |
durationMs | read_only_udm.additional.fields.value.string_value | 값은 durationMs 필드에서 직접 매핑됩니다. |
errorCode | read_only_udm.security_result.rule_id | 값은 errorCode 필드에서 직접 매핑됩니다. |
ID | read_only_udm.target.user.user_display_name | 값이 userId 과 다르고 이메일 주소 패턴과 일치하지 않으면 identity 필드에서 직접 매핑됩니다. |
initiatedBy.user.displayName | read_only_udm.principal.user.user_display_name | 값은 initiatedBy.user.displayName 필드에서 직접 매핑됩니다. |
initiatedBy.user.id | read_only_udm.principal.user.userid | 값은 initiatedBy.user.id 필드에서 직접 매핑됩니다. |
initiatedBy.user.ipAddress | read_only_udm.principal.ip | 값은 initiatedBy.user.ipAddress 필드에서 직접 매핑됩니다. |
initiatedBy.user.ipAddress | read_only_udm.principal.asset.ip | 값은 initiatedBy.user.ipAddress 필드에서 직접 매핑됩니다. |
initiatedBy.user.userPrincipalName | read_only_udm.principal.user.email_addresses | 값이 이메일 주소 패턴과 일치하는 경우 initiatedBy.user.userPrincipalName 필드에서 직접 매핑됩니다. |
ipAddress | read_only_udm.principal.ip | 값은 grok 패턴을 사용하여 ipAddress 필드에서 추출하여 IP 주소를 추출합니다. |
ipAddress | read_only_udm.principal.asset.ip | 값은 grok 패턴을 사용하여 ipAddress 필드에서 추출하여 IP 주소를 추출합니다. |
isInteractive | read_only_udm.extensions.auth.mechanism | 값은 isInteractive 가 'true'이면 'INTERACTIVE'에 매핑되고 그 밖의 경우에는 'MECHANISM_OTHER'에 매핑됩니다. |
isInteractive | read_only_udm.security_result.detection_fields.value | 값은 isInteractive 필드에서 직접 매핑됩니다. |
레벨 | read_only_udm.security_result.severity | 값은 다음 로직에 따라 level 필드에서 매핑됩니다. * 'Information', 'Informational', '0', '4'는 'INFORMATIONAL'로 매핑됩니다. * '경고', '1', '3'은 'MEDIUM'에 매핑됩니다. * '오류', '2'는 'ERROR'에 매핑됩니다. * 'Critical', 'CRITICAL', 'critical'은 'CRITICAL'에 매핑됩니다. |
레벨 | read_only_udm.security_result.severity_details | 값은 level 필드에서 직접 매핑됩니다. |
location.city | read_only_udm.principal.location.city | 값은 location.city 필드에서 직접 매핑됩니다. |
location.countryOrRegion | read_only_udm.principal.location.country_or_region | 값은 location.countryOrRegion 필드에서 직접 매핑됩니다. |
location.geoCoordinates.latitude | read_only_udm.principal.location.region_coordinates.latitude | 값은 location.geoCoordinates.latitude 필드에서 직접 매핑되고 부동 소수점 수로 변환됩니다. |
location.geoCoordinates.latitude | read_only_udm.principal.location.region_latitude | 값은 location.geoCoordinates.latitude 필드에서 직접 매핑되고 부동 소수점 수로 변환됩니다. |
location.geoCoordinates.longitude | read_only_udm.principal.location.region_coordinates.longitude | 값은 location.geoCoordinates.longitude 필드에서 직접 매핑되고 부동 소수점 수로 변환됩니다. |
location.geoCoordinates.longitude | read_only_udm.principal.location.region_longitude | 값은 location.geoCoordinates.longitude 필드에서 직접 매핑되고 부동 소수점 수로 변환됩니다. |
location.state | read_only_udm.principal.location.state | 값은 location.state 필드에서 직접 매핑됩니다. |
networkLocationDetails.networkNames | read_only_udm.additional.fields.value.string_value | 이 값은 networkLocationDetails.networkNames 배열의 모든 값을 쉼표로 구분하여 연결하여 생성됩니다. |
networkLocationDetails.networkType | read_only_udm.additional.fields.value.string_value | 값은 networkLocationDetails.networkType 필드에서 직접 매핑됩니다. |
networkLocationDetails.networkType | read_only_udm.security_result.detection_fields.value | 값은 networkLocationDetails.networkType 필드에서 직접 매핑됩니다. |
operationName | read_only_udm.metadata.event_type | operationName 이 '로그인 활동'인 경우 값은 'USER_LOGIN'에 매핑되고, operationName 이 '그룹에 구성원 추가'인 경우 'USER_CHANGE_PERMISSIONS'에 매핑되고, operationName 이 '서비스 주 구성원에 앱 역할 할당 추가'인 경우 'USER_RESOURCE_UPDATE_PERMISSIONS'에 매핑됩니다. 그 외의 경우에는 다른 필드의 존재 여부에 따라 값이 결정됩니다. * has_target_user 가 'true'인 경우 'USER_LOGIN' * has_principal_user 가 'true'인 경우 'USER_UNCATEGORIZED' * has_principal 이 'true'인 경우 'STATUS_UPDATE' * 그 외의 경우 'GENERIC_EVENT'입니다. |
operationType | read_only_udm.security_result.action_details | 값은 operationType 필드에서 직접 매핑됩니다. |
properties.activity | read_only_udm.security_result.summary | 값은 properties.activity 필드에서 직접 매핑됩니다. |
properties.activityDateTime | read_only_udm.metadata.event_timestamp.seconds | 값은 properties.activityDateTime 필드에서 추출되고 에포크 이후 초로 변환됩니다. |
properties.additionalInfo | read_only_udm.network.http.user_agent | 값은 JSON 문자열을 파싱하고 'userAgent' 키에 해당하는 값을 추출하여 properties.additionalInfo 필드에서 추출됩니다. |
properties.additionalInfo | read_only_udm.target.url | 값은 JSON 문자열을 파싱하고 'alertUrl' 키에 해당하는 값을 추출하여 properties.additionalInfo 필드에서 추출됩니다. |
properties.appId | read_only_udm.target.resource.attribute.labels.value | 값은 properties.appId 필드에서 직접 매핑됩니다. |
properties.appDisplayName | read_only_udm.target.application | 값은 properties.appDisplayName 필드에서 직접 매핑됩니다. |
properties.appliedConditionalAccessPolicies.displayName | read_only_udm.security_result.rule_name | 값은 properties.appliedConditionalAccessPolicies.displayName 필드에서 직접 매핑됩니다. |
properties.appliedConditionalAccessPolicies.id | read_only_udm.security_result.rule_id | 값은 properties.appliedConditionalAccessPolicies.id 필드에서 직접 매핑됩니다. |
properties.appliedConditionalAccessPolicies.result | read_only_udm.security_result.detection_fields.value | 값은 properties.appliedConditionalAccessPolicies.result 필드에서 직접 매핑됩니다. |
properties.authenticationDetails.authenticationMethod | read_only_udm.security_result.detection_fields.value | 값은 properties.authenticationDetails.authenticationMethod 필드에서 직접 매핑됩니다. |
properties.authenticationDetails.authenticationMethodDetail | read_only_udm.security_result.detection_fields.value | 값은 properties.authenticationDetails.authenticationMethodDetail 필드에서 직접 매핑됩니다. |
properties.authenticationDetails.authenticationStepDateTime | read_only_udm.security_result.detection_fields.value | 값은 properties.authenticationDetails.authenticationStepDateTime 필드에서 직접 매핑됩니다. |
properties.authenticationDetails.authenticationStepRequirement | read_only_udm.security_result.detection_fields.value | 값은 properties.authenticationDetails.authenticationStepRequirement 필드에서 직접 매핑됩니다. |
properties.authenticationDetails.authenticationStepResultDetail | read_only_udm.security_result.detection_fields.value | 값은 properties.authenticationDetails.authenticationStepResultDetail 필드에서 직접 매핑됩니다. |
properties.authenticationProcessingDetails.key | read_only_udm.additional.fields.key | 값은 properties.authenticationProcessingDetails.key 필드에서 직접 매핑되며 'properties authenticationProcessingDetails - '가 접두사로 추가됩니다. |
properties.authenticationProcessingDetails.value | read_only_udm.additional.fields.value.string_value | 값은 properties.authenticationProcessingDetails.value 필드에서 직접 매핑됩니다. |
properties.authenticationRequirement | read_only_udm.additional.fields.value.string_value | 값은 properties.authenticationRequirement 필드에서 직접 매핑됩니다. |
properties.authenticationRequirementPolicies.detail | read_only_udm.security_result.detection_fields.value | 값은 properties.authenticationRequirementPolicies.detail 필드에서 직접 매핑됩니다. |
properties.authenticationRequirementPolicies.requirementProvider | read_only_udm.security_result.detection_fields.value | 값은 properties.authenticationRequirementPolicies.requirementProvider 필드에서 직접 매핑됩니다. |
properties.clientAppUsed | read_only_udm.principal.application | 값은 properties.clientAppUsed 필드에서 직접 매핑됩니다. |
properties.conditionalAccessStatus | read_only_udm.additional.fields.value.string_value | 값은 properties.conditionalAccessStatus 필드에서 직접 매핑됩니다. |
properties.createdDateTime | read_only_udm.metadata.event_timestamp.seconds | 값은 properties.createdDateTime 필드에서 추출되고 에포크 이후 초로 변환됩니다. |
properties.crossTenantAccessType | read_only_udm.additional.fields.value.string_value | 값은 properties.crossTenantAccessType 필드에서 직접 매핑됩니다. |
properties.detectedDateTime | read_only_udm.additional.fields.value.string_value | 값은 properties.detectedDateTime 필드에서 직접 매핑됩니다. |
properties.detectionTimingType | read_only_udm.additional.fields.value.string_value | 값은 properties.detectionTimingType 필드에서 직접 매핑됩니다. |
properties.homeTenantId | read_only_udm.additional.fields.value.string_value | 값은 properties.homeTenantId 필드에서 직접 매핑됩니다. |
properties.id | read_only_udm.metadata.product_log_id | 값은 properties.id 필드에서 직접 매핑됩니다. |
properties.initiatedBy.user.displayName | read_only_udm.principal.user.user_display_name | 값은 properties.initiatedBy.user.displayName 필드에서 직접 매핑됩니다. |
properties.initiatedBy.user.id | read_only_udm.principal.user.windows_sid | 값은 properties.initiatedBy.user.id 필드에서 직접 매핑됩니다. |
properties.initiatedBy.user.ipAddress | read_only_udm.principal.ip | 값은 properties.initiatedBy.user.ipAddress 필드에서 직접 매핑됩니다. |
properties.initiatedBy.user.ipAddress | read_only_udm.principal.asset.ip | 값은 properties.initiatedBy.user.ipAddress 필드에서 직접 매핑됩니다. |
properties.initiatedBy.user.userPrincipalName | read_only_udm.principal.user.userid | 값이 이메일 주소 패턴과 일치하지 않으면 properties.initiatedBy.user.userPrincipalName 필드에서 직접 매핑됩니다. |
properties.initiatedBy.user.userPrincipalName | read_only_udm.principal.user.email_addresses | 값이 이메일 주소 패턴과 일치하는 경우 properties.initiatedBy.user.userPrincipalName 필드에서 직접 매핑됩니다. |
properties.ipAddress | read_only_udm.principal.ip | 값은 grok 패턴을 사용하여 properties.ipAddress 필드에서 추출하여 IP 주소를 추출합니다. |
properties.ipAddress | read_only_udm.principal.asset.ip | 값은 grok 패턴을 사용하여 properties.ipAddress 필드에서 추출하여 IP 주소를 추출합니다. |
properties.isGuest | read_only_udm.additional.fields.value.string_value | 값은 properties.isGuest 필드에서 직접 매핑됩니다. |
properties.isDeleted | read_only_udm.additional.fields.value.string_value | 값은 properties.isDeleted 필드에서 직접 매핑됩니다. |
properties.isProcessing | read_only_udm.additional.fields.value.string_value | 값은 properties.isProcessing 필드에서 직접 매핑됩니다. |
properties.lastUpdatedDateTime | read_only_udm.additional.fields.value.string_value | 값은 properties.lastUpdatedDateTime 필드에서 직접 매핑됩니다. |
properties.location.city | read_only_udm.principal.location.city | 값은 properties.location.city 필드에서 직접 매핑됩니다. |
properties.location.countryOrRegion | read_only_udm.principal.location.country_or_region | 값은 properties.location.countryOrRegion 필드에서 직접 매핑됩니다. |
properties.location.geoCoordinates.latitude | read_only_udm.principal.location.region_coordinates.latitude | 값은 properties.location.geoCoordinates.latitude 필드에서 직접 매핑되고 부동 소수점 수로 변환됩니다. |
properties.location.geoCoordinates.latitude | read_only_udm.principal.location.region_latitude | 값은 properties.location.geoCoordinates.latitude 필드에서 직접 매핑되고 부동 소수점 수로 변환됩니다. |
properties.location.geoCoordinates.longitude | read_only_udm.principal.location.region_coordinates.longitude | 값은 properties.location.geoCoordinates.longitude 필드에서 직접 매핑되고 부동 소수점 수로 변환됩니다. |
properties.location.geoCoordinates.longitude | read_only_udm.principal.location.region_longitude | 값은 properties.location.geoCoordinates.longitude 필드에서 직접 매핑되고 부동 소수점 수로 변환됩니다. |
properties.location.state | read_only_udm.principal.location.state | 값은 properties.location.state 필드에서 직접 매핑됩니다. |
properties.networkLocationDetails.networkNames | read_only_udm.additional.fields.value.string_value | 이 값은 properties.networkLocationDetails.networkNames 배열의 모든 값을 쉼표로 구분하여 연결하여 생성됩니다. |
properties.networkLocationDetails.networkType | read_only_udm.additional.fields.value.string_value | 값은 properties.networkLocationDetails.networkType 필드에서 직접 매핑됩니다. |
properties.networkLocationDetails.networkType | read_only_udm.security_result.detection_fields.value | 값은 properties.networkLocationDetails.networkType 필드에서 직접 매핑됩니다. |
properties.resourceServicePrincipalId | read_only_udm.target.resource.attribute.labels.value | 값은 properties.resourceServicePrincipalId 필드에서 직접 매핑됩니다. |
properties.riskDetail | read_only_udm.additional.fields.value.string_value | 값은 properties.riskDetail 필드에서 직접 매핑됩니다. |
properties.riskEventType | read_only_udm.additional.fields.value.string_value | 값은 properties.riskEventType 필드에서 직접 매핑됩니다. |
properties.riskLastUpdatedDateTime | read_only_udm.additional.fields.value.string_value | 값은 properties.riskLastUpdatedDateTime 필드에서 직접 매핑됩니다. |
properties.riskLevel | read_only_udm.additional.fields.value.string_value | 값은 properties.riskLevel 필드에서 직접 매핑됩니다. |
properties.riskLevelDuringSignIn | read_only_udm.additional.fields.value.string_value | 값은 properties.riskLevelDuringSignIn 필드에서 직접 매핑됩니다. |
properties.riskState | read_only_udm.additional.fields.value.string_value | 값은 properties.riskState 필드에서 직접 매핑됩니다. |
properties.riskType | read_only_udm.additional.fields.value.string_value | 값은 properties.riskType 필드에서 직접 매핑됩니다. |
properties.source | read_only_udm.additional.fields.value.string_value | 값은 properties.source 필드에서 직접 매핑됩니다. |
properties.targetResources.0.id | read_only_udm.target.user.product_object_id | 값은 properties.targetResources.0.id 필드에서 직접 매핑됩니다. |
properties.targetResources.modifiedProperties.0.newValue | read_only_udm.target.group.product_object_id | 값은 properties.targetResources.modifiedProperties.0.newValue 필드에서 직접 매핑됩니다. |
properties.tokenIssuerType | read_only_udm.additional.fields.value.string_value | 값은 properties.tokenIssuerType 필드에서 직접 매핑됩니다. |
properties.userAgent | read_only_udm.network.http.parsed_user_agent | 값은 properties.userAgent 필드에서 직접 매핑되고 파싱된 사용자 에이전트 객체로 변환됩니다. |
properties.userAgent | read_only_udm.network.http.user_agent | 값은 properties.userAgent 필드에서 직접 매핑됩니다. |
properties.userId | read_only_udm.target.user.product_object_id | 값은 properties.userId 필드에서 직접 매핑됩니다. |
properties.userPrincipalName | read_only_udm.target.user.userid | 값이 이메일 주소 패턴과 일치하지 않으면 properties.userPrincipalName 필드에서 직접 매핑됩니다. |
properties.userPrincipalName | read_only_udm.target.user.email_addresses | 값이 이메일 주소 패턴과 일치하는 경우 properties.userPrincipalName 필드에서 직접 매핑됩니다. |
결과 | read_only_udm.security_result.action | result 이 '성공'인 경우 값은 '허용'에 매핑됩니다. |
결과 | read_only_udm.security_result.action_details | result 가 '성공'인 경우 값은 result 필드에서 직접 매핑됩니다. |
resultDescription | read_only_udm.security_result.description | 값은 resultDescription 필드에서 직접 매핑됩니다. |
resultSignature | read_only_udm.additional.fields.value.string_value | 값은 resultSignature 필드에서 직접 매핑됩니다. |
resultType | read_only_udm.security_result.action | resultType 이 '0'이면 값이 '허용'에 매핑됩니다. |
resultType | read_only_udm.security_result.rule_id | 값이 비어 있지 않고 '0'이 아닌 경우 resultType 필드에서 직접 매핑됩니다. |
resultType | read_only_udm.security_result.summary | resultType 이 '0'이면 값이 '로그인 성공'에 매핑되고, 그렇지 않으면 '로그인 실패'에 매핑됩니다. |
resourceDisplayName | read_only_udm.target.application | 값은 resourceDisplayName 필드에서 직접 매핑됩니다. |
resourceDisplayName | read_only_udm.target.resource.name | 값은 resourceDisplayName 필드에서 직접 매핑됩니다. |
resourceId | read_only_udm.target.resource.id | 값은 resourceId 필드에서 직접 매핑됩니다. |
resourceId | read_only_udm.target.resource.product_object_id | 값은 resourceId 필드에서 직접 매핑됩니다. |
resourceServicePrincipalId | read_only_udm.target.resource.attribute.labels.value | 값은 resourceServicePrincipalId 필드에서 직접 매핑됩니다. |
riskDetail | read_only_udm.additional.fields.value.string_value | 값은 riskDetail 필드에서 직접 매핑됩니다. |
riskEventTypes | read_only_udm.additional.fields.value.string_value | 값은 riskEventTypes 배열에서 추출되고 additional.fields 배열의 문자열 값에 매핑됩니다. |
riskEventTypes | read_only_udm.additional.fields.value.list_value.values.string_value | 값은 riskEventTypes 배열의 각 요소에서 직접 매핑됩니다. |
riskEventTypes_v2 | read_only_udm.additional.fields.value.list_value.values.string_value | 값은 riskEventTypes_v2 배열의 각 요소에서 직접 매핑됩니다. |
riskLevelAggregated | read_only_udm.additional.fields.value.string_value | 값은 riskLevelAggregated 필드에서 직접 매핑됩니다. |
riskLevelDuringSignIn | read_only_udm.additional.fields.value.string_value | 값은 riskLevelDuringSignIn 필드에서 직접 매핑됩니다. |
riskState | read_only_udm.additional.fields.value.string_value | 값은 riskState 필드에서 직접 매핑됩니다. |
status.additionalDetails | read_only_udm.security_result.description | 값은 status.additionalDetails 필드에서 직접 매핑됩니다. |
status.errorCode | read_only_udm.security_result.action | status.errorCode 이 '0'이면 값이 '허용'에 매핑됩니다. |
status.errorCode | read_only_udm.security_result.rule_id | 값이 비어 있지 않으면 status.errorCode 필드에서 직접 매핑됩니다. |
status.errorCode | read_only_udm.security_result.summary | status.errorCode 이 '0'이면 값이 '로그인 성공'에 매핑되고, 그렇지 않으면 '로그인 실패'에 매핑됩니다. |
status.failureReason | read_only_udm.additional.fields.value.string_value | 값은 status.failureReason 필드에서 직접 매핑됩니다. |
targetResources.displayName | read_only_udm.target.resource.name | 값은 targetResources.displayName 필드에서 직접 매핑됩니다. |
targetResources.id | read_only_udm.target.resource.id | 값은 targetResources.id 필드에서 직접 매핑됩니다. |
targetResources.id | read_only_udm.target.resource.product_object_id | 값은 targetResources.id 필드에서 직접 매핑됩니다. |
targetResources.modifiedProperties.displayName | read_only_udm.target.resource.attribute.labels.key | 값은 targetResources.modifiedProperties.displayName 필드에서 직접 매핑됩니다. |
targetResources.modifiedProperties.newValue | read_only_udm.target.resource.attribute.labels.value | 이 값은 따옴표를 삭제한 후 targetResources.modifiedProperties.newValue 필드에서 직접 매핑됩니다. |
targetResources.modifiedProperties.oldValue | read_only_udm.target.resource.attribute.labels.value | 값은 targetResources.modifiedProperties.oldValue 필드에서 직접 매핑됩니다. |
targetResources.type | read_only_udm.target.resource.type | 값은 targetResources.type 필드에서 직접 매핑됩니다. |
targetResources.userPrincipalName | read_only_udm.target.user.user_display_name | 값은 targetResources.userPrincipalName 필드에서 직접 매핑됩니다. |
tenantId | read_only_udm.metadata.product_deployment_id | 값은 tenantId 필드에서 직접 매핑됩니다. |
시간 | read_only_udm.metadata.event_timestamp.seconds | 값은 time 필드에서 추출되고 에포크 이후의 초로 변환됩니다. |
userAgent | read_only_udm.network.http.parsed_user_agent | 값은 userAgent 필드에서 직접 매핑되고 파싱된 사용자 에이전트 객체로 변환됩니다. |
userAgent | read_only_udm.network.http.user_agent | 값은 userAgent 필드에서 직접 매핑됩니다. |
userDisplayName | read_only_udm.target.user.user_display_name | 값이 userId 과 다르고 이메일 주소 패턴과 일치하지 않는 경우 userDisplayName 필드에서 직접 매핑됩니다. |
userPrincipalName | read_only_udm.principal.administrative_domain | 이메일 주소의 도메인 부분은 grok 패턴을 사용하여 userPrincipalName 필드에서 추출되고 principal.administrative_domain 필드에 매핑됩니다. |
userPrincipalName | read_only_udm.target.user.email_addresses | 값이 이메일 주소 패턴과 일치하는 경우 userPrincipalName 필드에서 직접 매핑됩니다. |
userPrincipalName | read_only_udm.target.user.userid | 값이 이메일 주소 패턴과 일치하지 않으면 userPrincipalName 필드에서 직접 매핑됩니다. |
userId | read_only_udm.target.user.product_object_id | 값은 userId 필드에서 직접 매핑됩니다. |
read_only_udm.metadata.log_type | AZURE_AD | 이 값은 파서에 하드코딩되어 있습니다. |
read_only_udm.metadata.vendor_name | Microsoft | 이 값은 파서에 하드코딩되어 있습니다. |
read_only_udm.metadata.product_name | Azure AD | 이 값은 파서에 하드코딩되어 있습니다. |
read_only_udm.extensions.auth.type | SSO | 이 값은 파서에 하드코딩됩니다. |
변경사항
2024-07-05
- 'isInteractive'가 'security_result.detection_fields'에 매핑되었습니다.
2024-04-02
- 'properties.createdDateTime'이 'metadata.event_timestamp'에 매핑되었습니다.
- 'properties.resourceServicePrincipalId' 및 'resourceServicePrincipalId'가 'target.resource.attribute.labels'에 매핑되었습니다.
- 'properties.authenticationProcessingDetails', 'authenticationProcessingDetails', 'properties.networkLocationDetails'가 'additional.fields'에 매핑되었습니다.
- 'properties.userAgent'가 'network.http.user_agent' 및 'network.http.parsed_user_agent'에 매핑되었습니다.
- 'properties.authenticationRequirement'가 'additional.fields'에 매핑되었습니다.
2024-06-03
- 'policies.displayName'의 매핑이 'about.user.user_display_name'에서 'security_result.rule_name'으로 변경되었습니다.
- 'policies.id'의 매핑이 'about.user.userid'에서 'security_result.rule_id'로 변경되었습니다.
- 'policies.result'의 매핑을 'about.labels'에서 'security_result.detection_fields'로 변경했습니다.
2024-05-29
- 'status.errorCode'가 '0'인 경우 'security_result.action'을 'ALLOW'로 설정합니다.
2024-05-13
버그 수정:
- 'userPrincipalName'이 'target.user.userid'에 매핑되었습니다.
2024-05-10
- 'networkLocationDetails.n.networkNames', 'properties.networkLocationDetails.n.networkNames', 'networkLocationDetails.n.networkType', 'properties.networkLocationDetails.n.networkType'이 'additional.fields'에 매핑되었습니다.
- 'properties.userAgent' 및 'userAgent'가 'network.http.user_agent' 및 'network.http.parsed_user_agent'에 매핑되었습니다.
2024-05-03
버그 수정:
- 'target.modifiedProperties.n.newValue'를 매핑하기 전에 'on_error' 검사를 추가했습니다.
- 'target.modifiedProperties.n.oldValue' 및 'target.modifiedProperties.n.displayName'이 'target.resource.attribute.labels'에 매핑되었습니다.
- 'activityDisplayName'이 'security_result.summary'에 매핑되었습니다.
2024-04-30
- 'properties.authenticationDetails', 'properties.networkLocationDetails', 'properties.authenticationRequirementPolicies', 'networkLocationDetails', 'authenticationRequirementPolicies'가 'security_result.detection_fields'에 매핑되었습니다.
2024-04-02
- 'properties.authenticationRequirement'가 'additional.fields'에 매핑되었습니다.
2024-04-02
- 'authenticationRequirement'가 'additional.fields'에 매핑되었습니다.
2024-02-26
- 'appliedConditionalAccessPolicies'가 'security_result'에 매핑되었습니다.
- 'isInteractive'가 'extensions.auth.mechanism'에 매핑되었습니다.
- 'location.geoCoordinates.altitude'가 'additional.fields'에 매핑되었습니다.
2024-02-09
- 'authenticationDetails.authenticationMethod', 'authenticationDetails.authenticationMethodDetail', 'authenticationDetails.authenticationStepResultDetail', 'authenticationDetails.authenticationStepDateTime', 'authenticationDetails.authenticationStepRequirement'가 'security_result.detection_fields'에 매핑되었습니다.
- 'authenticationDetails.succeeded'가 'security_result.action'에 매핑되었습니다.
- 'status.additionalDetails'가 'security_result.description'에 매핑되었습니다.
2024-01-11
- 'correlationId'가 'security_result.detection_fields'에 매핑되었습니다.
2023-11-20
- 'tenantId'가 'metadata.product_deployment_id'에 매핑되었습니다.
- 'Level'이 'security_result.severity_details' 및 'security_result.severity'에 매핑되었습니다.
- 'properties.userDisplayName'이 'target.user.user_display_name'에 매핑되었습니다.
- 'identity'가 'target.user.user_display_name'에 매핑되었습니다.
- 'properties.activityDateTime'이 'metadata.event_timestamp'에 매핑되었습니다.
- 'properties.activity'가 'security_result.summary'에 매핑되었습니다.
- 'resultSignature', 'properties.riskLevel', 'properties.isGuest', 'properties.isDeleted', 'properties.isProcessing',
- "properties.riskLastUpdatedDateTime", "properties.riskType", "properties.riskEventType", "properties.riskState", "properties.riskDetail", "properties.source", "properties.detectionTimingType"
- "properties.detectedDateTime", "properties.lastUpdatedDateTime", "properties.tokenIssuerType", "properties.homeTenantId", "properties.userType", "properties.crossTenantAccessType", "durationMs"를 "additional.fields"로 변경했습니다.
- 'resourceId'가 'target.resource.product_object_id'에 매핑되었습니다.
- 'properties.location.geoCoordinates.longitude' 및 'location.geoCoordinates.longitude'가 'principal.location.region_coordinates.longitude'에 매핑되었습니다.
- 'properties.location.geoCoordinates.latitude' 및 'location.geoCoordinates.latitude'가 'principal.location.region_coordinates.latitude'에 매핑되었습니다.
2023-07-12
- 'deviceDetail.isCompliant', 'deviceDetail.isManaged', 'deviceDetail.trustType'이 'principal.asset.attribute.labels'에 매핑되었습니다.
- 'deviceDetail.deviceId'가 'principal.asset.asset_id'에 매핑되었습니다.
- 'deviceDetail.browser'가 'network.http.user_agent'에 매핑되었습니다.
- 'deviceDetail.operatingSystem'이 'principal.platform_version'에 매핑되었습니다.
- 'status.failureReason'이 'additional.fields'에 매핑되었습니다.
- 'status.errorCode'가 'security_result.rule_id'에 매핑되었습니다.
- 'deviceDetail.displayName'이 'principal.asset.hardware'에 매핑되었습니다.
2023-03-14
- 'browser'가 'principal.resource.attribute.labels'에 매핑되었습니다.
- 'isCompliant', 'isManaged', 'trustType'이 'principal.asset.attribute.labels'에 매핑되었습니다.
- 'userPrincipalName'의 'domain'이 'principal.administrative_domain'에 매핑되었습니다.
2022-12-16
- 'initiatedBy.user.userPrincipalName' 필드에 조건부 검사를 추가하고 'principal.user.email_addresses'에 매핑했습니다.
2022-10-28
- 'additionalDetails.0.value'가 'network.http.user_agent'에 매핑되었습니다.
- 'additionalDetails.1.value'가 'target.resource.attribute.labels'에 매핑되었습니다.
- 'Id'가 'metadata.product_log_id'에 매핑되었습니다.
- 'initiatedBy.user.id'가 'principal.user.userid'에 매핑되었습니다.
- 'initiatedBy.user.displayName'이 'principal.user.user_display_name'에 매핑되었습니다.
- 'initiatedBy.user.ipAddress'가 'principal.ip'에 매핑되었습니다.
- 'initiatedBy.user.userPrincipalName'이 'principal.user.email_addresses'에 매핑되었습니다.
- 'operationType'이 'security_result.action_details'에 매핑되었습니다.
- 'target.displayName'이 'target.resource.name'에 매핑되었습니다.
- 'target.id'가 'target.resource.id'에 매핑되었습니다.
- 'target.type'이 'target.resource.type'에 매핑되었습니다.
- field.displayName이 'AppRole.Id'인 경우 'field.newValue'가 'target.resource.product_object_id'에 매핑되고, 그렇지 않은 경우에는 'field.newValue'가 'target.resource.attribute.labels'에 매핑되었습니다.
- errorCode 검사를 추가했습니다.
- 'loggedByService'가 'target.application'에 매핑되었습니다.
- 'activityDisplayName'이 'metadata.product_event_type'에 매핑되었습니다.
- 'metadata.event_type'을 'USER_RESOURCE_UPDATE_PERMISSIONS'에 매핑했습니다. 여기서 'activityDisplayName'은 '서비스 주 구성원에 앱 역할 할당 추가'입니다.
2022-08-25
- 'properties.initiatedBy.user.userPrincipalName'이 '이메일 정규식 패턴'과 일치하면 'principal.user.email_addresses'에 매핑되고 그 밖의 경우에는 'principal.user.userid'에 매핑됩니다.
- 'properties.userPrincipalName' 또는 'userPrincipalName'이 'email regex pattern'과 일치하면 'target.user.email_addresses'에 매핑되고 그 밖의 경우에는 'target.user.userid'에 매핑됩니다.
2022-08-11
- 'TAG_MALFORMED_ENCODING' 태그를 삭제했습니다.
- 'event_type' 'GENERIC_EVENT'를 추가했습니다.
2022-05-29
- 개선사항 - 'additional.fields'에 매핑된 'riskEventTypes_v2' 필드의 for 루프가 수정되었습니다.
- 'level' 필드가 'security_result.severity_details'에 매핑되었습니다.
- 'properties.result' 필드가 'security_result.action_details'에 매핑되었습니다.
2022-04-20
- 버그 수정 - 이벤트 'appDisplayName': 'NotApplicable'로 로그를 파싱했습니다.
- 'riskEventTypes' 필드의 for 루프를 수정했습니다.