SharePoint OnlineでRestricted Access Controlを有効にしたのに、制限グループ外のユーザーを共有先に指定できる場合、不具合とは限りません。Restricted Access Controlはサイトへの「アクセス」を制御しますが、既定では「共有操作」までは連動して制限されないためです。
制限グループ外への共有そのものを停止するには、SharePoint Online管理シェルで次のコマンドを実行します。
Set-SPOTenant -AllowSharingOutsideRestrictedAccessControlGroups $false
この設定により、Restricted Access Controlが適用されたサイトでは、制限グループに含まれないユーザーや対象外のグループへの共有がブロックされます。Microsoftが案内している公式の対処方法です。(Microsoft Learn)
SharePointで制限グループ外へ共有できる問題を止める方法
結論として、必要なのは次のテナント設定です。
Set-SPOTenant -AllowSharingOutsideRestrictedAccessControlGroups $false
パラメーター名は長いものの、意味は明確です。
| 設定値 | 動作 |
|---|---|
$false | Restricted Access Controlグループ外への共有を許可しない |
$true | Restricted Access Controlグループ外への共有を許可する |
Set-SPOTenantで変更するため、サイト単位ではなくテナント単位の設定です。ただし、実際に制限対象となるのはRestricted Access Controlが適用されているサイトです。
Restricted Access Controlだけでは共有操作が止まらない理由
Restricted Access Controlは、Microsoft 365グループまたはMicrosoft Entraセキュリティグループを利用し、SharePointサイトへアクセスできるユーザーを限定する機能です。
制限グループに含まれていないユーザーは、次の条件を満たしていてもサイトやコンテンツへアクセスできません。
- 以前からサイトのアクセス許可を持っている
- ファイルへの直接アクセス権を持っている
- 共有リンクを受け取っている
一方、既定の状態では、サイト所有者などが制限グループ外のユーザーを共有先として指定する操作まではブロックされません。つまり、「共有招待は送れるが、受信者は開けない」という分かりにくい状態が発生する可能性があります。(Microsoft Learn)
両者の違いを整理すると、次のようになります。
| 機能 | 制御するタイミング | 制限グループ外のユーザー |
|---|---|---|
| Restricted Access Control | サイトやファイルを開くとき | アクセスできない |
AllowSharingOutsideRestrictedAccessControlGroups | サイトやファイルを共有するとき | 共有先に指定できない |
機密情報を扱うサイトでは、アクセス時に拒否するだけでなく、誤った共有招待や不要なアクセス許可が作成されること自体を防ぐため、両方を設定するのが実務的です。
設定前に確認すること
Restricted Access Controlを利用できるライセンスが必要
Restricted Access ControlはSharePoint Advanced Managementの機能です。対応するMicrosoft 365またはOffice 365のベースライセンスに加え、Microsoft 365 Copilotの割り当て、またはSharePoint Advanced Management Plan 1アドオンなど、所定の契約条件を満たす必要があります。
SharePoint管理センターに「サイトレベルのアクセス制限」が表示されない場合は、ライセンスと管理者ロールを先に確認してください。ライセンス条件は変更される可能性があるため、導入時点のMicrosoft公式情報を確認することが重要です。(Microsoft Learn)
SharePoint管理者権限が必要
設定作業には、SharePoint管理者などの適切な管理ロールが必要です。一般ユーザーや通常のサイト所有者は、テナント設定であるSet-SPOTenantを実行できません。
SharePoint Online管理シェルを最新にする
古いMicrosoft.Online.SharePoint.PowerShellモジュールでは、対象パラメーターが認識されないことがあります。まず、インストールされているバージョンを確認します。
Get-Module -Name Microsoft.Online.SharePoint.PowerShell -ListAvailable |
Select-Object Name, Version
モジュールが未導入の場合は、次のコマンドで現在のユーザー向けにインストールできます。
Install-Module -Name Microsoft.Online.SharePoint.PowerShell -Scope CurrentUser
すでに導入済みの場合は更新します。
Update-Module -Name Microsoft.Online.SharePoint.PowerShell
PowerShell 7を利用している場合は、互換モードでインポートします。
Import-Module Microsoft.Online.SharePoint.PowerShell -UseWindowsPowerShell
Microsoftは、利用可能な最新のコマンドレットを使用できるよう、SharePoint Online管理シェルを最新の状態にすることを推奨しています。(Microsoft Learn)
PowerShellで制限グループ外への共有を停止する手順
SharePoint Onlineへ接続する
SharePoint Online管理センターのURLを指定して接続します。
Connect-SPOService -Url https://contoso-admin.sharepoint.com
contosoの部分は、自社テナント名に置き換えてください。
たとえば通常のSharePointサイトURLが次の場合、
https://example.sharepoint.com
管理センターのURLは次の形式です。
https://example-admin.sharepoint.com
多要素認証を利用している場合は、-Credentialを指定せずに実行し、表示されたサインイン画面で認証する方法が分かりやすいでしょう。(Microsoft Learn)
現在のテナント設定を確認する
Restricted Access Controlと共有制限の状態を確認します。
Get-SPOTenant |
Select-Object EnableRestrictedAccessControl,
AllowSharingOutsideRestrictedAccessControlGroups
主に確認する項目は次の2つです。
| 項目 | 確認内容 |
|---|---|
EnableRestrictedAccessControl | テナントでRestricted Access Controlが有効か |
AllowSharingOutsideRestrictedAccessControlGroups | 制限グループ外への共有が許可されているか |
Restricted Access Controlが未有効なら有効にする
テナントでRestricted Access Control自体が無効の場合は、先に有効化します。
Set-SPOTenant -EnableRestrictedAccessControl $true
この設定は、反映まで最大1時間かかる場合があります。テナントで機能を有効にしただけでは、すべてのサイトが自動的に制限されるわけではありません。対象サイトごとにRestricted Access Controlを設定する必要があります。(Microsoft Learn)
対象サイトの設定状態を確認する
次のコマンドで、対象サイトにRestricted Access Controlが適用されているか確認できます。
$siteUrl = "https://contoso.sharepoint.com/sites/confidential"
Get-SPOSite -Identity $siteUrl |
Select-Object Url,
RestrictedAccessControl,
RestrictedAccessControlGroups
RestrictedAccessControlがTrueであることに加え、RestrictedAccessControlGroupsに許可対象となるグループのIDが登録されていることを確認します。
サイトでRestricted Access Controlを有効にするコマンドは次のとおりです。
Set-SPOSite -Identity $siteUrl -RestrictedAccessControl $true
制限グループの追加には、Microsoft Entra ID上のグループオブジェクトIDを使用します。
Set-SPOSite -Identity $siteUrl `
-AddRestrictedAccessControlGroups "11111111-1111-1111-1111-111111111111"
サイトごとに登録できるのは、Microsoft EntraセキュリティグループまたはMicrosoft 365グループです。1サイトにつき最大10グループを設定できます。(Microsoft Learn)
制限グループ外への共有を停止する
Restricted Access Controlの設定を確認したら、次のコマンドを実行します。
Set-SPOTenant -AllowSharingOutsideRestrictedAccessControlGroups $false
確認コマンドも続けて実行します。
Get-SPOTenant |
Select-Object AllowSharingOutsideRestrictedAccessControlGroups
結果がFalseになっていれば、制限グループ外への共有を許可しない設定です。
一連の操作をまとめると、次のようになります。
$adminUrl = "https://contoso-admin.sharepoint.com"
Connect-SPOService -Url $adminUrl
Set-SPOTenant -AllowSharingOutsideRestrictedAccessControlGroups $false
Get-SPOTenant |
Select-Object EnableRestrictedAccessControl,
AllowSharingOutsideRestrictedAccessControlGroups
設定後に共有できるユーザーとグループ
共有制限を有効にすると、共有先の扱いは次のようになります。
| 共有先 | 共有結果 |
|---|---|
| 制限グループに所属するユーザー | 共有可能 |
| 制限グループに所属しないユーザー | 共有不可 |
| Restricted Access Controlの一覧に登録されたMicrosoft 365グループ | 共有可能 |
| 一覧に登録されていないMicrosoft 365グループ | 共有不可 |
| 一覧に登録されたMicrosoft Entraセキュリティグループ | 共有可能 |
| 一覧に登録されていないMicrosoft Entraセキュリティグループ | 共有不可 |
| SharePointグループ | 共有不可 |
Everyone except external users | 共有不可 |
入れ子になったセキュリティグループについても、Restricted Access Controlグループの構成に含まれている場合は共有対象として扱われます。(Microsoft Learn)
制限グループに追加するだけではアクセス権は付与されない
Restricted Access Controlグループは、通常のSharePointアクセス許可を置き換えるものではありません。
ユーザーがサイトやファイルへアクセスするには、次の両方を満たす必要があります。
- Restricted Access Controlグループのメンバーである
- サイト、ライブラリ、フォルダーまたはファイルへの通常のアクセス許可を持っている
たとえば、ユーザーを制限グループに追加しても、そのユーザーに閲覧権限や編集権限が自動付与されるわけではありません。反対に、SharePoint上で編集権限を付与しても、制限グループに所属していなければアクセスは拒否されます。(Microsoft Learn)
実務では、Restricted Access Controlグループを「入場可能なユーザーの範囲」、SharePointアクセス許可を「入場後にできる操作」と考えると理解しやすくなります。
動作確認は制限グループ内外の2アカウントで行う
設定後は、管理者アカウントだけで確認せず、少なくとも次の2種類のテストアカウントを用意します。
| テストアカウント | 所属 | 期待する結果 |
|---|---|---|
| 許可ユーザー | 制限グループ内 | 共有先に指定できる |
| 非許可ユーザー | 制限グループ外 | 共有操作がブロックされる |
確認対象は、ファイル共有だけでは不十分です。次の操作を一通りテストしてください。
- サイト全体の共有
- ドキュメントライブラリ内のファイル共有
- フォルダー共有
- 「アクセスの管理」からの直接付与
- Microsoft 365グループへの共有
- Microsoft Entraセキュリティグループへの共有
ブラウザーに以前の認証情報やアクセス情報が残っていることがあるため、テストユーザー側はInPrivateウィンドウやシークレットウィンドウを使用すると判定しやすくなります。
既存の共有リンクやアクセス許可は別途確認する
AllowSharingOutsideRestrictedAccessControlGroupsは、共有先として許可するユーザーやグループを制御する設定です。既存のアクセス許可や共有リンクを一括削除するコマンドではありません。
Restricted Access Controlが正しく適用されていれば、制限グループ外のユーザーは、過去のアクセス許可や共有リンクを持っていてもコンテンツを開けません。ただし、SharePoint内部に不要なアクセス許可や共有情報が残っている可能性はあります。(Microsoft Learn)
設定後は、対象サイトの「アクセスの管理」やサイトのアクセス許可を確認し、不要なユーザー、グループ、共有リンクを整理するのが安全です。
Teamsの共有チャネルとプライベートチャネルに注意する
Microsoft Teamsに接続された通常のチームサイトへRestricted Access Controlを設定しても、共有チャネルサイトやプライベートチャネルサイトには自動適用されません。
これらのチャネルは、親チームとは別のSharePointサイトコレクションとして作成されるためです。機密情報を共有チャネルやプライベートチャネルに保存している場合は、それぞれのサイトに対してRestricted Access Controlを個別に設定してください。(Microsoft Learn)
親チームのサイトだけを確認して運用を開始すると、チャネルサイトが保護対象から漏れる可能性があります。
外部共有設定の代わりにはならない
このコマンドは、SharePointの通常の外部共有設定を置き換えるものではありません。
SharePoint Onlineには、テナントやサイトごとに次のような外部共有レベルがあります。
- すべてのユーザー
- 新規および既存のゲスト
- 既存のゲストのみ
- 組織内のユーザーのみ
Restricted Access Controlの共有制限は、これらの外部共有設定に追加して働く制御です。実務上は、通常の外部共有設定とRestricted Access Controlの両方を満たす共有先だけが許可されると考えてください。(Microsoft Learn)
機密サイトでは、次の組み合わせが分かりやすい構成です。
サイトの外部共有:組織内のユーザーのみ
Restricted Access Control:許可グループを指定
制限グループ外への共有:許可しない
社外ユーザーとの共同作業が必要なサイトでは、外部共有を一律に無効化するのではなく、専用サイトを分けたうえで制限グループを設計する方法が適しています。
設定を元に戻す方法
制限グループ外への共有を再び許可する場合は、値を$trueに変更します。
Set-SPOTenant -AllowSharingOutsideRestrictedAccessControlGroups $true
変更後は、現在値を確認します。
Get-SPOTenant |
Select-Object AllowSharingOutsideRestrictedAccessControlGroups
運用上の理由で一時的に解除する場合でも、変更理由、実行者、実行日時、再制限する予定日を記録しておくことが重要です。
コマンドが認識されない場合の確認ポイント
次のようなエラーが表示される場合は、SharePoint Online管理シェルが古い可能性があります。
A parameter cannot be found that matches parameter name
'AllowSharingOutsideRestrictedAccessControlGroups'
その場合は、インストール済みバージョンを確認してからモジュールを更新します。
Get-Module -Name Microsoft.Online.SharePoint.PowerShell -ListAvailable |
Sort-Object Version -Descending
Update-Module -Name Microsoft.Online.SharePoint.PowerShell
複数バージョンがインストールされている場合は、古いセッションを閉じてPowerShellを起動し直してください。
PowerShell 7でモジュールを読み込めない場合は、次のコマンドも確認します。
Import-Module Microsoft.Online.SharePoint.PowerShell -UseWindowsPowerShell
また、対象パラメーターが利用できるかは次のコマンドで確認できます。
Get-Command Set-SPOTenant -Syntax |
Select-String "AllowSharingOutsideRestrictedAccessControlGroups"
何も表示されない場合は、読み込まれているモジュールのバージョンを見直してください。
制限グループ外への共有停止で重要なポイント
SharePointでRestricted Access Controlを有効にしただけでは、制限グループ外への共有操作は既定で連動しません。共有操作そのものを停止するには、次の設定が必要です。
Set-SPOTenant -AllowSharingOutsideRestrictedAccessControlGroups $false
設定後は、次の順序で確認します。
- テナントでRestricted Access Controlが有効になっている
- 対象サイトにRestricted Access Controlが適用されている
- 許可するMicrosoft 365グループまたはMicrosoft Entraセキュリティグループが登録されている
AllowSharingOutsideRestrictedAccessControlGroupsがFalseになっている- 制限グループ内外のテストアカウントで共有動作を確認する
- Teamsの共有チャネルとプライベートチャネルも個別に確認する
- 既存のアクセス許可や共有リンクを別途監査する
アクセス拒否だけに頼らず、誤った共有操作の段階でブロックすることで、不要な招待やアクセス許可の増加を防ぎ、SharePointの機密サイトを管理しやすくできます。

コメント