Azure Monitor におけるエンタイトルメント管理でのアーカイブ ログとレポート

Azure AD では、監査ログに最大 30 日間の監査イベントが格納されます。 ただし、Azure ストレージ アカウントにルーティングするか、Azure Monitor を使用することで、「Azure AD にレポート データが保存される期間」で説明されている既定の保持期間よりも長く監査データを保持できます。 これで、ブックと、このデータに対するカスタム クエリとレポートを使用できるようになります。

Azure Monitor を使用するように Azure AD を構成する

Azure Monitor ブックを使用する前に、監査ログのコピーを Azure Monitor に送信するように Azure AD を構成する必要があります。

Azure AD 監査ログをアーカイブするには、Azure サブスクリプションに Azure Monitor が必要です。 Azure Monitor の Azure AD アクティビティ ログで、Azure Monitor を使用するための前提条件と推定コストの詳細を確認できます。

前提条件のロール: グローバル管理者

  1. 全体管理者であるユーザーとして Azure portal にサインインします。Azure Monitor ワークスペースが含まれているリソース グループにアクセスできることを確認します。

  2. [Azure Active Directory] を選択し、左側のナビゲーション メニューの [監視] で [診断設定] をクリックします。 監査ログをそのワークスペースに送信する設定が既にあるかどうかを確認します。

  3. 設定がまだない場合は、 [診断設定の追加] をクリックします。 「Azure AD ログを Azure Monitor ログと統合する」の指示に従って、Azure AD 監査ログを Azure Monitor ワークスペースに送信します。

    [診断設定] ペイン

  4. ログが Azure Monitor に送信された後、 [Log Analytics ワークスペース] を選択し、Azure AD 監査ログを含むワークスペースを選択します。

  5. [使用量と推定コスト] を選択し、 [データ保有期間] をクリックします。 監査要件に合わせて、データを保持する日数にスライダーを変更します。

    [Log Analytics ワークスペース] ペイン

  6. その後、ワークスペースに保持されている日付の範囲を確認するには、「アーカイブされたログの日付範囲」ブックを使用できます。

    1. [Azure Active Directory] を選択し、 [ブック] をクリックします。

    2. [Azure Active Directory トラブルシューティング] セクションを展開し、 [アーカイブされたログの日付範囲] をクリックします。

アクセス パッケージのイベントを表示する

アクセス パッケージのイベントを表示するには、次のいずれかのロールで、基になる Azure Monitor ワークスペースにアクセスできる必要があります (詳細については、「Azure Monitor のログ データとワークスペースへのアクセスを管理する」を参照してください)。

  • 全体管理者
  • セキュリティ管理者
  • セキュリティ閲覧者
  • レポート閲覧者
  • アプリケーション管理者

以下の手順でイベントを表示します。

  1. Azure portal で、 [Azure Active Directory] を選択し、 [ブック] をクリックします。 所有するサブスクリプションが 1 つのみの場合は、ステップ 3 に進んでください。

  2. 複数のサブスクリプションがある場合は、ワークスペースが含まれているサブスクリプションを選択します。

  3. Access Package Activity」という名前のブックを選択します。

  4. そのブックで、時間範囲を選択し (不明な場合は [すべて] に変更)、その時間範囲にアクティビティがあったすべてのアクセス パッケージのドロップダウン リストからアクセス パッケージ ID を選択します。 選択した時間範囲内に発生したアクセスパッケージに関連のあるイベントが表示されます。

    アクセス パッケージ イベントを表示する

    各行には、時刻、アクセス パッケージ ID、操作の名前、オブジェクト ID、UPN、操作を開始したユーザーの表示名が含まれます。 さらなる詳細は JSON に含まれています。

  5. アプリケーションのアプリケーション ロールの割り当てに対して、アクセス パッケージの割り当てによるものではない変更 (全体管理者がアプリケーション ロールにユーザーを直接割り当てた場合など) が行われたかどうかを確認する場合は、 [Application role assignment activity](アプリケーション ロールの割り当てアクティビティ) という名前のブックを選択できます。

    アプリ ロールの割り当てを表示する

Azure portal を使用してカスタム Azure Monitor クエリを作成する

エンタイトルメント管理イベントを含め、Azure AD 監査イベントに対する独自のクエリを作成できます。

  1. Azure portal の Azure Active Directory で、左側のナビゲーション メニューの [監視] セクションにある [ログ] をクリックして、新しいクエリ ページを作成します。

  2. ワークスペースは、クエリ ページの左上に表示されます。 複数の Azure Monitor ワークスペースがあり、Azure AD 監査イベントの格納に使用しているワークスペースが表示されない場合は、 [スコープの選択] をクリックします。 次に、適切なサブスクリプションとワークスペースを選択します。

  3. 次に、クエリ テキスト領域で、文字列 "search *" を削除し、次のクエリに置き換えます。

    AuditLogs | where Category == "EntitlementManagement"
    
  4. 次に [実行] をクリックします。

    [実行] をクリックしてクエリを開始する

このテーブルには、既定で過去 1 時間のエンタイトルメント管理の監査ログ イベントが表示されます。 [時間の範囲] 設定を変更して、古いイベントを表示することができます。 ただし、この設定を変更すると、Azure Monitor にイベントを送信するように Azure AD が構成された後に発生したイベントのみが表示されます。

Azure Monitor で保持されている最も古い監査イベントと最新の監査イベントを知りたい場合は、次のクエリを使用します。

AuditLogs | where TimeGenerated > ago(3653d) | summarize OldestAuditEvent=min(TimeGenerated), NewestAuditEvent=max(TimeGenerated) by Type

Azure Monitor の監査イベント用に格納される列の詳細については、「Azure Monitor の Azure AD 監査ログ スキーマを解釈する」を参照してください。

Azure PowerShell を使用してカスタム Azure Monitor クエリを作成する

ログを Azure Monitor に送信するように Azure AD を構成すると、PowerShell を使用してログにアクセスできます。 次に、スクリプトまたは PowerShell コマンド ラインからクエリを送信します。テナントの全体管理者である必要はありません。

ユーザーまたはサービス プリンシパルに正しいロールが割り当てられていることを確認する

Azure AD に対して認証するユーザーまたはサービス プリンシパルが、Log Analytics ワークスペースの適切な Azure ロールに属していることを確認します。 ロール オプションは、Log Analytics 閲覧者または Log Analytics 共同作成者のいずれかです。 既にこれらのロールのいずれかに属している場合は、「1 つの Azure サブスクリプションで Log Analytics ID を取得する」に進みます。

ロールの割り当てを設定し、クエリを作成するには、次の手順を実行します。

  1. Azure portal で、Log Analytics ワークスペースを検索します。

  2. [アクセス制御 (IAM)] を選択します。

  3. 次に、 [追加] をクリックしてロールの割り当てを追加します。

    ロールの割り当てを追加する

Azure PowerShell モジュールをインストールする

適切なロールの割り当てが完了したら、PowerShell を起動し、次のように入力して Azure PowerShell モジュールをインストールします (まだインストールしていない場合)。

install-module -Name az -allowClobber -Scope CurrentUser

これで、Azure AD に対して認証し、クエリを実行している Log Analytics ワークスペースの ID を取得する準備ができました。

1 つの Azure サブスクリプションで Log Analytics ID を取得する

1 つの Azure サブスクリプションと 1 つの Log Analytics ワークスペースしかない場合は、次のように入力して Azure AD に対して認証し、そのサブスクリプションに接続して、そのワークスペースを取得します。

Connect-AzAccount
$wks = Get-AzOperationalInsightsWorkspace

複数の Azure サブスクリプションで Log Analytics ID を取得する

Get-AzOperationalInsightsWorkspace は、一度に 1 つのサブスクリプションで動作します。 そのため、複数の Azure サブスクリプションがある場合は、Azure AD ログを含む Log Analytics ワークスペースがあるものに接続する必要があります。

次のコマンドレットを実行すると、サブスクリプションの一覧が表示されます。Log Analytics ワークスペースがあるサブスクリプションの ID を探します。

Connect-AzAccount
$subs = Get-AzSubscription
$subs | ft

Connect-AzAccount –Subscription $subs[0].id などのコマンドを使用して、そのサブスクリプションに PowerShell セッションを再認証し、関連付けることができます。 非対話式など、PowerShell から Azure への認証方法の詳細については、「Azure PowerShell を使用してサインインする」を参照してください。

そのサブスクリプションに複数の Log Analytics ワークスペースがある場合、コマンドレット Get-AzOperationalInsightsWorkspace を実行すると、ワークスペースの一覧が返されます。 これで、Azure AD ログがあるものを見つけることができます。 このコマンドレットから返される CustomerId フィールドは、Azure portal の Log Analytics ワークスペースの概要に表示される "ワークスペース ID" の値と同じです。

$wks = Get-AzOperationalInsightsWorkspace
$wks | ft CustomerId, Name

Log Analytics ワークスペースにクエリを送信する

最後に、ワークスペースを特定したら、Invoke-AzOperationalInsightsQuery を使用して Kusto クエリをそのワークスペースに送信できます。 これらのクエリは Kusto クエリ言語で記述されています。

たとえば、次のようなクエリを送信する PowerShell コマンドレットを使用して、Log Analytics ワークスペースから監査イベント レコードの日付範囲を取得できます。

$aQuery = "AuditLogs | where TimeGenerated > ago(3653d) | summarize OldestAuditEvent=min(TimeGenerated), NewestAuditEvent=max(TimeGenerated) by Type"
$aResponse = Invoke-AzOperationalInsightsQuery -WorkspaceId $wks[0].CustomerId -Query $aQuery
$aResponse.Results |ft

次のようなクエリを使用して、エンタイトルメント管理イベントを取得することもできます。

$bQuery = 'AuditLogs | where Category == "EntitlementManagement"'
$bResponse = Invoke-AzOperationalInsightsQuery -WorkspaceId $wks[0].CustomerId -Query $Query
$bResponse.Results |ft 

次のステップ