gpt4 book ai didi

docker - docker daemon 选项--selinux-enabled 有什么作用

转载 作者:行者123 更新时间:2023-12-02 18:01:21 24 4
gpt4 key购买 nike

我猜它会标记它启动的容器,但是来自 ps -eZ 的输出,我看不出有什么区别。
例如,容器 etcd具有相同的域,无论守护进程是否有此选项:

system_u:system_r:container_runtime_t:s0 16212 ? 00:00:00 dnsmasq-nanny

但它确实阻止了我的容器 (k8s-dns-dnsmasq-nanny-amd64:1.14.8) 启动并且拒绝日志显示访问 /etc/localtime和/usr/sbin/dnsmasq 被拒绝。我认为这些是容器文件系统中的文件。如何编写 SELinux 策略以允许访问容器文件系统?

最佳答案

简答

  • --selinux-enabled将启用 selinux 策略,允许标记为 svirt_lxc_net_t 的容器进程使用 svirt_sandbox_file_t 读取和写入文件标签。
  • 可以通过使用 docker inspect -f '{{ .ProcessLabel }}' <container name> 检查容器来检查容器标签。和 docker inspect -f '{{ .MountLabel }}' <container name>

  • 长答案
    --selinux-enabled选项启用 docker selinux 安全策略,详细描述 here .启用后,此策略将:
  • svirt_sandbox_file_t 标记容器和 svirt_lxc_net_t标签。这可以通过运行容器并检查应用到它的标签来确认:
    docker inspect <container id> | grep "Label"

    "MountLabel": "system_u:object_r:svirt_sandbox_file_t:s0:c557,c611",
    "ProcessLabel": "system_u:system_r:svirt_lxc_net_t:s0:c557,c611",
    svirt_sandbox_file_t是一个 MountLabel,它限制对主机文件系统上的文件的访问。 docker selinux docs说:

    If a file is labeled svirt_sandbox_file_t, then by default all containers can read it. But if the containers write into a directory that has svirt_sandbox_file_t ownership, they write using their own category



    上例中的类别是 c557,c611 .
    svirt_lxc_net_t用于保护进程。根据redhat的解决方案here ,它用于:

    ... isolate the container processes from the host, and it generates a unique Multi-Category Security label to allow SELinux to prevent one container process from attacking other container processes and content.


  • 您的访问问题很可能是因为主机文件系统上的 selinux 标签阻止了容器内的访问。例如, selinux docs说:

    By default, docker gets access to everything in /usr and most things in /etc.



    所以你的选择是:
  • 使用 system_u:object_r:svirt_sandbox_file_t 手动重新标记主机系统上的文件.对于系统文件和目录,通常不建议这样做,因为它可能会对主机产生意想不到的影响。
  • 以无限制类型运行容器。这将仅禁用此容器的隔离,同时仍继续在主机上强制执行 selinux:
    docker run -it --security-opt label:disable alpine sh
  • 关于docker - docker daemon 选项--selinux-enabled 有什么作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52033599/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com