简体中文

开发者工具 · Docker run 到 Docker compose 转换器

--privileged、--cap-add 和 --device:它们在 Compose 文件中的含义

· 为什么它很重要

码头工人 撰写 安全

说明 --privileged、--cap-add 和 --device 的抽象图:它们在 compose 文件中的含义
原始 ToolAcre 矢量图

一个标志可以关闭 Docker 的大部分隔离。这篇文章解释了 --privileged 实际授予的内容、更窄的替代方案,以及转换后它们在privileged:、cap_add: 和 devices: 下的外观。

论坛说添加 --privileged — 容器现在可以工作,并且使容器具有吸引力的隔离性基本上消失了

论坛说添加 --privileged — 容器现在可以工作,并且使容器具有吸引力的隔离性基本上消失了。证据:--privileged 在没有安全认可的情况下变成了 true 特权。使用一次性文字再现最小特权。将每个源事件与特权功能设备配对;保留主机限制和访问权限以供目的地审核。

该安全事件还表明,一个单独的安全事件边界是 --device 被识别,但被警告并被忽略为依赖于主机。证据:--device 被识别,但由于主机相关而被警告并省略。这个最小特权约束是一个停止点。检查没有制造行为的特权功能设备,然后记录主机限制和访问的主机检查。

--privileged 的作用 — 所有功能、对所有设备的访问以及宽松的 seccomp 和 AppArmor 限制

--privileged 的作用 — 所有功能、对所有设备的访问以及宽松的 seccomp 和 AppArmor 限制。证据:主机限制效应无法从命令文本中枚举。将最低特权令牌跟踪到特权功能设备。将有序值与最后值字段分开;主机限制和访问不在收集范围内。

相关的安全机制边界是单独的安全语法边界是不能从以前的特权命令推断出所需的 Zigbee 访问。证据:无法从以前的特权命令推断出所需的 Zigbee 访问权限。使用这一最小特权事实来预测特权功能设备中的一个成员或标量。在决定有关主机限制和访问的任何事情之前检查警告。

功能 — cap_add:以 NET_ADMIN、SYS_TIME 或其他作为窄版本,cap_drop:ALL 作为基线

功能 — cap_add:以 NET_ADMIN、SYS_TIME 或其他作为窄版本,cap_drop:ALL 作为基线。证据:--cap-add 和 --cap-drop 成为显式有序列表。从其模型判断最小权限序列化。引用特权功能设备可以保护类型,但不提供主机限制和访问的操作证明。

第二个安全序列化观察是单独的安全输出边界是可见的特权密钥支持审查,而警告保留间隙。证据:可见的特权密钥支持审查,同时警告保留差距。此最低权限输出将设置与不可用的上下文分开。保持特权功能设备可审查,并独立检查主机限制和访问。

--设备被识别但故意不转换;手动添加特定于主机的设备列表

设备 - --device /dev/ttyUSB0 成为设备:,通常是人们获得 --privileged 的真正原因。证据:--设备被识别,但被警告并被省略为依赖于主机; --设备被识别但故意不转换;手动添加特定于主机的设备列表。至少停止特权异常,而不是猜测。任何接近特权功能的设备的添加都需要与主机限制和访问相关的特定于部署的原因。

另一个安全异常约束是,对于该安全部分,在该候选文件旁边保留该安全部分的原始命令和该安全部分的警告。证据:存储库没有提供更广泛的运行时间或历史证据。在警告旁边保留原始的最低权限命令。该比较显示了设备包含哪些特权功能以及哪些主机限制和访问决策仍然是手动的。

去特权编辑需要操作员判断,因为此转换器无法推断所需的设备或功能

工作示例:取消 Zigbee 桥接命令的权限 — 将 --privileged 替换为设备条目和单一功能。证据:无法从以前的特权命令推断出所需的 Zigbee 访问权限;去特权编辑需要操作员判断,因为该转换器无法推断所需的设备或功能。从合成名称构建最小权限示例。使每个特权功能设备项都可追踪,而无需暴露生产主机限制和访问详细信息。

相同的安全示例示例演示了对于此安全部分,在此候选文件旁边保留此安全部分的原始命令和此安全部分的警告。配对的最小特权事实应该在特权功能设备中可见。记录该行并避免有关主机限制和访问的假设。

读取转换后的 YAML 作为评论 — 特权:true 在差异中脱颖而出,而 shell 行中的标志则不然

读取转换后的 YAML 作为评论 — 特权:true 在 diff 中脱颖而出,而 shell 行中的标志则不然。将最小特权结果转化为一个可观察到的特权能力设备差异。 Docker 拥有后来的主机限制和访问裁决。

安全结果实现还显示了一个单独的安全效果边界是 --privileged 在没有安全认可的情况下变为特权 true。分割最小权限职责:转换写入特权功能设备,存储库删除机密,操作员验证主机限制和访问。

这不包括什么 - GPU 访问、自定义 seccomp 配置文件和 Kubernetes 安全上下文

这不包括 GPU 访问、自定义 seccomp 配置文件和 Kubernetes 安全上下文。证据:未生成 GPU 预留和自定义配置文件。将最小权限范围限制为此处所示的特权功能设备分支。相邻的表单和默认值无法回答主机限制和访问问题。

另一个安全范围限制来自一个单独的安全限制边界,即主机限制效果无法从命令文本中枚举。将此最小特权边界视为排除项。优先选择准确的特权功能设备,而不是对主机限制和访问的猜测。

映射时特权可见,但不支持的设备访问仍然是警告而不是生成的密钥

要点:权限应该是明确且最小的——并且转换器将其显示为您可以质疑的密钥。证据:最小特权需要超越转换的人性化设计;映射时权限可见,但不支持的设备访问仍然是警告而不是生成的密钥。审核最低权限作为源选项、模型字段、特权功能设备行和警告。在检查主机限制和访问之前删除机密。

最后,安全要点来源确认保留此安全部分的原始命令,并在该安全部分旁边发出警告,该候选文件表明安全要点结论提高了此安全部分的可审核性,而没有承诺此安全部分解析的等效 shell 仍然在安全要点保证之外。缩小最小权限范围:具有特权功能的设备是候选者;不保证主机限制和访问以及 shell 等效性。