Google Cloud 架构框架中的本文档提供了安全部署应用的最佳实践。
如需部署安全应用,您必须有明确定义的软件开发生命周期,并在设计、开发、测试和部署阶段进行适当的安全检查。在设计应用时,建议使用分层架构系统,该架构使用标准化框架进行身份验证、授权和访问权限控制。
自动发布安全版本
如果没有自动化工具,可能很难在部署、更新和修补复杂的应用环境时,确保满足一致的安全要求。因此,我们建议您为这些任务构建 CI/CD 流水线,这通常可以解决许多此类问题。自动化流水线可消除手动错误、提供标准化开发反馈环并实现快速产品迭代。例如,借助 Cloud Build 专用池,您可以为金融和医疗保健等严格监管的行业部署高度安全的代管式 CI/CD 流水线。
在创建工件时,您可以自动扫描安全漏洞。此外,您还可以为不同的环境(开发、测试、生产等)定义相应的政策,以便仅部署经过验证的工件。
确保应用部署遵循批准的流程
如果攻击者破解了 CI/CD 流水线,则整个堆栈可能会受到影响。为了帮助保护流水线,您应在将代码部署到生产环境之前实施已确定的批准流程。
如果您计划使用 Google Kubernetes Engine (GKE) 或 GKE Enterprise,则可以使用 Binary Authorization 来建立这些制衡。Binary Authorization 会将可配置的签名关联到容器映像。这些签名(也称为证明)可用来验证关联的映像。在部署时,Binary Authorization 会使用这些证明来确定之前是否已完成相应流程。例如,您可以使用 Binary Authorization 执行以下操作:
- 验证特定构建系统或持续集成 (CI) 流水线是否已创建容器映像。
- 验证容器映像是否符合漏洞签名政策。
- 验证容器映像是否将提升标准传递到下一个部署环境,例如从开发环境到质量检查环境。
在部署之前扫描已知漏洞
建议您在容器部署到生产环境之前使用自动化工具,以便持续对容器映像执行漏洞扫描。
使用 Artifact Analysis 自动扫描存储在 Artifact Registry 和 Container Registry 中的容器的漏洞。此过程包括两项任务:扫描和持续分析。
首先,Artifact Analysis 会在新映像上传到 Artifact Registry 或 Container Registry 时扫描这些映像。此扫描可提取有关容器中系统软件包的信息。
然后,Artifact Analysis 会在您上传映像时查找漏洞。初始扫描后,Artifact Analysis 会持续监控 Artifact Registry 和 Container Registry 中所扫描映像的元数据以查找新漏洞。当 Artifact Analysis 从漏洞来源收到新的和更新后的漏洞信息时,它会执行以下操作:
- 更新已扫描映像的元数据,使其保持最新。
- 为新的版本说明创建新的漏洞发生实例。
- 删除不再有效的漏洞发生实例。
监控应用代码是否存在已知漏洞
最佳实践是使用能够持续监控应用代码是否存在已知漏洞(例如 OWASP 十大风险)的自动化工具。如需了解支持 OWASP 十大风险缓解技术的 Google Cloud 产品和功能,请参阅 Google Cloud 上的 OWASP 十大风险缓解选项。
使用 Web Security Scanner 可帮助识别 App Engine、Compute Engine 和 Google Kubernetes Engine Web 应用中的安全漏洞。此扫描程序会抓取您的应用,跟踪起始网址范围内的所有链接,并尝试执行尽可能多的用户输入和事件处理脚本。它可自动扫描和检测常见漏洞,包括跨站脚本攻击 (XSS)、Flash 注入、混合内容(HTTPS 中的 HTTP)以及过时或不安全的库。Web Security Scanner 可让您以较低的假正例率尽早识别这些类型的漏洞。
控制跨边界的数据移动
如需控制跨边界数据移动,您可以为 Google 管理的服务的资源配置安全边界。使用 VPC Service Controls 将所有组件和服务(例如 Container Registry、Artifact Registry、Artifact Analysis 和 Binary Authorization)放在安全边界内的 CI/CD 流水线中。
VPC Service Controls 可帮助您降低未经授权从 Google 代管的服务中复制或转移数据(数据渗漏)的风险。借助 VPC Service Controls,您可以为 Google 代管的服务的资源配置安全边界,并控制跨边界的数据移动。服务边界实施时,违反边界政策的请求(例如从边界外向受保护的服务发出的请求)会被拒绝。当服务受实施边界保护时,VPC Service Controls 可确保:
- 服务无法将数据传输到边界外。受保护的服务在边界内正常运行,但无法将资源和数据发送到边界外。此限制有助于防止可能有权访问边界内项目的恶意内部人员泄露数据。
- 仅当从边界外访问受保护服务的请求满足分配给边界的访问权限级别条件时,系统才会允许这些请求。
- 可以使用边界网桥使其他边界中的项目可以访问服务。
对容器映像进行加密
在 Google Cloud 中,您可以使用客户管理的加密密钥 (CMEK) 来加密容器映像。CMEK 密钥在 Cloud Key Management Service (Cloud KMS) 中进行管理。使用 CMEK 时,您可以通过停用或销毁密钥来临时或永久停用对加密容器映像的访问。
后续步骤
通过以下资源,详细了解如何保护供应链和应用安全: