容器安全基础:流水线安全

F5生态系统 | 2019年7月17日

如果您刚开始阅读本系列,建议从头开始:
容器安全基础:简介

在应用资本时代,CI/CD管道是关键组件,其构建和交付应用的速度与安全性都依赖于此。

这是一个复杂的工具系统,通过API集成,并由脚本或插件调用,以数字化方式呈现构建并最终交付容器化应用所遵循的流程。这意味着,恶意行为者可能从多个环节入侵该系统。虽然这听起来似乎不太可能,但请注意,如今已有相当多的组织在利用云,而这必然涉及远程访问。

这意味着流水线安全包括两个方面:第一,保护流水线本身的安全;第二,保障流水线内的安全。

流水线自身的安全性

1. 身份验证必不可少
如果将云端或托管服务中的工具和服务用作流水线的一部分,这些工具和服务就可能遭到攻击。如果允许远程开发人员或运维人员访问内部托管的工具和服务,这些工具和服务同样可能遭到攻击。在忽视这一风险之前,不妨回顾一下过去几年因系统开放外部访问而发生的多起安全事件。对于流水线安全,稳妥的做法是假定恶意行为者确实能够访问流水线。

因此,首要任务是保护访问安全。强身份验证必不可少。强烈建议使用访问控制,对关键系统的访问权限进行精细管理。即使认为系统只能从内部访问,也不能掉以轻心。恶意行为者可能通过网络中的其他系统获取访问权限。

完成身份验证后,下一步是授权。授权规定经过身份验证的用户可以在系统中执行哪些操作。按角色区分权限非常重要,因为能够访问关键组件的凭据越少,安全风险就越低。

流水线中的每个组件都应要求进行身份验证和授权,包括从代码库到用于构建应用和容器的工具等所有组件。

2. 保护流水线组件
遗憾的是,攻击者通过扫描公共代码仓库发现大量“宝藏”(凭据和其他机密信息)的报道并不少见。请参阅第1点,切记要求对代码仓库进行身份验证。

如今的流水线实际上是由一系列集成工具组成的,每个工具都应要求进行身份验证。因此,凭据和机密信息(密钥)往往最终存储在调用流水线所含工具和服务的脚本中。这是一件非常糟糕的事™,如果存储这些脚本的代码库还采用了不当的身份验证做法,问题会尤其严重。

凭据是需要保护的关键资产。应了解凭据位于何处、存储在哪里,以及采用何种安全保护措施。管理“密钥蔓延”时,可以借助HashiCorp Vault。Vault可将密钥安全地集中存储。

流水线安全

3. 维护物料清单
要保护系统或系统组件,首先必须知道它的存在。维护一份全面的物料清单非常重要,这有助于了解环境中包含哪些内容。更重要的是,需要明确环境中哪些内容是应该存在的,反之,哪些内容不应存在。

维护良好的清单有助于防范将受污染或已遭入侵的组件植入流水线的企图。统一使用单一基础容器,或至少将容器数量控制在易于管理的范围内,可以显著提升发现潜在问题的能力。出现偏差时,应触发警报,以便进一步调查。例如,比较哈希值,并在条件允许时验证容器镜像的数字签名,是一个重要步骤。如果从远程存储库拉取内容,该存储库可能已遭入侵。

DockerHub发生以下事件时,情况正是如此:DockerHub遭遇安全漏洞,导致凭据和令牌泄露,受影响用户达190,000名。攻击者可能利用这些信息篡改镜像,进而访问其他系统。

不要只关注容器镜像。请注意,外部来源的应用组件也可能遭到入侵。一个具体示例是在NodeJS NPM软件包中植入加密货币挖矿软件事件,涉及event-stream软件包。

将镜像和组件统一纳入持续维护的清单,也有助于在漏洞出现时简化修复工作。漏洞的出现只是时间问题,而非是否会出现。与尝试更新一组各不相同的容器相比,更新单个基础操作系统层更易于管理。

4. 扫描并修复
容器环境可能通过多种方式遭到入侵或变得容易受到攻击。我们通常首先想到的是容器镜像中的软件漏洞。虽然应关注这些漏洞,对其进行扫描和更新或修补,但还有一些配置问题往往不易被发现和解决。通过正确配置,可以避免其中许多问题。流水线中应包含能够检测入侵或针对不安全配置发出警报的工具。

Aqua Security提供的工具可协助扫描和评估容器及配置。Kube-bench和kube-hunter是识别Kubernetes环境中常见但严重的配置错误的实用资源。

o 自由开源软件
https://github.com/aquasecurity/kube-bench
https://github.com/aquasecurity/kube-hunter

o 商业软件
https://www.aquasec.com/

如果不根据扫描结果采取行动,再多的扫描也无助于防止系统遭入侵或发生数据泄露。Tripwire《2019年容器安全状况报告》发现,近五分之一(17%)的组织明知容器镜像存在漏洞,却仍然予以部署。因此,该调查发现超过半数(60%)的组织在过去12个月内曾遭遇与容器相关的安全事件,也就不足为奇了。

这一点再怎么强调也不为过:如果将安全扫描集成到流水线中(也确实应该这样做),务必要跟进扫描结果。如果不采取修复措施,运行扫描并不能提升安全性。

再次强调:如果不修复发现的问题,仅运行扫描并不能提升安全性。

流水线安全是一个涉及多方面且颇具挑战性的问题。应像对待其他应用程序集一样对待流水线,因为归根结底,它本质上也是一组应用程序,只不过用于运营。在将安全措施集成到流水线中的同时,不要忽视流水线自身的安全。

阅读本系列的下一篇博客:
容器安全基础:编排

分享

关于作者

相关博客文章

F5纪念2021年世界艾滋病日
F5生态系统 | 2021/12/01

F5纪念2021年世界艾滋病日

值此世界艾滋病日,F5郑重承诺,将与员工、客户、社区和合作伙伴共同努力,消除社会对HIV感染者仍然存在的污名与偏见。

Thingbot正转变为攻击平台
F5生态系统 | 2018/11/29

Thingbot正转变为攻击平台

Lori MacVittie重点介绍了F5 Labs对2018年1月至6月全球物联网设备攻击的研究,并指出了其中令人警醒的影响。物联网设备不仅持续遭到利用,还被转变为攻击平台,这意味着攻击者可以更充分地利用这个必然增长的市场。

借助F5全新Quick Start,在AWS上快速开展业务
F5生态系统 | 2018/11/20

借助F5全新Quick Start,在AWS上快速开展业务

在AWS re:Invent开幕前,我们很高兴与大家分享F5与AWS之间全新的Quick Start集成。F5的Tom Atkins将介绍该服务如何启动、配置和运行在AWS上部署工作负载所需的计算、网络、存储及其他AWS服务。

为什么声明式模型对NetOps自动化至关重要?
F5生态系统 | 2018/04/30

为什么声明式模型对NetOps自动化至关重要?

为什么声明式模型对NetOps自动化至关重要?阅读F5博客,了解基础设施即代码如何简化网络扩展。

开源聚焦:F5基础设施即代码与多云可管理性
F5生态系统 | 2017/11/16

开源聚焦:F5基础设施即代码与多云可管理性

开源聚焦:基础设施即代码与多云。阅读博客,了解模板和Terraform如何简化F5应用服务的部署。

破解IT“无解困局”的答案:私有云
F5生态系统 | 2016/09/12

破解IT“无解困局”的答案:私有云

破解IT“无解困局”的答案:私有云。阅读F5博客,了解本地部署的敏捷性如何化解安全与速度难以兼顾的问题。