Docker学习(15) Docker 安全
2019-11-16 本文已影响0人
August________
Docker学习(15) Docker 安全
- 安全性是基于分层隔离的,
- docker支持linux治理的安装机制,同时到此自身提供了很多简单易于配置的安全机制。
- Linux的安全技术
- Docker 平台的安全技术
docker 安全 ——简介
- linux的安全技术
linux的安全技术 |
---|
强制访问控制(MAC) |
系统权限 |
控制组 |
内核命名空间 |
安全计算 |
- docker 的安全技术
docker 的安全技术 |
---|
密钥管理 |
Docker 内容信任 |
安全扫描 |
Swarm模式 |
- Docker Swarm模式:默认开启安全功能,无需任何配置,可以获取节点加密ID、双向认证、自动化CA配置、自动证书更新,加密集群存储、加密网络等安全技术
- Docker 的内容信任:允许用户对镜像签名,并对拉取的镜像的完整度和发布者进行验证
- Docker 的安全扫描:分析docker镜像,检查已知缺陷,并提供对应的详细报告。
- Docker 密钥:存储在加密集群的存储中,在容器传输过程中实时解密。,使用时保存在内的文件系统中。
Docker 安全——详解
Linux的安全技术
- 每个优秀的容器平台都可以使用命名空间和控制组技术来构建容器。
Namespace
- 内核命名空间技术将操作系统(OS)进行拆分,使一个操作系统看起来像多个独立的操作系统。
- 可以在相同的操作系统中运行多个Web服务,同时不存在端口冲突的问题。
- linux Docker利用了下列的内核命名空间
- 进程ID(PID)
- 网络(NET)
- 文件系统/挂载(MNT)
- 进程内通信 (IPC)
- 用户(USER)
- UTS
- 容器就是由各个命名空间组合而成的。
- 进程ID命名空间:Docker使用进程ID命名空间为每个容器提供相互独立的容器树,每个容器都有自己的进程树,都有PID为1的进程
- 网络命名空间:Docker使用NET命名空间为每个容器提供相互独立的网络桟,网络桟中包括接口、ID地址、端口地址以及路由表
- 挂载点命名空间:每个docker容器都有相互隔离的根目录/,意味这每个容器都有/etc、/car、/dev等目录。
- 进程内通信命名空间:docker使用IPC命名空间为容器提供共享内存。
- 用户命名空间:docker使用用户命名空间将容器内的用户映射到linux主机不同的用户上。
Control Group
- 控制组是用于限额的。
- docker中,容器是相互隔离的,但是共享操作系统(OS)的资源,如CPU、RAM、以及磁盘I/O,CGroup运行用户设置限制。,这个单个容器不会占用全部CPU、RAM、磁盘I/O
Capability
- 因为root拥有全部权限,,因此使用root运行容器很危险,但是使用非root用户,缺少权限。
- 可以使用capability,可以选择运行容器时所需的root权限。
- root用户由许多能力组成,包括:
- CAP_CHOWN: 允许用户修改文件权限
- CAP_NET_BIND_SERVICE: 运行用户将socket绑定到系统端口上
- CAP_SETUID: 运行用户提升进程的优先级
- CAP_SYS_BOOT :允许用户重启进程
MAC
- Docker对新容器添加了默认的配置文件AppArmor,会根据文档描述,来提供保护
seccomp
- Docker使用过滤模式,限制容器对宿主机发起系统调用。
Docker平台的安全技术
Swarm模式
-
Docker Swarm提供了很多开箱即用的安全特性,提供了合理的默认值
-
加密节点ID
-
基于TLS的认证机制
-
安全准入令牌
-
支持周期性证书自动更新CA配置。
-
加密集群存储
-
加密网络
-
- Swarm准入令牌
-
向某个Swarm集群加入管理节点和工作节点,唯一的凭证就是准入令牌
-
管理者所需令牌
-
工作者所需令牌
-
- TLS和双向认证
-
每个加入Swarm集群的工作节点和管理节点都需要发布自己的客户端证书
-
查看指定节点的客户端证书
root@mgr-1:~# openssl x509 -in /var/lib/docker/swarm/certificates/swarm-node.crt -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
55:53:20:04:4f:a0:7c:5b:1c:6f:c8:6b:49:6c:43:a0:c2:ff:1d:db
Signature Algorithm: ecdsa-with-SHA256
Issuer: CN=swarm-ca
Validity
Not Before: Nov 15 15:05:00 2019 GMT
Not After : Feb 13 16:05:00 2020 GMT
Subject: O=jkrijzccz14sfb0f41ep9znrr, OU=swarm-manager, CN=l564anfboh0ne59d8vet8pzzz
Subject Public Key Info:
- O=jkrijzccz14sfb0f41ep9znrr:表示的swarmID
- OU=swarm-manager:表示节点角色
- CN=l564anfboh0ne59d8vet8pzzz:表示节点ID信息。
- 配置CA信息
- 更新Swarm证书的更新周期,改为30天
lhf@mgr-1:~$ docker swarm update --cert-expiry 720h
Swarm updated.
- 集群存储
- 集群存储相当于swarm的大脑,保存了集群配置和状态数据。