皆さんこんには胡田です。最近はYoutube活動ばかりしているのですが、自分でいろいろと試行錯誤したりはまった結果を未来の自分のためにまとめておくのはやはりブログだよなということで久しぶりにブログを書きます。
まず、SharePoint Online, OneDrive for Businessで外部共有の範囲をコントロールする方法に関してはMicrosoftの公式のドキュメントとして下記があります。
https://docs.microsoft.com/ja-jp/sharepoint/turn-external-sharing-on-or-off
随時更新されるので、そのうち捕捉されるかもしれませんが、私がちょっと困ってしまったのは「ここで設定した設定が『厳しくする方向』は即時に反映されるが、『緩める方向』に関しては反映されない」という挙動です。
具体的には下記のように一番制限が少ないように設定を行っても「サインインが必要ないリンクを使用してファイルとフォルダーを共有」できないのです。

どうやら、組織としての設定を変更しても厳しくする方向は即時反映ながらも、緩くする方向はサイトそれぞれに設定が保持されており、既存サイトの設定を緩く再設定はしてくれないのが原因のようです。「個々のサイトとOneDriveの共有をさらに制限することができます。」と書いてありますし、その思想からすると当たり前の挙動ともいえそうです。
というわけで、SharePointサイト, OneDriveサイトそれぞれで個別に設定を行います。
ShrePointのサイト単位で共有設定を変更する
サイト単位での外部共有の設定はSharePoint管理センター上の下記の画面で実施できます。


OneDriveのサイト単位(ユーザー単位)で共有設定を変更する
Microsoftさんのドキュメントとしては下記です。
https://docs.microsoft.com/ja-jp/onedrive/user-external-sharing-settings
ユーザーの一覧からユーザーを選択して、OneDriveの共有設定を変更できます。


ですが…。ここで「組織外のユーザーによるサイトへのアクセスを許可します」のチェックを一度外して保存すると、なぜか共有の設定そのものがUI上なくなってしまいます。この動きは明らかにバグだと思うのですが…。

これ、Web UI上で消えてしまってからどうやって対処したらいいのかというと…、PowerShellで設定するしか方法がない気がします(私の試した限り)。
PowerShellでOneDriveの共有設定を変更する
SharePoint Online管理シェルの導入方法はこちら
具体的にはSet-SPOSiteコマンドレットで設定変更できます。
https://docs.microsoft.com/en-us/powershell/module/sharepoint-online/set-sposite?view=sharepoint-ps
いくつか私がはまったポイントを共有しておきます。
- 最新のPowerShell 7だと「 Could not load type ‘System.Security.Cryptography.SHA256Cng’ from assembly ‘System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089’. 」とエラーがでてSharePoint Onlineに接続できません。PowerShellは5を使う必要があるようです。現時点では。
- モジュールインストール時のエラーの原因がExecution Policyを変更していないことだったのですがそれに気が付きにくいメッセージでした。(Install-Module : ‘Install-Module’ コマンドはモジュール ‘PowerShellGet’ で見つかりましたが、このモジュールを読み込むことができませんでした。詳細については、’Import-Module PowerShellGet’ を実行してください。)
- 当初下記のようにコマンドを入力してうまく行かず悩んでしまいました。
- Set-SPOSite -Identity https://ebisuda-my.sharepoint.com/personal/masahiko_ebisuda_ebisuda_com/ -SharingCapability ExternalUserAndGuestSharing
- Set-SPOSite : 管理パス personal/masahiko_ebisuda_ebisuda_com は、このテナントの管理パスではありません。
- 原因はサイトの最後のスラッシュ(/)でした。これを入れてはいけませんでした。
というわけで、PowerShellから共有設定を変更してあげればWebUIも復活することまで確認しました。ちょっと無駄に時間をかけてしまいました…。
なお、このPowerShellを利用した共有設定の変更方法はOneDriveの項目で説明していますが、SharePointサイトに対してももちろん利用できます。
そもそもSharePointサイトとOneDrive for Businessの関係について
今回のブログ記事の首題とはずれますが、そもそものSharePointサイトとOneDrive for Businessの関係に関してがピント来ていないかたも結構多いかと思います。前提知識にはなりますが、こちらはYoutubeで解説してますのでよければ合わせてご覧ください。