- 桌面版:Mac、Windows;
- 服务器版:Windows Server、Centos、Debian、Fedora、Oracle Linux、RHEL、SLES、Ubuntu;
- 云提供商:AWS、Azure、阿里云等;
- 容器操作系统:RancherOS、CoreOS、Atomic、Photon;
- 精简安全:容器操作系统只包含运行容器所需的必要软件和必要的管理工具,相比传统的操作系统而言会精简很多;所有应用通过容器的方式运行,从而使操作系统和应用软件隔离开来,极大降低了出现安全漏洞的概率;
- 升级回滚:系统采用可回滚的双分区模式,活动的分区通过只读方式挂载,另外一个分区用来自动更新, 通过切换系统分区即可实现快速升级,升级出现问题时,可以快速切换回原来的分区保证系统可用;
- 集群模式:在系统安装的时候便可自动加入内置的ETCD集群中,每个系统都可以通过本机的ETCD读取或发布配置信息和状态数据,通过选举形式在服务器之中选举Leader来同步数据,并以此确保集群之内信息始终可用;
- 单独为容器划分一个分区作为容器的存储空间:所有容器的数据、元数据默认都存储在/var/lib/docker下(当然可以修改docker容器默认的存储路径),很容易造成争抢磁盘空间,导致系统崩溃,推荐在内部存储中单独划分一个分区挂载到该目录上,同样的方法也可以使用外部存储;
- 使用比较新且稳定的Linux内核:官方推荐Linux内核版本为3.10+,但是有些功能模块要求的内核版本更高,如支持MacVlan网络模块就需要内核版本为3.9+,这个时候就得权衡一下Linux内核版本的选择,推荐采用该功能模块推荐的内核版本;
- 使用比较新且稳定的Docker版本:官方推荐的Docker版本为1.9.1+,但从实施和运维经验来看,推荐选择比较稳定的1.12.1版本;
- 只允许可信任的用户来控制Docker Daemon:Docker Daemon控制需要root特权,推荐将可信任的用户加入到一个组中,并将整个组授予root特权;
- 增加Docker Daemon及其相关文件、目录的日志审计:Docker Daemon作为Docker的后台守护进程,对其访问控制、行为操作做日志审计是非常有必要的,一旦出现问题,很方便进行定位,推荐增加Docker文件(docker、daemon.json、docker.service、docker.sock)和目录(/var/lib/docker、/etc/docker、/usr/bin)的日志审计;
- 使用可信任的镜像来创建容器:Docker官方或非官方的镜像有很多漏洞,若使用它们来运行容器,很容易被攻击,建议使用Docker官方认证过的镜像,或是自己构建的镜像(建议采用Alpine作为基础镜像),并通过漏洞扫描工具(如Clair);也可以使用容器安全产品,类似AppSafe之类,可以全方位的保障镜像和容器运行时的安全;
- 在容器里面尽量不要安装不必要的软件:不必要的软件会占用磁盘的空间,也会增加系统的安全威胁;有些容器云公司也会提供镜像瘦身的服务,如有容云等;
- 创建一个非root用户的容器:容器拥有root权限,很容易让人通过容器的root权限攻击所在的宿主机,可以在制作镜像的时候指定用户,如:RUN useradd -d /home/username -m -s /bin/bash username;
- 开启Docker的Content Trust选项:Content Trust会将数据通过数字签名发送到远程的Docker Registries或是从远程的Docker Registries接收数据,用来保证镜像在build, create, pull, push, run过程中没有被篡改,开启命令:export DOCKER_CONTENT_TRUST=1;
- 为容器创建一个AppArmor Profile文件:AppArmor Profile文件里面包含了各种威胁的安全策略,通过它可以保护宿主机系统和应用程序的各种威胁,设置参数如:docker run –interactive –tty –security-opt=”apparmor:PROFILENAME” centos /bin/bash。
- 开启SELinux Security选项:SELinux提供了强制访问控制,增强了自主访问模型,可以通过SELinux为系统增加一层额外的安全层,设置参数如:docker run –interactive –tty –security-opt label=level:TopSecret centos /bin/bash。
- 为容器限制Linux内核的Capabilities能力:Linux把原来和超级用户相关的高级权限划分成为不同的单元,称为Capability,这样就可以独立对特定的Capability进行开启或禁止,来增加容器的安全,设置参数如:docker run –interactive –tty –cap-drop=all –cap-add={“NET_ADMIN”,”SYS_ADMIN”} centos:latest /bin/bash。以只读的模式挂载容器的root文件系统,设置参数如:docker run –interactive –tty –read-only –volume /centdata centos /bin/bash
- 设置容器在失败的时候尝试重启的次数:若不设置的话,重启则会不断的尝试重启,参数如:docker run –detach –restart=on-failure:5 nginx。
- 不要挂载宿主机上敏感的目录到容器上,或是以只读的方式挂载:如宿主机上这些目录:/、/boot、/dev、/etc、/lib、/proc、/sys、/usr;
- 在容器里面最好不要运行ssh服务:使用docker exec 或 docker attach来查看容器实例;
- 容器运行时不要映射privileged的端口:处于安全考虑,privileged的TCP/IP端口约束在1024以下,一般的用户是不能使用这个端口;
- 日志级别设置为info:这样除了debug信息外,可以捕获所有的信息,设置参数如: docker daemon –log-level=”info”;
- 允许Docker Daemon修改iptables:这样可以自动避开错误的网络配置导致的容器和外部的访问问题,设置参数如:docker daemon –iptables=true;
- 使用安全模式访问镜像仓库:Docker Daemon支持安全模式(默认)和非安全模式(–insecure-registry)访问镜像仓库,推荐镜像仓库配置CA证书,Docker Daemon配置安全访问模式,采用TLS安全传输协议;
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:Docker运维之最佳实践