1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Microsoft FabricAdvent Calendar 2024

Day 20

Microsoft Fabric監査ログの長期保存

Last updated at Posted at 2024-12-18

はじめに

Fabricでは、各種方法で監査ログを表示し、ユーザーの操作を追跡することができます。

しかし、ログの保存期間や利用方法には制限があり、柔軟に使用することは難しいです。
そこで、パイプラインを使って、任意のデータベースにログを保存することで、
自由な監査に対応できる基盤としました。
以下要件の実現に活用いただければと思います。

  • 既定の保存期間を超えて、監査ログを保持したい
  • Fabric管理者や監査権限を持つユーザー以外にも、監査ログを共有したい
  • 監査ログを独自のレポートにし、追跡を容易にしたい
  • 危険な操作に対して、アラートを設定したい

開発物概要

監査ログ取得のAPIをパイプラインで呼び出すことで、取得を自動化しています。

画像1.png

取得したログのサンプル

画像9.png

監査ログ取得のAPI

取得できる操作一覧

作成手順① サービスプリンシパル認証の有効化

本手順は、APIの呼び出しにサービスプリンシパルを使用する場合に必要です。
サービスプリンシパル認証を用いることで、ユーザに過剰な権限の付与を避け、
ユーザに依存することなく、パイプラインの自動化を実現できます。


1. サービスプリンシパルの作成

2. セキュリティグループを作成し、サービスプリンシパルを追加

3. 管理ポータルのテナント設定で以下を特定のセキュリティグループに有効化
  「サービスプリンシパルは読み取り専用管理APIにアクセスできます」

画像2.png


作成手順② APIへの接続を作成

API 「Get Activity Events」へのサービスプリンシパル接続を作成します。


1. Fabricポータル上部の設定から「接続とゲートウェイの管理」を開く

2. 「新規」を選択

3. 各種情報を入力し、APIへの接続を作成

設定
接続 クラウド接続
接続名 任意
接続の種類 Web v2
ベースURL https://api.powerbi.com/v1.0/myorg/admin/activityevents/
トークン対象ユーザーURI https://analysis.windows.net/powerbi/api
認証 サービスプリンシパル

画像3.png

作成手順③ ログの取得範囲の変数を設定

Get Activity Eventsではログを取得する時刻の範囲を設定する必要があります。
startDateTimeendDateTime は同じUTC日でなければなりません。

サンプル.
https://api.powerbi.com/v1.0/myorg/admin/activityevents?
startDateTime='2024-12-20T00:00:00.000Z'&endDateTime='2024-12-20T23:59:59.999Z'

.../actiactivityevents?の ?以降を変数「DateTimeRange」とすることで、
パイプラインの実行日に合わせて取得範囲を変化させることができます。

本手順では、パイプラインを1日に1回スケジュール更新し、
前日の0:00~23:59の全てのログを取得できるように設定します。


1. Fabricポータルから新しいパイプラインを作成

2. アクティビティから「変数の設定」を追加

3. 設定に各種情報を入力

設定
種類 パイプライン変数
名前 DateTimeRange
@{concat('startDateTime=', '''', formatDateTime(addDays(utcNow(), -1), 'yyyy-MM-ddT00:00:00.000Z'), '''', '&endDateTime=', '''', formatDateTime(addDays(utcNow(), -1), 'yyyy-MM-ddT23:59:59.000Z'), '''')}

画像4.png

更新頻度と変数を調整することで、ニアリアルタイムな取得も実現可能です。

作成手順④ APIを呼び出すコピーアクティビティの作成

ログ取得のための最後の手順になります。
APIを呼び出して、監査ログを取得し、任意の場所に保存します。
本手順ではレイクハウスのテーブルへ保存します。


1. アクティビティから「データのコピー」を追加し、「変数の設定」と接続

2. ソースに各種情報を入力

設定
接続 手順②で作成した接続を選択
相対URL activityevents?@{variables('DateTimeRange')}
要求メソッド Get

画像5.png


3. 宛先に各種情報を入力

設定
接続 作成済みまたは新規のレイクハウスを選択
ルートフォルダ テーブル
テーブル 作成済みまたは新規のテーブルを選択

4. マップで「スキーマのインポート」を選択
  作成済みの変数を使用すると失敗するので、一旦手動で入力
  (データのプレビューも変数の使用が失敗する)

画像6.png


5. 必要な列でマッピングを作成

画像7.png


6. パイプラインを実行し、成功を確認

画像8.png

さいごに

保存した監査ログでレポートやアラートを作成することで、
ユーザーの操作を追跡しやすくなり、不正な操作の発見に活用できます。
監査体制やガバナンスを整え、より安全にFabricを活用していきましょう!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?