Docker在ubuntu上使用SELinux运行约束冲突
在Ubuntu 14.04上,我使用SELinux运行Docker,正如我所知,Docker将读取$SELinux Root Dir/default/contexts/lxc_contexts。但是我找不到这个文件,所以我创建了这个文件并放置了一些内容。如下:Docker在ubuntu上使用SELinux运行约束冲突,ubuntu,docker,lxc,selinux,Ubuntu,Docker,Lxc,Selinux,在Ubuntu 14.04上,我使用SELinux运行Docker,正如我所知,Docker将读取$SELinux Root Dir/default/contexts/lxc_contexts。但是我找不到这个文件,所以我创建了这个文件并放置了一些内容。如下: process = "system_u:system_r:svirt_lxc_net_t:s0" content = "system_u:object_r:virt_var_lib_t:s0" file = "system_u:objec
process = "system_u:system_r:svirt_lxc_net_t:s0"
content = "system_u:object_r:virt_var_lib_t:s0"
file = "system_u:object_r:svirt_lxc_file_t:s0"
sandbox_kvm_process = "system_u:system_r:svirt_qemu_net_t:s0"
sandbox_lxc_process = "system_u:system_r:svirt_lxc_net_t:s0"
然后我用Selinux的许可模式运行Docker,
docker-dD--selinux enabled=false
和docker run-it--rmubuntu/bin/bash
最后我想使用audit2allow生成一个*.te和*.pp文件,
我执行cat/var/log/audit/audit.log | audit2allow-M容器
,但它说
编译失败:
container.te:41:第41行的标记“mlsconstrain”处出现错误“syntax ERROR”:
#约束规则:
mlsconstrain chr_文件{create relabelto}((h1-domh2-Fail-)和(l2-eq-h2));拒绝约束
/usr/bin/checkmodule:解析配置时遇到错误
/usr/bin/checkmodule:从container.te加载策略配置
我对容器进行了分类。te,其内容物为:
#!!!! 此avc违反了约束。您需要修改源或目标类型的属性以允许此访问。
#约束规则:
mlsconstrain chr_文件{create relabelto}((h1-domh2-Fail-)和(l2-eq-h2));拒绝约束
mlsconstrain chr_文件{relabelfrom}((h1-domh2-Fail-);拒绝约束
....
#可能的原因是源电平(s0)和目标电平(s0:c96、c879)不同。
我猜docker使用s0运行,但是它想将docker的rootfs文件系统重新标记为(s0:c96,c879),并且发生了这个错误
因此,我的问题是:
是容器错误的类型?如何关闭此约束或如何解决此问题?我不知道container.te文件的第41行。通常,“语法错误”表示缺少selinux类型或未知的selinux接口,这意味着问题出在不同的地方 但我注意到了一些事情:
- Docker守护程序必须在
下运行才能支持selinux--selinux enabled=true
- 要创建新的selinux策略模块,您需要以下所有文件:.te、.fc和.if。有关最小SELinux策略的示例,请参见
- 通过使用
可以处理所有记录的LINE。最好只将需要的行复制到新文件中cat/var/log/audit/audit.log | audit2allow-M容器
是级别而不是标签。而“重新标记”意味着更改类型。看s0
- 在运行时,SELinux(不是docker本身)将重新标记docker守护程序类型(docker_t)和正在运行的容器(svirt_lxc_net_t)
- Docker将默认情况下的文件类别(即s0:c96、c879)更改为将正在运行的容器彼此分开
- 在Ubuntu中使用AppArmor(但我不知道是否有现成的Docker配置文件)
- 在Ubuntu上为SELinux构建自己的Docker策略。请参阅策略,但有很多依赖项,即
来自svirt\u lxc\u net\u t
- 使用Fedora,它将与SELinux和Docker一起开箱即用,包括提到的文件
lxc\u contexts