はじめに
ブラウザから社内の専用システムを開くとき、「このサイトは、このコンピュータ上のアプリケーションを開くことを許可されています」という確認画面が何度も出て、不便に感じていないでしょうか?
あるいは、いつの間にかローカルアプリの起動が勝手にブロックされていて、起動できなくなっていることはないでしょうか?
私も以前、社内システムのリニューアルをおこなった際、特定のボタンを押してもローカルの独自ツールがまったく起動せず、大慌てで原因を調べたことがあります。
その原因は、Microsoft Edgeのセキュリティ機能である「洪水に対する防御(Flood Prevention)」によるブロックでした。
この記事では、Edgeで独自のプロトコル(カスタムスキーム)の起動ブロックを回避するための、グループポリシー(GPO)の設定方法を解説します。
この記事を読めば、確認ダイアログを出さずに安全かつスムーズにローカルアプリを起動させる設定手順が理解できます。
Edgeの「洪水に対する防御」とプロトコルブロックとは?
Microsoft Edgeには、悪意のあるウェブサイトからパソコンを守るためのセキュリティ機能が搭載されています。
その一つが「プロトコルのブロック」です。
たとえば、ウェブページ上のリンクをクリックしたときに、ZoomやTeamsなどのデスクトップアプリが起動することがあります。
これは「カスタムプロトコル」と呼ばれる仕組みを使っています。
しかし、ブラウザがユーザーの許可なしにローカルアプリを何度も呼び出すと、パソコンの動作が重くなったり、意図しない処理が実行されたりする危険があります。
これを防ぐために、Edgeは「同じドメインから特定のアプリを短時間に連続して呼び出す動作」を検知し、自動的にブロックします。
これが「洪水に対する防御」と呼ばれる仕組みです。
便利なセキュリティ機能ですが、業務用の社内ポータルから複数のツールを連携して起動するようなシステムでは、この機能が邪魔をして動作しなくなることがあります。
起動ブロックを回避する「DoNotSilentlyBlockProtocolsFromOrigins」ポリシー
このブロックを安全に回避するために、Edgeには専用のグループポリシー設定が用意されています。
それが DoNotSilentlyBlockProtocolsFromOrigins(洪水に対する防御によって警告することなくブロックすることができないプロトコルのリストを定義する)ポリシーです。
このポリシーを使うことで、「信頼できる特定の社内サイト(ドメイン)」から「特定のカスタムプロトコル」を起動する場合に限り、確認なしでアプリを自動起動させることができます。
※事前にEdgeのグループポリシーテンプレートを入れておく必要があります。
ダウンロードページ
https://explore.microsoft.com/ja-jp/edge/business/download?form=MA13FJ
グループポリシー(GPO)での設定手順
ADドメイン環境やローカルグループポリシーで設定する具体的な手順は以下のとおりです。
- グループポリシー管理エディター(gpedit.msc)を開きます。
- 「コンピューターの構成」>「管理用テンプレート」>「Microsoft Edge」へ進みます。
- 「洪水に対する防御によって警告することなくブロックすることができないプロトコルのリストを定義する」という項目をダブルクリックして開きます。
- 設定を「有効」にし、オプションの「表示」ボタンをクリックします。
- 値の入力欄に、許可したいドメインとプロトコルのルールをJSON形式で入力します。
値に入力する具体的な記述例は、以下のようになります。
[
{
"allowed_protocols": ["mycustomapp", "zoom"],
"origin": "https://*.example.com"
}
]
この例では、https://*.example.com というドメインから、mycustomapp と zoom というプロトコルを呼び出す場合、確認ダイアログやブロックを出さずに起動することを許可しています。
レジストリを直接編集して適用する方法(個別配布向け)
Active Directoryがない環境や、一部の端末だけにテスト適用したい場合は、レジストリを直接編集します。
以下のPowerShellスクリプトを管理者権限で実行することで、必要な設定値をレジストリに一括登録できます。
# --------------------------------------------------
# Edgeのプロトコルブロック回避レジストリ登録スクリプト
# --------------------------------------------------
# 登録するキーのパス(Edgeのポリシー配下)
$RegistryPath = "HKLM:\SOFTWARE\Policies\Microsoft\Edge"
# 設定するポリシー名
$Name = "DoNotSilentlyBlockProtocolsFromOrigins"
# 許可する設定のJSONテキスト
$Value = '[{"allowed_protocols":["mycustomapp"],"origin":"https://*.example.com"}]'
# キーが存在しない場合は作成
if (!(Test-Path $RegistryPath)) {
New-Item -Path $RegistryPath -Force | Out-Null
}
# レジストリ値 of 登録(文字列値として登録)
New-ItemProperty -Path $RegistryPath -Name $Name -Value $Value -PropertyType String -Force
スクリプトを実行したあと、Edgeを再起動(または edge://policy を開いて「ポリシーの再読み込み」をクリック)することで、設定が反映されます。
レジストリを手動で書き換える手間が省け、複数端末への配布も容易になります。
運用の現場でつまずくポイントと推奨設定
設定を適用するにあたって、管理者が気をつけるべき注意点をまとめました。
| 設定時の注意点 | 起こりうるリスク | 推奨される対策 |
|---|---|---|
| ドメイン指定に「*」を使う | すべてのサイトからの起動を許可してしまい危険 | 社内ドメインのみを指定し、範囲を限定します |
| プロトコル名の誤字 | 設定が正しく反映されず、ブロックが続く | アプリ開発者に正確なプロトコル名を確認します |
| Edgeのバージョンが古い | ポリシーがサポートされておらず機能しない | Edgeを最新のバージョンにアップデートします |
表のとおり、セキュリティを確保するために、許可するドメイン(origin)の範囲は最小限に絞ることがひじょうに重要です。
全許可(ワイルドカード単体など)に設定してしまうと、悪意のある外部サイトからもローカルアプリが呼び出せる状態になり、情報漏えいなどの原因になります。
まとめ
Microsoft Edgeの「洪水に対する防御」を回避するための、プロトコルブロック設定について解説しました。
重要なポイントは以下の3点です。
- 「洪水に対する防御」は、ブラウザからローカルアプリが過剰に起動されるのを防ぐ安全機能であること
- GPOやレジストリでDoNotSilentlyBlockProtocolsFromOrigins(洪水に対する防御によって警告することなくブロックすることができないプロトコルのリストを定義する)を設定して、指定ドメインからの起動を許可できること
- セキュリティを維持するため、許可するドメインとプロトコルの組み合わせは最小限に絞り込むこと
社内の業務用ウェブサイトでアプリ連携がうまく動かず困っている場合は、このポリシーの設定を確認し、テスト環境で一度動かしてみましょう。
免責規定
この記事で提供される情報は、一般的なガイダンスを目的としており、すべての環境やシステムでの動作を保証するものではありません。
OSのバージョンやリリースによっては、記載されている事が実行できない、または異なる結果をもたらす可能性があります。
また、会社所有のパソコン、スマホ、タブレットなどでは、ポリシーや権限によって実行できない場合があります。
この記事の情報を使用することによって生じる問題や結果について、筆者およびサイト管理者は責任を負いません。
すべての操作は自己責任で行ってください。
もし、記事の中で間違いやご指摘があればコメントを頂けると大変ありがたいです。
最後までお読みいただきありがとうございました。
またお会いしましょう!

コメント