コミュニティソリューション

ZimaOSアプリの権限スイッチが実際に行うこと

IceWhale support explained that the App Privileges switch gives a container host-like permissions, direct hardware access, and root-level execution.

ZimaOSアプリの「Privileges」スイッチは、実質的にDockerの特権モードです。IceWhaleのサポートによると、コンテナにホストに近い権限、ハードウェアへの直接アクセス、rootレベルの機能を与えます。このレベルのアクセスをアプリが本当に必要とする場合にのみオンにしてください。

ほとんどのアプリでは特権モードは不要で、コンテナを安全にする分離機能を弱めます。コンテナにすべての権限を与えるのではなく、1つのデバイスをマッピングするか、Linuxの機能を1つ追加する方法を優先してください。

特権モードで変わること

Dockerの最新のDocker特権コンテナガイドによると、--privilegedを指定すると、コンテナにすべてのLinux機能とホスト上のすべてのデバイスへのアクセスが与えられ、主要なセキュリティ制御が緩和されます。

IceWhaleがホストレベルのアクセスと説明した理由

公式回答の原文では、コンテナプロセスがホストのハードウェアに直接アクセスし、root相当の権限で実行できると説明されています。これは簡潔で分かりやすい説明ですが、実際のセキュリティへの影響はさらに広範囲に及びます。コンテナはもはや強力にサンドボックス化されません。

ランダムなエラーを解決するためだけにPrivilegesを有効にしない

アプリがUSBデバイス、GPU、ネットワーク機能、またはマウントにアクセスできない場合は、まず不足している権限を正確に特定してください。特権モードは本当の設定問題を隠す一方で、ホスト全体をさらす可能性があります。

デバイスマッピングを優先する

devices:
  - /dev/dri/renderD128:/dev/dri/renderD128

特定のハードウェアデバイスを1つだけ使う場合は、ホスト上のすべてのデバイスではなく、そのデバイスだけをマッピングしてください。

必要なLinux機能だけを指定する

cap_add:
  - NET_ADMIN

VPNやルーターのコンテナでは、特定のネットワーク機能が必要になる場合があります。アプリのドキュメントが対応している場合は、特権モードではなく、必要最小限の機能だけを付与してください。

正当な理由でより多くのアクセスが必要になる可能性があるアプリ

例として、低レベルのハードウェアツール、Docker-in-Docker、一部のVPN・ネットワークアプライアンス、USB・デバイス管理ツール、特殊なシステム監視ソフトウェアなどがあります。それでも、まずは開発元のデプロイガイドを確認してください。

通常は必要ないアプリ

一般的なWebアプリ、メディアライブラリ、メモアプリ、データベース、写真管理アプリ、ダッシュボード、大半のAPIサービスは、動作するためだけに完全な特権モードを必要としません。

アプリの更新後にPrivilegesを見直す

古いアプリパッケージでは、利便性のために特権モードが有効になっている場合があります。その後、開発元がより限定的な権限に対応している可能性があるため、更新時には現在のCompose要件を再確認してください。

Dockerセキュリティガイドでは、より安全なカスタムアプリの構成方法を紹介しています。

アクセス権を追加する前にコンテナを確認する

docker inspect CONTAINER

既存のデバイスマッピング、機能、マウント、ネットワークモード、ユーザー設定を確認してください。多くのアプリが失敗する原因は、無制限のホストアクセスが必要だからではなく、必要なデバイスやパスが1つ欠けているためです。

特権モードは被害範囲を広げる可能性がある

通常の非特権Webアプリが侵害された場合、コンテナの分離機能によって攻撃者が到達できる範囲を制限できます。特権コンテナは、より多くのホストデバイスやカーネルインターフェースにアクセスできるため、そのアプリの脆弱性がシステム全体に影響を及ぼす可能性があります。

Privilegesを有効にした理由を記録する

意図的に有効にする場合は、それを必要とする具体的な機能を記録してください。その後のアプリ更新時には、より限定的な権限で実行できるか再テストし、不要になっていればスイッチをオフにしてください。

よくある質問

Privilegesは、コンテナがrootとして実行されるという意味ですか?

コンテナ内でrootとして実行するだけの場合よりも広範囲です。特権モードでは、ホストに対する広範な機能とデバイスアクセスが付与されます。

すべてのカスタムアプリで有効にすべきですか?

いいえ。開発元のドキュメントで必要とされている場合を除き、オフにしておいてください。

GPUやUSBだけにアクセスを許可できますか?

はい。完全な特権モードよりも、特定のデバイスマッピングとランタイム設定を優先してください。

特権モードは危険ですか?

コンテナの分離機能を大幅に弱めるため、侵害された特権アプリがホストに与える影響ははるかに大きくなる可能性があります。