【AIP with Power BI】カスタム管理者追跡ポータルの作成

Kenta Osuka
kosuka EMS
Published in
14 min readMar 21, 2020

【今回のテーマ】
AIP 中央レポートと Power BI を活用したカスタム管理者追跡ポータルを作成する手順をご紹介します。
本手順を完了することで、以下のようなポータルを作成することが可能です。

サンプル:カスタム追跡ポータル

【カスタム追跡ポータルのメリット】
①統合ラベルでも利用可能

追跡ポータル機能は AIP クラシックに備えられている機能であり、統合ラベルでは現在利用できません。また、2020/3/12 に公開された記事にて AIP クラシックの廃止が正式にアナウンスされています。こうした状況の中、「統合ラベル移行後も追跡ポータルを利用したい」というのは良く聞く要望でもあります。本記事はそういった方々の要望を叶える 1 つの手段となります。

②ユーザーによる追跡登録が不要
統合ラベルで追跡ポータルが廃止された要因として、「ユーザーが追跡登録をしなければならない不便さによる利用率の低さ」が挙げられます。一方でカスタム管理者追跡ポータルはユーザーの追跡登録有無に関わらず利用可能なので、ユーザーの業務を妨げることもありません。

③インタラクティブ UI であるということ
AIP クラシックに備えられている追跡ポータル管理者モードは、事前に対象ユーザーやファイル名を指定しなければ検索自体が不可能です。つまり、「〇〇なアクセスをしているユーザー/ファイルを検索したい。」という逆引き検索で利用することが出来ません。本記事で作成するカスタム追跡ポータルは、Power BI のフィルタ機能を利用することにより様々な複合条件での逆引きが可能です。

サンプル:AIP クラシックの追跡ポータル管理者モード

【カスタム追跡ポータルのデメリット】
①失効が出来ない
本記事で作成するカスタム追跡ポータルには失効機能はありません。Graph API などにアクションが追加されれば可能になる可能性もありますが、現時点では失効の実現は不可となります。

②Log Analytics/Power BI コスト
デメリットと言われればそうなので、念のため上げています。
Power BI Pro 等は Micorosoft 365 ライセンスなどに同梱されているので、デメリットに感じない組織の方も多いのではないでしょうか。
Log Analytics については以下の URL を参考にコスト計算することを推奨します。

メリット/デメリットを抑えたところで、前提条件の確認と作成手順に進みたいと思います。

【前提条件】
①AIP 中央レポートが構成済みであること。(AIP 中央レポートの概要については以下の記事をご確認ください。)
②Power BI Desktop がインストール済みであること。(本記事の大部分が Power BI Desktop での操作となりますので、事前にインストールしておくことを推奨いたします。)
③本手順で紹介している位置情報画面の作成について、フリーの API を利用しているため利用制限(後述)があります。そのため、実環境で同等の機能を利用する場合には有償のサービス利用をご検討ください。

【作成手順】

https://portal.azure.com/#blade/Microsoft_Azure_InformationProtection/DataClassGroupEditBlade/ActivityLogsBlade へアクセスし、[Azure Information Protection | アクティビティ ログ (プレビュー)] 画面から [ログの分析] をクリックします。

LogAnalytics のクエリ画面に移動するため、[エクスポート] - [Power BI へエクスポート(M Query)] をクリックします。
※クエリがテキストファイルでダウンロードされます。

Power BI Desktop を起動し、[データを取得する] - [空のクエリ] をクリックします。

[詳細エディター] をクリックします。

先ほどダウンロードしたテキストファイルの内容をコピー&ペーストし、[完了] をクリックします。

クエリが実行され “アクティビティ ログ” が取得されたことを確認します。その後 [クエリの設定] - [プロパティ] - [名前] に任意の名前を入力してから、[閉じて適用] をクリックします。

まずはレポート画面を追加していきます。
[視覚化] - [テーブル] を選択し任意のサイズに広げます。
※今回は画面上部をレポート画面としました。

テーブルを選択した状態で、[フィールド] - [TimeGenerated] を選択します。テーブルに日時が追加されたことを確認します。

現状の列(y/q/m/d)では見辛いため、赤枠のプルダウン(∨) から [TimeGenerated] をクリックします。

列が YYYY/MM/DD XX:XX:XX 形式になったことを確認します。

表示したい列(任意:用途に合わせて検討)を追加していきます。
※この際に列幅を修正して見やすくしておきましょう。
※以下に追加する列の例を記載します。
・TimeGenerated
・MachineName_s
・LabelNames_s
・IPv4_s
・UserId_s
・ObjectId_s
・Activitie_s
・ProtectionType_s

テーブルの列名を編集していきます。
各列の赤枠のプルダウン(∨)から [名前の変更] を選択し、任意の列名を入力します。

列名が更新されたことを確認します。

テーブルの見栄えを変更していきます。
赤枠をクリックすることでテーブル内の書式を編集することが可能です。
以下が編集後の画面です。

次はアクティビティ タイムラインを作成していきます。
[視覚化] - [積み上げ縦棒グラフ] を選択し任意のサイズに広げます。

グラフを選択した状態で、赤枠内に以下の値を入力しています。
※フィールドの値をドラッグ&ドロップすることでも選択可能です。
・値:TimeGenerated
・凡例:Activity_s
・値:_ResouerceId

まずはタイムラインを修正していきます。

グラフ内の赤枠をタイムラインが細分化(全展開)されるまでクリックします。次に、[値] - [TimeGenerated] から [年/四半期] を削除します。

月日単位のタイムラインになったことを確認します。

[凡例/値] の [名前] をレポート画面と同様の手順で修正します。

書式もレポート画面と同様の手順で修正します。

次に位置情報画面を追加していきます。
※以降の手順は “非商用的・または限定的な用途のみ利用か” である IP ジオロケーション API サービスである、https://ip-api.com/ を利用しており、“1 度に送付できるレコード数にも制限” がございます。実運用で利用される場合は、必ず利用制限のない有償サービスの利用をご検討ください。
※本記事で利用させていただいた ip-api 様の有償サービス画面を例として記載しておきます。

上記注意事項を確認したら、[データを取得] - [空のクエリ] をクリックします。

[詳細エディター] をクリックします。

以下のクエリを入力し、[完了] をクリックします。

※クエリは以下を参考に作成しました。

[クエリの設定] - [プロパティ] - [名前] に任意の名前を入力してから、[閉じて適用] をクリックします。

[クエリを編集] をクリックします。

[アクティビティ ログ] を選択した状態で、[列の追加] - [カスタム関数の呼び出し] をクリックします。

以下の情報を入力し、[OK] をクリックします。
・新しい列名:任意
・関数クエリ:先ほど作成したクエリ
・IP Address:IPv4_s

プライバシーレベルに関する確認画面が表示されるため、適切なレベルを選択し [保存] をクリックします。

[新しい列] が [アクティビティ ログ] に追加されるため、赤枠をクリックして情報を展開します。

[ホーム] - [閉じて適用] をクリックします。

マップを追加します。
[視覚化] - [マップ] を選択して残りの画面サイズまで広げます。

マップを選択した状態で、赤枠内に以下の値を入力しています。
※入力するとマップが一時的に表示されなくなりますが、問題ありません。
・凡例:[新しい列名].country
・緯度:[新しい列名].lat
・経度:[新しい列名].lon

[緯度/経度] のプルダウン(∨)から、[集計しない] をクリックします。

マップが表示されたことを確認したら、[凡例/緯度/経度] の [名前] をレポート画面と同様の手順で修正します。

書式もレポート画面と同様の手順で修正します。

以上で大まかな作業は完了ですが、ここから完成度を高める(フィルターを追加する)作業をしていきます。不要な方は [発行] の手順までスキップしてください。

[このページでのフィルタ] を選択した状態で [UserId_s] を追加し、[exo.*] を選択/除外します。
※この exo から始まるアカウントは Outlook などで AIP のポリシーを取得したり、ラベルを適用する際に使用されるサービスアカウントです。(間違っていたらご指摘ください)

続いて [Activity_s] を選択し、値があるアクティビティのみ選択します。

作業が完了していることを確認し、[発行] をクリックします。

[保存] をクリックし、任意のフォルダに保存します。

保存後 Power BI のワークスペース先を聞かれるため、任意のワークスペースを選択し [選択] をクリックします。

発行が完了したことを確認したら、実際に開いてみます。

以下のような画面が表示されていることを確認します。
※この画面自体がインタラクティブとなっており、クリックやフィルタ機能を用いた条件付き検索が可能です。

【注意】
実はこのままでは発行時のログ情報から更新されないため、一定の間隔でクエリを再実行して画面を更新する必要があります。

また、今回は Geolocation 変換で Web.Contents を利用していることもあり、Power BI Portal で手動更新をしようとしてもエラーになるかと思います。(位置情報を利用しないレポートの場合はこの制限に引っ掛かりません)

Web.Contents の作りを工夫してエラーを出さない方法や、Power BI Desktop から手動更新して再発行する、Power BI Rest API から更新するなど回避方法は様々ですので環境に合った方法を選択いただければと思います。

個人的には Power Automate を使って Geolocation したものを OneDrive などに Excel や CSV といったデータソースとして保存しておき、それを利用する方法なども可能かなと考えています。こうすることで Power BI 内で Web.Contents を使用する必要もないので応用が利きそうかなと思いました。

一応公式ドキュメントを載せておきます、ご確認ください。

【まとめ】
今回はカスタム管理者追跡ポータルを作成してみました。
統合ラベルへの移行を考えている方で、追跡ポータル未対応がネックとなっている管理者様は是非ご確認ください。

--

--

Kenta Osuka
kosuka EMS

I like EMS(Enterprise Mobility + Security). This blog/vlog will introduce EMS.(Main is Intune/Azure AD)