This commit is contained in:
Executable
+77
@@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# noVNC の画面で触られたくないブラウザの機能を止める管理ポリシーを入れる (issue #1148)。
|
||||
#
|
||||
# 入れているのは 2 つ。
|
||||
#
|
||||
# AllowFileSelectionDialogs=false ファイル選択の画面を出させない(下の説明)
|
||||
# IncognitoModeAvailability=1 シークレット窓を開かせない
|
||||
#
|
||||
# シークレット窓を止める理由。**遮断が効かないからではない。**
|
||||
# 実測ではこうなる。launchPersistentContext で立ち上げると、人が Ctrl+Shift+N で
|
||||
# 開いたシークレット窓は既定の入れ物のページとして Playwright に見え、
|
||||
# 既定の入れ物に掛けた遮断がそのまま効く(127.0.0.1 への遷移が
|
||||
# ERR_BLOCKED_BY_CLIENT で断たれることを確認済み)。つまり今の Playwright では、
|
||||
# このポリシーが無くても穴は開いていない。
|
||||
#
|
||||
# それでも止めるのは保険。「シークレット窓が既定の入れ物のページとして見える」のは
|
||||
# Playwright の内部の振る舞いで、版が変われば変わりうる。変わった瞬間に
|
||||
# 遮断の掛からない窓が生まれるので、その手前で開けなくしておく。
|
||||
# エージェント側の入れ物づくり(browser.newContext)はこのポリシーの影響を
|
||||
# 受けない(実機で確認済み)。
|
||||
#
|
||||
# noVNC の画面(CAPTCHA を人が解く画面)は、ブラウザの中身がそのまま人に触れる。
|
||||
# ファイルを選ぶボタンを押すと OS のファイル選択画面が開き、サーバー上のファイルを
|
||||
# 選んで持ち出せてしまう。Chromium 系の管理ポリシー AllowFileSelectionDialogs を
|
||||
# false にすると、押しても何も起きなくなる。
|
||||
#
|
||||
# エージェント側は壊れない。**エージェントがブラウザへファイルを送る経路が
|
||||
# そもそも無い**(src/ に filechooser も setInputFiles も 1 か所も無い。
|
||||
# ui/e2e/ にあるのは UI の E2E テストが画面を操作するためのもので、
|
||||
# エージェントの経路ではない)。
|
||||
# 将来ファイル送信を足すときは setInputFiles(内部は CDP の
|
||||
# DOM.setFileInputFiles)を使うこと。あれは選択画面を通らないので
|
||||
# このポリシーの影響を受けない。
|
||||
#
|
||||
# 置き場所はブラウザの銘柄ごとに違う。Playwright 同梱のものは
|
||||
# 「Google Chrome for Testing」なので /etc/opt/chrome_for_testing/policies/managed。
|
||||
# config.yaml の browser.channel で本家 Chrome / Chromium に差し替えられるので、
|
||||
# 3 か所すべてに置く。
|
||||
# msedge は未対応。Edge の置き場所は裏が取れていないので、推測で足さない
|
||||
# (browser.channel: msedge を選ぶと、このポリシーは効かない)。
|
||||
#
|
||||
# 使い方: sudo scripts/install-browser-policy.sh
|
||||
set -euo pipefail
|
||||
|
||||
SRC="$(cd "$(dirname "$0")/.." && pwd)/deploy/browser-policy/agent-orchestrator.json"
|
||||
|
||||
if [ ! -f "$SRC" ]; then
|
||||
echo "ERROR: ポリシーファイルが見つかりません: $SRC" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
SUDO=""
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
if command -v sudo > /dev/null 2>&1; then
|
||||
SUDO="sudo"
|
||||
else
|
||||
echo "ERROR: root 権限が必要です(sudo も見つかりません)" >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
POLICY_DIRS=(
|
||||
/etc/opt/chrome_for_testing/policies/managed
|
||||
/etc/opt/chrome/policies/managed
|
||||
/etc/chromium/policies/managed
|
||||
)
|
||||
|
||||
for dir in "${POLICY_DIRS[@]}"; do
|
||||
$SUDO mkdir -p "$dir"
|
||||
$SUDO cp "$SRC" "$dir/agent-orchestrator.json"
|
||||
$SUDO chmod 644 "$dir/agent-orchestrator.json"
|
||||
echo " ✓ $dir/agent-orchestrator.json"
|
||||
done
|
||||
|
||||
echo "ファイル選択の画面とシークレット窓を禁じるポリシーを入れました。"
|
||||
echo "既に動いているブラウザには効きません。反映するには再起動してください(scripts/server.sh restart)。"
|
||||
Reference in New Issue
Block a user