制限付きアクセスのユーザーのアクセス許可ロックダウン モードについて

こんにちは、SharePoint サポートの荒川です。
今回の投稿では、制限付きアクセスのユーザーのアクセス許可ロックダウン モードについて解説します。

制限付きアクセスについて
例えばドキュメント ライブラリの特定のフォルダーに特定のユーザーの固有の権限を付与した場合、そのユーザーは自分が権限を与えられたフォルダー以外のリソースにはアクセスできません。
ただし、ユーザーがフォルダーを参照するためには、ドキュメント ライブラリ配下のビューである AllItems.aspx にアクセスできる必要があります。

例えば、ユーザーが https://sps/doclib1/folder1 にアクセスした場合、以下のような URL にリダイレクトされます。

https://sps/doclib1/Forms/AllItems.aspx?RootFolder=%2fdoclib1%2ffolder1&FolderCTID=0x012000268319AC2F6CB8429763862798B9E30D

このように、リストやライブラリ配下の特定のフォルダーにアクセスするためには、上位のアプリケーション ページに対して限定的なアクセス権を持つ必要があるため、SharePoint では子オブジェクトに対して固有の権限を付与した際に、「制限付きアクセス」という特殊なアクセス権を親オブジェクト全体に対して付与する動作になっています。
SharePoint Server 2013 では、既定で制限付きアクセスが UI 上で非表示になっていますが、以下のように PowerShell コマンドから直接参照することができます。

制限付きアクセスに割り当てられた詳細なアクセス許可レベルは、サイトの設定ページの [サイトの権限] ページから、[アクセス許可レベル] をクリックすることで確認できます。

既定では、以下のアクセス許可レベルが割り当てられています。

・アプリケーション ページの表示
・ユーザー情報の閲覧
・リモート インターフェイスの使用
・クライアント統合機能の使用
・開く権限

(参考)
SharePoint 2013 のユーザー権限とアクセス許可レベル
https://technet.microsoft.com/ja-jp/library/cc721640.aspx

制限付きアクセスのユーザーのアクセス許可ロックダウン モードについて
先述のように、制限付きアクセスのユーザーにはコンテンツの閲覧に必要となる一部のアプリケーションページに対する読み取り権限が付与されますが、セキュリティの観点から、ユーザーが必要以上のアプリケーションページに対して権限を持つことが望ましくない場合もあります。
このような場合に備えて、SharePoint には、「制限付きアクセスのユーザーのアクセス許可ロックダウン モード」というサイトコレクション機能が存在します。

本機能を有効にすると、制限付きアクセスおよび匿名アクセスの権限から以下のアクセス許可レベルが削除されます。

・アプリケーション ページの表示
・リモート インターフェイスの使用

制限付きアクセスのユーザーのアクセス許可ロックダウン モードが適用されるのは、以下のような環境にあるサイトです。

・サイト コレクションの機能で「制限付きアクセスのユーザーのアクセス許可ロックダウン モード」を有効にしている場合
・サイト コレクションの機能で「発行インフラストラクチャ」機能を有効にしている場合。既定では、サイト コレクションの機能で「発行インフラストラクチャ」機能を有効すると同時に「制限付きアクセスのユーザーのアクセス許可ロックダウン モード」も有効になります。
・発行ポータルなどの発行インフラストラクチャ機能が有効になったサイト テンプレートがサイト コレクションに適用される場合。既定では、これらのテンプレートが適用されると「制限付きアクセスのユーザーのアクセス許可ロックダウン モード」も有効になります。

補足:発行インフラストラクチャは外部公開のシナリオで使用されることが多い機能であるため、セキュリティの観点から本機能を有効にすると既定でロックダウンモードの機能も有効になりますが、管理者は必要に応じて後からこの機能を無効にすることができます。本機能はあくまでセキュリティ強化が目的であり、ロックダウンモードを無効にすることで発行インフラストラクチャに含まれる機能が利用できなくなるということはありません。

(参考)
外部の匿名アクセス環境のセキュリティを計画する (Office SharePoint Server)
https://technet.microsoft.com/ja-jp/library/cc263468(v=office.12).aspx#section6

Office SharePoint Server サイトのロックダウン
https://technet.microsoft.com/ja-jp/library/ee191479(v=office.12).aspx

制限付きアクセスのユーザーのアクセス許可ロックダウン モードを有効にするとどうなるか
制限付きアクセスのユーザーのアクセス許可ロックダウン モードを有効にすると、「制限付きアクセス」が指定されたユーザーのアクセス許可 (匿名ユーザーなど) のレベルが下がり、アイテムのプロパティやリスト ビューを含む [アプリケーション] ページへのアクセスが阻止されます。さらに、ドキュメント、フォルダー、またはライブラリに独自の権限が指定されている場合、これらのユーザーは次を実行することができなくなります。

・ドラッグ アンド ドロップ機能を使ってドキュメントをアップロードする
・関連フォルダーを参照する
・共有機能を使う
・Outlook に接続されている予定表リストから予定表イベントを作成する
・Office クライアントでドキュメントを開く
・ドキュメントやフォルダーで、一部の吹き出し機能が思いどおりに表示されない

たとえば、ドキュメント ライブラリ配下の特定のフォルダーに対して特定のユーザーの個別の権限を付与した場合であっても、そのユーザーは自身が権限を与えられたフォルダーにアクセスすることができません。これは、先述の AllItems.aspx に対する権限を持たないことによるものです。
なお、フォルダー配下のアイテムの URL を直接指定した場合は、アイテムを閲覧することができます。

(参考)
SharePoint Online または SharePoint Server 2013 のリストまたはライブラリにファイルをドラッグすると "アクセスが拒否されました" というエラーが発生する
https://support.microsoft.com/ja-jp/kb/2923787

SharePoint Online 共有フォルダーにアクセスできない
https://support.microsoft.com/ja-jp/kb/3039997

サイト コレクションの機能を有効または無効にする
https://support.office.com/ja-jp/article/a2f2a5c2-093d-4897-8b7f-37f86d83df04

 

(2017/8/2 追記) 制限付きアクセスのユーザーアクセス許可ロックダウン モードを有効にする場合の注意点

制限付きアクセスのユーザーのアクセス許可ロックダウン モードを有効にする場合の注意点として、サイトコレクション内に多数 (数千~数万件) の制限付きアクセスが付与されたコンテンツが存在していた場合、すべてのコンテンツのアクセス権を更新するために多くの時間がかかる可能性があります。また、この間データベースでブロッキングが発生してサイトへのアクセスがタイムアウトするなどのユーザー影響が生じる可能性があるため、影響を懸念される場合には事前にステージング環境や検証環境を構築いただき検証することをお勧めします。また、可能な限りユーザー影響が少ない時間帯 (夜間や連休中等) に作業を実施することを推奨します。

(関連)
SharePoint と SQL ブロッキングの話

補足:制限付きアクセスのユーザーのアクセス許可ロックダウン モードを有効にした際のアクセス許可レベル

制限付きアクセスのユーザーのアクセス許可ロックダウン モードを有効にした場合と無効にした場合ではアクセス許可レベルに以下のような違いが生じます。

制限付きアクセスのアクセス許可レベル
ロックダウン モードが無効になっている時は以下のように、「アプリケーションページの表示」と「リモート インターフェイスの使用」が有効になっています。

ロックダウン モードが有効になっている時は以下のように、「アプリケーションページの表示」と「リモート インターフェイスの使用」が無効になります。

匿名アクセスのアクセス許可レベル
ロックダウン モードが無効になっている時は以下のように、「アプリケーションページの表示 (ViewFormPages)」が有効になっています。

ロックダウン モードが有効になっている時は以下のように、「アプリケーションページの表示 (ViewFormPages)」が無効になります。

補足:特殊なケースについて
例えば以下のシナリオを考えます。

サイト
ライブラリ(個別権限)
フォルダーA(個別権限)
アイテム(親から権限を継承)

上記の例において、以下のように user01 の個別権限を割り当てます。

サイト
ライブラリ <=== user01 の閲覧権限を付与
フォルダーA <=== user01 のフルコントロール権限を付与
アイテム

この場合、user01 はフォルダーAにアクセスしたり、フォルダーAの配下に新規ドキュメントをアップロードしたり、閲覧することは可能ですが、フォルダーA配下のアイテムを削除しようとすると、操作方法によっては失敗します。

・アイテムのプルダウン メニューから [削除] をクリックした場合 ===> 正常に削除できます。
※上記はオンプレミス版 SharePoint 2013 の動作であり、SharePoint Online ではアイテムのプルダウン メニューから [削除] をクリックした場合であっても削除に失敗することを確認しています。

・リボン メニューから削除をクリックした場合 ===> エラーが発生して失敗します。

必要な権限が付与されているはずにもかかわらず、操作方法によっては削除が失敗する原因は、「リモート インターフェイスの使用」アクセス許可レベルの有無に起因しています。
先述のとおり、制限付きアクセスのユーザーのアクセス許可ロックダウン モードを有効にすると、制限付きアクセスから「リモート インターフェイスの使用」アクセス許可レベルが削除されます。
リボン メニューを介してアイテムを削除する際には、Client-side Object Model (CSOM) を介して処理が要求されるため、「リモート インターフェイスの使用」アクセス許可レベルが割り当てられていない場合には処理が失敗します。
この時、SharePoint の診断ログには以下のようなエラーが出力されます。
**************************************************
w3wp.exe (0x2BC8) 0x2BF0 SharePoint Foundation Logging Correlation Data xmnv Medium Name=Request (POST:https://sps:80/_vti_bin/client.svc/ProcessQuery) 7f0a249d-02ab-3091-4cb2-a462227444ac
...
w3wp.exe (0x2BC8) 0x0E6C SharePoint Foundation CSOM aii1c Verbose Checking SPBasePermissions.Open permission 7f0a249d-02ab-3091-4cb2-a462227444ac
w3wp.exe (0x2BC8) 0x0E6C SharePoint Foundation CSOM ajwqj Medium Request does not have SPBasePermissions.UseRemoteAPIs permission. Need to check it when each API is accessed 7f0a249d-02ab-3091-4cb2-a462227444ac
w3wp.exe (0x2BC8) 0x0E6C SharePoint Foundation CSOM ajoyd Verbose Request schema version is 15 7f0a249d-02ab-3091-4cb2-a462227444ac
w3wp.exe (0x2BC8) 0x0E6C SharePoint Foundation CSOM afxv6 Verbose CSOM Request XML: <Request xmlns="https://schemas.microsoft.com/sharepoint/clientquery/2009" SchemaVersion="15.0.0.0" LibraryVersion="15.0.0.0" ApplicationName="Javascript Library"><Actions><ExceptionHandlingScopeSimple Id="0"><ObjectPath Id="3" ObjectPathId="2" /><ObjectPath Id="5" ObjectPathId="4" /><ObjectPath Id="7" ObjectPathId="6" /><ObjectPath Id="9" ObjectPathId="8" /><ObjectPath Id="11" ObjectPathId="10" /><Query Id="12" ObjectPathId="10"><Query SelectAllProperties="false"><Properties><Property Name="FileLeafRef" ScalarProperty="true" /></Properties></Query></Query><Method Name="Recycle" Id="13" ObjectPathId="10" /></ExceptionHandlingScopeSimple></Actions><ObjectPaths><StaticProperty Id="2" TypeId="{3747adcd-a3c3-41b9-bfab-4a64dd2f1e0a}" Name="Current" /><Property Id="4" ParentId="2" Name="Web" /><Property Id="6" ParentId="4" Name="Lists" /><Method Id="8" ParentId="6" Name="GetById"><Parameters><Parameter Type="String">{342CAB66-EB5E-46B9-B6E7-B388A0008031}</Parameter></Parameters></Method><Method Id="10" ParentId="8" Name="GetItemById"><Parameters><Parameter Type="Number">7</Parameter></Parameters></Method></ObjectPaths></Request> 7f0a249d-02ab-3091-4cb2-a462227444ac
**************************************************

また、リボン メニューから新しいフォルダーを作成した場合などにも、同様の理由で操作が失敗します。

まとめ
制限付きアクセスのユーザーのアクセス許可ロックダウン モードを使用することで、セキュリティを強化できますが、それと引き換えに制限付きアクセスを利用するユーザーの操作性が損なわれる場合があります。
公開されたサイトのセキュリティを強化する必要がある場合は、ロックダウン モードの使用を検討してください。さらに、発行インフラストラクチャが有効にされた環境では、ロックダウン モードがこれらのサイトにとって望ましい構成であるかどうかを判断します。必要ない場合は、ロックダウン モードを無効にしてご利用ください。