コンテンツにスキップ

デスクトップ版キオスクをロックダウンする

デスクトップ版キオスクアプリは、自身のプロセス内でできる範囲の対策を行います。無人の公開キオスクでは、アプリだけでは根本的に塞げない脱出経路をOS自体が防ぐよう、アプリの下にOSレベルのプロファイルを重ねてください。

アプリ単体で対応している内容

Section titled “アプリ単体で対応している内容”

キオスククライアントとして起動すると、デスクトップアプリは次のことを行います。

  • メニューバー部分を含む画面全体を覆う枠なしのフルスクリーンで開きます。
  • macOSでは、ネイティブのNSApplicationPresentationOptions.hideMenuBar | .hideDock)でメニューバーとDockを非表示にし、アプリがフォーカスを取り戻すたびに再度この設定を適用します。
  • macOSでは、AWTのQuitHandlerを通じて**⌘+Qをブロック**します(アプリメニューの「終了」も含む)。
  • Alt+F4、⌘+W、Alt+Tab、⌘+Tab、Windows/Superキー、F11、Escapeなど、その他の一般的なショートカットについても、OSがアプリに渡してから自身の処理を行うものについては抑制を試みます
  • 終了操作はマネージャーPINで保護されています。マネージャーメニューは、画面右上を5回連続タップ(タッチスクリーンの場合)またはF12を5回押す(物理キーボードの場合)ことで開き、PIN入力にはブルートフォース対策のロックアウトがあります。監督する担当者が初回起動時にPINを設定します。PIN復旧を含む操作担当者向けの手順の全体は、キオスクのロックダウンを解除しPINを復旧するを参照してください。

デスクアプリはロックダウンされていません。これはスタッフ用のツールであり、通常のウィンドウコントロールを保持します。

Windows — Assigned Access / Shell Launcher

Section titled “Windows — Assigned Access / Shell Launcher”

Windowsには2つのキオスク方式があります。デスクトップ版キオスクは従来型のWin32デスクトップアプリケーションなので、Shell Launcherが適しています。Assigned Access(単一アプリキオスク)はUWP/MSIXアプリまたはMicrosoft Edgeのみに対応しています。

Shell Launcher v2は、指定したアカウントについて、デフォルトのWindowsシェル(explorer.exe)をJonotキオスクの実行ファイルに置き換えます。Explorerシェルがないため、デスクトップ、スタートメニュー、タスクバーは表示されません。アプリが終了すると、Shell Launcherがそれを再起動します。Windows 10/11 Enterprise、Education、またはIoT Enterpriseが必要です。

  1. Shell Launcherのオプション機能を有効化します (Enable-WindowsOptionalFeature -Online -FeatureName Client-EmbeddedShellLauncher)。 または、MDMからプッシュします。
  2. キオスク専用の**標準(管理者権限なし)**のローカルアカウントを作成します。
  3. そのアカウントのカスタムシェルをJonotキオスクランチャーに設定し、終了時に再起動するアクションを設定するようにShell Launcherを構成します。MDMのShell Launcher CSP経由か、Shell Launcherガイドに記載のWMIブリッジPowerShellサンプルを使ってローカルで設定します。
  4. キオスクアカウントを自動ログオンに設定し、ロック画面、スリープ、高速ユーザー切り替えを無効化します。

Enterpriseライセンスなしで手早く監督下のセットアップを行う場合は、Assigned Accessの「キオスクブラウザー」を直接https://kiosk.jonot.ioに向けることもできます。ただし、これはネイティブブリッジなしでEdge上にSPAを実行するため(ローカル印刷やオフラインホストへのフェイルオーバーは非対応)、ネイティブアプリの代替ではなく、あくまでフォールバックです。

macOS — OSレベルの脱出防止手順

Section titled “macOS — OSレベルの脱出防止手順”

アプリはメニューバーとDockを非表示にし、アプリ側で⌘+Qをブロックします。OSレベルのプロファイルは、アプリだけでは塞げない経路(Force Quit、Mission Control、スペースの切り替え、ホットコーナー、Spotlight、アプリ切り替え)をカバーします。

自動ログイン付きの専用の管理対象アカウントまたは制限付きアカウントを使用してください。 MDM(Jamf ProKandjiMosyle、またはIntune)から展開します。

  1. 専用の標準アカウント + 自動ログイン。 キオスク専用の、管理者権限のないローカルアカウントを作成します。そのアカウントで自動ログインを有効にし、エネルギープロファイルでシステムのスリープを無効化します。Managed Login Itemsペイロードにより、セッション開始時にキオスクアプリが起動するようにします。

  2. Force Quit(⌘+⌥+Esc)を無効化します。 Force Quitは、アプリでは塞げない主要な脱出経路です。com.apple.loginwindow向けのカスタムmanaged-preferencesペイロードで無効化します。

    DisableForceQuitCombinedKey = true
  3. Mission Controlとスペースの切り替えを無効化します。 com.apple.symbolichotkeysを使って、Mission Controlのショートカット(key 32)とスペース切り替えのショートカット(key 79〜81、118〜123)を無効化します。

  4. ホットコーナーを無効化します。 4つのwvous-*-cornerキーすべてを0(無効)に設定したcom.apple.dockの設定ペイロードをプッシュします。

  5. Spotlightを無効化します。 com.apple.symbolichotkeys(Spotlight検索のkey 64)でSpotlightのキーボードショートカットを無効化します。注: 標準のRestrictionsペイロードのSpotlightキーはインターネットの検索結果のみを抑制し、Spotlight自体は無効化しません。代わりにsymbolichotkeysの方法を使ってください。

  6. アプリ切り替え(⌘+Tab)を無効化します。 com.apple.symbolichotkeys(key 27)でアプリケーションスイッチャーのショートカットを無効化します。

Linux — GNOMEキオスクセッション

Section titled “Linux — GNOMEキオスクセッション”

Linuxで最もクリーンなロックダウン方法は、Jonotキオスクアプリをセッション唯一のウィンドウとして実行する専用のGNOME Kioskセッションです。パネルなし、アクティビティ画面なし、アプリケーションスイッチャーなしになります。

  1. gnome-kioskパッケージをインストールします(最近のFedoraおよびDebian/Ubuntuのリリースで利用可能です)。これは、1つのフルスクリーンアプリを実行する最小限のWaylandコンポジターを提供します。
  2. Jonotキオスクの実行ファイルをシェルコマンドとして起動するカスタムセッションを作成します。これにより、キオスクアプリそのものがセッションになります。
  3. その専用の標準ユーザーがそのキオスクセッションに入るよう、GDM自動ログインを設定します。
  4. 周辺のシステムを堅牢化します。VT切り替えとCtrl+Alt+Backspaceを無効化し、logindでTTYアクセスをブロックし、自動画面ブランキングと電源管理を無効化します。

GNOME Kioskコンポジターはスイッチャーやアクティビティ画面を一切公開しないため、セッション内から他のアプリケーションへ移動する手段はありません。アプリのプロセス内でのショートカット抑制がせいぜい試みることしかできない対策を、OS自身が強制的に実現します。

レイヤー防御対象
アプリ内ロックダウンメニューバー/Dock(macOS)、⌘+Q、うっかりの終了、プロセス内で捕捉できるショートカット
OSレベルのキオスクプロファイルForce Quit、Mission Control、スペース、ホットコーナー、Spotlight、OSレベルのアプリ切り替え
物理的な筐体ハードウェアへのアクセス — USBポート、電源ボタン、キーボード

無人の公開設置では、アプリ内ロックダウンとOSレベルのプロファイルの両方を常に併用してください。物理的な筐体は、完全な改ざん耐性を実現する展開における第3のレイヤーです。