Openshift容器云安全加固措施70项

前言

企业中使用容器承载业务,除了考虑到容器的优势之外,容器的安全更是很多客户关心的话题。本篇文章就此进行讨论。本文在书写过程中,参考了一些文档,文后给出了链接。本文仅提供技术参考,并不能直接用于生产上的建议。

一、宿主机配置

1.为容器创建单独的分区

即为docker创建单独的逻辑卷。

在Openshift中,可以设置独立的磁盘做docker-vg

2. 宿主机使用最新的Linux内核

Openshift宿主机使用RHEL7,其内核不低于3.10。

3.为宿主机做安全加固

Openshift要求宿主机RHEL启用SELinux。

4.尽量保持Docker新版本

OpenShift包含红帽企业Linux,其中包含一个稳定且完全技术支持的Docker引擎。 Red Hat为OpenShift和RHEL用户维护Docker运行时,这包括相关的错误修正和安全更新。目前红帽的Openshift最新版本中的Docker和K8S是社区最新版本的次新版本。

5.仅允许受信的用户访问docker进程

Openshift不允许用户访问宿主机上的docker进程,如果想访问,需要Openshift授权。

6.审计docker进程

7-14.审计目录和其下的文件:

/var/lib/docker、/etc/docker、docker.service、docker.socket、 /etc/default/docker、 /etc/docker/daemon.json、/usr/bin/docker-containerd、 /usr/bin/docker-runc

Openshift的宿主机默认没有对这些进程和目录进行审计。参照社区步骤可以打开这些配置:https://github.com/docker/docker-bench-security

二、Docker守护进程配置

1.限制容器之间的网络流量

目前Openshift默认的SDN--OVS支持三种模式,OVS-subnet、OVS多租户、OVS Network Policy,后两种模式可以做项目之间的pod流量隔离。

2.配置日志管理

Openshift集成EFK,提供日志管理。

3.允许Docker守护进程修改iptables

OpenShift进一步实现了在租户隔离的kubernetes级别上自动执行iptables。

4.不适用不安全的容器仓库

Openshift内部集成了一个安全的docker-registry。也可以与第三方镜像仓库集成。

5.不要使用aufs存储驱动程序

OpenShift使用RHEL附带的Docker引擎,默认情况下利用Device Mapper文件系统,也可以使用OverlayFS。 Red Hat完全支持这两种方式。

6.使用授权插件

OpenShift提供了自己的完全集成的认证和授权机制,可以控制对Docker引擎的访问。 它与作为OpenShift一部分的Kubernetes编排引擎集成在一起。

7.不适用V1版本的registry

Openshift默认使用V2版本的docker registry。

三、Docker守护进程配置文件

1.确认docker.service文件属组是root:root;

2.docker.service文件属性设置为644;

3./etc/docker目录属组是root:root,权限是644;

4.registry certificate文件的属组是root:root,权限不高于444;

5./etc/default/docker 文件属组是root:root,权限是644,或者更加严格;

Openshift已经对以上配置文件做了安全加固,默认即为安全值。

四、容器镜像和Build File

1.为容器创建独立的账户

OpenShift默认使用分配的用户标识运行容器,并且还利用由defailt配置的OpenShift安全上下文(scc)来阻止特权容器。

2.使用安全受信的容器基础镜像

红帽官方提供经过安全加固的容器镜像仓库,里面有几百种容器镜像。registry.access.redhat.com

3.不要在容器中安装不需要的包

4.允许重建镜像,以便让他们包含安全补丁

OpenShift提供了集成的构建自动化功能(S2I)。 这也可用于在修补映像并将这些更新部署到正在运行的容器中,而这个过程是自动完成的。

五、容器运行时

1.不要使用特权容器

Openshift中,特权容器只能在Master或Infra节点上运行。Node节点上不需要特权容器。

2.不要在容器上mount很重要的的宿主机系统目录

3.容器之间不要开放ssh

4.不要映射容器内的特权端口,在容器上只打开需要的端口

5.不要共享宿主机的network namespace。

6.限制容器的内存使用量

OpenShift通过配置limits可以实现。

7.容器在mount宿主机根文件系统时,权限设置为只读。

8.将入口容器流量绑定到特定的宿主机网卡

9.将'on-failure'容器重启策略设置为5

OpenShift默认使用这一策略来控制租户和群集稳定性。

10.不要共享宿主机 process namespace、IPC namespace和UTS namespace。

11.不要将宿主机设备直接expose给容器

12.仅在需要时才在运行容器时覆盖默认的ulimit

在Openshift中,只有平台管理员才可以进行此操作。

13.不要使用特权选项执行docker exec命令

OpenShift利用SELinux和docker配置,禁止使用docker特权。SCC默认不会开放这个权限。

14.限制容器获取额外的权限

Openshift通过scc实现。

六、Docker的安全操作

1.定期对宿主机系和容器进行安全审计

Openshift可以利用atomic scan来扫描容器镜像的安全。也可以通过CloudForms自动扫描并配置不合规告警。

2.监视Docker容器的使用情况、性能和计量。

红帽通过CloudForms实现。

3.备份容器数据

Openshift中,容器可以对接ceph、GlusterFS、NAS等持久存储。备份的操作需要持久存储提供。

4.避免容器和容器镜像泛滥

而CloudForms可以提供容器/容器镜像使用频率。对于十分不常用的容器镜像,Openshift将会删除。

七、Openshift的用户和角色

1.为项目和用户配置阈值

Openshift可以配置实现。

https://docs.openshift.com/container-platform/3.7/admin_solutions/user_role_mgmt.html#setting-limits-users-projects

2.监控资源利用率

Openshift默认对容器的资源使用率进行监控。

https://docs.openshift.com/container-platform/3.7/admin_solutions/user_role_mgmt.html#control-monitor-resources

3.用角色控制用户权限

Openshift默认功能。

https://docs.openshift.com/container-platform/3.7/admin_solutions/user_role_mgmt.html#control-user-roles

4.在对用户赋予cluster-admin角色是要慎重

https://docs.openshift.com/container-platform/3.7/admin_solutions/user_role_mgmt.html#create-cluster-admin

5.使用default groups

https://docs.openshift.com/container-platform/3.7/admin_solutions/user_role_mgmt.html#leveraging-default-groups

八、OpenShift身份验证

1.必须使用带基本认证的HTTPS

Openshift默认使用https认证

https://docs.openshift.com/container-platform/3.7/admin_solutions/authentication.html#basic-auth-remote

2.启用service account认证

Openshift默认使用service account

https://docs.openshift.com/container-platform/3.7/admin_guide/service_accounts.html#enabling-service-account-authentication

3.设置SSSD以进行LDAP故障转移

https://docs.openshift.com/container-platform/3.7/install_config/advanced_ldap_configuration/sssd_for_ldap_failover.html#setting-up-for-ldap-failover

九、OpenShift功能

1.使用Seccomp限制应用程序功能

https://docs.openshift.com/container-platform/3.7/admin_guide/seccomp.html#seccomp-enabling-seccomp

2.使用ImagePolicy控制容器镜像的权限

https://docs.openshift.com/container-platform/3.7/admin_guide/image_policy.html

3.使用qouta限制使用的资源和对象

https://docs.openshift.com/container-platform/3.7/admin_guide/quota.html

4.禁用默写全局build策略

https://docs.openshift.com/container-platform/3.7/admin_guide/securing_builds.html#disabling-a-build-strategy-globally

5.限制某些全局用户的构建策略

https://docs.openshift.com/container-platform/3.7/admin_guide/securing_builds.html#restricting-build-strategies-to-a-user-globally

6.在项目中限制某些用户的构建策略

https://docs.openshift.com/container-platform/3.7/admin_guide/securing_builds.html#restricting-build-strategies-to-a-user-within-a-project

7.使用OpenSCAP对容器镜像进行合规性检查

使用CloudForms可以实现。

https://access.redhat.com/documentation/en-us/red_hat_cloudforms/4.6/html/policies_and_profiles_guide/appendix#openscap-schedule

十、OpenShift设置和配置

1.确保 internal registry的安全

https://docs.openshift.com/container-platform/3.7/install_config/registry/securing_and_exposing_registry.html#securing-the-registry

2.配置自定义证书

https://docs.openshift.com/container-platform/3.4/install_config/certificate_customization.html

3.检查证书是否过期

https://docs.openshift.com/container-platform/3.7/install_config/redeploying_certificates.html#install-config-cert-expiry

4.使用多租户为Pod和服务提供项目级别/网络隔离

https://docs.openshift.com/container-platform/3.6/architecture/additional_concepts/sdn.html#network-isolation-multitenant

5.使用Ipsec加密主机

https://docs.openshift.com/container-platform/3.7/admin_guide/ipsec.html

6.使用路由器分片来过滤名称空间/路由

https://docs.openshift.com/container-platform/3.7/install_config/router/default_haproxy_router.html#using-router-shards

7.防止DDoS攻击

https://docs.openshift.com/container-platform/3.7/install_config/router/default_haproxy_router.html#deploy-router-protecting-against-ddos-attacks

8.防止CLI版本与用户代理不匹配

https://docs.openshift.com/container-platform/3.7/install_config/configuring_authentication.html#configuring-user-agent

参考文献:

https://www.redhat.com/cms/managed-files/cl-container-security-openshift-cloud-devops-tech-detail-f7530kc-201705-en.pdf

http://www.infoq.com/cn/news/2017/02/Docker-Containerd-RunC

http://cn.linux.vbird.org/linux_basic/0440processcontrol_5.php

原文发布于微信公众号 - 大魏分享(david-share)

原文发表时间:2018-03-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程坑太多

跟我一起学docker(三)--镜像的常用操作

17760
来自专栏喵了个咪的博客空间

Docker使用命令和技巧

16750
来自专栏友弟技术工作室

docker学习之使用镜像

原文在此 ? 获取镜像 之前提到过,Docker Hub 上有大量的高质量的镜像可以用,这里我们就说一下怎么获取这些镜像并运行。 从 Docker Regist...

42070
来自专栏有刻

Docker 小记 — Docker Engine

44190
来自专栏zingpLiu

Docker快速入门(二)

上篇文章《Docker快速入门(一)》介绍了docker的基本概念和image的相关操作,本篇将进一步介绍image,容器和Dockerfile。

13930
来自专栏吴伟祥

Docker学习——创建镜像(四) 顶

15040
来自专栏zingpLiu

Docker快速入门(一)

Docker是Go语言开发实现的容器。2013年发布至今,备受推崇。相关文档、学习资料十分详尽。近期公司docker项目要推进,得重新学习一下。博客以笔记。

17530
来自专栏实用工具入门教程

如何部署 Docker Compose

Docker是一个很好的工具,用于在软件容器中自动部署Linux应用程序,但要充分利用其潜力,应用程序的每个组件都应该在自己的单独容器中运行。对于具有大量组件的...

5.1K30
来自专栏编程坑太多

『中级篇』Dockerfile实战(19)

17260
来自专栏IT笔记

Docker学习之CentOS 7安装配置

Docker 是一个开源工具,它可以让创建和管理 Linux 容器变得简单。容器就像是轻量级的虚拟机,并且可以以毫秒级的速度来启动或停止。Docker 帮助系统...

1.2K90

扫码关注云+社区

领取腾讯云代金券