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 구성 방법

  1. Azure 포털에 로그인합니다.
  2. > 앱 등록으로 이동하여 등록된 애플리케이션을 선택하거나 아직 애플리케이션을 만들지 않은 경우 애플리케이션을 등록합니다.
  3. 애플리케이션을 등록하려면 앱 등록 섹션에서 새 등록을 클릭합니다.
  4. 이름 필드에 애플리케이션의 표시 이름을 입력합니다.
  5. 지원되는 계정 유형 섹션에서 애플리케이션을 사용하거나 API에 액세스할 수 있는 사용자를 지정하는 데 필요한 옵션을 선택합니다.
  6. 등록을 클릭합니다.
  7. 개요 페이지로 이동하여 Google Security Operations 피드를 구성하는 데 필요한 애플리케이션 (클라이언트) ID와 디렉터리(테넌트) ID를 복사합니다.
  8. API 권한을 클릭합니다.
  9. 권한 추가를 클릭한 다음 새 창에서 Microsoft Graph를 선택합니다.
  10. 애플리케이션 권한을 클릭합니다.
  11. AuditLog.Read.All, Directory.Read.All, SecurityEvents.Read.All 권한을 선택합니다. 권한이 위임된 권한이 아닌 애플리케이션 권한인지 확인합니다.
  12. 기본 디렉터리에 대한 관리자 동의 부여를 클릭합니다. 동의 프로세스의 일환으로 사용자 또는 관리자가 권한을 부여하면 애플리케이션이 API를 호출할 수 있습니다.
  13. 설정 > 관리로 이동합니다.
  14. 인증서 및 보안 비밀을 클릭합니다.
  15. '새 클라이언트 암호'를 클릭합니다. 필드에 클라이언트 보안 비밀이 표시됩니다.
  16. 클라이언트 보안 비밀번호 값을 복사합니다. 이 값은 생성 시에만 표시되며 Azure 앱 등록 및 Google Security Operations 피드 구성에 필요합니다.

피드 설정

Google SecOps 플랫폼에서 피드를 설정하는 방법은 두 가지입니다.

  • SIEM 설정 > 피드
  • 콘텐츠 허브 > 콘텐츠 팩

SIEM 설정 > 피드에서 피드 설정

이 제품군 내에서 다양한 로그 유형에 대해 여러 피드를 구성하려면 제품별 피드 구성을 참고하세요.

단일 피드를 구성하려면 다음 단계를 따르세요.

  1. SIEM 설정> 피드로 이동합니다.
  2. 새 피드 추가를 클릭합니다.
  3. 다음 페이지에서 단일 피드 구성을 클릭합니다.
  4. 피드 이름 필드에 피드 이름을 입력합니다(예: Azure AD 컨텍스트 로그).
  5. 소스 유형으로 서드 파티 API를 선택합니다.
  6. 로그 유형으로 Azure AD 조직 컨텍스트를 선택합니다.
  7. 다음을 클릭합니다.
  8. 다음 필수 입력 매개변수를 구성합니다.
    • OAuth 클라이언트 ID: 이전에 가져온 클라이언트 ID를 지정합니다.
    • OAUTH 클라이언트 보안 비밀번호: 이전에 가져온 클라이언트 보안 비밀번호를 지정합니다.
    • 테넌트 ID: 이전에 가져온 테넌트 ID를 지정합니다.
  9. 다음을 클릭한 후 제출을 클릭합니다.

Google Security Operations 피드에 대한 자세한 내용은 Google Security Operations 피드 문서를 참조하세요. 각 피드 유형의 요구사항은 유형별 피드 구성을 참조하세요. 피드를 만들 때 문제가 발생하면 Google Security Operations 지원팀에 문의하세요.

콘텐츠 허브에서 피드 설정하기

다음 필드의 값을 지정합니다.

  • OAuth 클라이언트 ID: 이전에 가져온 클라이언트 ID를 지정합니다.
  • OAUTH 클라이언트 보안 비밀번호: 이전에 가져온 클라이언트 보안 비밀번호를 지정합니다.
  • 테넌트 ID: 이전에 가져온 테넌트 ID를 지정합니다.

고급 옵션

  • 피드 이름: 피드를 식별하는 미리 채워진 값입니다.
  • 소스 유형: Google SecOps로 로그를 수집하는 데 사용되는 방법입니다.
  • 애셋 네임스페이스: 피드와 연결된 네임스페이스입니다.
  • 수집 라벨: 이 피드의 모든 이벤트에 적용되는 라벨입니다.

필드 매핑 참조

이 파서 코드는 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 (key: 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 (key: extension_wfc_AccountingUnitName) 원시 로그의 extension_wfc_AccountingUnitName 필드에서 직접 매핑되고 키 extension_wfc_AccountingUnitName가 있는 라벨로 추가됩니다.
extension_wfc_execDescription event.idm.entity.entity.labels.value (key: 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 (key: extension_wfc_orgDescription) 원시 로그의 extension_wfc_orgDescription 필드에서 직접 매핑되고 키 extension_wfc_orgDescription가 있는 라벨로 추가됩니다.
givenName user.first_name 원시 로그의 givenName 필드에서 직접 매핑됩니다.
gopher-devices event.idm.entity.relations gopher-devices 배열의 각 기기는 별도의 관계 항목에 매핑됩니다. deviceIdproduct_object_id에 매핑되고, operatingSystemoperatingSystemVersion는 결합되어 platform_version을 형성하며, model은 직접 매핑되고, createdDateTime은 타임스탬프로 변환되어 created_timestamp에 매핑됩니다. 관계는 OWNS로 설정되고 방향은 UNIDIRECTIONAL로 설정됩니다.
gopher-groups event.idm.entity.relations gopher-groups 배열의 각 그룹은 별도의 관계 항목에 매핑됩니다. idproduct_object_id에 매핑되고 displayNamegroup_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_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에 매핑됩니다.
id user.product_object_id 원시 로그의 id 필드에서 직접 매핑됩니다.
ID user.attribute.labels.value (키: signInType), user.attribute.labels.value (키: userPrincipalName) signInTypesignInType 키가 있는 라벨로 매핑됩니다. signInTypeuserPrincipalName가 비어 있지 않으면 결합되어 키 userPrincipalName이 있는 라벨로 매핑됩니다.
jobTitle user.title 원시 로그의 jobTitle 필드에서 직접 매핑됩니다.
mail user.email_addresses 원시 로그의 mail 필드에서 직접 매핑됩니다. mail이 'svc-'로 시작하면 user_role.typeSERVICE_ACCOUNT로 설정됩니다.
mailNickname user.attribute.labels.value (key: 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_addresses 또는 empmanager.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 (key: onPremisesDistinguishedName), user.attribute.labels.value (key: onPremisesDistinguishedName-OU data) 전체 고유 이름은 키가 onPremisesDistinguishedName인 라벨로 매핑됩니다. 고유 이름의 OU 부분이 추출되어 키 onPremisesDistinguishedName-OU data가 있는 라벨로 매핑됩니다. OU 부분에 'Admin'이 포함된 경우 user_role.typeADMINISTRATOR로 설정됩니다. '서비스 계정'이 포함된 경우 user_role.typeSERVICE_ACCOUNT로 설정됩니다.
onPremisesDomainName user.group_identifiers, user.attribute.labels.value (key: onPremisesDomainName) user.group_identifiers에 직접 매핑되고 onPremisesDomainName 키가 있는 라벨로 추가됩니다.
onPremisesImmutableId user.attribute.labels.value (key: onPremisesImmutableId) 원시 로그의 onPremisesImmutableId 필드에서 직접 매핑되고 키 onPremisesImmutableId가 있는 라벨로 추가됩니다.
onPremisesSamAccountName user.userid, user.attribute.labels.value (key: onPremisesSamAccountName) sAMAccountName이 비어 있으면 user.userid에 매핑됩니다. onPremisesSamAccountName 키가 있는 라벨로도 추가됩니다.
onPremisesSecurityIdentifier user.windows_sid 원시 로그의 onPremisesSecurityIdentifier 필드에서 직접 매핑됩니다.
proxyAddresses user.email_addresses, user.group_identifiers proxyAddresses 배열의 각 주소는 'smtp' 또는 'SMTP'로 시작하는지에 따라 user.email_addresses 또는 user.group_identifiers에 매핑됩니다. 주소가 'smtp' 또는 'SMTP'로 시작하면 'smtp:' 또는 'SMTP:' 접두사가 삭제되고 나머지 이메일 주소가 추출되어 user.email_addresses에 매핑됩니다.
refreshTokensValidFromDateTime user.attribute.labels.value (key: refreshTokensValidFromDateTime) 원시 로그의 refreshTokensValidFromDateTime 필드에서 직접 매핑되고 키 refreshTokensValidFromDateTime가 있는 라벨로 추가됩니다.
sAMAccountName user.userid 원시 로그의 sAMAccountName 필드에서 직접 매핑됩니다.
state user.personal_address.state 원시 로그의 state 필드에서 직접 매핑됩니다.
streetAddress user.personal_address.name 원시 로그의 streetAddress 필드에서 직접 매핑됩니다.
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.typeSERVICE_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 (key: accountEnabled) accountEnabled가 true이면 user.user_authentication_status이 'ACTIVE'로 설정되고 accountEnabled 키와 'true' 값이 있는 라벨이 추가됩니다. 그렇지 않으면 accountEnabled 키와 'false' 값이 있는 라벨이 추가됩니다.
empmanager-src.accountEnabled user.user_authentication_status, user.attribute.labels.value (key: accountEnabled) manager가 비어 있고 empmanager-src.accountEnabled가 'true'이면 user.user_authentication_status이 'ACTIVE'로 설정되고 accountEnabled 키와 'true' 값이 있는 라벨이 추가됩니다. 그렇지 않으면 accountEnabled 키와 'false' 값이 있는 라벨이 추가됩니다.
onPremisesDistinguishedName user_role.type 고유 이름의 OU 부분에 'Admin'이 포함된 경우 user_role.typeADMINISTRATOR로 설정됩니다. '서비스 계정'이 포함된 경우 user_role.typeSERVICE_ACCOUNT로 설정됩니다.
userPrincipalName user_role.type userPrincipalName이 'svc-'로 시작하면 user_role.typeSERVICE_ACCOUNT로 설정됩니다.
empmanager-src.onPremisesDistinguishedName manager_role.type gopher-manager이 비어 있고 관리자의 고유 이름의 OU 부분에 'Users'가 포함되어 있으면 manager_role.typeADMINISTRATOR로 설정됩니다. '서비스 계정'이 포함된 경우 manager_role.typeSERVICE_ACCOUNT로 설정됩니다.
empmanager-src.userPrincipalName manager_role.type gopher-manager이 비어 있고 empmanager-src.userPrincipalName이 'svc-'로 시작하면 manager_role.typeSERVICE_ACCOUNT로 설정됩니다.
mail user_role.type mail이 'svc-'로 시작하면 user_role.typeSERVICE_ACCOUNT로 설정됩니다.

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.