docker安全特性

1.内核命名空间

命名空间提供了最基础也是最直接的隔离,在容器中运行的进程不会被运行在主机上的进程和其它容器发现和作用

每个容器都有自己独有的网络栈,意味着它们不能访问其他容器的 sockets 或接口。不过,如果主机系统上做了相应的设置,容器可以像跟主机交互一样的和其他容器交互


2.控制组

控制组提供了很多有用的特性;以及确保各个容器可以公平地分享主机的内存、CPU、磁盘 IO 等资源;当然,更重要的是,控制组确保了当容器内的资源使用产生压力时不会连累主机系统

控制组不负责隔离容器之间相互访问、处理数据和进程,它在防止拒绝服务(DDOS)攻击方面是必不可少的。尤其是在多用户的平台(比如公有或私有的 PaaS)上,控制组十分重要。例如,当某些应用程序表现异常的时候,可以保证一致地正常运行和性能


3.服务端防护

运行一个容器或应用程序的核心是通过 Docker 服务端。Docker 服务的运行目前需要 root 权限,因此其安全性十分关键

Docker 允许用户在主机和容器间共享文件夹,同时不需要限制容器的访问权限,这就容易让容器突破资源限制。例如,恶意用户启动容器的时候将主机的根目录/映射到容器的 /host 目录中,那么容器理论上就可以对主机的文件系统进行任意修改了

这将会造成很严重的安全后果。因此,当提供容器创建服务时(例如通过一个 web 服务器),要更加注意进行参数的安全检查,防止恶意的用户用特定参数来创建一些破坏性的容器

终极目标是改进 2 个重要的安全特性:

  • 将容器的 root 用户映射到本地主机上的非 root 用户,减轻容器和主机之间因权限提升而引起的安全问题
  • 允许 Docker 服务端在非 root 权限下运行,利用安全可靠的子进程来代理执行需要特权权限的操作。这些子进程将只允许在限定范围内进行操作

4.内核能力机制

默认情况下,Docker 启动的容器被严格限制只允许使用内核的一部分能力

例如,一个 Web 服务进程只需要绑定一个低于1024的端口的权限,并不需要 root 权限。那么它只需要被授权 net_bind_service 能力即可

使用能力机制对加强 Docker 容器的安全有很多好处。通常,在服务器上会运行一堆需要特权权限的进程,包括有 ssh、cron、syslogd、硬件管理工具模块(例如负载模块)、网络配置工具等等。容器跟这些进程是不同的,因为几乎所有的特权进程都由容器以外的支持系统来进行管理


5.其它安全特性

除了能力机制之外,还可以利用一些现有的安全机制来增强使用 Docker 的安全性,例如 TOMOYO, AppArmor, Seccomp, SELinux, GRSEC 等

Docker 当前默认只启用了能力机制。用户可以采用多种方案来加强 Docker 主机的安全,例如:

  • 在内核中启用 GRSEC 和 PAX,这将增加很多编译和运行时的安全检查;通过地址随机化避免恶意探测等。并且,启用该特性不需要Docke进行任何配置
  • 使用一些有增强安全特性的容器模板,比如带 AppArmor 的模板和 Redhat 带 SELinux策略的模板。这些模板提供了额外的安全特性
  • 用户可以自定义访问控制机制来定制安全策略
  • 23
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Docker Swarm是Docker官方提供的用于管理和编排Docker集群的工具。它具有以下主要特性: 1. 集群管理:Docker Swarm可以将多个Docker主机组成一个集群,通过集群管理功能,可以方便地管理和监控整个集群的状态和资源。 2. 服务编排:Docker Swarm支持使用服务(Service)的概念来定义和管理应用程序的部署。通过定义服务,可以指定应用程序的镜像、副本数、网络配置等信息,并且可以动态地扩展和更新服务。 3. 负载均衡:Docker Swarm内置了负载均衡功能,可以自动将请求分发到集群中的不同节点上,以实现高可用和高性能的应用程序部署。 4. 容器编排:Docker Swarm可以根据应用程序的需求,自动将容器调度到集群中的不同节点上,并且可以根据节点的资源情况进行动态调整,以实现最优的资源利用和容器调度。 5. 安全性:Docker Swarm提供了安全的通信和身份验证机制,可以保护集群中的通信和数据安全。 6. 扩展性:Docker Swarm可以根据需要进行水平扩展,可以轻松地添加或删除节点,以适应不同规模和需求的应用程序。 7. 故障恢复:Docker Swarm具有自动故障恢复的能力,当集群中的节点发生故障时,可以自动将容器重新调度到其他健康的节点上,以保证应用程序的可用性。 8. 可视化界面:Docker Swarm提供了可视化的管理界面,可以方便地查看和管理集群中的节点、服务和容器。 以下是一个使用Docker Swarm进行服务编排的示例命令: ```shell docker swarm init --advertise-addr 192.168.9.211:2377 ``` 这个命令用于初始化一个Docker Swarm集群,并指定集群的管理节点的地址为192.168.9.211,并监听2377端口。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

世界尽头与你

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值