从设计上保证安全

Last reviewed 2025-02-05 UTC

Google Cloud 架构完善框架的安全支柱中的这一原则提供了相关建议,可帮助您在云应用、服务和平台的设计中融入强大的安全功能、控制措施和实践。从创意构想到运营,将安全性作为设计流程每个阶段的组成部分嵌入其中,可更有效地提升安全性。

原则概览

“设计安全”理念概述中所述,默认安全设计安全经常可以互换使用,但它们代表了构建安全系统的不同方法。这两种方法都旨在最大限度地减少漏洞并增强安全性,但在范围和实现方面有所不同:

  • 默认安全:侧重于确保系统的默认设置处于安全模式,从而最大限度地减少用户或管理员为确保系统安全而需要采取的操作。此方法旨在为所有用户提供基本级别的安全性。
  • 设计即安全:强调在整个系统开发生命周期中主动纳入安全考虑因素。这种方法旨在尽早预测潜在威胁和漏洞,并做出可降低风险的设计选择。这种方法包括使用安全编码实践、进行安全审核,以及在整个设计过程中嵌入安全性。“从设计上保证安全”是一种总体理念,可指导开发流程,并有助于确保安全性不是事后考虑的因素,而是系统设计中不可或缺的一部分。

建议

如需为云工作负载实现“安全设计”原则,请考虑以下各部分中的建议:

选择有助于保护工作负载安全的系统组件

此建议适用于所有重点关注领域

若要实现有效的安全性,一项基本决策是选择构成平台、解决方案或服务的强大系统组件,包括硬件和软件组件。为了缩小安全攻击面并限制潜在损害,您还必须仔细考虑这些组件的部署模式及其配置。

在应用代码中,我们建议您使用简单、安全且可靠的库、抽象和应用框架,以消除各类漏洞。如需扫描软件库中的漏洞,您可以使用第三方工具。您还可以使用 Assured Open Source Software,该服务可使用 Google 使用和保护的开源软件 (OSS) 软件包来帮助降低软件供应链的风险。

您的基础设施必须使用支持安全运行的网络、存储和计算选项,并符合您的安全要求和风险接受程度。基础设施安全对于面向互联网的工作负载和内部工作负载都非常重要。

如需了解支持此建议的其他 Google 解决方案,请参阅实施左移安全

构建分层安全方法

此建议与以下重点领域相关:

  • AI 和机器学习安全性
  • 基础架构安全
  • 身份和访问权限管理
  • 数据安全

我们建议您在应用和基础架构堆栈的每个层级实施安全措施,并应用深度防御方法。

使用平台中每个组件的安全功能。为了限制访问权限并确定发生安全事件时潜在影响的范围(即爆炸半径),请执行以下操作:

  • 尽可能简化系统设计以适应灵活性。
  • 记录每个组件的安全要求。
  • 纳入强大的安全机制,以满足弹性和恢复要求。

设计安全层时,请进行风险评估,以确定您需要哪些安全功能才能满足内部安全要求和外部监管要求。我们建议您使用适用于云环境且与您的监管要求相关的行业标准风险评估框架。例如,云安全联盟 (CSA) 提供了 Cloud Controls Matrix (CCM)。风险评估为您提供了一系列风险以及用于缓解这些风险的相应安全控制措施。

在执行风险评估时,请谨记您与云提供商签订了共担责任方案。因此,云环境中的风险与本地环境中的风险有所不同。例如,在本地环境中,您需要减少硬件堆栈的漏洞。相比之下,在云环境中,云提供商会承担这些风险。另请注意,对于每家云服务提供商,IaaS、PaaS 和 SaaS 服务之间的共同责任界限各不相同。

确定潜在风险后,您必须设计并制定缓解计划,其中要使用技术、管理和运营控制措施,以及合同保护和第三方证明。此外,OWASP 应用威胁建模方法等威胁建模方法可帮助您识别潜在的漏洞,并建议您采取措施来解决这些漏洞。

使用强化型和经过证明的基础设施和服务

此建议适用于所有重点关注领域

成熟的安全计划可减少安全公告中所述的新漏洞。安全计划还应提供补救措施,以修复现有部署中的漏洞并保护您的虚拟机和容器映像。您可以使用特定于映像的操作系统和应用的强化指南,以及互联网安全中心 (CIS) 提供的基准等基准。

如果您为 Compute Engine 虚拟机使用自定义映像,则需要自行修补映像。或者,您也可以使用 Google 提供的精选操作系统映像,这些映像会定期修补。如需在 Compute Engine 虚拟机上运行容器,请使用 Google 精心挑选的容器优化操作系统映像。Google 会定期修补和更新这些映像。

如果您使用的是 GKE,我们建议您启用节点自动升级,以便 Google 使用最新的补丁程序更新您的集群节点。Google 负责管理 GKE 控制层面,这些控制层面会自动进行更新和修补。如需进一步缩小容器的攻击面,您可以使用 distroless 映像。Distroless 映像非常适合对安全性要求较高的应用、微服务,以及需要尽可能减小映像大小和攻击面的情况。

对于敏感工作负载,请使用安全强化型虚拟机,该虚拟机可防止在虚拟机启动周期内加载恶意代码。安全强化型虚拟机实例可提供启动安全性,监控完整性并使用虚拟可信平台模块 (vTPM)

为了帮助确保 SSH 访问的安全性,OS Login 可让您的员工使用 Identity and Access Management (IAM) 权限作为可靠来源而不是依赖 SSH 密钥来连接虚拟机。因此,您不必管理整个组织的 SSH 密钥。OS Login 将管理员的访问权限与其员工生命周期相关联,因此当员工更改角色或离开您的组织时,即会撤消其账号的访问权限。OS Login 还支持 Google 双重身份验证,从而增加一层额外的安全保障以防范账号盗用攻击。

在 GKE 中,应用实例在 Docker 容器中运行。如需启用已定义的风险概况并限制员工更改容器,请确保您的容器为无状态且不可变。不变性原则意味着您的员工不会修改容器或以互动方式访问容器。如果必须更改容器,则您需要构建新映像并重新部署该映像。仅在特定调试场景中启用对底层容器的 SSH 访问。

为了帮助您在全球范围内保护环境中的配置,您可以使用组织政策来为影响云资产行为的资源设置限制条件或安全措施。例如,您可以定义以下组织政策,并将其全局应用于整个 Google Cloud 组织,或选择性地应用于文件夹或项目级:

  • 停用向虚拟机分配外部 IP 地址的功能。
  • 将资源创建限制在特定地理位置。
  • 禁止创建服务账号或其密钥。

对静态数据和传输中的数据进行加密

此建议与以下重点领域相关:

  • 基础架构安全
  • 数据安全

数据加密是保护敏感信息的基础性控制措施,也是数据治理的关键部分。有效的数据保护策略包括访问权限控制、数据分段和地理位置驻留、审核,以及基于对要求的仔细评估而实施的加密。

默认情况下, Google Cloud会加密静态存储的客户数据,您无需执行任何操作。除了默认加密之外,Google Cloud 还提供信封加密和加密密钥管理选项。无论您选择的是用于存储、计算还是大数据工作负载的密钥,都必须确定最适合密钥生成、存储和轮替要求的解决方案。例如,客户管理的加密密钥 (CMEK) 可以在 Cloud Key Management Service (Cloud KMS) 中创建。CMEK 可以是基于软件的密钥,也可以是受 HSM 保护的密钥,以满足您的监管或合规性要求,例如需要定期轮换加密密钥。借助 Cloud KMS Autokey,您可以自动执行 CMEK 的预配和分配。此外,您还可以使用 Cloud External Key Manager (Cloud EKM) 引入来自第三方密钥管理系统的自有密钥。

我们强烈建议对传输中的数据进行加密。 如果数据将移出物理边界,脱离 Google 或 Google 授权代理方的控制范围,Google 会在一个或多个网络层级对传输中的数据进行加密和身份验证。系统会对 VPC 网络内以及对等互连的 VPC 网络之间的所有虚拟机到虚拟机流量进行加密。您可以使用 MACsec 来加密通过 Cloud Interconnect 连接的流量。IPsec 可为通过 Cloud VPN 连接传输的流量提供加密。您可以使用安全功能(例如 Apigee 中的 TLS 和 mTLS 配置以及适用于容器化应用的 Cloud Service Mesh)来保护云端应用到应用的流量。

默认情况下, Google Cloud 会对静态数据和网络传输中的数据进行加密。不过,默认情况下,数据在内存中使用时不会加密。如果您的组织要处理机密数据,则您需要减少会破坏应用或系统内存中数据的机密性和完整性的威胁。为缓解这些威胁,您可以使用机密计算,它可为计算工作负载提供可信的执行环境。如需了解详情,请参阅机密虚拟机概览