Microsoft Dynamics 365 사용자 활동 로그 수집

다음에서 지원:

이 문서에서는 Microsoft Azure Blob Storage V2를 사용하여 Google SecOps 피드를 설정하여 Microsoft Dynamics 365 사용자 활동 로그를 수집하는 방법을 설명합니다.

Microsoft Dynamics 365는 CRM 및 ERP 기능을 결합한 클라우드 기반 비즈니스 애플리케이션 플랫폼입니다. 사용자 활동 로그는 엔터티 작업, 데이터 액세스, 관리 활동 등 Dynamics 365 애플리케이션 내에서 사용자가 수행한 작업과 이벤트를 캡처합니다. Dynamics 365는 Microsoft Purview 통합 감사 로그를 통해 포괄적인 감사 로깅을 제공하는 Microsoft Dataverse를 기반으로 빌드됩니다.

시작하기 전에

다음 기본 요건이 충족되었는지 확인합니다.

  • Google SecOps 인스턴스
  • 다음 권한이 있는 Microsoft Azure 포털에 대한 권한 액세스
    • 스토리지 계정 만들기
    • Dataverse용 Azure Synapse Link 구성
    • 액세스 키 관리
  • Dynamics 365가 포함된 Microsoft 365 구독
  • Dynamics 365 환경의 시스템 관리자 보안 역할
  • Power Platform 관리 센터에 대한 전역 관리자 또는 Power Platform 관리자 액세스 권한

Dataverse 감사 사용 설정

Dynamics 365 사용자 활동 로그를 내보내기 전에 Power Platform 관리 센터에서 감사를 사용 설정해야 합니다.

  1. Power Platform 관리 센터에 로그인합니다.
  2. 탐색 창에서 환경을 선택합니다.
  3. Dynamics 365 배포가 포함된 환경을 선택합니다.
  4. 명령어 표시줄에서 설정을 선택합니다.
  5. 감사 및 로그를 펼치고 감사 설정을 선택합니다.
  6. 감사에서 다음 옵션을 사용 설정합니다.
    • 감사 시작: 환경에 대한 감사를 활성화합니다.
    • 로그 액세스: 사용자 로그인을 추적합니다.
    • 로그 읽기: 대부분의 사용자 활동과 이벤트를 캡처합니다.
  7. 요구사항에 따라 감사 로그의 보관 정책을 설정합니다.
  8. 저장을 선택하여 변경사항을 적용합니다.

표 수준 감사 사용 설정

  1. Power Apps에 로그인하고 환경을 선택합니다.
  2. 명령어 표시줄에서 설정 > 고급 설정을 선택합니다.
  3. 설정 > 맞춤설정 > 시스템 맞춤설정으로 이동합니다.
  4. 탐색 창의 구성요소에서 항목을 펼치고 감사할 항목 (예: 계정)을 선택합니다.
  5. 데이터 서비스까지 아래로 스크롤한 다음 감사 체크박스를 선택합니다.
  6. 감사에서 다음 옵션을 사용 설정합니다.
    • 단일 레코드 감사. 열 때 레코드를 기록합니다.
    • 여러 레코드 감사. 열린 페이지에 표시된 모든 레코드를 기록합니다.
  7. 저장을 선택한 다음 게시를 선택합니다.
  8. 감사할 각 테이블에 대해 4~7단계를 반복합니다.

자세한 내용은 Microsoft Dataverse 및 모델 기반 앱 활동 로깅을 참고하세요.

Azure 스토리지 계정 구성

스토리지 계정 만들기

  1. Azure 포털에서 스토리지 계정을 검색합니다.
  2. + 만들기를 클릭합니다.
  3. 다음 구성 세부정보를 제공합니다.

    설정 값
    구독 Azure 구독 선택
    리소스 그룹 기존 항목 선택 또는 새로 만들기
    스토리지 계정 이름 고유한 이름 (예: secopsd365logs)을 입력합니다.
    리전 Dataverse 환경과 동일한 리전을 선택합니다.
    성능 표준 (권장)
    중복성 GRS (지리적 중복 스토리지) 또는 LRS (로컬 중복 스토리지)
  4. 고급 탭을 선택하고 계층적 네임스페이스 옵션을 사용 설정합니다.

  5. 검토 + 만들기를 클릭합니다.

  6. 계정 개요를 검토하고 만들기를 클릭합니다.

  7. 배포가 완료될 때까지 기다립니다.

스토리지 계정 사용자 인증 정보 가져오기

  1. 방금 만든 스토리지 계정으로 이동합니다.
  2. 왼쪽 탐색에서 보안 + 네트워킹 아래의 액세스 키를 선택합니다.
  3. 키 표시를 클릭합니다.
  4. 나중에 사용할 수 있도록 다음을 복사하여 저장합니다.
    • 스토리지 계정 이름: secopsd365logs
    • 키 1 또는 키 2: 공유 액세스 키 (base-64 인코딩의 512비트 무작위 문자열)

Blob 서비스 엔드포인트 가져오기

  1. 동일한 스토리지 계정의 왼쪽 탐색에서 엔드포인트를 선택합니다.
  2. Blob 서비스 엔드포인트 URL을 복사하여 저장합니다.
    • 예: https://secopsd365logs.blob.core.windows.net/

스토리지 계정 권한 부여

Azure Synapse Link를 구성할 Power Platform 관리자에게 권한을 부여합니다.

  1. 스토리지 계정의 왼쪽 창에서 액세스 제어 (IAM)를 선택합니다.
  2. + 추가 > 역할 할당 추가를 클릭합니다.
  3. Power Platform 관리자에게 다음 역할을 할당합니다.
    • 스토리지 Blob 데이터 참여자
    • 스토리지 Blob 데이터 소유자

Dataverse용 Azure Synapse Link는 Dataverse 감사 테이블을 Azure Blob Storage V2 피드와 호환되는 Azure Data Lake Storage Gen2로 내보냅니다.

Azure Synapse 작업공간 만들기

  1. Azure 포털에서 Synapse Analytics를 검색합니다.
  2. + 만들기를 클릭합니다.
  3. 다음 구성 세부정보를 제공합니다.
    • 구독: 스토리지 계정을 만든 구독을 선택합니다.
    • 리소스 그룹: 스토리지 계정과 동일한 리소스 그룹을 선택합니다.
    • 워크스페이스 이름: 고유한 이름을 입력합니다 (예: synapse-d365-secops).
    • 리전: Dataverse 환경과 동일한 리전을 선택합니다.
    • 스토리지 계정 이름: 이전에 만든 스토리지 계정 (secopsd365logs)을 선택합니다.
    • 파일 시스템 이름: 새로 만들기를 클릭하고 이름을 입력합니다 (예: d365-audit).
  4. 검토 + 만들기를 클릭한 다음 만들기를 클릭합니다.
  5. 배포가 완료될 때까지 기다립니다.

Apache Spark 풀 만들기

  1. Azure 포털에서 만든 Synapse 작업 공간으로 이동합니다.
  2. + 새 Apache Spark 풀을 클릭합니다.
  3. 다음 구성 세부정보를 제공합니다.
    • Apache Spark 풀 이름: 이름을 입력합니다 (예: sparkpoold365).
    • 노드 수: 5를 입력합니다.
  4. 추가 설정 탭을 선택하고 유휴 상태의 분 수에 5를 입력합니다.
  5. 검토 + 만들기를 클릭한 다음 만들기를 클릭합니다.

Dataverse 감사 테이블을 Synapse 작업공간에 연결

  1. Power Apps에 로그인하고 Dynamics 365 배포가 포함된 환경을 선택합니다.
  2. 왼쪽 탐색 창에서 Azure Synapse Link를 선택합니다. 항목이 표시되지 않으면 더보기 > 모두 보기를 선택하고 Azure Synapse Link를 찾습니다.
  3. 새 링크를 클릭합니다.
  4. 새 링크 페이지에서 다음을 수행합니다.
    • Azure Synapse Analytics 작업공간에 연결 옵션을 선택합니다.
    • 구독: Azure 구독을 선택합니다.
    • 리소스 그룹: Synapse 워크스페이스가 포함된 리소스 그룹을 선택합니다.
    • 스토리지 계정: 스토리지 계정 (secopsd365logs)을 선택합니다.
    • Delta Lake 데이터 변환 작업에 Spark 풀 사용 옵션을 선택합니다.
    • Spark 풀: 생성한 Spark 풀 (sparkpoold365)을 선택합니다.
    • 스토리지 계정: 동일한 스토리지 계정을 선택합니다.
  5. 다음을 클릭합니다.
  6. 고급 탭을 펼치고 시간 간격 필드에 480분을 입력합니다.
  7. 테이블 목록에서 감사 및 사용자 테이블을 선택합니다.
  8. 저장을 클릭합니다.

자세한 내용은 Azure Synapse Link 및 Power BI로 감사 데이터 액세스를 참고하세요.

Microsoft Dynamics 365 사용자 활동 로그를 수집하도록 Google SecOps에서 피드 구성

  1. SIEM 설정 > 피드로 이동합니다.
  2. 새 피드 추가를 클릭합니다.
  3. 다음 페이지에서 단일 피드 구성을 클릭합니다.
  4. 피드 이름 필드에 피드 이름을 입력합니다(예: Microsoft Dynamics 365 User Activity).
  5. 소스 유형으로 Microsoft Azure Blob Storage V2를 선택합니다.
  6. 로그 유형으로 Microsoft Dynamics 365를 선택합니다.
  7. 다음을 클릭합니다.
  8. 다음 입력 매개변수의 값을 지정합니다.

    • Azure URI: 컨테이너 경로와 함께 Blob 서비스 엔드포인트 URL을 입력합니다.
    https://secopsd365logs.blob.core.windows.net/d365-audit/
    

    다음을 바꿉니다.

    • secopsd365logs: Azure 스토리지 계정 이름
    • d365-audit: Synapse 작업공간에 구성된 파일 시스템 (컨테이너) 이름입니다.
    • 소스 삭제 옵션: 환경설정에 따라 삭제 옵션을 선택합니다.
    • 삭제 안함: 전송 후 파일을 삭제하지 않습니다.
    • 전송된 파일 삭제: 전송이 완료되면 파일을 삭제합니다.
    • 전송된 파일 및 빈 디렉터리 삭제: 전송이 완료되면 파일과 빈 디렉터리를 삭제합니다.
    • 최대 파일 기간: 지난 일수 동안 수정된 파일을 포함합니다 (기본값은 180일).
    • 공유 키: 앞에서 스토리지 계정에서 캡처한 공유 키 값 (액세스 키)을 입력합니다.
    • 애셋 네임스페이스: 애셋 네임스페이스
    • 수집 라벨: 이 피드의 이벤트에 적용할 라벨
  9. 다음을 클릭합니다.

  10. 확정 화면에서 새 피드 구성을 검토한 다음 제출을 클릭합니다.

Azure Storage 방화벽 구성 (사용 설정된 경우)

Azure Storage 계정에서 방화벽을 사용하는 경우 Google SecOps IP 범위를 추가해야 합니다.

  1. Azure 포털에서 스토리지 계정으로 이동합니다.
  2. 보안 + 네트워킹에서 네트워킹을 선택합니다.
  3. 방화벽 및 가상 네트워크에서 선택한 가상 네트워크 및 IP 주소에서 사용 설정됨을 선택합니다.
  4. 방화벽 섹션의 IP 주소 범위에서 + IP 범위 추가를 클릭합니다.
  5. 각 Google SecOps IP 범위를 CIDR 표기법으로 추가합니다.

    현재 IP 범위를 가져오려면 다음 단계를 따르세요.

  6. 저장을 클릭합니다.

UDM 매핑 테이블

로그 필드 UDM 매핑 로직
BuildNumber about.labels 비어 있지 않은 경우 about_BuildNumber를 'BuildNumber' 키 및 BuildNumber의 값과 병합
RECORD_IDENTIFIER additional.fields 비어 있지 않은 경우 각 필드에서 생성된 라벨과 병합됨
LastProcessedChange_DateTime additional.fields
DataLakeModified_DateTime additional.fields
Application_Object_Server_node additional.fields
ClientType additional.fields
LogoutDateTime additional.fields
LOGOUTDATETIMETZID additional.fields
TerminatedOk additional.fields
유형 additional.fields
Alive additional.fields
PARTITION additional.fields
has_user metadata.event_type has_user가 true이면 'GENERIC_EVENT'로 설정한 다음 'USER_UNCATEGORIZED'로 설정하고, has_principal이 true이면 'STATUS_UPDATE'로 설정합니다.
has_principal metadata.event_type
RECVERSION metadata.product_version 비어 있지 않은 경우 값이 직접 복사됨
SessionId network.session_id 비어 있지 않은 경우 값이 직접 복사됨
LOG_SEQUENCE_NUMBER security_result.detection_fields LOG_SEQUENCE_NUMBER_label이 키 'LOG_SEQUENCE_NUMBER'와 병합되었으며, 비어 있지 않은 경우 LOG_SEQUENCE_NUMBER의 값이 사용됩니다.
UserId target.user.userid 비어 있지 않은 경우 값이 직접 복사됨
타임스탬프 타임스탬프 비어 있지 않은 경우 ISO8601 또는 RFC 3339 형식의 날짜 일치 항목을 사용하여 파싱됩니다.
metadata.product_name metadata.product_name 'MICROSOFT_DYNAMICS_365'로 설정
metadata.vendor_name metadata.vendor_name 'MICROSOFT_DYNAMICS_365'로 설정

변경 로그

이 파서의 변경 로그 보기

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