はじめに
どうも、むろです。
今回は、OneDriveクライアントのデータ同期を制限しようとした際にmacOSで追加対応が必要だったケースを紹介します
はじめにまとめ
- SharePoint管理センターのドメインGUID制限(ホワイトリスト形式)では、macOSは制限できない
- macOSのOneDriveクライアントの同期を止めるには「BlockMacSync」というパラメーターの追加設定が必要
- 設定に管理GUIはなくPowerShell(SharePoint Online Management Shell)が必要
- SharePoint Online Management ShellはmacOSでは実行できない
そもそも、なぜ端末とデータ同期させたくないのか
クラウドストレージの同期クライアントは便利な反面、クラウドストレージのデータを擬似的にファイルシステムとしてアクセスできることから、端末とクラウドストレージの境界を悪い意味でなくしてしまいます
- 同期クライアントがなければ、「ブラウザ」という境界が存在し、ランサムウェアがクラウドストレージに直接アクセスしにくくなります
仮に端末がランサムウェアに感染すると、端末上で暗号化・汚染されたファイルがそのままクラウドストレージへ同期され、被害がクラウド側のデータにまで波及してしまう可能性があります
これはOneDriveに限った話ではなく、Box Driveなど他のクラウドストレージの同期クライアントでも同じ構図です
こういった背景から同期を制限したいケースが出てきます
OneDriveクライアントの同期の制限方法
GUIから設定する同期の制限手順
SharePoint管理センターの「同期」設定には「特定のドメインに参加しているコンピューターでのみ同期を許可する」という項目があります
許可したいADドメインのGUIDを指定するホワイトリスト形式の設定です
このホワイトリスト形式を逆手にとって、実在しないダミーのGUIDを1つだけ登録してしまえば「どのドメインにも該当しない=全面的に同期禁止」が実現できます(と思ったらmacOSは制限対象外なので、後述に続きます)
これ自体は昔からよく知られたテクニックだと思います(多分)
ダミーのGUIDはPowerShellの「New-Guid」で生成できます
macOSにはGUID指定だけでは足りない
いざ動作確認をしてみると、macOSのOneDrive同期アプリからは普通に同期できてしまいました
調べてみると、「Set-SPOTenantSyncClientRestriction」の公式ドキュメントに以下のように記載されています
参考:Set-SPOTenantSyncClientRestriction(Microsoft Learn)
All Microsoft OneDrive Mac Sync client and Mac Beta client requests will not be blocked by default.
つまり、macOSはそもそもGUIDによる制限の対象外で、GUIDを指定してもmacOSからの同期は止まらないのが正しい挙動でした
「BlockMacSync」というパラメーターで制限する
では、macOSの同期を制御したい場合はどうするのか?というと、同じドキュメントに記載されている「BlockMacSync」というパラメーターを使います
ただし、こちらは「全許可か全ブロックか」の二択で、「特定のGUIDだけ許可」はできません
今回は「macOSでの同期利用の想定はない」環境だったので、BlockMacSyncで全面ブロックする設定としています
なお、この設定に管理GUIはなく、PowerShell(SharePoint Online Management Shell)での設定が必要です
さらに、SharePoint Online Management ShellはmacOSのPowerShellではサポートされていないため、Windows OSの端末が必要になります(めんどくさい、、、)
「BlockMacSync」の設定手順
- 自組織テナントのSharePoint Onlineへ接続powershell
# SharePoint Onlineへ接続 Connect-SPOService -Url https://<テナント名>-admin.sharepoint.com - 現在のGUID設定をAllowedDomainListから控えるpowershell
# 現在の設定を確認(AllowedDomainListの値を控える) Get-SPOTenantSyncClientRestriction - BlockMacSyncをTrueに設定する、かつDomainGuidsには前ステップで控えたGUIDを指定するpowershell
# 既存のGUIDをそのまま指定しつつ、macOSの同期をブロック Set-SPOTenantSyncClientRestriction -Enable -DomainGuids "<既存のドメインGUID>" -BlockMacSync:$true- -BlockMacSync は単体でも設定できますが、-Enable を付けてドメインGUID制限とあわせて設定する場合は -DomainGuids の指定が必須です
- 省略すると以下のエラーになります
- DomainGuidsは許可リストを丸ごと上書きするため、手順内にあるように最初に設定したGUIDと同じ値をAllowedDomainListから控えて、そのまま指定します
- -BlockMacSync は単体でも設定できますが、-Enable を付けてドメインGUID制限とあわせて設定する場合は -DomainGuids の指定が必須です
- 設定後は以下のように結果を確認しますpowershell
PS C:\WINDOWS\system32> Get-SPOTenantSyncClientRestriction TenantRestrictionEnabled : True AllowedDomainList : {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} BlockMacSync : True ExcludedFileExtensions : {} OptOutOfGrooveBlock : False OptOutOfGrooveSoftBlock : False DisableReportProblemDialog : False
動作確認を忘れずに
設定の反映には少し時間がかかる場合があるので、間を置いてから動作確認をしましょう
- 公式には「機能の有効化は最大24時間、許可ドメインリストの変更は5分以内に反映」とあります
- 今回の検証ではすぐに反映はされました
制限が成功していれば、macOS上のOneDriveクライアントのアカウント認証後に以下のメッセージが表示されます
おわりに
「GUIDで制限したから設定完了」と思っていたら、macOS向けには実は設定が不足していたという話でした
改めて、動作確認の大事さが身に沁みました、、、
この記事が誰かの役に立ったら嬉しいです!以上、むろでした。