本文翻译自 Hazel Raoult[1] 的 How to Optimize Security in Cloud-Native Applications[2]。
近年来,企业对云原生应用的依赖日益增加,这也使云原生应用成为攻击的首选目标。如今,企业的安全团队需要优先考虑这些资产的安全性,以防止大规模的服务中断和数据泄露。
根据 IBM 2024 年《Cost of a Data Breach(数据泄露成本报告)》显示,目前 45%的网络攻击[3] 是基于云的。2024 年 7 月,微软的 Azure 遭遇了一次重大的 DDoS 攻击,导致关键服务 停运近10小时[4]。对于依赖这些服务来为客户提供不间断服务的企业来说,这种停机时间无疑会带来巨大的损失。
基于这一背景,让我们探讨如何提升云原生应用的安全性,以防止类似情况的发生,并确保关键云服务的韧性和可靠性。
用户控制优化
人为因素始终在数字资产(包括云原生应用程序)的安全中发挥重要作用。除非我们在不久的将来完全被机器取代,否则人类仍将在代码编写、配置管理以及最终的应用安全性方面做出重要决策。这是一种巨大的压力,因为一个小小的错误就可能导致严重的漏洞,进而让我们的云资产暴露在攻击和操作失误的风险之下。
一个合理的解决方案是加强教育和培训,使开发人员和用户能够理解潜在风险,并学会实施强有力的安全协议和最佳实践。
在技术措施方面,应重点关注强大的身份和访问管理(IAM)。最小权限原则是实现强 IAM 的首选方法。它确保用户被授予完成任务所需的最低访问权限,从而显着减少攻击面和帐户受损的风险。
花时间为每个无服务器函数或容器创建最小角色或权限集。这样,即使云原生架构中的某个元素被攻破,造成的损害也将最小,且不会轻易扩散到其他组件。
这里需要避免的一个错误是将访问级别审查限制在不频繁的时间间隔。随着工作职责的变化(或解除),应持续监控和调整访问权限。定期评估和更新角色,以确保访问权限保持适当并与当前职责保持一致。
安全测试精简化
云原生应用相较于传统开发的一个优势在于能够利用更细粒度的自动化安全测试。云原生环境可以利用持续集成和持续部署(CI/CD)流水线。这使开发人员能够将安全测试 集成到开发的每个阶段[5],使其成为软件开发生命周期的基础组成部分,而不是事后的考虑。
有各种开源工具和应用安全服务可用于增强安全测试。自动化工具可以 确保代码[6] 没有错误配置和漏洞,并避免敏感数据的意外泄露。这些工具可以扫描已知的漏洞,检查是否符合安全最佳实践,甚至实时识别潜在的风险区域。
自动化的持续监控是简化云原生安全的另一个关键方面。有效实现这一点有两种方法。可以集成如 Prometheus、Grafana、ELK Stack 或 Datadog 等监控工具来实时收集、分析和可视化安全日志和指标。或者,可以通过嵌入自定义代码来指示应用程序自身收集和聚合安全日志数据、指标和监控信息。
为了获得最佳安全性,可以结合这两种方法,将所有日志导向如 Splunk 等集中服务进行实时分析。然后,可以基于特定条件定义告警规则,将通知直接发送到 Slack 或电子邮件等服务,以确保及时发出告警,帮助团队快速做出反应。
API 管理严密化
应用程序编程接口(API)是云原生应用用于各 微服务和组件之间[7] 通信的主要通道。要记住的是,由于 API 促进了数据交换,它们也是一个重要的攻击媒介和被利用的目标。
为所有 API 端点实施强大的身份验证和授权机制应是首要任务之一。OAuth 2.0 是 API 授权的行业标准,它允许应用程序在不暴露用户凭证的情况下代表用户访问资源。
速率限制也是一项关键措施。它将限制单个用户在指定时间段内可以发出的请求数量,从而防止潜在的拒绝服务(DoS)攻击。
最后,确保 API 免受常见攻击如注入攻击和跨站脚本攻击(XSS)的威胁。适当的输入验证和清理是帮助缓解广泛威胁的标准安全措施。输入验证确保 API 接收到的所有输入格式正确,从而防止潜在的有害数据被处理。例如,处理 JSON 数据的 API 应验证传入请求的 Content-Type 头是否为“application/json”,以及数据本身是否为有效的 JSON。
总结
日益频繁的云端网络攻击提醒我们,安全性不应让位于便利性。我们必须通过设计安全的云原生架构,并在整个软件开发生命周期中实施全面的安全措施,来积极抵御这些威胁。
展望未来,云原生应用的安全性将成为我们数字基础设施及其所依赖的关键服务成功与稳定的决定性因素。
参考资料
[1] Hazel Raoult: https://cloudnativenow.com/author/hazel-raoult/
[2] How to Optimize Security in Cloud-Native Applications: https://cloudnativenow.com/editorial-calendar/cloud-native-security/how-to-optimize-security-in-cloud-native-applications/
[3] 45%的网络攻击: https://www.ibm.com/reports/data-breach
[4] 停运近10小时: https://www.forbes.com/sites/kateoflahertyuk/2024/07/31/microsoft-confirms-new-outage-was-triggered-by-cyberattack/
[5] 集成到开发的每个阶段: https://cloudnativenow.com/topics/revolutionizing-software-development-with-cloud-native-devsecops/
[6] 确保代码: https://www.imperva.com/learn/application-security/application-security/
[7] 微服务和组件之间: https://cloudnativenow.com/topics/cloudnativedevelopment/microservices-the-good-the-bad-the-clunky/