記事公開日
【Microsoft Purview】PnP PowerShell を使って、秘密度ラベル付きファイルの監査ログを取得してみた【第1回】

はじめに
本記事をご覧のみなさま、こんにちは。DXソリューション営業本部の青木です。SharePoint Online や OneDrive for Business に機密情報を格納する際、秘密度ラベルを適用することは、情報漏洩リスクを低減するための重要な対策です。
しかし、ラベルを適用しただけでは、ファイルが適切に管理されているか、意図しないアクセスや共有が行われていないかを確認することができません。
そこで、Microsoft 365 Purview の監査ログを活用することで、秘密度ラベル付きファイルに対する様々な操作を追跡できます。
さらに、PnP PowerShell を組み合わせることで、これらのログを効率的に抽出し、分析することが可能になります。
※Microsoft Purview監査ログについて知りたい方はこちらをご覧ください。
本稿では、以下の情報を取得する方法をご紹介します。
- 秘密度ラベル付きファイルが適切なサイトにアップロードされているか
- 秘密度ラベル付きファイルがいつ、誰にダウンロードされたか
- 秘密度ラベル付きファイルが社外ユーザーと共有されていないか
Purview 監査ログを利用したファイル操作の確認方法と課題
Microsoft 365 Purview の監査ログは、組織内のユーザーおよび管理者の様々なアクティビティを記録し、セキュリティ状況の把握やインシデント調査に役立ちます。SharePoint Online や OneDrive for Business に格納されているファイルに対するアクティビティを監視する上で、特に以下の3つのログは重要です。
どんな操作 | どのアプリ | 何が分かるか | 何ができるか |
FileUploaded | SharePoint, OneDrive | ファイルの名称、ファイルのパス、操作時間 | ファイルが意図した場所(適切なセキュリティ設定がされたサイトなど)にアップロードされているかを確認できます。不適切な場所へのアップロードを早期に発見できます。 |
FileDownloaded | SharePoint, OneDrive | ファイルの名称、ファイルのパス、操作時間 | ファイルがいつ、誰によってダウンロードされたかを確認できます。不審なダウンロードがないか監視し、情報漏洩のリスクを評価できます。 |
AddedToSecureLink | SharePoint, OneDrive | ファイルの名称、ファイルのパス、リンク送信時間 | ファイルがいつ、セキュアな共有リンクとして作成・送信されたかを確認できます。意図しない共有や、不適切な権限設定のリンクが作成されていないかを確認できます。 |
これらのログを確認することで、ファイルのライフサイクルにおける重要な操作を把握し、セキュリティポリシーが遵守されているかを確認できます。
前述の通り、Microsoft 365 Purview の監査ログは、SharePoint Online や OneDrive for Business 上のファイル操作を記録する上で非常に有用です。
しかしながら、秘密度ラベルに関する情報については、以下のような点で不便な点がありました。
- FileUploaded: ファイルがアップロードされた記録は残りますが、そのファイルに適用されていた秘密度ラベルの情報は監査ログに直接出力されません。
- FileDownloaded: ファイルがダウンロードされた記録は残りますが、そのファイルに適用されていた秘密度ラベルの情報は監査ログに直接出力されません。
- AddedToSecureLink: セキュアな共有リンクが作成された記録は残りますが、関連付けられたファイルの秘密度ラベルは ID (GUID) でしか表示されず、ラベルの表示名が監査ログから直接は分かりません。
これらの課題により、監査ログだけでは「どの秘密度ラベルのファイルがアップロード/ダウンロードされたのか」「どの秘密度度ラベルのファイルに対して共有リンクが作成されたのか」といった、セキュリティ状況の把握に不可欠な情報を直接的に確認することが困難でした。
そこで、これらの課題を解決するために有効なのが、PnP PowerShell です。
PnP PowerShellとは
PnP PowerShell は、SharePoint Online を管理するための強力な PowerShell モジュールであり、標準の PowerShell コマンドレットよりも豊富な機能を提供します。これを利用することで、監査ログでは取得できなかった秘密度ラベルに関する詳細な情報を取得し、より効果的なセキュリティ監視と分析が可能になります。
前提条件:
- PnP PowerShell を利用するには、事前にモジュールをインストールする必要があります。(Install-Module -Name PnP.PowerShell)
- Entra ID にアプリケーションを事前登録する必要があります。
- アプリケーション認証には証明書を使用します。
- 詳しい証明書の作成手順はMicrosoft公式ページをご確認ください。
- SharePoint Online への接続には、適切な権限を持つアカウントが必要です。
注意点:
- 秘密度ラベル情報の取得方法は、組織の構成や要件によって異なる可能性があります。
PnP PowerShellを活用した秘密度ラベルの取得方法
1. 監査ログ取得
監査ログは、以下のコマンドを実行することで取得できます。引数の説明
StartDate: ログの取得開始日を指定します。
EndDate: ログの取得終了日を指定します。
Operations: 取得したいログの種類を指定します。複数指定する場合は、カンマ区切りで入力します。
Search-UnifiedAuditLog -StartDate $startDate -EndDate $endDate -Operations "FileUploaded","FileDownloaded","AddedToSecureLink"

2. データ変換
取得した監査ログの「AuditData」列にはJSON形式の値が格納されています。この値をPowerShellで扱いやすい形式に変換します。# AuditData列の値をJSONとして変換
$jsonObj = ConvertFrom-Json -InputObject $Log.AuditData
変換後、$jsonObj オブジェクトから以下の情報を取得できます。
$jsonObj.SiteUrl | 秘密度ラベル付きファイルが保存されているサイトのURL |
$jsonObj.ListId | 秘密度ラベル付きファイルが保存されているリストのユニークID |
$jsonObj.ListItemUniqueId | 秘密度ラベル付きファイルが保存されているアイテムのユニークID |
〇〇.onmicrosoft.com | テナント名 |
3. PnP PowerShellを使用した秘密度ラベルの取得
取得した監査ログの情報を基に、PnP PowerShellコマンドレットを使用してSharePoint Online上のアイテム(ファイルやリストアイテム)に適用されている秘密度ラベルの詳細を取得します。3.1. SharePoint Onlineへの接続
PnP PowerShellコマンドレットを実行するために、対象のSharePoint Onlineサイトに接続します。# 対象サイトに接続
Connect-PnPOnline -Url $SiteURL -ClientId $AppClientId -CertificatePath $PfxPath -Tenant $Tenant
#コネクションを取得
$adminConnection = Get-PnPConnection
補足:
$SiteURL: 監査ログの AuditData から取得したサイトのURL(例: $jsonObj.SiteUrl)
$AppClientId: Azure ADで登録したアプリケーションのクライアントID
$PfxPath: アプリケーション認証に使用する証明書ファイルのパス
$Tenant: テナントのドメイン名(例: yourtenant.onmicrosoft.com)
3.2. 対象アイテム(ファイル)の取得
操作タイプ(Operations) が 'FileUploaded'や'FileDownloaded' である場合、監査ログから得られる情報(リストID、アイテムユニークID)を使用し、適用されている秘密度ラベルの情報を取得することが可能です。
3.3. 秘密度ラベルを取得
操作タイプ(Operations)が 'AddedToSecureLink' である場合、そのログには秘密度ラベルがID(GUID)形式で記録されることがあります。このIDから、ユーザーにとって分かりやすい秘密度ラベルの表示名を取得する追加の処理が必要です。
#組織の秘密度ラベルを取得
$TenantLabels = Get-PnPAvailableSensitivityLabel -Connection $adminConnection

このようにPnP PowerShellを活用することで、監査ログだけでは確認が出来なかった"ファイルに付与されたラベル情報"についても確認することが可能になります。
最後に
いかがでしょうか?PnP PowerShell を活用することで、監査ログだけでは不足していた秘密度ラベルに関する重要な情報を補完し、より高度なセキュリティ監視と分析を実現することが期待できます。次回は今回取得した監査ログ・秘密度ラベルの情報をPower BIで可視化してみたいと思いますので是非そちらもご覧下さい。
【Microsoft Cloud Service導入支援パッケージのお知らせ】
弊社では、監査ソリューションを含めたMicrosoft 365サービスの製品導入支援パッケージをご用意しております。
「これからMicrosoft 365 導入を行うが何から始めればいいかわからない」「Microsoft 365を導入したが、もっと活用する方法が知りたい」といった方にお勧めです。
ご興味のある方はぜひ以下の記事についてもご覧ください。
※このブログで参照されている、Microsoft、Windows、Microsoft Azure、その他のマイクロソフト製品およびサービスは、米国およびその他の国におけるマイクロソフトの商標または登録商標です。