gpt4 book ai didi

security - 有没有办法限制不受信任的容器调度程序?

转载 作者:IT老高 更新时间:2023-10-28 12:41:17 24 4
gpt4 key购买 nike

我有一个应用程序,我想授予它启动短期任务并将它们安排为 docker 容器的特权。我想通过 docker run 来做这件事。

由于我想让攻击面尽可能小,我将应用程序视为不受信任。因此,它可能会针对预定义的 docker API 端点运行任意 docker run 命令(如果代码库包含错误或容器被破坏,输入在某处不正确地转义等)。

这就是我想在某些方面限制该应用程序(实际上是调度程序)的原因:

  • 防止--privileged使用
  • 强制 --read-only 标志
  • 强制执行内存和 CPU 限制

我看了几个选项:

  • selinux
    • 需要在主机级别设置 selinux 策略,然后通过 daemon 级别上的 --selinux-enabled 标志在容器内传播。然而,调度程序可以通过 run --privileged 覆盖它。
  • seccomp 配置文件
    • 这些仅在启动容器时应用(seccomp 标志可用于 docker run)
  • AppArmor
    • 这可以(再次)通过 --privileged
    • 在调度程序级别被覆盖
  • docker 守护进程 --exec-opts 标志
    • 这个标志实际上只有一个选项可用(native.cgroupdriver)

似乎 Docker 被设计为默认信任容器调度程序。有谁知道这是否是一个设计决定?

我错过了当前最新的 Docker 版本,还有其他可能的解决方案吗?


我还研究了 Kubernetes 及其 Limit Ranges & Resource Quotas它可以应用于 K8S 命名空间,看起来很有趣,假设有一种方法可以强制某些调度程序只使用某些命名空间。然而,这会将这个问题的范围扩大到操作 K8S 集群。

最佳答案

在 unix 平台上运行 docker 应该与 nice 兼容或者,我认为乍一看更仔细一点,您似乎需要像 -cpuset-cpus="0,1" 这样的东西

从第二个链接,“--cpu-quota 看起来类似于--cpuset-cpus ...为一个进程分配一个或几个核心,它只是时间管理而不是处理器数量托管。”

关于security - 有没有办法限制不受信任的容器调度程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36965576/

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