Microsoft 365 の OneDrive for Business では以前からフォルダー自体を共有することなく、指定したフォルダーに社内外からファイルのアップロードのみをしてもらう機能として「ファイルの要求 (Request files)」があります。この機能を使えば、フォルダー内は相手に見られることがないので非常に便利です。
やったー
— HIRANO Ai | MVP ❤️ SharePoint (@ai_yamasaki) November 10, 2022
社外との外部共有リンクを有効にしなくても、OneDrive for Business 上から「ファイルの要求」機能が使えるようになった! これを利用すると、フォルダーの中身を相手に見せることなく、ファイルをアップロードしてもらえるので、書類を送ってもらうようなときに便利です! pic.twitter.com/hK1AJbuHYp
操作画面を少し補足したビデオを作ったのでどうぞ。
ファイルが届くと自動的にメールで通知もしてくれます。
この説明は拙著の「ひと目でわかる Microsoft 365 SharePoint 運用管理編」をお持ちの方は 、P581~書いていますのでご確認ください。
とても便利な機能ですが、テナントレベルでの事前設定が必要です。つまりは IT部門側でいくらかお膳立てしてもらう必要があるわけです。設定がされていない場合はたとえ「ファイルの要求」メニューが表示されたとしても、次のようにエラーとなります。
しかし、この設定に必要な要件がともすればセキュリティレベルが下がりかねないため、組織にとってはなかなか受け入れにくいものだったのです。参考までに、以前の設定は同じく書籍の P831に書いていますので、そちらもどうぞ。
ですが、朗報です! 最新のアップデートによりセキュリティレベルを下げることなく利用できるようになりました。設定は下記の公式情報に書かれています。
ですが、少々わかりにくいので整理していきます。ということで、ここからは管理者向けです。
設定の詳細
OneDrive の社外共有を許可する場合
OneDrive for Business 上のファイルやフォルダーをユーザーが社内外の不特定多数と共有したい場合は、テナントレベルで共有ポリシーの設定から 「すべてのユーザー」にしておきます。これだけでユーザーはファイルの要求機能を OneDrive 上から利用できます。もし、この設定になっていれば特になにもする必要はありません。
既定ではこの設定のみで不特定多数の社外との共有が許可されるのですが、下記のように共有ポリシーで外部共有を許可するユーザーを制限することもできます。
ただ、この設定には組織によってはいくつかの課題も。まず、そもそも SharePoint 側の外部共有のレベルも同時に「すべてのユーザー」に外部共有するように設定しておく必要があるのです。そうしないと OneDrive 側は「すべてのユーザー」に設定できません。無論、この設定はガスの元栓のようなもので、実際にはこれに加えてさらに各 SharePoint サイトの共有設定を外部共有を許可するように指定しないと、気軽に社外に共有はできないのでこれだけでセキュリティレベルが下がるわけではありません。また、ファイルの要求機能のみを利用させたいのに、フォルダーやファイルを社外に共有する機能も追加されることが懸念されることもありました。
そこで新たに追加されたのが次のオプションです。
OneDrive の社外共有を許可しない場合
OneDrive for Business の外部共有レベルを「すべてのユーザー」に設定することなく、ファイルの要求機能が使えるようになりました。ただし、新機能はPowerShell コマンドで設定する必要があります。最新の SharePoint 管理シェルを使うようにしてください。
1. まず、SharePoint 管理センター上の共有ポリシー設定で「[全員]リンクの有効期限とアクセス許可のオプションを選択します]でフォルダーの設定を「表示、編集、アップロード」にしておきます。必要に応じて共有リンクの有効期限も設定しておくとよいでしょう。
ところでこの設定を行うには SharePoint の共有設定を次のように「すべてのユーザー」にしておく必要があります。ここで、「あれ、結局、不特定多数への社外共有も許可しないとダメなのか!」と思う方もいると思いますが、そうではありません。
ここで設定しておくことに意味があります。このファイル要求の設定に関わりがあるのが SharingCapability というプロパティです。このプロパティの値が ExternalUserAndGuestSharingとなっていないとファイルの要求機能は動作しません。もしも次のように SharePoint も OneDrive も共有レベルを最も制限された設定にすると、この値は Disabled に変わります。
これではファイルの要求をしようとするとエラーとなってしまうのです。そこでいったんは SharePoint のレベルを「すべてのユーザー」に指定しておきましょう。これでExternalUserAndGuestSharing になります。
さて、この状態だと SharePoint サイトの社外共有は元栓は開いている状態にはなります。ただ、次の2.で説明するコマンドを組み合わせることで、外部共有を制御できます。
2. SharePoint と OneDrive の共有設定を変更します。まずは Get-SPOTenant コマンドを使って現状がどうなっているのかを確認しておきましょう。全ユーザーのOneDrive に対する設定は OneDriveSharingCapabilityというプロパティです。
既定では ExternalUserAndGuestSharing となっているはずですが上記ではこれを私がすでに Disabled に変更しています。この設定を変更するには下記のコマンドを実行します。
#すべての OneDrive
Set-SPOTenant -OneDriveSharingCapability Disabled
この設定はSharePoint 管理センター上で行う設定と同じで管理センター側でも変更結果を確認できます。
OneDrive for Business 側はユーザーごとに外部共有を制御する設定がありません。そのためテナントレベルでの一括設定になります。ですから、 (※2022/11/12 訂正と以下追記 : 前川さんからご指摘いただきました! 感謝)
ちなみに、OneDrive の共有ポリシーはテナントレベルで「既存のゲスト」以上に設定しておけば、ユーザーごとに共有レベルを変更することは可能です。たとえば、次のように設定しておくとします。
ユーザー単位での OneDrive の Microsoft 365 管理センターのアクティブなユーザーから行います。
ここで余談を2つ。まずは一つ目。個人の外部共有のポリシー設定はSharePoint管理センター側での共有ポリシーのレベルが「既存のユーザー」以外なら表示されますが、どのレベルにしていても表示される項目は同じです。一見するとどの設定にしていてももしかして匿名ユーザーの外部共有を指定できてしまうのでは? と思うのですが、管理センターよりも制限が緩い設定を選んで保存しようとすると怒られます(エラーになる)。
そしてもう一つ。SharePoint管理センター側での共有ポリシーのOneDrive側のレベルが「自分の組織内のユーザーのみ」だと、そもそも Microsoft 365 管理センターのアクティブなユーザー上には項目が表示されません(※実は当初、この設定にしているのを忘れていて、あれ、個人設定ってできなくなっているなと勘違いしてました)。
話を本筋に戻します。
Disabledにすることで社外への共有はさせずに、ファイルの要求だけを許可することができるようになります。もちろん、外部共有が必ずしも "悪" ではなく、必要があればパートナー企業などとのやり取りにそもそも外部共有が必要なケースもあるでしょうし、機密情報を漏えいしないように考慮するならこれ以外に Microsoft Purview のコンプライアンス機能を用いてファイルへ秘密度ラベルを適用するとか、DLP(データ損失防止ポリシー)を利用するといったプラスアルファを考慮する必要があります。
さて、一方の SharePoint サイトはサイト単位で外部共有を許可するかどうかを指定できます。既定ではサイトの種類に応じて既定値が決まっています。
⚒️ サイトの共有設定を変更する - SharePoint in Microsoft 365 | Microsoft Learn
基本的には従来通り、個々のサイトで社外との共有をさせるかどうか、また共有させるならどのレベルまで許可するのかなどを決めて設定することです。ただし、全SharePoint サイトに対して共有設定を一括変更したい場合は、CoreSharingCapabilityというプロパティを使います。これにより必要に応じて共有レベルを変更できますし、さらに強制できます。その代わりサイトごとの設定はできなくなるので注意しましょう。外部共有レベルをどのように決めるのかが組織内で決まっていなかったり、テナント管理者側で不意にサイトのセキュリティを変えてしまうことがないようにしたりする予防策としては有効でしょう。
⚒️ Set-SPOTenant (Microsoft.Online.SharePoint.PowerShell) | Microsoft Learn
既定ではこの値は ExternalUserAndGuestSharing となっています。
これを次のコマンドで Disabled にしてみましょう。
#すべての SharePoint サイト
Set-SPOTenant -CoreSharingCapability Disabled
先ほどの OneDrive とは異なり共有レベル側は何も変化がありません。
しかし、サイト単位での共有ポリシーを確認すると、すべてのサイトが「組織内のユーザーのみ」になります。新規に作るサイトも同様です。
これによりテナントレベルの SharePoint 管理者といえども、サイト単位での外部共有レベルを変更することは一切できなくなります。PowerShell (Set-SPOSite) やSharePoint 管理センター上からは一見するとサイト単位で「すべてのユーザー」設定に変更できるように見えますが、試すと結果変更されず「組織内のユーザーのみ」になります。
つまり、SharePoint 管理センター上からは一見すると外部共有できるように元栓が開いているように見えるのですが、すべての SharePoint サイトではCoreSharingCapabilityで指定した値に強制され、変更できなくなるのです。
実際の操作を。サイト単位での共有レベルを変えようとしていますが、結局、変えられずもとに戻ります。 pic.twitter.com/kfSa3mnXOj
— HIRANO Ai | MVP ❤️ SharePoint (@ai_yamasaki) November 11, 2022
3. 最後に下記のコマンドを用いて OneDriveRequestFilesLinkEnabled を True に設定します。
Set-SPOTenant -OneDriveRequestFilesLinkEnabled $true
ちなみに、私のテナントでは Get-SPOTenant を使ってOneDriveRequestFilesLinkEnabledオプションを確認したところ最初から True になっており、Set-SPOTenant -OneDriveSharingCapability Disabled コマンドだけで済むのではないかと考えたのですが、これだけでは有効になりませんでした。最後にこのプロパティを確実に True に更新するのがよさそうです。
ファイルの要求リンクの有効期限と削除
一度作成した共有リンクは、リンクの有効期限が設定されている場合はリンクのみの削除できないようです。その代わり有効期限が画面上に表示されます。生成したリンクは次の手順で確認できます。
自然に期限が切れるのを待つか、急いでいるときには中のファイルを別のフォルダーに移動させて、フォルダーごと削除してしまうのも一つの方法でしょう。
有効期限が設定されていない場合は、即座に共有リンクを削除できますし、有効期限を明示することも可能です。
なおファイルの要求リンクの有効期限は Set-SPOTenant -OneDriveRequestFilesLinkExpirationInDays コマンドで指定できます。
こんにちは2023年5月2日時点で
ファイルの要求リンクの有効期限と削除の項で、というより
共有/要求するフォルダのリンクの有効期限の設定がSharePoint管理センターでサイト全体の設定としてできるようになっています。
gegeneneさん、コメントをありがとうございます。
SharePoint管理センターの「共有ポリシー」設定での[全員]リンクの有効期限とアクセス許可のオプション選択にある「有効期限の設定」のことですね。
ご指摘の通り、コマンドを使わなくてもGUIからも指定できますね。ただし、SharePointとOneDrive 両方に対する一括設定であることには注意しなくてはいけません。
と、ご指摘内容を確認していたら、記載しているコマンドが間違っていました。この記事は OneDrive の話なので、 Set-SPOTenant -OneDriveRequestFilesLinkExpirationInDays ですね。訂正しました。
このコマンドだとSharePoint側には影響せず、すべての OneDrive のみに有効になるので、この場合は GUI より細かい指定が可能です。SharePointのみの場合は Set-SPOTenant -CoreRequestFilesLinkExpirationInDays を指定すればいいですし。
ご指摘をありがとうございました。