• 容器安全产品Aqua调研


    前言

    近年来,随着云计算的发展,企业数字化的进程不断加快,业务纷纷开始上云,云原生的概念最近两年也是十分火热,在新业务场景下也随之产生了新的安全问题,如k8s安全、devsecops、微服务安全、Service Mesh安全、容器安全等等,本文主要是对于容器安全产品——Aqua 的调研。

    容器安全是近几年比较热门非细分领域,Gatner 在2020年把容器安全也放到了CWPP领域 ,国外出现了一批专门做容器安全的厂商,如 :Apcera、Aqua、StackRox和Twistlock等,国内一些之前专注于主机层面安全问题的厂商也在自家产品中加入了对docker容器的安全考虑(如:青藤云),以适应客户在混合云场景下的安全需求,也出现了专注于容器安全的初创型公司(如:小佑科技)。

    本文主要是基于个人粗浅的认识,对 Aqua 的容器安全产品做一点介绍。Aqua 诞生于2015年,短短5年已经完成了A、B、C、D轮融资(截止2020年5月),以容器安全起家,专注于云原生场景下的安全问题,从官网大致能看出,Aqua 的核心产品是 Aqua Platform ,由容器安全模块,CSPM 云安全管理平台、k8s安全模块、容器/镜像安全模块、Serverless 安全模块、VM安全模块等组成,几乎涵盖了云原生场景下全生命周期的安全问题,这次主要讨论的只是是其中一个子模块——容器安全。

    一、产品理念

    产品理念可以从官网、白皮书、市场宣传策略来看,从中能发现产品想向我们传达什么、突出什么。
    Aqua 容器安全部分的产品理念是:使用业界最先进的容器安全解决方案,保障基于容器的云原生应用从开发到运行的全生命周期安全。
    如下是官网宣传的几个点:

    • Risk and Compliance 风险与合规
    • Mitigate Attacks 威胁缓解
    • Cross-Platform Security 跨平台安全

    1、Risk and Compliance——风险与合规

    Aqua 会在pipline 的 CI 阶段对容器镜像进行扫描,将安全问题前置,在构建阶段就尽可能地减少潜在攻击面,并且具备日志审计和取证功能,对于容器和k8s运行过程中的异常行为信息都能详细记录;对于强监管的金融行业来说,Aqua 的风险视图模块不仅能形象地展示出集群的风险情况,还详细展示了运行部署中的漏洞以及所有出入站的网络连接,很好地满足PCI-DSS中的第六和第十条规定。

    2、Mitigate Attacks——缓解供应链攻击和 0 day 漏洞攻击

    Aqua 通过运行时保护和异常行为分析,对攻击行为进行及时阻断,保护工作负载的正常运行。

    3、Cross-Platform Security——跨平台兼容能力

    Auqa 支持多种容器运行环境: Window、linux、VM、裸金属以及一些 Container-as-a-Service 产品(如 AWS Fargate 、Azure Container Instances),甚至是 VMware 的 Tanzu 平台(把虚拟机和Kubernetes结合起来,对虚拟机和容器以及物理机统一进行管理)。

    二、产品功能

    • 构建阶段CI/CD镜像扫描
    • 镜像动态分析
    • 灵活的镜像保证策略
    • 风险视图
    • 漏洞防护
    • 采用Drift Prevention实现运行时保护
    • 行为分析
    • 负载防火墙
    • K8s Secrets 保护
    • 审计和取证

    1、镜像扫描

    Aqua支持在CI build 阶段以及容器build后,依据实时更新、类型丰富的漏洞库信息,对恶意软件、敏感信息、OSS license 及 安全配置等问题进行扫描,分别展示出每个镜像高、中、低不同等级的漏洞情况。

    2、容器运行时的威胁分析

    攻击者们总是在不断尝试着如何对容器发起攻击,如 挖矿、凭据窃取、数据盗取、利用容器发起DDOS攻击等等。镜像扫描是十分必要的一类工具,然而静态扫描对于高级恶意软件是个盲区,需要有一种方法来评估容器镜像中的已知和未知风险,由此产生了运行时(runtime)检测方案。Aqua 有一个基于沙箱的解决方案——Aqua DTA,能够对容器在运行态存在的安全风险进行检测和分类,包括:

    • 容器构建阶段提前识别安全风险
      Aqua DTA会从注册表和CI构建管道扫描镜像, 防止在构建阶段引入恶意镜像。
    • 部署前检测
      镜像部署前会先在安全沙箱中运行,以检测例如容器逃逸、反弹shell、恶意软件、后面植入等威胁。
    • 保护容器应用免受攻击
      Mitigate the risks of data theft, credential theft, using containers for DDoS, and cryptocurrency resource abuse targeted by Advanced Persistent Threats and polymorphic malware.
      缓解容器受到例如 DDos(利用容器发起)、挖矿、高级威胁、恶意软件等威胁。

    3、灵活的镜像保证策略(image assurance policies)

    Aqua的镜像保证策略采用了静态和动态检测结合的方法,帮助判断哪些镜像能通过pipline流程,build并运行在你的集群或主机上;镜像保证策略是一些检测项的集合,包含漏洞评分/严重程度、恶意软件严重程度、敏感数据、root特权或超级用户权限使用等,通过类似Dashbord的方式,详细展示出镜像各监测项的安全状况 。

    4、k8s 集群风险视图

    https://blog.aquasec.com/kubernetes-security-risk-explorer

    当你的工作负载运行在k8s上时,比较困难的是难以知道安全GAP点具体在哪里,不能直接展现出集群上面的安全隐患;devsecops团队面对海量的告警不知从哪下手 ,而 Aqua Risk Explorer 正适用于这种场景,它能够基于集群的维度,实时、可视化地展示 K8s 集群中的安全风险,并给出优先级建议。

    Aqua Risk Explorer 是k8s集群的动态风险地图,给出了集群、主机、容器、服务等节点间的逻辑示意图,对每个风险项提供了安全风险评分,它展示了namespaces、deploymens、node(hosts)、容器及组成容器的镜像风险情况,还有 namespaces 之间的网络连接及其安全风险评分。

    对于每个deployment,风险视图展示了build容器的镜像以及这些镜像存在的安全风险,点击下钻能看到风险的详细情况以及缓解措施。

    随着组织逐渐转向更大规模的Kubernetes部署,对其动态变化的风险进行持续监控、实时可见变得至关重要,Risk Explorer 这一功能够很好的满足这样需求。

    5、vShield(Vulnerability Shield)

    容器镜像中经常存在各种已知的漏洞,由于安全人力等各种原因难以及时完全地彻底修复,为了防止漏洞被攻击恶意利用,vShield 提供了一种能力:在无需修改应用代码的情况下,非入侵式的、自动依据漏洞优先级阻断漏洞利用行为,『It acts as a virtual patch to prevent the exploitation of a specific vulnerability and provides visibility into such exploitation attempts. 』,能够阻断并且提供对这种恶意攻击行为的可见性,工作 起来就像 “虚拟补丁”似的,应该类似RASP,起到运行时防护的作用,一旦发生攻击能立刻报警并阻断。

    6、Drift Prevention and Runtime Policies

    根据镜像的数字签名,Aqua通过比较容器镜像相对于其原始镜像是否发生变化来判断是否遭受到了攻击。这种特性可阻止包括 0 day攻击在内的不少攻击向量;另外,runtime 运行时检测能够发现和阻断可疑行为,例如端口扫描、异常IP连接 以及拒绝服务攻击等。

    7、容器行为分析

    Aqua的行为分析能力使用先进的机器学习技术来分析容器的行为,包括文件访问、网络访问、卷挂载、系统调用等,减少了容器的攻击面,针对特权提升提供了另一层防御。

    8、负载防火墙

    Aqua通过基于应用程序标识和上下文将容器网络限制在规定范围内来限制攻击影响扩大,Aqua 的负载防火墙能够自动的发现网络连接并且给出对应的策略规则,基于服务特征、url、Ip等仅允许合法连接,对未授权或异常连接报警和阻断,Aqua 负载防火墙支持和K8s网络插件(如Weave和Flannel)以及服务网格(如Istio)同时工作。

    9、k8s Secret 保护

    K8s Secret 对象
    Secret 对象类型用来保存敏感信息,例如密码、OAuth 令牌和 SSH 密钥等,这样的信息可能会被放在 Pod 规约中或者镜像中。 用户可以创建 Secret,同时系统也创建了一些 Secret。Kubernetes Secret 默认情况下存储为 base64-编码的、非加密的字符串。 默认情况下,能够访问 API 的任何人,或者能够访问 Kubernetes 下层数据存储(etcd) 的任何人都可以以明文形式读取这些数据。

    通过对 secrets 在传输、静止状态加密,Aqua 能够在容器运行阶段保证 secrets 的安全,secrets 存储在内存而非硬盘中,仅当容器需要使用它是才对容器可见;和 secrets 管理工具如 HashiCorp, CyberArk, AWS KMS or Azure Vault 等集成,并且对于用户来说无需重启容器,就能实现对 secrets 的更换、废弃 等操作,并且整个过程保持对用户透明可见,通过Aqua还能看见哪些 secrets 是正在被使用的、以及被哪些容器使用。

    10、取证与审计

    Aqua 会从镜像、容器、编排工具、主机等层面实时收集数据,提供日志类型的数据流到 SIEM 等分析监控工具中,当发现有违反安全策略的行为,Aqua就会收集 用户上下文信息、k8s上下文信息(namespace、node、pod)、镜像以及注册表上下文等源数据信息,以便安全人员能及时定位威胁。

    三、最后

    这是一篇存货文章了,现在来看存在一些不足:1)对产品的认识不够、(技术角度)分析不够深入;2)并且本篇文章仅从单一产品角度来看,没有横向针对同类型产品做比较;3)云相关的知识需要补充学习

  • 相关阅读:
    Keepass无法导入密钥文件
    数据库交互方式之一
    Grey encoder and decoder
    SystemVerilog 序列运算符与属性运算符
    避免int 与 pointer的隐式类型转换
    xxx.lib(xxx.obj)fatal error LNK1103: debugging information corrupt; recompile module 的解决方案
    c++ static 关键字用法
    影响中国软件开发的人(摘录)
    链接
    有助于事业发展和幸福感提升的四个约定
  • 原文地址:https://www.cnblogs.com/ffx1/p/14742377.html
Copyright © 2020-2023  润新知