SharePointのサイト管理者やIT管理者の皆さまは、「組織のセキュリティポリシーに従って匿名リンク(誰でもアクセス可能なリンク)の作成を禁止したのに、以前に発行された古い匿名リンクがまだ機能している」という問題に直面したことはありませんか? 共有ポリシーを変更しても、既に発行されたリンクは自動的には無効化されません。その結果、意図しない外部ユーザーが引き続きファイルやフォルダにアクセスできる状態が続き、情報漏洩のリスクが生じます。この記事では、SharePointで匿名リンクを禁止した後に残る古いリンクを棚卸し(一覧化して無効化)するための手順と判断基準を具体的に解説します。
【要点】この記事で確認すること
- 最初に見る場所: SharePoint管理センターの「共有」設定、および該当サイトの「サイトの共有設定」で、匿名リンクが本当に禁止されているか確認します。
- 切り分けの軸: 問題の原因は「ポリシー変更前に作成されたリンクが残っている」「リンクの作成元が個人用リンク(ユーザー作成)か、システム生成リンクか」「リンクに有効期限が設定されているか」の3点です。
- 注意点: 会社PCで匿名リンクを無効化する操作は、テナント全体のポリシーに影響を与える可能性があるため、必ずSharePoint管理者またはグローバル管理者の権限を持つ方に確認・依頼してください。自己判断で変更すると、他のサイトの共有設定まで変更されるリスクがあります。
ADVERTISEMENT
目次
なぜ匿名リンクを禁止しても古いリンクが残るのか
SharePointの共有ポリシーは、管理者が設定した時点以降に作成されるリンクに適用されます。既に発行済みのリンクは、ポリシー変更の影響を受けません。これが「古いリンクが残る」根本的な原因です。たとえば、組織全体で「任意のリンク(Anyoneリンク)」を禁止する設定に変更しても、その変更前にユーザーが作成した匿名リンクは引き続き有効なままです。この動作は仕様であり、Microsoft 365の設計によるものです。したがって、管理者は過去に発行されたリンクを定期的に棚卸し、手動で無効化する必要があります。
リンクの種類と無効化の仕組み
匿名リンクには主に「特定のユーザーリンク」(共有相手を指定)と「誰でもアクセス可能なリンク」(匿名リンク)の2種類があります。ポリシーで禁止できるのは後者の匿名リンクです。ただし、既存の匿名リンクを無効化するには、個別にリンクを削除するか、リンクの有効期限を設定する必要があります。有効期限が切れていない限り、リンクは生き続けます。
匿名リンクの棚卸し手順
古い匿名リンクを一覧化して無効化するには、SharePoint管理センターまたはPowerShellを使用します。以下にPowerShellを利用した効率的な手順を示します。PowerShellを実行するには、SharePoint Online管理シェルが必要です。
- SharePoint Online管理シェルをインストールする
管理者権限でWindows PowerShellを開き、Install-Module -Name Microsoft.Online.SharePoint.PowerShellを実行します。既にインストール済みの場合はスキップしてください。 - SharePoint Onlineに接続する
Connect-SPOService -Url https://<テナント名>-admin.sharepoint.comを実行し、グローバル管理者またはSharePoint管理者の資格情報を入力します。 - サイトコレクションの全匿名リンクを取得するスクリプトを準備する
次のスクリプトをメモ帳などに保存します。このスクリプトは、指定したサイトコレクション内のすべての匿名リンクを一覧化します。# サイトコレクションのURLを指定
$siteUrl = "https://<テナント名>.sharepoint.com/sites/対象サイト"
# 匿名リンクを取得
$links = Get-SPOSiteGroup -Site $siteUrl | Where-Object {$_.Users -eq "Everyone except external users"} | ForEach-Object {Get-SPOSiteGroup -Site $siteUrl -Group $_.LoginName | Select-Object -ExpandProperty Users} | ForEach-Object {Get-SPOSharingLink -Site $siteUrl -Identity $_.LoginName} | Where-Object {$_.IsAnonymous -eq $true}※実際の環境に合わせて
<テナント名>や対象サイトを書き換えてください。 - スクリプトを実行してリンク一覧を出力する
上記のスクリプトをPowerShellに貼り付けて実行します。結果が$links変数に格納されます。$links | Format-Table -AutoSizeで表示するか、$links | Export-Csv -Path "C:\temp\anonymous_links.csv" -NoTypeInformationでCSVにエクスポートします。 - リンクを無効化する
一覧から不要なリンクを特定し、Remove-SPOSharingLink -Site $siteUrl -Identity <リンクID>を実行して個別に削除します。すべてを一度に削除する場合は、$links | ForEach-Object { Remove-SPOSharingLink -Site $_.SiteUrl -Identity $_.Id }を実行します。
管理センターを使う場合:SharePoint管理センターで対象サイトに移動し、「サイトの共有設定」→「リンクの管理」から手動でリンクを確認・削除することもできますが、サイト数が多い場合はPowerShellが現実的です。
状況別の対応方法(比較表)
| 状態 | リスク | 推奨対応 |
|---|---|---|
| リンクに有効期限が設定されている(例:30日後) | 期限が切れるまでアクセス可能 | 期限切れを待つか、早期に削除。緊急時は即時削除。 |
| リンクに有効期限なし | 恒久的にアクセス可能 | 必ず削除するか、有効期限を設定し直す。 |
| リンクが多数存在し、手動削除が困難 | 漏れが発生する可能性 | PowerShellで一括削除。または、サイトポリシーで有効期限の強制を検討。 |
| 外部ユーザーがリンクを既に使用・保存している | リンク削除後もアクセス権が維持される場合あり(キャッシュ) | リンク削除後もアクセス権が残ることはないが、念のためサイトのアクセス権限も確認。 |
失敗パターンとその対策
パターン1:リンクを削除してもすぐに再作成されてしまう
ユーザーが共有ダイアログから再度匿名リンクを作成できる状態だと、削除してもすぐに新しい匿名リンクが作られてしまいます。対策として、テナント全体またはサイトレベルで、匿名リンクの作成を完全に禁止するポリシーを適用してください。ポリシーが正しく設定されていれば、ユーザーは匿名リンクを作成できなくなります。ただし、既存リンクは残るため、棚卸しと削除は引き続き必要です。
パターン2:PowerShellのスクリプトがエラーになる
権限不足やモジュールのバージョン問題でスクリプトが失敗することがあります。事前にGet-SPOSharingLinkコマンドレットが利用可能か確認(SharePoint Online管理シェルのバージョンが最新であること)し、実行時は必ずSharePoint管理者ロールが割り当てられたアカウントで接続してください。エラーメッセージを記録し、Microsoftの公式ドキュメントで対処法を調べましょう。
パターン3:リンクの一覧に表示されないリンクがある
システム生成リンク(例えば、ファイルの「コピーリンク」から作成されたリンク)は、Get-SPOSharingLinkで取得できない場合があります。その場合は、サイトコレクションの監査ログを確認するか、Microsoft 365 Security & Compliance Centerで「共有リンクの作成」イベントを検索する方法もあります。
管理者に確認すべきポイント
棚卸しを実行する前に、以下の点をSharePoint管理者またはテナント管理者に確認してください。
- 現在の匿名リンクポリシー:テナント全体の共有ポリシーと、各サイトの共有設定で匿名リンクが無効になっているか。異なる設定が混在している場合があるため、一貫性を確認します。
- リンクの有効期限に関するポリシー:ゲストアクセスの有効期限や、リンクの最大有効日数を設定しているか。例えば、SharePoint管理センターの「共有」で「Anyoneリンクの有効期限」を設定すると、新規リンクは自動的に期限付きになります。
- 監査ログの保存期間:過去のリンク作成履歴を確認できるかどうか。監査ログがあれば、どのリンクがまだ使われているか把握しやすくなります。
- 外部ユーザーのアクセス権限:匿名リンクを通じてアクセスした外部ユーザーが、サイトに直接追加されている可能性もあります。その場合はリンク削除だけでは不十分なので、ゲストユーザーの見直しも行います。
よくある質問(FAQ)
Q1. 匿名リンクを禁止したのに、新しい匿名リンクが作成できてしまうのはなぜですか?
A. ポリシーが正しく適用されていない可能性があります。テナント全体の共有設定で「Anyoneリンクを許可しない」に設定しても、サイトコレクション単位で上書き設定が行われている場合があります。すべてのサイトでポリシーが継承されているか確認してください。
Q2. 棚卸しで見つけたリンクを削除すると、元のファイルはどうなりますか?
A. リンクを削除しても元のファイル自体は削除されません。ファイルへのアクセス権限は維持されますが、匿名リンクによるアクセスは無効になります。内部ユーザーや明示的に共有されたユーザーは引き続きアクセスできます。
Q3. 完全にすべての匿名リンクを無効化したい場合、どうすればよいですか?
A. テナント全体で「Anyoneリンク」を禁止し、さらに各サイトの共有設定で「サイトの共有リンクの種類」を「特定のユーザー(組織内)」に制限します。その後、すべてのサイトでPowerShellスクリプトを実行して既存リンクを削除します。リンクの作成が禁止されていれば、新しいリンクは作られなくなります。
まとめ
SharePointで匿名リンクを禁止しても、既存のリンクを自動的に無効化する機能はありません。定期的な棚卸しと一括削除がセキュリティを維持するために欠かせません。本記事で紹介したPowerShellスクリプトと管理ポイントを参考に、テナント内の古い匿名リンクを可視化し、計画的に無効化してください。管理者権限の確認やポリシーの統一もあわせて行うことで、外部への情報漏洩リスクを大幅に低減できます。
ADVERTISEMENT
超解決 リモートワーク研究班
Microsoft 365の導入・保守を専門とするエンジニアグループ。通信障害やサインイン不具合など、ビジネスインフラのトラブル対応に精通しています。
Office・仕事術の人気記事ランキング
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【Copilot】「サービスに接続できません」エラーの原因切り分けと対処法
- 【PDF】PDFのサムネイルプレビューが表示されない!エクスプローラーの設定とAcrobat環境設定
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【Excel】文字がセルの枠からはみ出す・隠れる!「折り返して表示」と「縮小して全体を表示」の使い分け
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【神技】保存せずに閉じたExcel・Wordファイルを復元する!消えたデータを復活させる4つの救出法
- 【Teams】会議の「参加者リスト」を出席後にダウンロードする!誰が参加したか確認する手順
