网络安全事件会严重损害组织的声誉,使其在市场竞争中处于不利地位,受到处罚,并给最终用户带来不必要的法律问题。根据 IBM 的报告,每次数据泄露的平均成本为 392 万美元。企业在提供安全方面面临的最大挑战是缺乏安全工具和实践方面的技能和培训 缺乏可见性和漏洞, 持续监控安全现状 在 PaloAlto Networks 最近发布的《云安全现状报告》调查中发现,94% 的企业使用一个或多个云平台,约 45% 的计算使用容器或 CaaS。容器的主导地位在不断增强,因此安全威胁也在不断增加。
在这些报告中,被确认为威胁的首要问题是:
- 数据暴露和恶意软件
- 应用程序漏洞
- 身份验证薄弱或失效
- 配置错误
- 访问权限不正确或权限过大
- 内部威胁
- 凭证泄漏
- 端点不安全
在本文中,我们将介绍一些容器安全最佳实践,我们可以遵循和实施这些实践来降低容器化工作负载的安全风险。
确保应用程序容器安全的 10 大安全最佳实践
1. 从可信存储库中获取源基础镜像
当我们创建容器镜像时,通常会依赖于从流行的私有或公共注册中心获取的种子镜像。请注意,在镜像生产的供应链中,有人可能会渗透并投放恶意代码,从而为攻击者打开方便之门。仅举一例,2018 年,一些黑客通过攻击英国航空公司的软件供应链,用恶意 javascript 代码攻击了该公司的网络应用程序。早在几年前,Docker 就在 Docker Hub 上发现了一些在镜像中安装了 Cryptominers 的镜像。
下面是一些提示:
创建容器镜像时,请使用来自知名可信发布者的加固基础镜像源。
选择那些经常发布最新安全修复和补丁的镜像。
使用经过签名和标记的镜像,并在拉取过程中验证镜像的真实性,以阻止中间人攻击。
2. 安装经过验证的软件包
基础镜像的来源必须是可信来源,出于同样的原因,安装在基础镜像上的软件包也必须是经过验证的可信来源。
3. 尽量减少镜像中的攻击面
所说的攻击面是指安装在镜像中的软件包和库的数量。根据常识,如果对象数量较少,出现漏洞的几率也会降低。在满足应用程序运行要求的情况下,尽量减小镜像的大小。最好在一个应用程序容器中只安装一个应用程序。
删除不必要的工具和软件,如软件包管理器(如 yum、apt)、网络工具和客户端、镜像中的 shell、netcat(可用于创建反向 shell)。
使用多阶段 Dockerfile 从生产镜像中移除软件构建组件。
不要在容器中暴露不必要的网络端口、套接字或运行不需要的服务(如 SSH 守护进程),以减少威胁。
与完整的操作系统映像相比,选择高山映像或从头开始映像或容器优化操作系统作为基础映像。
4.不要在镜像中暴露密钥
所有密钥都不应放在镜像和 Dockerfile 中。包括 SSL 证书、密码、令牌、API 密钥等在内的秘密应保存在外部,并应通过容器编排引擎或外部密钥管理器安全挂载。Hashicorp Vault、AWS Secrets Manager 等云提供的秘密管理服务、Kubernetes 密钥、Docker 密钥管理、CyberArk 等工具可以改善安全态势。
5.使用安全的私人/公共Registries
通常,企业都有自己的基本Image,其中包含专有软件和库,但不想公开发布。确保Image托管在安全可信的注册中心,以防止未经授权的访问。使用具有可信根 CA 的 TLS 证书,并实施强大的身份验证以防止 MITM 攻击。
6.不要使用特权或root用户在容器中运行应用程序
这是容器化工作负载中最常见的错误配置。考虑到最小权限原则,请创建一个应用程序用户,并使用它在容器内运行应用程序进程。为什么不是 root 用户?原因是在容器中运行的进程与在主机操作系统上运行的进程类似,只是它有额外的元数据来标识它是容器的一部分。有了容器中根用户的 UID 和 GID,就可以访问和修改主机上根用户写入的文件。
注意--如果在 Dockerfile 中没有定义任何 USER,通常意味着容器将以root用户运行。
7.在 CI/CD 中实施镜像漏洞扫描
在为容器构建和交付设计 CI/CD 时,应包含一个镜像扫描解决方案来识别漏洞(CVE),并且在没有补救措施的情况下不要部署可利用的镜像。可以使用 Clair、Synk、Anchore、AquaSec、Twistlock 等工具。一些容器注册机构(如 AWS ECR、Quay.io)配备了扫描解决方案,请务必使用。
8.启用 AppArmor 等内核安全配置文件
AppArmor 是一个 Linux 安全模块,用于保护操作系统及其应用程序免受安全威胁。Docker 提供了一个默认配置文件,允许程序访问有限的资源,如网络访问、内核功能、文件权限等。它减少了潜在的攻击面,提供了很好的深度防御。
9.安全的集中和远程日志记录
通常情况下,容器会将所有内容记录在 STDOUT 上,这些日志一旦终止就会丢失。我们还需要确保该日志系统的安全性,确保日志中的数据不会泄露。
10.部署运行时安全监控
即使部署了基于存储库数据的漏洞扫描解决方案,并采取了所有必要的预防措施,仍有可能受害。必须持续监控和记录应用程序行为,以防止和检测恶意活动。
"网络安全没有银弹解决方案,分层防御是唯一可行的防御方法"。- ICIT 研究
通过实施上述最佳实践,你可以让攻击者更难找到利用你的系统的方法。我们指出了一些可用于审计和保护容器安全的工具和参考资料。
用于安全控制的开源工具
为了简化安全控制的采用,我建议使用一些开源和商业产品来发现当前状态,建议:
Docker-bench-security: Docker 本身的官方工具,用于根据行业标准基准 Docker 的 CIS 基准审核容器工作负载。
用于 Dockerfile 的 Hadolint Linter: 使用该工具对 Docker 文件进行静态代码分析。它有助于实施最佳实践。它可以与流行的代码编辑器和集成管道集成。
Clair Clair 是一款流行的应用容器静态漏洞扫描工具。它定期从各种漏洞数据库中获取元数据。可供选择的工具有 Anchore、Synk 和 Trivy。
OWASP Cheatsheet: OWASP 是一个开放社区,在安全专家中颇受欢迎。这份小抄是一个很好的起点。
容器 OpenSCAP: 安全内容自动化协议(SCAP)是一个多用途规范框架,支持自动配置、漏洞和补丁检查、技术控制合规活动和安全测量。它执行 NIST 标准。
Sysdig Falco: Falco 可用于实现运行时安全。它使用高效的 eBPF 来拦截调用和流量,以便进行实时监控和取证。随着黑客的不断发展,新的漏洞不断被发现。
今天先到这儿,希望对云原生,技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管管,团队建设 有参考作用 , 您可能感兴趣的文章:
领导人怎样带领好团队
构建创业公司突击小团队
国际化环境下系统架构演化
微服务架构设计
视频直播平台的系统架构演化
微服务与Docker介绍
Docker与CI持续集成/CD
互联网电商购物车架构演变案例
互联网业务场景下消息队列架构
互联网高效研发团队管理演进之一
消息系统架构设计演进
互联网电商搜索架构演化之一
企业信息化与软件工程的迷思
企业项目化管理介绍
软件项目成功之要素
人际沟通风格介绍一
精益IT组织与分享式领导
学习型组织与企业
企业创新文化与等级观念
组织目标与个人目标
初创公司人才招聘与管理
人才公司环境与企业文化
企业文化、团队文化与知识共享
高效能的团队建设
项目管理沟通计划
构建高效的研发与自动化运维
某大型电商云平台实践
互联网数据库架构设计思路
IT基础架构规划方案一(网络系统规划)
餐饮行业解决方案之客户分析流程
餐饮行业解决方案之采购战略制定与实施流程
餐饮行业解决方案之业务设计流程
供应链需求调研CheckList
企业应用之性能实时度量系统演变
如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:
作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-Petter Liu Blog。