• 取引先とファイルを共有しただけなのに、Entra IDに見知らぬゲストユーザーが大量に増えている…
  • 『特定のユーザー』だけに共有したいのに、勝手にアカウントが作られるのはなぜ?
  • 使われていないゲストアカウント、放置していて大丈夫なのだろうか…

SharePointやOneDriveで社外の取引先とファイルを共有していると、いつの間にかMicrosoft Entra ID(旧 Azure AD)のユーザー一覧がゲストアカウントであふれてしまい、戸惑う管理者の方は少なくありません。

結論からお伝えすると、この「ゲストユーザーの自動追加」はMicrosoft 365の正式な仕様であり、止めることはできません。

だからこそ、「追加されることを前提に、不要になったゲストを定期的に掃除する」ライフサイクル管理が重要になります。

この記事でわかること
  • 社外共有でEntra IDにゲストユーザーが自動追加される理由(Microsoft Entra B2B統合の仕組み)
  • ゲストユーザーを放置した場合のセキュリティリスク
  • 手動でゲストユーザーを削除する方法
  • PowerShell(Microsoft Graph)で非アクティブなゲストを自動クリーンアップする手順

本記事では、ゲストユーザーが自動追加される「原因」から「PowerShellを使った自動クリーンアップ術」まで、IT管理者・運用担当者向けに具体的な手順つきで解説します。

なぜEntra IDにゲストユーザーが勝手に追加されるのか?

「特定のユーザー」を指定して社外にファイルを共有すると、相手がEntra IDにゲストユーザーとして自動追加されるのは、現在のMicrosoft 365の基本仕様です。

設定で無効化することはできません。

ゲストユーザーとは、自社のMicrosoft 365テナントに招待された社外の利用者アカウントのことです。

ユーザー一覧では「ユーザータイプ:ゲスト」と表示され、メールアドレスに「#EXT#」という文字列が含まれるのが特徴です。

背景にあるのは「Microsoft Entra B2B」への統合

かつてのSharePointには、テナントにアカウントを作らず「ワンタイムパスコード(OTP)」をメール送信するだけの簡易的な外部共有の仕組みがありました。

しかし現在、SharePointとOneDriveの外部共有は「Microsoft Entra B2Bコラボレーション」に統合されており、「特定のユーザー」宛ての共有は原則としてゲストアカウントの作成を伴います。

この統合には、次のような目的があります。

  • セキュリティの強化
    外部ユーザーにも多要素認証(MFA)や条件付きアクセスポリシーを適用するため
  • 一元管理・監査の徹底
    「社外の誰が、どのデータにアクセスできるか」を管理者がEntra ID上で追跡するため
  • アクセス制御の統一
    Teams・SharePoint・OneDriveをまたぐ外部コラボレーションを1つのゲストアカウントで統制するため

つまり、ゲストユーザーの自動追加は「セキュリティと監査を重視した結果の正常な動作」です。

裏技で止めようとするのではなく、追加されたゲストを適切に棚卸しする運用へシフトするのが現実的な対応です。

なお、SharePointの外部共有そのものの設定(共有の許可レベルやリンクの既定値)については、以下の記事で詳しく解説しています。

SharePointの外部共有設定ガイド|安全にファイルを社外と共有する方法

ゲストユーザーを放置する3つのリスク

不要なゲストユーザーの放置は、単に「一覧が見づらくなる」だけでなく、セキュリティと監査の両面で実害につながります。

Microsoft 365導入支援の現場でも、「テナントを拝見したら、退職した取引先担当者や終了済みプロジェクトのゲストが何十件も残っていた」というケースは非常に多くあります。

リスク内容
不正アクセスの温床取引先を退職した人物のアカウントが生きていれば、共有データへアクセスできる状態が残り続ける
監査・棚卸しの形骸化「誰が何にアクセスできるか」が把握できなくなり、セキュリティ監査やISMS審査で指摘を受けやすくなる
誤共有の誘発共有時の宛先候補に古いゲストが表示され、似た名前の別人へ誤って共有するリスクが高まる

ゲストユーザー増殖にどう対処する?2つのアプローチ

対処のアプローチは「ゲストを作らせない共有方法を使う」か「ゲストの追加を受け入れて定期削除する」かの2択です。

結論としては、後者の運用構築をおすすめします。

アプローチ1:「すべてのユーザー」リンク(パスワード+有効期限付き)を使う

ゲストアカウントを作りたくない場合の唯一の回避策は、「リンクを知っているすべてのユーザー」権限(匿名リンク)で共有することです。

URLを知っていれば誰でもアクセスできてしまうため、共有時に必ず「パスワード」と「有効期限」を設定し、パスワードはチャットなど別経路で相手に伝えます。

こうすることで、実質的に特定の相手のみがアクセスできる状態を作れます。

ただし、匿名リンクは多要素認証が適用できず、テナントの共有設定で無効化している企業も多いはずです。

セキュリティポリシー上、匿名リンクを許可できない場合は次のアプローチを取ります。

アプローチ2:ゲスト追加を受け入れ、定期的にクリーンアップする(推奨)

「特定のユーザー」共有を使いつつ、不要になったゲストアカウントを定期的に削除(棚卸し)する仕組みを作るのが、最も現実的で安全なアプローチです。

MFAや条件付きアクセスの保護を効かせたまま外部共有でき、ディレクトリの健全性も保てます。

手動でゲストユーザーを削除する方法

ゲストユーザーは「Microsoft 365管理センター」または「Microsoft Entra管理センター」から数クリックで削除できます。

件数が少ないうちは手動削除でも十分対応可能です。

管理センターからの削除手順

Microsoft 365管理センターの「ユーザー」→「ゲスト ユーザー」を開く

削除したいゲストを選び、「ユーザーの削除」を実行する

削除されたユーザーは30日間「削除済みユーザー」に保持され、その間は復元が可能です。

注意:SharePointサイト側にユーザー情報が残ることがある

Entra IDからゲストを削除しても、各SharePointサイト内部の「ユーザー情報リスト(UserInfoリスト)」には表示名が残る場合があります。

宛先候補に古い名前が出続けるなど支障がある場合は、サイトコレクション管理者が https://<テナント名>.sharepoint.com/sites/<サイト名>/_layouts/15/people.aspx?MembershipGroupId=0 から削除してください。

実践:PowerShellで非アクティブなゲストを自動削除する

一定期間(例:90日間)サインインしていないゲストユーザーは、Microsoft Graph PowerShellで自動検出・削除できます。

月1回の定期実行を仕組み化すれば、手作業ゼロでディレクトリの健全性を保てます。

前提条件

  • ユーザーのサインインログ(SignInActivity)を取得するため、テナントにMicrosoft Entra ID P1以上のライセンスが必要です(Microsoft 365 Business Premium・E3・E5にはEntra ID P1相当が含まれます)
  • 実行するアカウント(またはアプリ)に User.ReadWrite.All および AuditLog.Read.All のアクセス許可が必要です
  • Microsoft Graph PowerShell SDKをインストールしておきます(Install-Module Microsoft.Graph

自社のプランにEntra ID P1が含まれているか分からない場合は、まず現在のライセンス構成を確認しましょう。

プランごとの機能の違いは以下の記事で整理しています。

実行スクリプトのサンプル

以下のスクリプトは、「最終サインインから90日以上経過」または「招待されたまま一度もサインインせず90日以上経過」したゲストを検出します。

# Microsoft Graph に接続
Connect-MgGraph -Scopes "User.ReadWrite.All", "AuditLog.Read.All"

# 判定基準日を設定(例:90日前の日付を取得)
$daysInactive = 90
$targetDate = (Get-Date).AddDays(-$daysInactive)

Write-Host "最終サインインが $($targetDate.ToString('yyyy/MM/dd')) 以前のゲストユーザーを検索します..."

# ゲストユーザーを取得 (signInActivity と createdDateTime を含む)
$guests = Get-MgUser -Filter "userType eq 'Guest'" -Property Id, DisplayName, SignInActivity, CreatedDateTime -All

foreach ($guest in $guests) {
    $lastSignIn = $guest.SignInActivity.LastSignInDateTime

    # パターンA: サインイン記録があり、最後のアクセスから90日以上経過している場合
    if ($lastSignIn -and $lastSignIn -lt $targetDate) {
        Write-Host "【削除対象】$($guest.DisplayName) - 最終サインイン: $($lastSignIn.ToString('yyyy/MM/dd'))"
        # 実際の削除コマンド(テスト時はコメントアウト推奨)
        # Remove-MgUser -UserId $guest.Id
    }
    # パターンB: 一度もサインインしておらず、招待から90日以上経過している場合
    elseif (-not $lastSignIn -and $guest.CreatedDateTime -lt $targetDate) {
        Write-Host "【削除対象】$($guest.DisplayName) - 未サインイン (作成日: $($guest.CreatedDateTime.ToString('yyyy/MM/dd')))"
        # 実際の削除コマンド(テスト時はコメントアウト推奨)
        # Remove-MgUser -UserId $guest.Id
    }
}

Write-Host "クリーンアップ処理が完了しました。"
Disconnect-MgGraph

運用上の注意点

いきなり削除コマンド(Remove-MgUser)を有効にするのではなく、次の順序で段階的に導入することをおすすめします。

  1. まずはリスト出力のみで試す
    Export-Csv で削除対象をCSVに書き出し、関係部署に確認する
  2. 業務上必要なゲストを除外する
    長期プロジェクトの取引先などは、グループ分けや命名ルールで除外条件に加える
  3. 削除を有効化し、定期実行する
    タスクスケジューラやAzure Automationに登録し、月1回などの頻度で自動実行する

なお、削除したゲストを後日再招待する場合、古い招待リンクではアクセスできず、改めて共有をやり直す必要があります。

この点も社内の運用ルールに明記しておくとトラブルを防げます。

あわせて設定したい:ゲスト管理をラクにするMicrosoft 365の標準機能

PowerShellでの一括クリーンアップに加えて、Microsoft 365にはゲストのライフサイクル管理を助ける標準機能があります。

SharePoint/OneDriveの「ゲスト有効期限ポリシー」

SharePoint管理センターの共有設定で、サイトやOneDriveへのゲストアクセスに有効期限(30〜730日の範囲で設定可能)を設けられます。

既定では無効のため、管理者が明示的に有効化する必要がありますが、設定すれば期限切れのゲストは自動的にアクセスできなくなり、必要な場合のみサイト所有者が延長する運用にできます。

Entra IDの「アクセスレビュー」

Microsoft Entra ID Governance(またはEntra ID P2)のライセンスがあれば、「アクセスレビュー」機能で非アクティブなゲストを定期レビューし、承認されなかったゲストを自動的に無効化・削除するワークフローを構築できます。

ちなみに、Teams経由で招待されたゲストも同じEntra IDのゲストユーザーです。


日々のトラブル、まずこの一冊で解決しませんか?

ゲストユーザーの管理をはじめ、SharePointやOneDriveの運用では「これどうやるの?」という細かな疑問が日々発生しますよね。

Microsoft 365支援のプロが、現場で実際に寄せられるよくある質問と解決策を厳選してまとめた「トラブルシューティング大全」をご用意しました。

▼資料ダウンロードはこちら
『社内からの「これどうやるの?」を9割削減する Microsoft 365 トラブルシューティング大全』


よくある質問(FAQ)

Q
SharePointのゲストユーザーとは?
A

自社のMicrosoft 365テナントに招待された、社外の利用者アカウントのことです。
Microsoft Entra IDに「ユーザータイプ:ゲスト」として登録され、明示的に許可されたリソースにのみアクセスできます。
ライセンスの割り当ては不要です。

Q
SharePointで外部共有するとどんなリスクがありますか?
A

主なリスクは「情報漏えい」「誤共有」「不要アカウントの放置による不正アクセス」の3つです。
共有リンクの権限を最小限にする、有効期限を設定する、不要なゲストを定期削除する、といった対策でリスクを大幅に減らせます。

Q
SharePointでゲストユーザーがアクセスできないのはなぜですか?
A

よくある原因は、招待を受け取ったメールアドレスと別のアカウントでサインインしている、招待リンクの有効期限切れ、テナントやサイト単位の外部共有設定で制限されている、の3つです。
削除後に再招待した場合、古い共有リンクではアクセスできない点にも注意してください。

Q
OneDriveでMicrosoftアカウントなしで共有するには?
A

「リンクを知っているすべてのユーザー」権限で共有リンクを発行すれば、相手はMicrosoftアカウントなしでアクセスできます。
ただし匿名リンクは誰でも開けるため、パスワードと有効期限を必ず設定しましょう。

Q
削除したゲストユーザーは復元できますか?
A

削除から30日以内であれば、Microsoft Entra管理センターの「削除済みユーザー」から復元できます。
30日を経過すると完全に削除され、復元できません。

まとめ

SharePoint・OneDriveの社外共有とゲストユーザー管理のポイントを振り返ります。

  • 社外共有でEntra IDにゲストが自動追加されるのは、Microsoft Entra B2B統合による正式な仕様で止められない
  • 不要ゲストの放置は不正アクセス・監査指摘・誤共有のリスクにつながる
  • 対策の本命は「追加を受け入れて定期削除」。Microsoft Graph PowerShellで棚卸しを自動化できる
  • ゲスト有効期限ポリシーやアクセスレビューなどの標準機能も併用すると管理がさらにラクになる

「追加させない」方法を探すのではなく、「追加されることを前提に自動で掃除する」ライフサイクル管理へ発想を切り替えることが、クラウド時代のスマートなテナント運用です。

今回のスクリプトを活用して、ぜひ定期クリーンアップを仕組み化してみてください。


他社がどのようにMicrosoft 365を安全に活用しているか知りたい方へ ゲスト管理をはじめとするセキュリティ運用を、他の中小企業がどう実践しているのか気になりませんか。

そんな疑問をお持ちでしたら、ぜひ弊社の「中小企業の導入成功事例集」をご覧ください。

成果の出る Microsoft 365 活用法とは?中小企業の導入成功事例集をダウンロードする


参考資料

Microsoft 365に関するご相談やお悩みがございましたら、ぜひ株式会社WITHWITまでお気軽にお問い合わせください。
数あるクラウドサービスの中でMicrosoft 365 に特化してきたからこそ導入前から導入後の定着に至るまで、幅広いご相談に対応いたします。