容器应用到生产环境之后相对于传统架构,会面临更多安全问题,请问安全管理这方面是如何考虑的?
另外,有没有DevSecOps方面的实践可以分享的?
平台安全主要有两个方面:1、产品安全。2、给用户建立正确的安全使用理念
https://www.stackrox.com/kubernetes-adoption-security-and-market-share-for-containers/
根据最新发布的《Kubernetes 和容器安全状况报告》表明在过去的 12 个月里,有 94% 的组织在其容器环境中遇到过安全问题,其中 69% 的组织检测到错误配置,27% 的组织在运行时遇到安全事件,还有 24% 的组织发现了严重的安全漏洞。
Kubernetes安全风险和挑战
外部访问攻击:核心组件非安全端口对外暴露,以及连接集群关键凭证泄漏。
平台组件攻击: 利用平台组件docker、kube-apiserver、etcd、kubelet 非安全端口对外暴露,以及集群组件间连接安全,以及组件的安全漏洞进行攻击。
POD层面攻击:利用运行在集群内的恶意POD进行攻击,需要对POD权限进行安全限制
非安全镜像攻击:容器的主要来源于容器镜像,研究表明Dockerhub上百分之76的镜像存在安全漏洞:滥用镜像和镜像注册中心会带来安全问题导致被黑客利用镜像安全漏洞进行攻击。
请求控制:现有容器云平台通过RBAC方式对只能对用户权限进行限制,无法对用户发送的请求进行合规性鉴别和限制,需要引入请求控制器,对用户对集群操作的请求进行限制。
一些我们给一些金融客户的安全建议
平台层面
1、使用pod security policy限制POD的一些行为
2、定期使用rancher集成CIS扫描(现已能实现自动扫描)
互联网安全中心(CIS)发布的全面的Kubernetes Benchmark 建立Kubernetes 的安全配置规范
(1)集群组件配置检查(Api-server、controller-manager、scheduler、etcd)是否符合安全配置参数。
(2)集群组件配置文件权限检查。
(3)策略检查(pod安全策略、网络安全策略检查)。
3、使用OPA进行请求策略控制。
4、使用POD安全策略进行限制,目前rancher内可以配置项目间网络隔离。
镜像层面
1、定期进行镜像安全漏洞扫描、定期更新漏洞库
2、设置镜像安全下载策略如超过3个高危漏洞,就禁止下载。
3、最小镜像原则,使用体积小的base镜像降低攻击面
Google发布的Distroless镜像仅包含应用程序及其运行时依赖项。不包含程序包管理器,shell和在标准Linux发行版中找到的任何其他程序。
Distroless提供java、python、Nodejs、dotnet等开发语言的基础镜像
优点:
1、降低镜像体积、减少磁盘空间占用。
2、只安装应用所依赖的组件,无其他组件降低攻击面。
缺点:
1、没有shell和一些调试工具,出故障时无法方便调试,但可以通过临时容器进行调试
应用层面
基础镜像规范化避免乱使用
镜像内使用非特权用户
镜像漏洞扫描,定义风险阈值
代码安全
通过TLS访问,对传输内容加密
限制通信端口范围
确保第三方依赖安全性
静态代码分析
动态探测攻击