次の方法で共有


チュートリアル: サインイン ログを分析する Log Analytics ワークスペースを作成する

このチュートリアルでは、次の作業を行う方法について説明します。

  • Log Analytics ワークスペースを作成する
  • Log Analytics ワークスペースとサインイン ログを統合するように診断設定を構成する
  • Kusto クエリ言語 (KQL) を使用してクエリを実行する

前提条件

Log Analytics を使用してアクティビティ ログを分析するには、以下のロールと要件が必要です。

Log Analytics ワークスペースを作成する

この手順では、最終的にサインイン ログを送信する Log Analytics ワークスペースを作成します。 ワークスペースを作成する前に、 Azure リソース グループが必要です。

  1. 最低でもセキュリティ管理者であり、Log Analytics 共同作成者のアクセス許可を持つユーザーとしてAzure portalにサインインします。

  2. Log Analytics ワークスペースに移動します。

  3. 作成を選択します。

    ログ分析ワークスペース ページの [作成] ボタンのスクリーンショット。

  4. [ Log Analytics ワークスペースの作成 ] ページで、次の手順を実行します。

    1. サブスクリプションを選択します。

    2. リソース グループを選択します。

    3. ワークスペースに名前を付けます。

    4. 地域を選択します。

    新しいログ分析ワークスペースの作成の詳細ページのスクリーンショット。

  5. [ 確認と作成] を選択します。

  6. [ 作成] を選択し、デプロイを待ちます。 新しいワークスペースを表示するには、ページの更新が必要な場合があります。

診断設定を構成する

ID ログ情報を新しいワークスペースに送信するには、診断設定を構成する必要があります。 Azure と Microsoft Entra にはさまざまな診断設定オプションがあるため、次の一連の手順では Microsoft Entra 管理センターに切り替えて、すべてが ID に関連していることを確認しましょう。

  1. 少なくともセキュリティ管理者として Microsoft Entra 管理センターにサインインします。

  2. Entra ID>監視と健康>Diagnostic 設定にアクセスします。

  3. [ 診断設定の追加] を選択します

    [診断設定の追加] オプションのスクリーンショット。

  4. [ 診断設定 ] ページで、次の手順を実行します。

    1. 診断設定の名前を指定します。

    2. [ ログ] で、[ AuditLogs ] と [ SigninLogs] を選択します。

    3. [ 宛先の詳細] で [ Log Analytics に送信] を選択し、新しいログ分析ワークスペースを選択します。

    4. [保存] を選択します

    診断設定の選択オプションのスクリーンショット。

選択したログが Log Analytics ワークスペースに入力されるまでに最大 15 分かかる場合があります。

Log Analytics でクエリを実行する

ログが Log Analytics ワークスペースにストリーミングされている場合は、 Kusto クエリ言語 (KQL) を使用してクエリを実行できます。 クエリを実行する特権が最も低いロールは、 レポート閲覧者 ロールです

  1. Entra ID>Monitoring & health>Log Analytics に移動します。

  2. [ 検索 ] ボックスにクエリを入力し、[ 実行] を選択します。

Kusto クエリの例

入力データから 10 個のエントリをランダムに取得する:

  • SigninLogs | take 10

条件付きアクセスが成功したサインインを確認する:

  • SigninLogs | where ConditionalAccessStatus == "success" | project UserDisplayName, ConditionalAccessStatus

成功の数をカウントする:

  • SigninLogs | where ConditionalAccessStatus == "success" | project UserDisplayName, ConditionalAccessStatus | count

成功したサインインの数をユーザー別および日別に集計する:

  • SigninLogs | where ConditionalAccessStatus == "success" | summarize SuccessfulSign-ins = count() by UserDisplayName, bin(TimeGenerated, 1d)

ユーザーが特定の期間に特定の操作を行った回数を表示する:

  • AuditLogs | where TimeGenerated > ago(30d) | where OperationName contains "Add member to role" | summarize count() by OperationName, Identity

操作名で結果をピボットする:

  • AuditLogs | where TimeGenerated > ago(30d) | where OperationName contains "Add member to role" | project OperationName, Identity | evaluate pivot(OperationName)

内部結合を使用して監査ログとサインイン ログをマージする:

  • AuditLogs |where OperationName contains "Add User" |extend UserPrincipalName = tostring(TargetResources[0].userPrincipalName) | |project TimeGenerated, UserPrincipalName |join kind = inner (SigninLogs) on UserPrincipalName |summarize arg_min(TimeGenerated, *) by UserPrincipalName |extend SigninDate = TimeGenerated

クライアント アプリの種類別にサインイン数を表示する:

  • SigninLogs | summarize count() by ClientAppUsed

日別にサインイン数をカウントする:

  • SigninLogs | summarize NumberOfEntries=count() by bin(TimeGenerated, 1d)

5 つのエントリをランダムに取得し、表示したい列を結果に投影する:

  • SigninLogs | take 5 | project ClientAppUsed, Identity, ConditionalAccessStatus, Status, TimeGenerated

降順における最初の 5 つを取得し、表示したい列を投影する:

  • SigninLogs | take 5 | project ClientAppUsed, Identity, ConditionalAccessStatus, Status, TimeGenerated

値を他の 2 つの列に結合して新しい列を作成する:

  • SigninLogs | limit 10 | extend RiskUser = strcat(RiskDetail, "-", Identity) | project RiskUser, ClientAppUsed

次のステップ