lxc-container-default-with-nesting AppArmor 配置文件有什么作用?
What does lxc-container-default-with-nesting AppArmor profile do?
我正在使用嵌套的 LXC 和 lxc-container-default-with-nesting 配置文件,如下所示。
profile lxc-container-default-with-nesting flags=(attach_disconnected,mediate_deleted) {
#include <abstractions/lxc/container-base>
#include <abstractions/lxc/start-container>
# Uncomment the line below if you are not using cgmanager
# mount fstype=cgroup -> /sys/fs/cgroup/**,
deny /dev/.lxc/proc/** rw,
deny /dev/.lxc/sys/** rw,
mount fstype=proc -> /var/cache/lxc/**,
mount fstype=sysfs -> /var/cache/lxc/**,
mount options=(rw,bind),
}
关于下一行我有两个问题。
mount fstype=proc -> /var/cache/lxc/**,
为什么允许容器挂载 /proc 是安全的?
为什么容器需要在/var/cache/lxc下挂载/proc?
嵌套容器配置
该配置文件允许您创建嵌套 LXC 容器,一个在另一个里面。默认情况下,这是禁用的,因为它绕过了一些默认的 cgroup 限制 (more info here)。
一般来说,它改变了apparmor规则,让lxc重新挂载容器内的某些系统资源(有一定的限制)。
lxc.container.conf
如果您查看 man lxc.container.conf
,本节将介绍您可以编辑的有关 proc
装载方式的设置。我认为它默认使用proc:mixed
(但我还没有证实这一点!)
lxc.mount.auto
specify which standard kernel file systems should be
automatically mounted. This may dramatically simplify
the configuration. The file systems are:
· proc:mixed (or proc):
mount /proc as read-write, but
remount /proc/sys and
/proc/sysrq-trigger read-only
for security / container isolation purposes.
· proc:rw: mount
/proc as read-write
非特权 LXC
顺便说一句,如果您没有使用非特权 LXC,您应该这样做。 认真的。它增加了一个额外的保护层,限制容器中的 root
用户可以做什么(它实际上将其映射到容器外的非根用户)。这为 /proc
提供了额外的保护层,以防出现不符合服装规则的情况。
至于为什么使用/var/cache/lxc
,我不知道。猜测是它与不与 cgmanager
冲突有关。如果您对推理感兴趣,那么查看源代码可能是一个不错的起点。
我正在使用嵌套的 LXC 和 lxc-container-default-with-nesting 配置文件,如下所示。
profile lxc-container-default-with-nesting flags=(attach_disconnected,mediate_deleted) {
#include <abstractions/lxc/container-base>
#include <abstractions/lxc/start-container>
# Uncomment the line below if you are not using cgmanager
# mount fstype=cgroup -> /sys/fs/cgroup/**,
deny /dev/.lxc/proc/** rw,
deny /dev/.lxc/sys/** rw,
mount fstype=proc -> /var/cache/lxc/**,
mount fstype=sysfs -> /var/cache/lxc/**,
mount options=(rw,bind),
}
关于下一行我有两个问题。
mount fstype=proc -> /var/cache/lxc/**,
为什么允许容器挂载 /proc 是安全的?
为什么容器需要在/var/cache/lxc下挂载/proc?
嵌套容器配置
该配置文件允许您创建嵌套 LXC 容器,一个在另一个里面。默认情况下,这是禁用的,因为它绕过了一些默认的 cgroup 限制 (more info here)。
一般来说,它改变了apparmor规则,让lxc重新挂载容器内的某些系统资源(有一定的限制)。
lxc.container.conf
如果您查看 man lxc.container.conf
,本节将介绍您可以编辑的有关 proc
装载方式的设置。我认为它默认使用proc:mixed
(但我还没有证实这一点!)
lxc.mount.auto
specify which standard kernel file systems should be
automatically mounted. This may dramatically simplify
the configuration. The file systems are:
· proc:mixed (or proc):
mount /proc as read-write, but
remount /proc/sys and
/proc/sysrq-trigger read-only
for security / container isolation purposes.
· proc:rw: mount
/proc as read-write
非特权 LXC
顺便说一句,如果您没有使用非特权 LXC,您应该这样做。 认真的。它增加了一个额外的保护层,限制容器中的 root
用户可以做什么(它实际上将其映射到容器外的非根用户)。这为 /proc
提供了额外的保护层,以防出现不符合服装规则的情况。
至于为什么使用/var/cache/lxc
,我不知道。猜测是它与不与 cgmanager
冲突有关。如果您对推理感兴趣,那么查看源代码可能是一个不错的起点。