非特権コンテナの利点と欠点は何ですか?

非特権コンテナの利点と欠点は何ですか?

技術的な説明非特権コンテナとは何ですか?かなり良いです。ただし、通常のPCユーザーには適していません。非特権コンテナを使用しなければならない時期と理由、そして利点と欠点は何であるかについての簡単な答えはありますか?

ベストアンサー1

権限のないコンテナーを実行することは、本番環境でコンテナーを実行する最も安全な方法です。コンテナはセキュリティに関して悪い評価を受けていますが、その理由の1つは、ユーザーがコンテナからroot権限を取得すると、ホストでもroot権限を取得できることを一部のユーザーが発見したことです。デフォルトでは、権限のないコンテナが実行するのは、ホスト上のユーザーIDをマスクすることです。権限のないコンテナーの場合、非rootユーザーはコンテナーを作成でき、コンテナーではrootとしてマークされますが、ホストはユーザーIDをマップするターゲットに関係なく、ユーザーID 10000としてマークされます。私は最近これについてブログ投稿を書いています。スティーブン・グレイバーのブログLXCシリーズ(LXCの優れた人材/リーダー開発者の一人であり、確かに注目すべきシリーズ)。繰り返します。素晴らしいです。

私のブログから:

コンテナ内:

lxc-attach -n ubuntu-unprived
root@ubuntu-unprived:/# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 04:48 ?        00:00:00 /sbin/init
root       157     1  0 04:48 ?        00:00:00 upstart-udev-bridge --daemon
root       189     1  0 04:48 ?        00:00:00 /lib/systemd/systemd-udevd --daemon
root       244     1  0 04:48 ?        00:00:00 dhclient -1 -v -pf /run/dhclient.eth0.pid
syslog     290     1  0 04:48 ?        00:00:00 rsyslogd
root       343     1  0 04:48 tty4     00:00:00 /sbin/getty -8 38400 tty4
root       345     1  0 04:48 tty2     00:00:00 /sbin/getty -8 38400 tty2
root       346     1  0 04:48 tty3     00:00:00 /sbin/getty -8 38400 tty3
root       359     1  0 04:48 ?        00:00:00 cron
root       386     1  0 04:48 console  00:00:00 /sbin/getty -8 38400 console
root       389     1  0 04:48 tty1     00:00:00 /sbin/getty -8 38400 tty1
root       408     1  0 04:48 ?        00:00:00 upstart-socket-bridge --daemon
root       409     1  0 04:48 ?        00:00:00 upstart-file-bridge --daemon
root       431     0  0 05:06 ?        00:00:00 /bin/bash
root       434   431  0 05:06 ?        00:00:00 ps -ef

ホストから:

lxc-info -Ssip --name ubuntu-unprived
State:          RUNNING
PID:            3104
IP:             10.1.0.107
CPU use:        2.27 seconds
BlkIO use:      680.00 KiB
Memory use:     7.24 MiB
Link:           vethJ1Y7TG
TX bytes:      7.30 KiB
RX bytes:      46.21 KiB
Total bytes:   53.51 KiB

ps -ef | grep 3104
100000    3104  3067  0 Nov11 ?        00:00:00 /sbin/init
100000    3330  3104  0 Nov11 ?        00:00:00 upstart-udev-bridge --daemon
100000    3362  3104  0 Nov11 ?        00:00:00 /lib/systemd/systemd-udevd --daemon
100000    3417  3104  0 Nov11 ?        00:00:00 dhclient -1 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0
100102    3463  3104  0 Nov11 ?        00:00:00 rsyslogd
100000    3516  3104  0 Nov11 pts/8    00:00:00 /sbin/getty -8 38400 tty4
100000    3518  3104  0 Nov11 pts/6    00:00:00 /sbin/getty -8 38400 tty2
100000    3519  3104  0 Nov11 pts/7    00:00:00 /sbin/getty -8 38400 tty3
100000    3532  3104  0 Nov11 ?        00:00:00 cron
100000    3559  3104  0 Nov11 pts/9    00:00:00 /sbin/getty -8 38400 console
100000    3562  3104  0 Nov11 pts/5    00:00:00 /sbin/getty -8 38400 tty1
100000    3581  3104  0 Nov11 ?        00:00:00 upstart-socket-bridge --daemon
100000    3582  3104  0 Nov11 ?        00:00:00 upstart-file-bridge --daemon
lxc       3780  1518  0 00:10 pts/4    00:00:00 grep --color=auto 3104

ご覧のとおり、プロセスはコンテナ内でルートとして実行されていますが、ルートとして表示されるのではなく、ホストシステムでは100000として表示されます。

要約すると、次のようになります。利点 - セキュリティ強化とセキュリティ分離の強化。欠点 - 最初は少し混乱しているので、初心者のユーザーには適していません。

おすすめ記事