GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

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

デフォルトでは、Docker コンテナーは root 権限で実行され、コンテナー内で実行されるアプリケーションも同様です。ハッカーは、コンテナー内で実行されているアプリケーションをハッキングすることで、Docker ホストへのルート アクセスを取得できるため、これはセキュリティの観点から見たもう 1 つの大きな懸念事項です。

方法 1 – ユーザーを Docker グループに追加する

1. 非 root ユーザーとして Docker を実行するには、ユーザーを docker グループに追加する必要があります。

2. Docker グループがない場合は作成します。

$ sudo groupadd docker

3. ユーザーを docker グループに追加します:

$ sudo usermod -aG docker [non-root user]

4. ログアウトして再度ログインし、グループ メンバーシップが再評価されるようにします。

方法 2 – Dockerfile を使用する (USER 命令)

Docker は、コンテナーの権限を root 以外のユーザーに変更して、Docker ホストへの悪意のある root アクセスを阻止するためのシンプルかつ強力なソリューションを提供します。 root 以外のユーザーへのこの変更は、-u を使用して実行できます。 または –ユーザー docker run サブコマンドのオプションまたは USER Dockerfile 内の命令

1. 次に示すように、非ルート権限ユーザーを作成する Dockerfile を編集し、デフォルトのルート ユーザーを新しく作成された非ルート権限ユーザーに変更します。

##########################################
# Dockerfile to change from root to 
# non-root privilege
###########################################
# Base image is CentOS 7
FROM Centos:7
# Add a new user "john" with user id 8877
RUN useradd -u 8877 john
# Change to non-root privilege
USER john

2. 次に示すように、「docker build」サブコマンドを使用して Docker イメージのビルドに進みます。

$ sudo docker build -t nonrootimage .

3. 最後に、docker run サブコマンドで id コマンドを使用して、コンテナの現在のユーザーを確認しましょう:

$ sudo docker run --rm nonrootimage id
uid=8877(john) gid=8877(john) groups=8877(john)

明らかに、コンテナーのユーザー、グループ、およびグループは非 root ユーザーに変更されています。


Docker
  1. Dockerコンテナ内でプログラムを実行する方法は?

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

  3. 実行中のDockerコンテナでコマンドを実行する方法

  1. root以外のユーザーアカウントでデーモンを実行することは良い習慣ですか?

  2. Dockerコンテナの概要

  3. Kali デフォルトの非ルート ユーザー

  1. DockerコンテナでNginxを実行する方法:ステップバイステップガイド

  2. CentOS/RHEL 7 で root 以外のユーザーとして rsyslog を実行する方法

  3. sudo を使用して非 root ユーザーが特定のコマンドを実行できるようにする方法