第 10 章 构建安全应用程序 构建安全的应用程序
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
内置安全比附加安全更省钱。
加里-麦格劳
应用程序安全是一个广泛的领域,对于安全专业人员来说非常复杂。它始于安全架构和设计,贯穿开发、测试、部署和持续管理。更糟糕的是,坦率地说,很多不是开发人员的安全专业人员在这个领域都很吃力。
本章不会让你成为软件开发人员或工程师,我们也不会深入探讨任何一种编程语言的具体细节。相反,我的目标是让你对应用安全有一个大局观,并特别关注 Cloud 中独特的挑战和机遇。我们将探讨现代应用程序设计的基本组成部分,以及用于构建和保护云原生架构的工具。
首先,让我们来看看与确保当今云原生应用程序安全相关的复杂性:
应用程序通常是作为微服务和外部服务的组合而构建的,这就需要对攻击面和控制边界进行更详细的分析。
攻击面通常包括通过 API 接口暴露的大量信息。
在 Cloud 环境中,应用程序通常采用开发和运营(DevOps)方法开发,功能开发速度很快,这既是风险也是机遇。
应用程序可以建立在由提供商(如 PaaS 提供商或无服务器)控制的库上,这就需要注意责任分担模式。
应用程序经常利用第三方库,包括开源组件,从而引入供应链风险和额外的攻击向量。
身份管理、日志记录和监控等安全功能通常来自云提供商,而云提供商可能符合也可能不符合应用程序的要求。
-
应用程序通常部署在可编程基础设施(IaC、Kubernetes 等协调器)上。
在云环境中大规模运行的应用程序必须敏锐地意识到底层基础设施的漏洞。无状态架构优先考虑可扩展性和弹性,通常用于减轻基础设施故障的影响。然而,这些架构在提供灵活性和敏捷性的同时,也带来了复杂性,可能会破坏 的整体安全态势。
安全开发生命周期
安全软件 开发始于计划。CSA 将任何确保软件开发安全的结构化计划称为安全开发生命周期 (SDLC)。SDLC(也称为SSDLC,是安全软件开发生命周期的缩写)将软件开发分成由一系列过程门和相关活动组成的分阶段方法。图 10-1以微软安全开发生命周期为例进行了说明。
图 10-1. 微软安全开发生命周期
您可以使用的另一种 SDLC 是 CSA 的开发、安全、运营(DevSecOps)安全软件开发分阶段方法,该方法确定了在成功的 DevSecOps 项目中需要实施的关键流程、工具和设计模式(见图 10-2)。
图 10-2. CSA DevSecOps SDLC(由 CCSK 学习指南提供)
我之所以提出这两个方案,是因为尽管阶段不同,但它们之间的共同点是,通过实施 SDLC 阶段,软件开发得到了良好的管理。值得注意的是,虽然这些阶段的重点是软件开发,但这种方法也适用于 IaC、构建安全的服务器实例、容器扫描和其他部署。
CSA DevSecOps SDLC 的各个阶段
让我们通过来了解 CSA DevSecOps SDLC 阶段以及在成功的 DevSecOps 项目中实施的相关活动、技术、关键流程、工具和设计模式。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access