Day 30 Docker 的使用安全

若要长期稳定的使用服务,了解其安全性是必要的。毕竟世上没有 100% 安全的软硬体,总是会存在一些漏洞在往後被有心人士给发现。一般而言,Docker 被认为安全的第一直觉是因为每个容器会有一个「隔离」的环境。

安全性

Namespace

Docker 的容器环境能够实现「隔离」,主要是仰赖於 Linux 所提供的 Namespace 机制来实现。不过容器间以及容器与宿主间的隔离,其实并没想像中的彻底。例如当你要在容器内进行一些指令操作,这还是得仰赖於 Host Linux 系统中的 /sys 来获取相关讯息。简言之,当你在 docker 容器中修改了这些没被 Namespace 区隔的目录和模组,会同步修改到 Host Linux 的内容。

Capabilities

容器内的环境,会是「轻量化且受到不小限制」的。因为其背後的实作,部分会需要 Host 的 root 权限。若这个 root 权限遭到滥用,那就失去了「隔离且不影响 Host」的意义。在预设情况下, docker 是关闭以下内容的:

  • 拒绝所有的 mount 操作
  • 拒绝部分文件系统的操作,像是更改档案拥有者
  • 拒绝模组加载
  • ...等等

CGroups

Docker 利用 CGroups 机制来实现对每个容器中关於 CPU、记忆体...等的限制。举例来说,以下指令代表启用一个 Ubuntu 最新版本的容器,限制其 CPU 为 2、记忆体为 200Mb

docker run -it --cpus="2" --memory="200m" ubuntu:latest /bin/bash

Docker Daemon

Docker 由映像档建立一个容器,必定需要利用 root 权限启用 daemon。如果骇客已能存取你的 Host 主机,那这些操作就不是难事。不过在 Host 主机能进行的操作更多,就无强烈使用容器的完成攻击动作指令必要性。因此,利用 docker daemon 所开放的 port ( 预设为 2375,且无须认证 ) 的 API 来进行攻击变成了一种可行的方式。因应之道为「在使用 API 来对 docker 进行操作之前,先行绑定一组 TLS 证书」

Docker Image 的安全

  1. 使用精简版的 Image
    使用越为精简的 Image 来生成容器或是打造自己的映像档,都会使安全性提升许多。由 Snyk 所提供的报告指出,采用精简版本的 node,都可以让漏洞有效的下降不少。
    FromSynk

  2. 保持最小权限原则
    容器内的权限,预设都是用 root 启动的。如果你想要避免这个情况,可以视情况加入较小权限的 User。


<<:  网路是怎样连接的(八)TCP的性能优化(上)

>>:  Day 30 让 Tree View 变成彩虹吧~!

DAY 17 - 九尾狐妹妹 (1) 草稿

大家好~ 我是五岁~~ 我要来尝试画些比较细致(复杂?)的东西~ 今天就来画画看九尾狐小妹妹吧~~ ...

Day30_渗透 patator

patator 使用环境:kali Linux 以python写的暴力破解工具。支援多种协定。破解...

DAY 19 Big Data 5Vs – Variety(速度) EMR (2)

接续介绍昨天建立的EMR丛集: 建立的丛集可以在左方工具栏的丛集分页找到 步骤的状态可以到「步骤」分...

浮点数的二进位表达方法

浮点数的二进位表达方法 浮点运算知识点 小数二进制表达 与整数的二进制表达相同我们可以假设任意小数的...

Dungeon Mizarka 021

魔法使用制作 很多不确定的设计考量下,选择更有弹性的方式进行会比较适合。而在视觉化的设计里PlayM...