GNU/Linux >> Linux の 問題 >  >> Ubuntu

Docker特権-特権Dockerコンテナを実行する必要がありますか?

はじめに

Docker特権 は、この強力な仮想化プラットフォームの多くの便利な機能の1つです。特権モードでの作業を開始する前に、それがどのように機能するかを理解してください。

このチュートリアルでは、特権Dockerコンテナーとは何か、それらをいつ使用するか、それが適切なオプションであるかどうかを学習します。

Docker特権モードとは何ですか?

Docker特権モードは、ホストシステム上のすべてのデバイスにDockerコンテナーのroot機能を付与します。コンテナを特権モードで実行すると、そのホストマシンの機能が提供されます。たとえば、AppArmとSELinuxの構成を変更できるようにします。

ホストのカーネル機能とデバイスアクセスを使用して、特権コンテナ内にDockerプラットフォームの新しいインスタンスをインストールすることもできます。基本的に、このモードではDocker内でDockerを実行できます。

コンテナに特権があるかどうかを確認する方法

コンテナを特権モードで実行しているかどうかを確認するには、次のコマンドを使用します。

docker inspect --format='{{.HostConfig.Privileged}}' [container_id]

コンテナに特権がある場合、出力は trueで応答します 、下の画像のように。

一方、コンテナに特権がない場合、出力には falseというメッセージが表示されます。

Docker特権モードを実行する方法

--privilegedを追加して、コンテナーを特権モードで実行するようにDockerに指示します。 実行コマンドのオプション:

sudo docker run --privileged [image_name]

Docker特権の例

Ubuntuコンテナを特権モードで(インタラクティブに)実行するには、次を使用します:

sudo docker run -it --privileged ubuntu

コンテナがホストにアクセスできるかどうかをテストするために、一時ファイルシステム( tmpfs )の作成を試みることができます。 )そしてそれを / mntにマウントします :

mount -t tmpfs none /mnt

次に、ディスク容量の統計を一覧表示します(人間が読める形式 format)コマンドを使用して:

df -h

下の画像のように、新しく作成されたファイルシステムがリストに表示されます。

特権コンテナの実行が安全でない理由

Ubuntuがシステムをrootとして使用することを推奨しないのと同様に、Dockerも同様です。ホストのカーネルとハードウェアリソースを外部のサイバー攻撃にさらすことは、常にシステムに対する潜在的な脅威です。

このため、特権コンテナの使用はお勧めしません 実稼働環境で。

特権コンテナを介した違反の可能性

特権コンテナを持つことは、どの組織にとってもセキュリティリスクです。悪意のあるユーザーがシステムを制御する機会が生まれます。

システム上のすべてのものへのコンテナルートアクセスを許可すると、サイバー攻撃の機会が開かれます。サイバー攻撃者はコンテナからホストに接続し、確立されたインフラストラクチャと構成を危険にさらす可能性があります。

最も一般的なシナリオは、正当なユーザーが悪意のあるアクティビティに対して特定の特権を悪用した場合です。

Dockerコンテナの権限昇格を最小限に抑える方法

Dockerコンテナーの特権昇格を防ぐ最善の方法は、特権コンテナーをまったく使用しないことです。

ただし、rootユーザーで実行する必要があるアプリケーションを実行している場合は、悪意のあるアクティビティの可能性を最小限に抑える方法があります。これは、ユーザー名前空間の再マッピングによって行われます。 、その特定のコンテナのユーザーをDockerホスト上の特権の少ないユーザーに再マッピングします。基本的に、コンテナはユーザーをルートと見なしますが、ホストはそうではありません。

再マッピングには、コンテナー(名前空間)内で機能するUIDの範囲を0から65536までの通常のUIDとして割り当てることが含まれますが、ホストに対する特権はありません。 2つのファイルがユーザー構成を管理します– 1つはユーザーID範囲( / etc / subuid )用です )およびその他のグループID範囲( / etc / subgid

デフォルトでは、dockerは dockremapを使用します 再マッピングを行うためのユーザーとグループ。


Ubuntu
  1. Dockerコンテナの概要

  2. UbuntuでDockerをインストールしてDockerコンテナを実行する方法

  3. Linux で絶対に実行してはならない 10 の致命的なコマンド

  1. Linuxコンテナ戦略を開発する必要がある5つの理由

  2. Dockerでデータベースを実行する必要がありますか?

  3. root 以外のユーザーとして Docker を実行する

  1. Dockerコンテナ間でデータを共有する方法

  2. DockerRunを使用してエントリポイントをオーバーライドする方法

  3. Portainer:Dockerコンテナーを実行および取得するための使いやすいGUI