SharePointアクセス拒否を調べるInsightsレポート|誰がどのサイトで拒否されたかPowerShellで確認

SharePoint Onlineで「アクセスが拒否されました」と問い合わせを受けたとき、制限付きサイトアクセスのポリシーが原因であれば、Insightsレポートから拒否されたユーザーとサイトを調査できます。

調査の中心となるのは、ActionsBlockedByPolicyレポートです。過去28日間のアクセス拒否について、直近の拒否、拒否回数が多いユーザー、拒否が集中しているサイトをPowerShellで確認できます。画面上の集計だけで判断できない場合は、最大10,000件の拒否データをダウンロードして分析します。

ただし、このレポートが記録するのは、Restricted Access Controlによる拒否だけです。SharePoint権限、条件付きアクセス、共有設定などを原因とする、すべてのアクセス拒否を確認できるわけではありません。最初に調査対象を切り分けることが重要です。(Microsoft Learn)

目次

SharePointアクセス拒否を調べるInsightsレポートで分かること

制限付きサイトアクセスに関するInsightsレポートには、次の2種類があります。

レポート確認できる内容主な用途
RACProtectedSitesRestricted Access Controlで保護されているサイトポリシー適用状況や保護対象サイトの確認
ActionsBlockedByPolicyポリシーによって拒否されたアクセス誰が、どのサイトで、どの程度拒否されているかの調査

RACProtectedSitesは、アクセス拒否の原因を直接調べるレポートではありません。どのサイトに制限付きサイトアクセスが設定されているかを確認し、ポリシーの適用漏れや過剰な適用を調査するために使います。

ActionsBlockedByPolicyでは、過去28日間の拒否を対象として、次の情報を確認できます。

Contentの値確認できる内容
AllDenials直近のアクセス拒否
TopUsers拒否回数が多いユーザー
TopSites拒否回数が多いサイト
SiteDistributionサイト種別ごとの拒否分布

Microsoft Learnでは、AllDenialsは直近100件、TopSitesは上位100サイトとして案内されています。TopUsersについては、Restricted Access Controlの機能説明では上位100ユーザー、PowerShellコマンドレットのリファレンスでは上位10ユーザーと記載されており、ドキュメント間で差があります。表示件数は実際の出力を基準とし、全体を分析するときはダウンロードデータを使用するのが安全です。(Microsoft Learn)

このレポートで調査できるアクセス拒否の範囲

Restricted Access Controlは、SharePointサイトへのアクセスを、指定したMicrosoft EntraセキュリティグループまたはMicrosoft 365グループのメンバーに限定する機能です。

ユーザーがサイトの通常のアクセス権限を持っていても、制限付きアクセスグループに含まれていなければアクセスできません。反対に、制限付きアクセスグループに追加しただけでは、SharePointサイトのアクセス権限は付与されません。

つまり、アクセスには次の両方が必要です。

  • SharePointサイトまたはコンテンツに対する通常のアクセス権限
  • Restricted Access Controlで指定されたグループのメンバーシップ

この二重条件を理解していないと、「サイトのメンバーなのにアクセスできない」「グループに追加したのに開けない」といった問題が発生します。(Microsoft Learn)

ActionsBlockedByPolicyで調査できるケース

次のようなケースでは、ActionsBlockedByPolicyが有効です。

  • サイトの権限は付与されているが、制限付きアクセスグループに含まれていない
  • 異動したユーザーが、新しい部署の制限付きアクセスグループに追加されていない
  • グループ構成を変更した後から、特定サイトへの拒否が増えた
  • Restricted Access Controlを設定したサイトで、問い合わせが集中している
  • 複数サイトで同じユーザーの拒否が繰り返されている

別の方法で調査すべきケース

想定される原因主な確認先
SharePointサイトの閲覧権限がないサイト権限、Microsoft 365グループ、SharePointグループ
共有リンクが失効・削除されている共有リンク、Microsoft Purview監査
管理されていない端末からのアクセス制限Microsoft Entraサインインログ、条件付きアクセス
外部共有や許可ドメインの制限SharePoint管理センターの共有ポリシー
認証コンテキストや秘密度ラベルによる制御Microsoft Purview、条件付きアクセス
アカウントの無効化やサインインブロックMicrosoft Entra管理センター
サイトやファイルが削除・移動されているごみ箱、監査ログ、変更履歴

ActionsBlockedByPolicyに該当データがないからといって、ユーザーの申告が誤っているとは限りません。Restricted Access Control以外の原因へ調査範囲を広げる必要があります。

Insightsレポートを実行するための要件

ライセンスと管理者ロールを確認する

Restricted Access ControlのInsightsレポートを利用するには、SharePoint Advanced Managementの前提条件を満たす必要があります。

現在のMicrosoft Learnでは、対象となる基本サブスクリプションに加えて、組織内の少なくとも1人にMicrosoft 365 Copilotライセンスが割り当てられている場合や、SharePoint Advanced Management Plan 1アドオンを契約している場合などが要件として案内されています。契約内容によって利用条件が異なるため、実際のテナントのライセンスを確認してください。

実行者には、原則として次のいずれかの管理者ロールが必要です。

  • SharePoint Administrator
  • SharePoint Advanced Management Administrator

また、最新版のSharePoint Online Management Shellを使用することが推奨されています。(Microsoft Learn)

SharePoint Online Management Shellを準備する

インストール済みのバージョンは、次のコマンドで確認できます。

Get-Module `
    -Name Microsoft.Online.SharePoint.PowerShell `
    -ListAvailable |
    Select-Object Name, Version

未インストールの場合は、現在のユーザーにインストールします。

Install-Module `
    -Name Microsoft.Online.SharePoint.PowerShell `
    -Scope CurrentUser

PowerShell Galleryからインストールしたモジュールを更新する場合は、次のコマンドを実行します。

Update-Module `
    -Name Microsoft.Online.SharePoint.PowerShell

PowerShell 7から実行する場合は、Windows PowerShell互換モードでモジュールを読み込みます。

Import-Module `
    Microsoft.Online.SharePoint.PowerShell `
    -UseWindowsPowerShell

その後、SharePoint Onlineの管理サイトへ接続します。

Connect-SPOService `
    -Url "https://contoso-admin.sharepoint.com"

contosoは、自社テナントの名前に置き換えてください。多要素認証を使用している場合は、表示されたサインイン画面で認証します。(Microsoft Learn)

SharePointで誰がどのサイトに拒否されたか調べるPowerShell手順

アクセス拒否レポートの生成を開始する

最初に、ActionsBlockedByPolicyレポートを生成します。

Start-SPORestrictedAccessForSitesInsights `
    -ActionsBlockedByPolicy

このコマンドは、直前の28日間を対象としたRestricted Access Controlのアクセス拒否レポート生成を開始します。

コマンドを実行しても、その場ですぐに全データが表示されるわけではありません。レポート生成には数時間かかる場合があります。(Microsoft Learn)

レポートの状態とReportIdを確認する

生成状況を確認します。

Get-SPORestrictedAccessForSitesInsights `
    -ActionsBlockedByPolicy

出力されたレポートの状態を確認し、完了したレポートのReportIdを控えます。

以降の例では、ReportIdを変数に設定して使用します。

$reportId = "00000000-0000-0000-0000-000000000000"

実際には、状態確認コマンドで表示されたGUIDへ置き換えてください。

ReportIdを間違えると、別の期間のレポートを参照したり、該当レポートが見つからなかったりします。生成日時とレポート種別を合わせて確認することが重要です。

直近のアクセス拒否100件を確認する

誰がどのサイトで拒否されたかを調べるときは、まずAllDenialsを確認します。

Get-SPORestrictedAccessForSitesInsights `
    -ActionsBlockedByPolicy `
    -ReportId $reportId `
    -Content AllDenials

このコマンドでは、過去28日間に発生した直近100件のアクセス拒否を確認できます。問い合わせを受けた直後の調査や、ポリシー変更後の影響確認に適しています。(Microsoft Learn)

実務では、次の情報を照合します。

  • 問い合わせをしたユーザー
  • 拒否されたサイト
  • 拒否が発生した時期
  • 同じユーザーによる繰り返し
  • 同じサイトへの拒否の集中

直近100件より前のデータは画面上に表示されないため、拒否件数が多いテナントではCSVのダウンロードが必要です。

拒否回数が多いユーザーを確認する

複数サイトにアクセスできないユーザーや、異動後のグループ設定漏れを探す場合は、TopUsersを使用します。

Get-SPORestrictedAccessForSitesInsights `
    -ActionsBlockedByPolicy `
    -ReportId $reportId `
    -Content TopUsers

特定ユーザーだけ拒否回数が多い場合は、共通して使用している制限付きアクセスグループから、そのユーザーが漏れている可能性があります。

ただし、単純にグループへ追加する前に、当該ユーザーが本当にサイトへアクセスすべきかをサイト所有者や情報管理責任者へ確認してください。

拒否回数が多いサイトを確認する

アクセス拒否が集中しているサイトを調べる場合は、TopSitesを使用します。

Get-SPORestrictedAccessForSitesInsights `
    -ActionsBlockedByPolicy `
    -ReportId $reportId `
    -Content TopSites

上位サイトに拒否が集中している場合、次のような設定ミスを疑います。

  • 本来利用すべきグループがRestricted Access Controlに登録されていない
  • 部署再編後も古いセキュリティグループを使用している
  • Teamsの利用者とSharePoint側の制限グループが一致していない
  • サイト所有者が想定する利用者範囲と、管理者が設定した制限範囲が異なる

TopSitesは、問い合わせが多いサイトを優先的に調査するときにも役立ちます。

サイト種別ごとの拒否分布を確認する

サイトの種類ごとの傾向は、SiteDistributionで確認します。

Get-SPORestrictedAccessForSitesInsights `
    -ActionsBlockedByPolicy `
    -ReportId $reportId `
    -Content SiteDistribution

特定のサイト種別だけ拒否が多い場合は、そのサイトの作成方法やグループ運用に共通の問題がないか確認します。

たとえば、Teamsに接続されたサイトで拒否が多ければ、Teamsメンバーと制限付きアクセスグループのメンバーが一致しているかを調査します。

最大10,000件のアクセス拒否をダウンロードする

直近100件だけでは原因を判断できない場合は、アクセス拒否レポートをダウンロードします。

まず、保存先となるフォルダーを作成し、カレントディレクトリを移動します。

$reportPath = "C:\Reports\SharePoint-RAC"

New-Item `
    -Path $reportPath `
    -ItemType Directory `
    -Force |
    Out-Null

Set-Location $reportPath

ダウンロード時は、次の形式で実行します。

Get-SPORestrictedAccessForSitesInsights `
    -ActionsBlockedByPolicy `
    -ReportId $reportId `
    -Content AllDenials `
    -Action Download

Microsoft Learnでは、ダウンロードによって最大10,000件の拒否を確認できると案内されています。ダウンロードファイルは、コマンドを実行したカレントディレクトリに保存されます。(Microsoft Learn)

現在の保存先は、次のコマンドで確認できます。

Get-Location

Get-SPORestrictedAccessForSitesInsightsは、-ActionにViewまたはDownload、-ContentにAllDenials、TopSites、TopUsers、SiteDistributionを指定できる構文です。利用中のモジュールでパラメーターエラーが出る場合は、最新版へ更新したうえで、ローカル環境のヘルプを確認してください。(GitHub)

Get-Help `
    Get-SPORestrictedAccessForSitesInsights `
    -Full

ダウンロードしたファイルにはユーザー識別子やサイト情報が含まれる可能性があります。アクセス権を限定した管理者用フォルダーへ保存し、不要になったファイルを放置しないようにしてください。

RACProtectedSitesで保護対象サイトを確認する

アクセス拒否の調査では、拒否履歴だけでなく、どのサイトにRestricted Access Controlが設定されているかも確認します。

保護サイトレポートを生成する

Start-SPORestrictedAccessForSitesInsights `
    -RACProtectedSites

レポートの状態を確認する

Get-SPORestrictedAccessForSitesInsights `
    -RACProtectedSites

完了したレポートのReportIdを控えます。

$protectedSitesReportId = "00000000-0000-0000-0000-000000000000"

ページビューが多い保護サイト上位100件を表示する

Get-SPORestrictedAccessForSitesInsights `
    -RACProtectedSites `
    -ReportId $protectedSitesReportId

表示されるのは、Restricted Access Controlで保護されているサイトのうち、ページビューが多い上位100サイトです。

単なるサイトURL順ではないため、「利用頻度が高く、影響範囲も大きい保護サイト」を優先して確認できます。(Microsoft Learn)

保護されているサイトの割合を確認する

Get-SPORestrictedAccessForSitesInsights `
    -RACProtectedSites `
    -ReportId $protectedSitesReportId `
    -InsightsSummary

この結果から、テナント全体のサイト数に対して、Restricted Access Controlで保護されているサイトがどの程度あるかを確認できます。

サイト数だけを見るのではなく、機密情報を扱うサイトが保護対象に含まれているか、一般公開範囲の広いサイトへ誤って設定していないかを確認することが重要です。

保護サイトレポートをダウンロードする

Get-SPORestrictedAccessForSitesInsights `
    -RACProtectedSites `
    -ReportId $protectedSitesReportId `
    -Action Download

ダウンロードファイルは、コマンドを実行したフォルダーに保存されます。(Microsoft Learn)

拒否されたサイトの設定を個別に確認する

レポートで問題のサイトを特定したら、サイトに設定されているRestricted Access Controlの状態を確認します。

$siteUrl = "https://contoso.sharepoint.com/sites/Finance"

Get-SPOSite `
    -Identity $siteUrl |
    Select-Object `
        Url,
        RestrictedAccessControl,
        RestrictedAccessControlGroups

確認するポイントは次のとおりです。

  • RestrictedAccessControlが有効になっているか
  • 登録されているグループGUIDが正しいか
  • 古い部署や廃止済みグループを参照していないか
  • 対象ユーザーがいずれかの制限グループに所属しているか
  • 対象ユーザーがSharePoint側の通常のアクセス権限も持っているか

制限付きアクセスグループへユーザーを追加しても、SharePointの閲覧権限がなければアクセスできません。反対に、SharePointサイトのメンバーであっても、制限付きアクセスグループに含まれていなければ拒否されます。(Microsoft Learn)

レポート結果から原因を判断する方法

レポートの傾向想定される原因次に確認すること
1サイトに拒否が集中サイト側の制限グループ設定ミスRestrictedAccessControlGroups、サイト所有者の想定利用者
1ユーザーが複数サイトで拒否共通グループへの追加漏れユーザーの異動履歴、Entraグループ所属
複数ユーザーが同時期から拒否グループ削除、ポリシー変更変更履歴、Purview監査、管理者の作業記録
Teams関連サイトだけ拒否Teamsメンバーと制限グループの不一致Teamsメンバー、Microsoft 365グループ、サイトURL
問い合わせはあるがレポートにないRAC以外の拒否サイト権限、Entraサインインログ、共有設定
古い拒否しか表示されないレポート生成待ち、ReportIdの選択ミスレポート状態、生成日時、対象期間

特に有効なのは、TopSitesで影響の大きいサイトを特定し、AllDenialsでユーザーとサイトの組み合わせを確認する流れです。

1人の問い合わせだけを見てグループを変更するのではなく、同じサイトで他のユーザーにも拒否が発生していないかを確認すると、個人の設定漏れかサイト全体の設定ミスかを切り分けやすくなります。

Teamsの共有チャネルとプライベートチャネルに注意する

Teamsの標準チャネルは、チームに接続されたSharePointサイトを使用します。一方、共有チャネルとプライベートチャネルは、それぞれ独立したサイトコレクションです。

親となるTeams接続サイトへRestricted Access Controlを設定しても、共有チャネルサイトやプライベートチャネルサイトには自動適用されません。それぞれのサイトに個別設定が必要です。(Microsoft Learn)

そのため、次のような状況が起こり得ます。

  • 標準チャネルのファイルにはアクセスできるが、プライベートチャネルでは拒否される
  • 親サイトは保護されているが、共有チャネルサイトが保護されていない
  • Teams上のメンバーとSharePoint側の制限グループが一致していない

Teams関連の問い合わせでは、ユーザーが開こうとしている実際のSharePointサイトURLを確認してください。親チームのサイトだけを確認すると、原因を見落とすことがあります。

よくあるエラーと対処方法

コマンドレットが見つからない

次のようなエラーが出る場合があります。

The term 'Start-SPORestrictedAccessForSitesInsights'
is not recognized

主な原因は、SharePoint Online Management Shellのバージョンが古いことです。

Update-Module `
    -Name Microsoft.Online.SharePoint.PowerShell

更新後はPowerShellをいったん終了し、再度起動してください。

PowerShell 7の場合は、次の読み込みも確認します。

Import-Module `
    Microsoft.Online.SharePoint.PowerShell `
    -UseWindowsPowerShell

レポートがすぐに表示されない

Insightsレポートは即時生成ではありません。Microsoft Learnでは、生成に数時間かかる場合があるとされています。状態が処理中であれば、同じレポートを繰り返し生成せず、Get-SPORestrictedAccessForSitesInsightsで完了状況を確認します。(Microsoft Learn)

レポートが空になる

次の点を確認してください。

  • Restricted Access Controlを使用しているサイトが存在するか
  • 過去28日間にポリシーによる拒否が発生しているか
  • ActionsBlockedByPolicyとRACProtectedSitesを取り違えていないか
  • 正しいSharePoint管理サイトへ接続しているか
  • 完了したレポートのReportIdを指定しているか
  • 問題の原因が通常のSharePoint権限や条件付きアクセスではないか

ダウンロードしたファイルが見つからない

ファイルは、コマンドを実行したカレントディレクトリに保存されます。

Get-Location

保存先を固定したい場合は、実行前にSet-Locationを使用してください。

Set-Location "C:\Reports\SharePoint-RAC"

TopUsersの表示件数が想定より少ない

Microsoft Learnの機能説明とコマンドレットリファレンスでは、TopUsersの件数に関する記載が一致していません。

表示された上位ユーザーだけで結論を出さず、必要に応じてアクセス拒否データをダウンロードし、ユーザーごとの拒否件数を集計してください。(Microsoft Learn)

アクセス拒否レポートを運用に組み込むポイント

Insightsレポートは、問い合わせ発生時だけでなく、Restricted Access Controlの運用確認にも利用できます。

効果的な確認順序は次のとおりです。

  1. RACProtectedSitesで保護対象サイトを把握する
  2. ActionsBlockedByPolicyのTopSitesで拒否が集中するサイトを探す
  3. TopUsersで影響を受けているユーザーを確認する
  4. AllDenialsで具体的なユーザーとサイトの組み合わせを確認する
  5. 必要に応じて最大10,000件をダウンロードする
  6. サイトの制限グループと通常権限を照合する
  7. 修正理由と変更内容を記録する

レポートは過去28日間のデータを基に生成されるため、リアルタイム監視の代わりにはなりません。問い合わせ日時、レポート生成日時、ReportId、調査対象期間を記録しておくと、後から判断根拠を説明しやすくなります。(Microsoft Learn)

ポリシーを解除すれば一時的にアクセスできるようになる場合でも、原因確認なしにRestricted Access Controlを削除するのは避けるべきです。まず、ユーザーが業務上アクセスすべき対象かを確認し、適切なグループまたは権限を修正してください。

SharePointのアクセス拒否を調査するときは、最初にActionsBlockedByPolicyを生成し、TopSites、TopUsers、AllDenialsの順で影響範囲を絞り込みます。そのうえで、対象サイトのRestrictedAccessControlGroupsとユーザーのグループ所属、通常のSharePoint権限を照合すれば、ポリシー設定と権限設定のどちらに原因があるかを判断しやすくなります。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次