Docker容器引擎(7)

目录

一.docker容器使用安全注意点

二.HTTP和HTTPS协议

https的单向认证流程:

如何获取证书?


一.docker容器使用安全注意点

尽量别做的事:
尽量不用 --privileged 运行容器(授权容器root用户拥有宿主机的root权限)
尽量不用 --network host 运行容器(使用host网络模式共享宿主机的网络命名空间)
尽量不在容器中运行 ssh 服务
尽量不把宿主机系统的关键敏感目录挂载到容器中
 

尽量要做的事:
尽量使用较小体积的镜像
尽量以单一应用进程运行容器
尽量在容器中使用最新稳定版本的应用
尽量安装使用最新稳定版本的docker
尽量以最低权限运行容器
尽量使用官方提供的镜像或自己构建的镜像
尽量给docker目录(默认/var/lib/docker/)分配独立的文件系统
尽量以资源限制的方式运行容器 -m  --memory-swap  --cpu-quota   --cpu-shares --cpuset-cpus   --device-write-bps
尽量以只读的方式挂载数据卷,持久化容器数据到宿主机的除外     -v 宿主机目录:容器数据卷目录:ro
尽量设置容器的重启策略和次数   --restart always|on-failure:N
尽量对镜像进行漏洞扫描

使用最少资源和最低权限运行容器,此为 Docker 容器安全的核心思想。

二.HTTP和HTTPS协议

http        超文本传输协议          tcp/80       明文传输
https       安全的超文本传输协议    tcp/443      密文传输     证书加密(ssl/tls加密)的方式

https的单向认证流程:


0)服务端会事先通过CA签发服务端证书和私钥文件
1)客户端发送https请求到服务端的443端口
2)服务端会先返回一个包含公钥、证书有效期、CA机构等信息的证书给客户端
3)客户端受到服务端发来的证书后,会先用本地的CA证书校验服务端证书的有效性,如果证书有效,则继续,否则告警
4)客户端发送自己可支持的对称加密方案给服务端
5)服务端会选择加密程度最高的方案,并通过明文方式发送给客户端
6)客户端使用选择的加密方案生成随机会话密钥并通过证书中的公钥进行加密,再发送给服务端
7)服务端会用私钥进行解密获取客户端发来的随机会话密钥,并使用这个会话密钥加密要返回的报文,再发送给客户端
8)客户端也是这个会话密钥进行解密获取服务端返回的数据,之后双方可继续这个会话密钥进行加密和解密来实现密文通信


https的双向认证流程:


0)服务端和客户端会事先通过CA签发服务端证书和私钥文件
1)客户端发送https请求到服务端的443端口
2)服务端会先返回一个包含公钥、证书有效期、CA机构等信息的证书给客户端
3)客户端收到服务端发来的证书后,会先用本地的CA证书校验服务端证书的有效性,如果证书有效,再将包含公钥的客户端证书发送给服务端
4)服务端收到客户端证书后也会校验证书的有效性,客户端还会发送自己可支持的对称加密方案给服务端
5)服务端会选择加密程度最高的方案,并通过客户端证书里的公钥加密后发送给客户端
6)客户端使用私钥解密获取选择的加密方案,并使用此加密方案生成随机会话密钥,再通过服务端证书中的公钥进行加密,再发送给服务端
7)服务端会用私钥进行解密获取客户端发来的随机会话密钥,并使用这个会话密钥加密要返回的报文,再发送给客户端
8)客户端也是这个会话密钥进行解密获取服务端返回的数据,之后双方可继续这个会话密钥进行加密和解密来实现密文通信

如何获取证书?

1)在阿里云、华为云、腾讯云等云服务商那里申请一年有效期的免费证书或者购买证书
2)在本地使用 openssl、mkcert、cfssl、certbot(Let's Encrypt)的工具生成本地私钥证书

你可能感兴趣的:(docker,容器,运维)