审校 | 重楼
什么是云原生应用?
云原生应用标志着软件创建和推出方式的改变。它利用了云计算环境的功能,将应用程序构建为一组被称为“微服务”的服务,通过API进行交互。
像Docker这样的容器化工具通常用于打包每个微服务及其依赖项,以确保跨设置的一致性并支持部署。Kubernetes等平台可以自动管理应用程序,处理扩展负载平衡和服务发现等任务。DevOps方法则强调开发和运维团队之间的协作,通过支持持续集成、持续交付和快速迭代,在原生方法中发挥作用。
凭借其核心的灵活性和可扩展性,原生应用可以动态地调整资源,以满足不断变化的工作负载,从而提高性能和成本效益。此外,它们优先考虑弹性,采用容错措施来优雅地处理故障并维护可用性。采用原生原则使组织能够加速创新,提高敏捷性,并简化他们的软件开发过程。
运行时安全模型
运行时安全模型的概念与应用程序积极运行时实现的安全措施和协议有关。它涉及一系列旨在保护应用程序及其基础设施在运行期间免受安全风险的策略和技术。运行时安全模型的一些关键元素如下所示:
- 访问控制:实时实施访问控制,确保只有经过授权的用户或进程才能与应用程序及其数据交互。这包括设置诸如多因素身份验证(MFA)或OAuth之类的身份验证机制,以验证用户身份并强制执行适当的授权规则。
- 加密:在应用程序运行时对数据进行加密有助于防止非法访问或拦截。这包括在传输过程中使用HTTPS或TLS等协议加密数据,就像使用加密算法和安全存储方法加密静态数据一样。
- 运行时监控:持续监控应用程序的运行时环境对于检测和响应安全威胁或异常是至关重要的。这包括跟踪活动、审计事件以及监视系统和网络流量。
- 漏洞管理:持续评估应用程序及其组件对于发现任何弱点和维护设置非常重要。使用自动化的漏洞检查工具可以帮助发现漏洞,并根据漏洞的严重性对其进行优先级排序,从而更轻松地解决问题。
- 容器安全性:在利用容器化技术部署应用程序时,关注容器安全性至关重要。这包括扫描容器映像以查找漏洞、在运行时监视容器行为以及在容器的编排层实现安全措施等举措。
- 安全配置管理:确保应用程序及其运行环境的配置管理,可以减少潜在的攻击点,最大限度地减少安全威胁。这包括加固操作系统、保护网络设置以及停用可能产生漏洞的服务或功能等步骤。
- 运行时威胁检测和响应:在操作过程中,拥有用于识别和响应实时威胁的机制对于处理安全事件至关重要。分析机器学习算法或利用威胁情报馈送等技术可以帮助识别可疑活动或潜在漏洞,以增强安全态势。
云原生环境的类型
云原生环境可以根据它们使用的技术和部署模型分为以下几种:
- 虚拟机:在基于虚拟机的环境中,应用程序部署在虚拟服务器中。每个虚拟机运行自己的操作系统,以确保应用程序之间的隔离。虚拟化环境负责将资源(CPU、内存、存储等)分配给虚拟机。云服务提供商提供虚拟机实例的大小和配置,供用户根据需要部署和扩展应用程序。
- 存储单元:容器充当包含应用程序及其必要组件的包,便于在设置中部署。依赖容器的云原生环境使用Docker等技术将应用程序捆绑到容器中。这些容器利用主机操作系统内核,导致与机器(VM)相比成本增加。Kubernetes是一个用于大规模管理容器化应用程序的平台。
- 容器服务:容器服务平台为部署、编排和扩展应用程序提供了一个托管环境,用户无需处理底层基础设施的复杂性。这些平台简化了容器编排任务,并允许开发人员专注于有效地构建和部署应用程序。
- 无服务器函数(Serverless Function):在无服务器函数中,开发人员可以运行函数或代码段,而无需管理服务器或基础设施。云提供商根据事件或触发器动态分配资源以执行这些函数。这些无服务器函数通常是无状态的、事件触发的、寿命短的,因此非常适合事件驱动的架构、时间数据处理和微服务应用程序。一些无服务器平台的例子包括AWS Lambda、Google Cloud Functions和Azure Functions。
云原生应用安全最佳实践
保护基于云的应用程序涉及一种策略,该策略涵盖了从底层基础设施到实际应用程序代码的应用程序堆栈级别。下面,让我们探讨一些确保基于云的应用程序安全的指导原则:
- 安全开发实践:确保使用编码技术和指南(如OWASP Top 10),以防止诸如注入攻击、XSS、CSRF等安全风险。在开发期间合并代码评估、静态代码检查和自动安全评估(如SAST和DAST),以查明并修复某个阶段的安全弱点。
- 容器安全:通过使用Claire、Trivy或Anchore等工具频繁扫描容器映像以查找漏洞。确保来自源的容器映像选择基本映像,并单独包含基本依赖项。在运行时期间实现安全措施,以限制容器特权并将攻击风险降至最低。
- 网络安全:利用网络分段和防火墙来控制应用程序各部分之间的数据移动。结合加密方法(如TLS/SSL),以保护数据在传输过程中避免被窃听或拦截。使用Web应用防火墙(WAF)对HTTP流量进行内容和安全威胁筛选。
- API安全性:通过使用API密钥、OAuth令牌或JWT令牌来允许API请求。设置使用限制、控制流量、实施访问规则来防止误用并抵御DDoS攻击。清理输入数据,防止注入攻击,维护数据的完整性。
- 记录和监控:建立一个记录和监控系统,以密切关注安全事件和异常事件。利用安全信息和事件管理(SIEM)工具收集和连接来自各个来源的安全日志,以检测威胁和响应事件。为安全方面的任何活动或违规创建警报和自动化操作。
- 事件响应和灾难恢复:制定响应事件的计划,详细说明识别、控制和从安全问题中恢复的步骤。确认备份和灾难恢复协议的有效性,以保障数据的准确性,并在入侵或故障的情况下减少中断。
云原生安全工具和平台
市面上有各种安全工具和平台可用于解决云原生应用和环境面临的安全挑战。以下是一些按功能分类的杰出例子:
1. 容器安全
Docker安全扫描
Docker安全扫描是Docker Hub提供的用于存储Docker容器映像的功能。它使用户能够检查Docker容器镜像是否存在安全问题,并接收有关发现的任何漏洞的警报。以下是Docker安全扫描的工作原理:
- 上传镜像:当用户上传一个Docker镜像到Docker Hub时,它会进入安全扫描队列;
- 漏洞检测:Docker Hub利用已知漏洞数据库扫描容器映像的各个层,寻找集成到映像中的操作系统包、库和依赖项中的安全漏洞;
- 安全警报:在完成扫描过程后,Docker Hub会生成安全警报,突出显示在映像中发现的任何漏洞。这些警报详细说明了有关每个漏洞的信息,例如其严重级别、受影响的组件以及修复这些漏洞的建议步骤。
Clair
Clair是一种用于扫描容器映像源中漏洞的工具。它是由CoreOS创建的,现在是红帽的一部分。它通常用于容器的安全流程,以识别和解决Docker和开放容器倡议(OCI)映像中的安全缺陷。以下是Clair的主要功能:
- 检测漏洞:Clair分析容器映像及其层,以检测映像中包含的操作系统包、库和依赖项中存在的已知安全漏洞。它将映像中的组件与从安全建议中获得的已知漏洞的更新数据库进行比较。
- 架构设计:Clair的架构允许可扩展的漏洞扫描。它由数据库(通常是PostgreSQL)、REST API服务器和负责获取漏洞数据和执行扫描操作的工作进程等组件组成。
- 分析静态数据:Clair能够在不运行容器映像的情况下分析它们,从而支持快速和轻量级的漏洞检查。它从映像清单中提取元数据,并仔细检查各层,以收集有关已安装包、库及其各自版本的详细信息。
- CVE匹配:Clair将容器映像中的元素与CVE 数据库进行比较,以识别任何漏洞。它提供了每个漏洞的信息,例如CVE ID、严重等级、受影响的版本,以及参考和建议。
- 与容器编排平台集成:Clair可以与Kubernetes等容器编排平台连接,在部署期间自动进行漏洞扫描。有一些插件和扩展还可以与流行的容器运行时环境和编排器集成。
- 自定义和可扩展性:Clair具有高度可定制性和灵活性,允许用户个性化漏洞扫描策略,设置扫描阈值,并与外部系统和工具连接。用户可以创建自定义插件和扩展来扩展Clair的功能,并将它们整合到现有的安全流程和工具集中。
Anchore Engine
Anchore Engine是一个容器安全平台,专注于分析、评估和验证容器映像的安全漏洞、策略遵从性以及行业标准合规性。它允许组织维护安全协议,并保证容器中的应用程序在设置中安全构建和启动。以下是Anchore Engine的功能概述:
- 漏洞评估:Anchore Engine对容器映像进行漏洞评估,精确定位操作系统包、库和依赖项中存在的已知安全漏洞。它使用CVE等数据库,将容器映像中的组件与已知漏洞进行比较。
- 策略评估:Anchore Engine为容器映像定义配置、包版本和漏洞阈值,并根据这些策略评估容器映像,以确保与安全实践和组织指导方针保持一致。
- 映像摘要分析和元数据评估:Anchore Engine仔细检查来自容器映像的元数据,如映像摘要、层数据和包清单,以提供对其内容和互连性的见解。这有助于用户掌握容器映像的组成,同时确定安全威胁或合规性问题。
- 可定制策略和白名单:用户可以根据自己的不同需求和场景定制安全策略和白名单。Anchore Engine提供了策略定制选项,允许组织调整漏洞严重级别黑名单包,并根据他们的风险承受能力和监管要求进行合规性检查。
- 与CI/CD管道无缝集成:Anchor Engine与CI/CD管道无缝集成,以自动进行安全评估,并确保在整个容器生命周期中遵守策略。它提供了与CI/CD工具集成的插件和API,支持在构建和部署阶段自动扫描漏洞并执行策略。
- 通知系统和警报:Anchor Engine通过电子邮件通知、webhook警报和连接到外部通知系统,提醒用户在容器映像中发现的安全漏洞、策略违规和合规性问题。此特性使响应能够解决安全问题并满足安全标准合规性要求。
- 可扩展性和性能优化:Anchor Engine是为支持跨分布式环境的容器映像分析和扫描的可扩展性而构建的。通过利用处理和缓存机制,它提高了性能效率,同时减少了扫描持续时间。这确保了大规模容器映像的快速安全评估。
容器编排安全
保护容器编排涉及保护平台本身及其监督的容器化任务。随着Kubernetes、Kube、Sysdig、Docker Swarm和Apache Mesos等平台在编排和扩展容器化应用程序方面越来越受欢迎,优先考虑安全措施变得至关重要。
- Kubernetes安全策略:Kubernetes的一个函数,通过控制访问和管理volume mount,在pod级别设置安全规则。
- Kubernetes Bench:根据CIS Kubernetes基准中定义的行业实践来评估Kubernetes集群的工具。
- Docker Swarm:Docker Swarm是Docker的原生集群和编排工具。它通过提供负载平衡和服务发现等特性,简化了容器的编排。
- Sysdig Secure:用于保护容器的平台,包括在运行时进行威胁检测、管理漏洞和确保Kubernetes设置中的合规性。
2. 无服务器安全
AWS Lambda安全最佳实践:AWS提供了专门针对AWS Lambda保护无服务器应用程序的指导方针。OWASP无服务器十大项目强调了无服务器设置中的安全风险,并提供了有效的缓解策略。Snyk是一个致力于识别和修复开源依赖中漏洞的平台。
3. API安全性
API安全性涉及用于保护API免受入侵、数据泄露和有害攻击的实践、方法和技术。由于API在软件开发中促进不同系统之间的通信和数据交换,因此确保API的安全性对于保护敏感数据和维护应用程序及服务的可靠性至关重要。以下是API安全性的一些基本要素:
- 身份验证:采用健壮的身份验证技术来确认API用户的身份,并保证获得批准的个人和应用程序可以到达受保护的资源。这可能涉及使用API密钥、OAuth令牌、JWT(JSON Web令牌)或客户端证书进行身份验证。
- 授权:实施访问控制和授权策略,以根据用户的角色、权限和特权限制对API端点和资源的访问。实现基于角色的访问控制(RBAC)或基于属性的访问控制(ABAC),以建立和监督授权规则。
- 加密:对通过API传输的敏感数据进行加密,防止被截取或监控。利用传输层安全性(TLS/SSL)加密客户端和服务器之间的通信,确保数据的机密性和完整性。
- 输入验证:为了确保系统安全,需要仔细清理来自API用户的任何数据。这有助于防止诸如代码注入之类的攻击。通过使用验证和数据销毁技术,可以确保在将用户输入用于流程之前对其进行过滤和清理。
- 速率限制和节流:设置控制API请求流的措施,可以防止滥用、拒绝服务(DoS)攻击和暴力破解攻击。通过根据用户身份、IP地址或API密钥等因素设置请求的数量限制,还可以减少系统超载和耗尽资源的风险。
- 审计日志记录:跟踪API中的所有活动对于监视访问尝试和安全事件至关重要。通过记录这些事件,可以密切关注用户操作,检测任何行为,并及时调查安全问题。
- API网关:API网关是有效管理和保护所有API的核心。这些网关通过处理诸如身份验证检查、授权验证、数据加密过程和控制请求速率等任务,帮助在API之间强制执行安全策略。
4. 谷歌云安全指挥中心
谷歌云安全指挥中心(Cloud SCC)是谷歌云平台(GCP)提供的安全管理和数据保护平台。它提供了对跨GCP基础设施、服务和应用程序的安全性和遵从性风险的全面洞察和监督。谷歌云安全指挥中心包含以下主要功能:
- 资产清单:云SCC提供了在组织的GCP环境中部署的所有云资产的透视图,例如机器、容器、数据库、存储桶和网络资源。它自动对云资产进行分类,同时提供每个资产的元数据和上下文信息。
- 安全发现:云SCC整合了来自GCP安全服务(如Google Cloud Monitoring、Google Cloud Logging以及第三方安全工具)的安全发现和见解。它对安全威胁(如漏洞、错误配置或跨资源的可疑活动)进行优先级排序。此外,它还提供了解决这些问题的建议。
- 漏洞评估:通过与Google Cloud Security Scanner和第三方漏洞管理解决方案等工具集成,Cloud SCC进行自动化漏洞扫描,评估云资产的安全状态。通过精确定位操作系统、软件包和依赖项中的已知漏洞,它提供了关于漏洞的报告以及修复指导。
- 威胁检测:云SCC利用谷歌云安全指挥中心进行威胁检测,及时识别和解决安全威胁和可疑活动。它依靠机器学习算法、异常检测方法和威胁情报来源来仔细检查云日志和遥测数据,以寻找妥协指标(IoC)和安全事件的迹象。
- 策略监控和执行:云SCC使组织能够通过安全运行状况分析和策略情报建立来维护资源的安全策略和合规性需求。它会不断地监视资源是否存在违规风险、配置错误或偏离安全策略,并发出警报和通知以解决问题。
- 数据风险评估:云SCC提供了评估数据风险的工具,以帮助组织精确定位数据,如可识别信息(PII)、知识产权和存储在GCP服务中的机密数据。它评估数据使用趋势、访问控制和加密配置,以评估数据安全风险和合规性状态。
- 合规性报告:云SCC包括预定义的合规性框架,例如CIS基准、GDPR法规和HIPAA标准。它会生成合规性报告及帮助组织展示对命令和行业规范遵从性的指示板。
5. 安全信息和事件管理(SIEM)
安全信息和事件管理(SIEM)解决方案提供了安全事件、警报和事件的视图,使组织能够有效地发现、调查和处理安全风险。SIEM解决方案的关键要素和功能如下所示:
- 数据收集:SIEM解决方案从网络设备、服务器、端点、应用程序、云服务和安全实用程序等来源收集与安全相关的数据。数据输入可能包括日志、事件、告警、流记录、配置文件和威胁情报提要。
- 标准化和整合:SIEM平台将来自不同来源的安全数据整合为统一的格式,以便进行检查和链接。此过程包括在对安全事件进行分类和对齐以简化分析和关联的同时准确地解释信息。
- 分析和关联:SIEM解决方案将来自源的安全事件链接起来,以查明趋势、异常情况和可能的安全事件。它们利用相关规则、启发式、统计分析和机器学习算法来检测活动、威胁和攻击模式。
- 警报和通知:SIEM系统为满足预定义标准的安全事件或满足阈值的事件生成警报和通知。它们发送通知、显示仪表板并生成报告,以提醒安全团队可能存在的安全漏洞、策略违规或异常活动。
- 响应事件:SIEM解决方案通过提供探测安全事件、检查证据和执行根本原因分析的工具,帮助检测和响应事件。它们使安全团队能够有效地评估、确定优先级并处理安全事件。
- 确保合规性和生成报告:SIEM平台通过提供预定义的合规性模板、审计跟踪和报告功能,帮助监视合规性状态并生成报告。它们通过自动报告过程帮助组织展示对命令、行业规范和内部政策的遵从情况。
- 集成系统和简化流程:SIEM解决方案与安全工具和技术无缝集成,以增强其功能,同时简化安全工作流程。它们支持与威胁情报平台、端点检测和响应(EDR)解决方案、事件响应工具和安全编排自动化平台的连接,以实现内聚方法。
- 适应性和效率:SIEM平台专为适应性和效率而设计,以安全管理数据集,同时满足大规模实现的需求。它们利用分布式架构以及数据分区技术和数据压缩方法来有效地提高性能水平。
结论
拥抱云原生应用将彻底改变软件开发,并通过微服务、Docker和Kubernetes来利用云计算的创新能力和敏捷性。然而,健壮的安全实践对于有效地保护这些环境至关重要。通过全面的安全方法,组织可以释放云原生优势,同时降低风险并确保现代软件生态系统的弹性。
原文Guide to Cloud-Native Application Security,作者:Naga Santhosh Reddy Vootukuri