SharePoint Online の権限監査
By Mirko Peters · · Updated
PnP PowerShell と Microsoft Graph を使って、大規模にアクセス リスクを検出する SharePoint Online 権限監査の自動パイプラインを構築します。
Automatically translated with AI from the original post. Read the English original

手作業で SharePoint の権限を確認しようとすると、大きな壁に直面します。サイトは日々変わり、チームへの参加者や離脱者も出ます。誰が何にアクセスできるかを把握しつつ、見落としのないリスクも拾う必要があります。SharePoint Online の自動監査は、ギャップを見つけ、データを保護し、時間を節約するのに役立ちます。PnP PowerShell、Microsoft Graph、Azure Automation などのツールを使えば、権限を自動的にチェックする仕組みを構築できます。
重要なポイント
SharePoint Online の権限監査を自動化すると、時間を節約でき、セキュリティ リスクも低減できます。誰が何にアクセスできるかを可視化でき、手作業で確認する必要もなくなります。
PnP PowerShell と Microsoft Graph を使って、すべてのサイトと権限を洗い出しましょう。会社全体のアクセス状況を把握できます。
監査パイプラインには、アプリのみの認証を設定してください。システムの安全性が保たれ、ユーザー アカウントが変わっても動作し続けます。
監査は頻繁に実行し、リスクの高い権限変更についてアラートを設定しましょう。セキュリティ上の問題を早期に発見し、深刻化する前に対処できます。
監査結果の表示には Power BI を使いましょう。ダッシュボードで傾向を把握でき、チームとの共有も容易になります。
手動の権限レビューが失敗する理由
手動監査の課題
SharePoint の権限を手作業で確認するのは困難です。SharePoint Online にはさまざまな種類のアクセス許可があります。Microsoft 365 グループや Entra セキュリティ グループもあります。SharePoint 専用の権限もあります。共有リンクやゲスト アクセスがあると、さらに難しくなります。多数のサイトやライブラリを追跡し続ける必要があり、各サイトが独自の権限を持つこともあります。物事の変化が速いため、手動チェックでは隠れたリスクを見落としがちです。
権限の構造は理解しにくいものです。
グループの種類が異なると、さらに混乱が生じます。
共有リンクやゲスト ユーザーは、問題をさらに増やします。
すべてを確認できなければ、セキュリティ リスクは拡大します。
古くなった権限のリスク
古い権限は大きな問題を引き起こす可能性があります。アクセス権を更新しないと、本来持つべきでない権限をユーザーが保持し続けることになります。その結果、データ漏えいやセキュリティ上の問題につながりかねません。よくあるリスクを以下の表にまとめました。
リスクの種類 | 説明 |
|---|---|
過剰な権限付与 | Microsoft Copilot は、各社で約300万件の機密レコードを扱っています。権限が古いままだと、データ漏えいの可能性が高まります。 |
データ露出のリスク | ユーザーのアクセス権が過剰だと、機密データが社外に持ち出されるおそれがあります。 |
セキュリティ上の懸念 | セキュリティ チームの 67% が、Copilot のような AI ツールが重要な業務情報を表示してしまうことを懸念しています。 |
SharePoint Online の権限監査を自動化すると、被害が出る前にこれらのリスクを発見できます。
監査可能性とコンプライアンスのギャップ
手動レビューでは、重要なルールを見落としがちです。「Everyone」や「Everyone except external users」が非公開のファイルを閲覧できてしまうこともあります。社外共有や匿名リンクには有効期限が設定されていないこともあります。古いサイトやライブラリにはリスクのあるデータが残っていても、誰も確認しないことがあります。
ヒント: 定期的な監査により、これらの問題が深刻化する前に発見して修正できます。
機密データへの過剰なアクセス
共有リンクや匿名リンクに制限がない
リスクのあるデータが残る古いサイトやライブラリ
権限を頻繁に更新しないと、データ漏えい、規制違反、セキュリティの脅威に直面するおそれがあります。SharePoint Online の自動監査は、これらの問題を防ぎ、会社を守るのに役立ちます。
SharePoint Online 権限監査の自動パイプライン
パイプライン アーキテクチャの概要
パイプラインを構築する前に、適切な計画が必要です。パイプラインは機械のように動作します。SharePoint テナントを入力として受け取り、レポートを作成します。レポートには、誰が何を閲覧できるかが示されます。各サイトを自分で確認する必要はありません。この作業はパイプラインが代わりに行います。
パイプラインの流れは次のとおりです。
検出: パイプラインが SharePoint Online テナント内のすべてのサイト、ライブラリ、ファイルを見つけます。
収集: 各場所から権限データを取得します。
正規化: パイプラインが複雑な権限データを、シンプルな表に変換します。
レポート作成: 結果を CSV または JSON ファイルとして保存します。これらのファイルは Power BI などのツールで利用できます。
アラート: パイプラインは変更を監視し、新たなリスクを検出するとアラートを送信します。
ヒント: パイプラインの手順を紙に書き出してみましょう。各部分が把握しやすくなり、抜けている手順も見つけやすくなります。
パイプラインは毎日実行できます。新しいデータを取得でき、問題を素早く見つけられます。SharePoint Online の自動監査により、信頼して繰り返し使えるプロセスが手に入ります。
アプリ専用認証の設定
パイプラインをログイン操作なしで動かしたい場合は、アプリ専用認証を使います。Entra ID(Azure AD)でアプリの登録を行います。アプリに与えるアクセス許可は必要最小限にします。これによりシステムを安全に保てます。
次の手順に従ってください。
Entra ID で新しいアプリを登録します。
アプリには必要最小限のアクセス許可だけを付与します。たとえば Sites.Read.All や Group.Read.All を使います。
安全なサインインのために証明書を作成します。
証明書を Azure Key Vault に保存します。
アプリを使って、PnP PowerShell で SharePoint Online に接続します。アプリ専用の方式は、SharePoint Online の自動監査に適しています。担当者の退職やパスワード変更の影響を受けません。
注: 自動化に個人の管理者アカウントは使わないでください。アプリ専用のアクセスのほうが安全で、運用にも適しています。
Azure Automation と Key Vault の統合
パイプラインを定期的に実行したい場合は、Azure Automation を使います。PowerShell のランブックを作成します。ランブックは SharePoint Online に接続し、アクセス許可の情報を取得して結果を保存します。
Azure Automation は Azure Key Vault から証明書を取得できます。これにより機密情報を安全に管理できます。スクリプトにパスワードや証明書を直接書き込む必要はありません。
処理の流れは次のとおりです。
Azure Automation がランブックを開始します。
ランブックが Key Vault から証明書を取得します。
スクリプトがアプリ専用認証で SharePoint Online に接続します。
アクセス許可のデータを取得して保存します。
ランブックは毎日または毎週実行するように設定できます。より高い処理能力や長い実行時間が必要な場合は、ハイブリッド ランブック ワーカーを使うこともできます。
補足: 機密情報は必ず Azure Key Vault に保管してください。これにより資格情報を安全に保ち、パイプラインを守れます。
Azure Automation と Key Vault を使った SharePoint Online のアクセス許可監査により、安全で手間のかからないプロセスが実現します。定期的なレポートを得られ、結果を信頼できます。
アクセス許可データの収集と正規化
PnP PowerShell によるサイトとリソースの検出
アクセス許可を確認する前に、すべての SharePoint Online サイトとリソースを見つける必要があります。PnP PowerShell にはこの作業を支援するツールがあります。サブドメイン列挙を使うと、社内のすべての SharePoint サイトを一覧できます。Google の検索テクニックを使えば、公開されているドキュメントを見つけやすくなります。一部の管理者は Graph API を使って、匿名の共有リンクを探しています。SharePoint のメタデータを確認すると、サイトの構成を把握できます。多くのチームは、この作業を自動化するために独自の PowerShell スクリプトを作成しています。
サブドメイン列挙により、見つけにくいサイトを発見できます。
Google の検索テクニックにより、誰でも閲覧できるドキュメントを見つけられます。
匿名の共有リンクを確認すると、誰にでも公開されているファイルがわかります。
メタデータを確認すると、サイトがどのように構成されているかがわかります。
カスタム スクリプトを使うと、これらの作業を素早く、何度でも繰り返し実行できます。
ヒント: 検出の手順を自動化して、新しいサイトやリソースを常に見つけられるようにしてください。
Microsoft Graph による有効なアクセス許可の確認
すべてのサイトを見つけたら、各サイトに誰がアクセスできるかを確認する必要があります。Microsoft Graph API を使うと、すべてのリソースのアクセス許可を確認できます。API は、ユーザーやグループごとに最も低いアクセス レベルを判定します。アプリがアクセスできるのは、サインインしたユーザーが閲覧を許可されている範囲に限られます。すべてを確認するには、Sites.Read.All などの適切なアクセス許可をアプリに付与する必要があります。一部のサイトについては Sites.Selected を使えますが、SharePoint 管理者の承認が必要です。
API は、ユーザーごとに最も低いアクセス レベルを判定します。
アプリに見えるのは、ユーザーが見られるものだけです。
すべてのサイトを確認したい場合は、Sites.Read.All を使います。
特定のサイトには Sites.Selected を使います。
注: アプリには必要最小限のアクセス許可を必ず付与してください。
スロットリング、ページング、データの正規化
SharePoint Online を監査すると、大量のデータが得られます。Microsoft Graph はページングを使ってデータを小分けにして返します。すべてのデータを取得するには nextLink をたどる必要があります。要求が多すぎる場合、Graph は処理速度を制限します。その場合は待ってから再試行してください。アクセス許可の詳細をテーブルにまとめると、データがわかりやすくなります。これにより、レポートを作成しやすくなり、リスクを素早く見つけられます。
ResourcePath | ResourceType | PrincipalType | UPN/Email | IsGuest | AccessRole | GrantedVia | GrantScope | InheritedFrom | GroupChain |
|---|---|---|---|---|---|---|---|---|---|
/sites/HR | サイト | ユーザー | いいえ | 編集 | 直接 | サイト | なし | 該当なし |
コラム: データをシンプルにしておくと、リスクをすばやく報告・発見できます。
自動化、レポート、アラート
スケジュールとオーケストレーション
アクセス許可の監査は、定期的なスケジュールで実行しておくことをおすすめします。Azure Automation を使うと、毎日または毎週実行されるジョブを設定できます。SharePoint Online に接続してアクセス許可データを収集する PowerShell runbook を作成します。組み込みのスケジューラーを使えば、ジョブを実行する最適な時間帯を選べます。テナントへの負荷を抑えられるため、業務時間外が適しています。各実行はジョブ履歴とログで監視します。ジョブが失敗した場合は、エラーメッセージを確認して問題を修正します。より長時間のジョブや、より多くのリソースが必要な場合は、Hybrid Runbook Worker を使うこともできます。
ヒント: ジョブが失敗したときにすぐ気づけるよう、失敗時のアラートを設定しておきましょう。
差分ベースのアラートと早期警告
アクセス許可がリスクのある形で変更されたときには、すぐに把握する必要があります。SharePoint Online の自動監査を使うと、本日のレポートと前日のレポートを比較できます。新しいゲスト ユーザー、ロールの変更、新しい共有リンクがないかを確認します。大きな変更を検出した場合は、アラートを送信します。通知には、メール、Teams、Jira などのチケット管理システムを利用できます。早期警告があれば、問題が大きくなる前に食い止められます。リスクのある変更の基準はルールとして定義しておきます。たとえば、誰かに所有者権限が付与されたときや、新しい外部ユーザーが現れたときに通知を受け取りたい場合が考えられます。
レポートを比較して変更点を見つける
リスクのある更新についてアラートを送信する
通知には Teams、メール、またはチケットを使用する
Power BI とセキュリティ レポート
監査結果を分かりやすく確認できるようにしましょう。Power BI を使うと、CSV または JSON ファイルからダッシュボードを作成できます。ゲスト ユーザー、高い権限を持つアカウント、変更が最も多いサイトを示すグラフを作成します。これらのレポートは四半期ごとのレビューで活用できます。ダッシュボードはセキュリティ チームと共有できます。SharePoint Online の自動監査により、どのレポートにも最新のデータを使用できます。傾向を追跡し、問題を早期に発見できます。
レポートの種類 | 把握できること |
|---|---|
ゲスト アクセス | 誰がデータを閲覧できるか |
権限の変更 | 誰のアクセス権が増えたか |
サイトのアクティビティ | どのサイトで変更が最も多いか |
注: Power BI を使うと、未加工のデータをチームが行動に移せるインサイトに変換できます。
ガードレール、展開、ベスト プラクティス
セキュリティとコンプライアンスの考慮事項
自動化されたアクセス許可監査を利用する場合も、SharePoint Online を安全に保つ必要があります。必ず最小特権の原則に従ってください。アプリには、実際に必要なロールのみを付与します。個人アカウントではなくセキュリティ グループを使用します。これにより、監査を管理しやすくなります。多要素認証 (MFA) を有効にし、条件付きアクセスを設定します。これらの対策により、公開する権限のない人物による操作を防止できます。また、データの安全性も保たれます。付与したすべてのロールを記録します。誰がアクセス権を持っているかを把握できるよう、アクセス許可の台帳を管理します。アクセス許可は3か月ごとに確認します。アクセス権は時間の経過とともに変化するため、定期的な確認がセキュリティの維持につながります。
セキュリティとコンプライアンスの考慮事項 | 説明 |
|---|---|
最小特権の原則を適用する | 必要なロールのみを割り当てます。 |
個人アカウントではなくセキュリティ グループを使用する | 監査が簡単になります。 |
MFA と条件付きアクセスを有効にする | 権限のない公開を防ぎます。 |
ロールの割り当てを文書化する | アクセス許可の台帳を管理します。 |
四半期ごとに確認する | アクセス許可は時間の経過とともにずれていきます。 |
ヒント: セキュリティ グループを使用し、すべての変更を記録しておきましょう。これにより、誰がアクセス権を持っているかを追跡し、コンプライアンス規則に従うことができます。
パフォーマンスとスロットリングのヒント
パイプラインを円滑に機能させたいところです。一度に多くのリクエストを送ると、Microsoft Graph と SharePoint Online の応答が遅くなることがあります。スロットリングのルールに従ってください。"429 Too Many Requests" が返された場合は、再試行までの待機時間を長くします。ジョブは小さなグループに分割します。すべてのサイトを一度に処理するのではなく、バッチ単位で処理します。作業者が少ない時間帯に監査を実行します。これにより、システムへの負荷を軽減できます。ジョブ履歴を確認し、失敗した場合は再試行します。結果は安全な場所に保存し、機密データを保護します。
ベスト プラクティス | 説明 |
|---|---|
最初の段階から、会社のセキュリティおよびコンプライアンス規則に従います。 | |
アクセスと共有を管理する | 不正なアクセスや情報漏えいを防ぐため、アクセス許可を慎重に設定します。 |
機密データを保護する | 組み込みのセキュリティ ツールを使用して、情報を保護し、ミスを防ぎ、ランサムウェアなどの脅威から守ります。 |
注意: シークレットは必ず Azure Key Vault に保管してください。スクリプトにパスワードを直接書き込むことは避けてください。
30-60-90日間の展開計画
自動化されたアクセス許可の監査は、3つのステップで設定できます。まず、パイロット導入を行います。数サイトを選び、パイプラインを実行します。結果が手作業での確認と一致するかをチェックします。次に、対象サイトを増やします。差分ベースのアラートを有効にして、リスクの高い変更を検出します。最後に、これを通常のセキュリティチェックの一部にします。Power BI のダッシュボードを作成します。手順を文書化します。結果をチームと共有します。
展開計画のサンプル:
1~7日目: 数サイトでパイロットを試します。結果が正しいことを確認します。
8~30日目: すべてのサイトをグループ単位で追加します。アラートを有効にします。
31~90日目: 日常業務の一部にします。レポートを作成します。レビューに組み込みます。
Callout: 小さく始めて、素早く学び、プロセスを拡張していきましょう。問題を早期に発見でき、チームが自動化を信頼できるようになります。
自動化された SharePoint Online のアクセス許可監査パイプラインを使うと、誰がアクセスできるかを把握できます。リスクの発見、作業時間の削減、規則の遵守に役立ちます。まず、Entra ID にアプリを登録します。次に、数サイトに対して小規模なスクリプトを実行します。
定期的かつ自動的な監査は、アクセス許可の変更を素早く見つけ、データを安全に保つのに役立ちます。今すぐ始めて、SharePoint をより安全で信頼性の高いものにしましょう。
よくある質問
アクセス許可の監査はどのくらいの頻度で実行すればよいですか?
リスクの高いサイトについては、毎日監査を実行してください。ほとんどのサイトには週次の監査で十分です。定期的なチェックにより変更を見逃さず、データを安全に保てます。
SharePoint Online の監査にはアプリにどのアクセス許可が必要ですか?
アプリには Sites.Read.All と Group.Read.All が必要です。これらのアクセス許可により、サイトとグループのアクセス状況を確認できます。常に必要最小限の権限(最小特権の原則)を使用してください。
監査結果の可視化に Power BI を使えますか?
はい、Power BI を使用できます。CSV または JSON ファイルをインポートします。ゲストユーザー、高権限アカウント、時系列での変化を示すダッシュボードを作成します。
Microsoft Graph が要求をスロットリングした場合はどうなりますか?
スロットリングされた場合は、しばらく待ってから再試行してください。指数バックオフを使用します。上限に達しないよう、ジョブをより小さなバッチに分割します。
自動化パイプラインでシークレットを安全に保つにはどうすればよいですか?
証明書とパスワードは Azure Key Vault に保管してください。スクリプトにシークレットを書き込むことは避けてください。これにより資格情報を安全に保ち、データを保護できます。
あわせて聴きたいエピソード
SharePoint のアクセス許可監査について調べている場合は、以下のエピソードで実装、アーキテクチャ、セキュリティ、ガバナンスに関する実践的な背景を確認できます:
- Microsoft Teams Governance – The Illusion of Control — 所有権、ポリシー、ライフサイクルの判断が、信頼性の高い Microsoft 365 運用をどう形づくるかを確認できます。
- Microsoft AI Agent Harness – Simply Explained — AI を活用したワークフローにおける、オーケストレーション、ガードレール、評価、可観測性を理解できます。
- Azure AI Foundry – Simply Explained — エンタープライズ向け AI ソリューションの構築、評価、デプロイ、ガバナンスの方法を学べます。
- Microsoft Defender XDR – Simply Explained — 実装上の選択を、セキュリティの可視化、調査、対応と結び付けて理解できます。