Security
非特權容器的優點和缺點是什麼?
什麼是非特權容器的技術解釋非常好。但是,它不適用於普通 PC 使用者。是否有一個簡單的答案,人們何時以及為什麼應該使用非特權容器,它們的好處和缺點是什麼?
執行非特權容器是在生產環境中執行容器的最安全方式。容器在安全性方面受到不良宣傳,原因之一是因為一些使用者發現如果使用者在容器中獲得 root 權限,那麼也有可能在主機上獲得 root 權限。基本上,非特權容器所做的是從主機屏蔽使用者 ID。使用非特權容器,非 root 使用者可以創建容器,並且將在容器中以 root 身份擁有並出現,但例如在主機上將顯示為使用者 ID 10000(無論您將使用者 ID 映射為什麼)。我最近根據Stephane Graber關於 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
如您所見,程序在容器內以 root 身份執行,但不是以 root 身份出現,而是從主機以 100000 身份出現。
總結一下: 好處 - 增加了安全性並增加了安全性隔離。缺點 - 一開始有點困惑,而不是新手使用者。