本文档介绍了保护部署的最佳实践。
创建和强制执行部署政策
为保护运行时环境,请定义包含部署条件的政策,并在部署前后验证政策合规性。定义仅允许由预定义证明程序签名的代码的政策有助于控制部署,并仅部署来自可信来源的代码。
部署条件示例包括:
- 没有严重程度高于中等的已知漏洞
- 源代码来自可信的源代码库
- 可信 build 服务运行了 build
- 您要部署的 build 工件来自受信任的工件代码库
生成元数据
如需验证这些要求,您需要提供有关 build 工件的元数据。
- build 来源
构建来源是关于构建的一组可验证数据,例如已构建映像的摘要、输入源位置、构建工具链和构建时长。SLSA 是一种用于评估安全状况的框架,提供了来源模型和来源要求。来源是该框架中的一个要求类别,每个要求都与 SLSA 级别相关联,以便您逐步实现缓解措施。
- 对于 SLSA 级别 1 保证,必须提供来源。
- 对于 SLSA 级别 2 保证,必须生成出处,并且使用方必须能够验证其真实性和完整性。
- SLSA 级别 3 和 4 对出处签名和出处数据详细程度的要求更为严格。
某些构建服务会生成构建来源元数据。
- 漏洞
漏洞扫描软件会检查您的源代码和构建工件,以查找已知漏洞。Artifact Analysis 可以自动扫描推送到 Artifact Registry 的容器映像,以查找漏洞。如需在存储工件之前检查其是否存在漏洞,您可以在本地开发环境或 CI/CD 流水线(例如 Cloud Build 构建步骤)中使用On-Demand Scanning API。
设置政策强制执行
获得可部署工件的元数据后,您需要使用工具来强制执行政策。
在 Google Cloud 中,您可以在 Binary Authorization 中为部署配置政策。Binary Authorization 会针对尝试部署到受支持的基于容器的平台的操作强制执行政策。它还可以对在 GKE、Cloud Run 和 GKE Enterprise 上运行的工作负载持续验证政策。
预部署检查可以屏蔽豁免映像列表中不存在的所有映像,以便仅从受信任的注册库部署受信任的映像。您的政策还可以要求提供证明,即表明映像是通过特定的必需流程成功构建的数字文档。例如,认证可以表明映像:
- 由 Cloud Build 构建。
- 不包含严重程度高于指定级别的漏洞。如果有特定漏洞不适用于您的应用,您可以将其添加到许可名单中。
持续验证可将政策验证扩展到部署后的环境。启用后,Binary Authorization 会定期在 Cloud Logging 中记录政策合规性,从而在整个 Pod 生命周期内提供验证。这在各种情况下都非常有用。例如,如果您在部署容器后更改了政策,持续验证功能会记录违反更新后的政策的 Pod。它还会记录使用模拟运行或 Breakglass 部署的 Pod 的政策违规行为。
使用有门槛的部署服务
借助部署门控,您可以使用独立的 CI/CD 服务或与流程自动化系统集成的 CI/CD 服务,在部署流程的特定时间点批准或拒绝部署。通过受控部署,可以防止未经授权的用户更改应用环境。它们可对部署流程进行额外监督,并提高审批的可见性。
在 Google Cloud 中,Cloud Deploy 提供完全托管式服务,用于将工作负载部署到 Google Kubernetes Engine。借助受控部署功能,用户可以指定是否需要获得批准才能提升到目标平台。
监控工作负载
工作负载是指在基于容器的平台(例如 GKE 和 Cloud Run)上运行的应用。理想情况下,您部署的工作负载应具有安全加固型配置,以限制其攻击面。
跨集群检查工作负载是否存在配置问题可能难以大规模手动执行。Google Cloud 在 Cloud Run 和 GKE 中提供了信息中心,以便查看工作负载的安全数据分析。
GKE 安全状况信息中心可为您提供指导,帮助您根据 Google 的建议强化集群的安全状况。其中包括自动工作负载配置扫描,用于检查所有工作负载中的已知配置问题。GKE 会根据相关的行业最佳实践(例如 Pod 安全标准中的政策)检查每个已部署的工作负载。GKE 会对所发现问题的严重程度进行分级,并返回可操作的建议及相关日志。您可以使用 Cloud Logging 获取可审核的问题跟踪记录,以便更好地生成报告和提高可观测性。如需了解如何在 GKE 安全状况信息中心内查看安全数据分析,请参阅在 GKE 上部署并查看安全数据分析。
Cloud Run 包含一个安全面板,用于显示软件供应链安全数据分析,例如 SLSA build 级合规性信息、build 来源以及在运行中服务中发现的漏洞。如需了解如何在 Cloud Run 安全数据分析面板中查看安全数据分析,请参阅在 Cloud Run 上部署并查看安全数据分析。
Google Cloud 还提供其他服务和功能,以便在整个软件开发生命周期中改善您的安全状况。如需了解详情,请参阅软件供应链概览。
后续步骤
- 了解保护源代码的最佳实践。
- 了解保护依赖项的最佳实践。
- 了解保护 build 的最佳实践。