Microsoft Dynamics 365 ユーザー アクティビティ ログを収集する

以下でサポートされています。

このドキュメントでは、Microsoft Azure Blob Storage V2 を使用して Google SecOps フィードを設定し、Microsoft Dynamics 365 ユーザー アクティビティ ログを収集する方法について説明します。

Microsoft Dynamics 365 は、CRM と ERP の機能を組み合わせたクラウドベースのビジネス アプリケーション プラットフォームです。ユーザー アクティビティ ログには、エンティティ操作、データアクセス、管理アクティビティなど、Dynamics 365 アプリケーション内でユーザーが実行したアクションとイベントが記録されます。Dynamics 365 は Microsoft Dataverse 上に構築されており、Microsoft Purview 統合監査ログを通じて包括的な監査ロギングを提供します。

始める前に

次の前提条件を満たしていることを確認します。

  • 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 Storage アカウントを構成する

ストレージ アカウントを作成する

  1. Azure ポータルで、[ストレージ アカウント] を検索します。
  2. [+ 作成] をクリックします。
  3. 次の構成情報を提供してください。

    設定 値
    サブスクリプション Azure サブスクリプションを選択する
    リソース グループ 既存のスケジュールを選択するか、新しいスケジュールを作成する
    ストレージ アカウント名 一意の名前を入力します(例: secopsd365logs)。
    リージョン Dataverse 環境と同じリージョンを選択します。
    パフォーマンス 標準(推奨)
    冗長性 GRS(地理冗長ストレージ)または LRS(ローカル冗長ストレージ)
  4. [詳細設定] タブを選択し、[階層型名前空間] オプションを有効にします。

  5. [Review + create] をクリックします。

  6. アカウントの概要を確認し、[作成] をクリックします。

  7. デプロイが完了するまで待ちます。

ストレージ アカウントの認証情報を取得する

  1. 作成した [ストレージ アカウント] に移動します。
  2. 左側のナビゲーションで、[セキュリティとネットワーキング] の [アクセスキー] を選択します。
  3. [キーを表示] をクリックします。
  4. 後で使用するために、次の内容をコピーして保存します。
    • ストレージ アカウント名: secopsd365logs
    • キー 1 またはキー 2: 共有アクセスキー(base-64 でエンコードされた 512 ビットのランダムな文字列)

Blob Service エンドポイントを取得する

  1. 同じストレージ アカウントで、左側のナビゲーションから [エンドポイント] を選択します。
  2. Blob サービスのエンドポイント URL をコピーして保存します。
    • 例: https://secopsd365logs.blob.core.windows.net/

ストレージ アカウントの権限を付与する

Azure Synapse Link を構成する Power Platform 管理者に権限を付与します。

  1. [ストレージ アカウント] で、左側のペインで [アクセス制御(IAM)] を選択します。
  2. [+ 追加> ロールの割り当てを追加] をクリックします。
  3. Power Platform 管理者に次のロールを割り当てます。
    • Storage Blob Data Contributor
    • Storage Blob データ所有者

Dataverse 用 Azure Synapse Link は、Dataverse 監査テーブルを Azure Data Lake Storage Gen2 にエクスポートします。これは、Azure Blob Storage V2 フィードと互換性があります。

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 ワークスペースに接続する] オプションを選択します。
    • Subscription: 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. [Add New Feed] をクリックします。
  3. 次のページで、[単一のフィードを設定] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: Microsoft Dynamics 365 User Activity)。
  5. [ソースタイプ] で [Microsoft Azure Blob Storage V2] を選択します。
  6. [Log type] として [Microsoft Dynamics 365] を選択します。
  7. [次へ] をクリックします。
  8. 次の入力パラメータの値を指定します。

    • Azure URI: コンテナパスを含む Blob Service エンドポイント URL を入力します。
    https://secopsd365logs.blob.core.windows.net/d365-audit/
    

    次のように置き換えます。

    • secopsd365logs: Azure ストレージ アカウント名。
    • d365-audit: Synapse ワークスペースで構成されたファイル システム(コンテナ)の名前。
    • Source deletion option: 必要に応じて削除オプションを選択します。
    • なし: 転送後にファイルを削除しません。
    • 転送されたファイルを削除する: 転送が完了した後にファイルを削除します。
    • 転送されたファイルと空のディレクトリを削除する: 転送が完了した後にファイルと空のディレクトリを削除します。
    • ファイルの最大経過日数: 過去の日数以内に変更されたファイルを含めます(デフォルトは 180 日)。
    • 共有キー: 以前にストレージ アカウントから取得した共有キーの値(アクセスキー)を入力します。
    • アセットの名前空間: アセットの名前空間
    • Ingestion labels: このフィードのイベントに適用されるラベル
  9. [次へ] をクリックします。

  10. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

Azure Storage ファイアウォールを構成する(有効になっている場合)

Azure Storage アカウントでファイアウォールを使用している場合は、Google SecOps の IP 範囲を追加する必要があります。

  1. Azure ポータルで、ストレージ アカウントに移動します。
  2. [セキュリティとネットワーキング] で [ネットワーキング] を選択します。
  3. [ファイアウォールと仮想ネットワーク] で、[選択した仮想ネットワークと IP アドレスから有効] を選択します。
  4. [ファイアウォール] セクションの [アドレス範囲] で、[+ 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 空でない場合、値が直接コピーされます
timestamp timestamp 空でない場合は、ISO8601 または RFC 3339 形式の日付照合を使用して解析されます
metadata.product_name metadata.product_name 「MICROSOFT_DYNAMICS_365」に設定
metadata.vendor_name metadata.vendor_name 「MICROSOFT_DYNAMICS_365」に設定

変更ログ

このパーサーの変更ログを表示する

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。