セキュリティ上の理由から、GUIアプリケーションを表示するDockerコンテナを実行しようとしています。
私は現在2つのオプションの間にあります。そのトラフィックをXサーバーに転送する必要があるか(1)、コンテナ内でXサーバーを実行して接続する必要があるか(2)、わかりません。
現在の解決策は(1)ですが、セキュリティが心配です。コンテナが次のようにホストサーバーで認証されたとします。
- 他のアプリケーションと対話するときにマウスとキーボードの入力をキャッチします。
- 他のウィンドウに関する情報を照会できますか?それとも彼らの状態を全く知っていますか?
編集:上記のいずれかが本当なら(2)問題を解決しますか?
答え1
はい、すべてのX11クライアントはディスプレイ上のすべてのウィンドウと他のすべてのリソースへのフルアクセス権を持っています。
彼らはキーボードとマウスをつかみ、ウィンドウとピックスマップの完全な内容を得ることができるだけでなく(またはそれらを破壊するかもしれません;-))。徐々に進むXTEST拡張によるキーボードとマウス入力。
X11プロトコルは純粋に協力的に設計されており、優れたクライアント動作を想定しています。誤って書かれたX11アプリケーションは大きな混乱を招く可能性があり、その多くは実際にはそうです(Javaアプリケーションは招待されていないFocusを削除し、Firefoxはページを更新すると一番上にポップアップします)。
コンテナ内でXサーバーを実行して接続します(2)。
コンテナ内で実行Xvfb
- ハードウェアにアクセスできないX11サーバー。あるいは、GUIプログラムと対話するには、Xephyr
[1]などのネストされたX11サーバーを使用できます。-auth
X11サーバーは以下を許可します。どのローカルクライアントがそれに接続されます。