Cloud Storage 威胁模型报告

上次更新时间:2026 年 5 月 22 日

本文档针对 Cloud Storage 的数据机密性、完整性和可用性,确定了潜在的攻击媒介和缓解策略。此报告的范围仅限于您的视角,重点关注您可以在 Cloud Storage 环境中管理的风险。

这些威胁模型是基于当前已知的攻击途径、架构假设和发布时系统的指定范围进行的概率评估。这些模型并非详尽无遗,旨在为 Google Cloud 客户的安全和风险评估提供基准,并指导风险降低决策。

针对此服务,我们发现了以下威胁:

威胁详情

以下各部分将分别介绍每种威胁、其表现以及建议的缓解措施。

使用不安全的访问配置披露信息

如果访问权限控制配置不当,存储在 Cloud Storage 对象中的敏感数据可能会暴露给未经授权的方。错误配置访问控制是最常见且影响最大的云安全问题之一。

STRIDE 类别

信息披露

MITRE ATT&CK 策略

集合

玻璃贴纸
  • 公开存储桶:通过在 Cloud Storage 存储桶的 IAM 允许政策中向 allUsersallAuthenticatedUsers 账号授予 Storage Object Viewer 等角色,使该存储桶公开。如果不强制执行禁止公开访问设置,这些角色会将所有对象公开到互联网。

  • 签名网址泄露:充当临时持有者令牌的签名网址通过客户端代码、日志或不安全的传输方式意外泄露。任何获取该网址的外部用户或应用都可以使用相应权限(例如读取或写入)访问指定的 Cloud Storage 对象,直到该网址签名过期为止。

  • IAM 权限过于宽泛:当身份(例如用户账号或服务账号)仅需要访问少量数据时,却被授予了对许多存储分区的宽泛权限(例如 storage.objects.getstorage.objects.list)。

  • 遭入侵的身份凭据:攻击者获取用户账号或服务账号密钥的凭据,从而可以向 Cloud Storage JSON API 进行身份验证,并访问遭入侵的身份有权查看的所有数据。

  • 负载平衡器配置错误:如果 Cloud Load Balancing 实例配置了 Cloud Storage 存储桶作为后端,则可能会配置错误,导致对象公开,即使存储桶本身不是公开的也是如此。此错误配置会创建一条替代的(可能不太安全的)数据访问路径,从而绕过直接的 Cloud Storage IAM 控制。

  • 不当的 CDN 缓存:当 Cloud Storage 存储桶用作 Cloud Load Balancing 和 Cloud CDN 的后端时,配置错误可能会导致敏感数据缓存在 Google 的公共边缘位置。如果后端服务未发出正确的 Cache-Control 标头(例如 private 或 no-store),CDN 可能会向未经授权的用户提供缓存的内容,从而绕过存储桶 IAM 检查。

缓解措施
  • 使用 storage.publicAccessPrevention 组织政策限制条件,对单个存储分区或项目、文件夹或组织级层强制执行禁止公开访问设置。

  • 使用统一存储桶级访问权限可简化权限并避免使用旧版 ACL。

  • 配置客户管理的加密密钥 (CMEK),以使用静态加密保护数据。

  • 尽可能缩短签名网址的过期时间。

  • 定期审核并移除被盗用或未使用的服务账号密钥。

  • 实施 VPC Service Controls 以创建服务边界,即使凭据被盗,也能防止数据渗漏。

  • 确保 Cloud Armor 政策应用于提供 Cloud Storage 内容的负载平衡器,以限制访问。

利用 IAM 错误配置进行提权

攻击者如果拥有看似无害的特定 IAM 权限,就可以提升自己的权限,获得更广泛的访问权限,包括对 Cloud Storage 存储分区及其包含的数据的管理控制权。这种威胁会绕过预期的安全状况,并违反最小权限原则。

STRIDE 类别

提权

MITRE ATT&CK 策略

提升权限

玻璃贴纸
  • 直接修改政策:如果某个身份(例如用户或服务账号)被授予 Cloud Storage 存储桶的 storage.buckets.setIamPolicy 权限,则可以直接修改该存储分区的允许政策。此配置允许攻击者向自己授予高权限角色(例如 Storage Admin),从而完全控制相应存储桶的配置和数据。

  • 服务账号模拟:如果某个身份具有包含服务账号的 iam.serviceAccounts.actAs 权限的角色(例如 roles/iam.serviceAccountUser),则可以将该服务账号附加到其他资源(例如 Compute Engine 实例),以使用所附加服务账号的身份运行代码。或者,具有 roles/iam.serviceAccountTokenCreator 等角色的身份(具有包括 iam.serviceAccounts.getAccessToken 在内的权限)可以为该服务账号生成访问令牌。如果目标服务账号对 Cloud Storage 资源拥有较高的权限,攻击者实际上会继承这些权限。

  • 签名网址生成:对服务账号具有 iam.serviceAccounts.signBlob 权限的身份可以生成 V4 签名网址。借助这些网址,攻击者可以临时创建对服务账号可读取或写入的对象的持有者令牌访问权限,从而可能绕过更严格的网络控制措施或攻击者自身缺乏的直接 Cloud Storage 权限。

缓解措施
  • 遵循最小权限原则。除非绝对必要,否则请避免向角色添加 storage.buckets.setIamPolicyiam.serviceAccounts.actAsiam.serviceAccounts.signBlob 等权限。使用 IAM 条件将权限限制为特定资源或时间范围。使用 Cloud Asset Inventory 等工具定期审核允许政策,以检测并移除过多的权限。

  • 确保处理签名网址的应用不会记录这些网址,也不会以可被第三方抓取的方式公开这些网址。例如,如果使用 Cloud CDN 缓存签名网址,请设置适当的 Cache-Control 标头,以避免公开缓存应通过签名网址进行私密且经过身份验证的敏感对象。

使用过多的权限篡改或破坏数据

如果攻击者拥有足够的权限,就可以更改、损坏或永久删除 Cloud Storage 系统中的数据和配置,从而导致数据完整性和可用性受损。

STRIDE 类别

篡改

MITRE ATT&CK 策略

影响

玻璃贴纸
  • 直接操控对象:具有 storage.objects.createstorage.objects.delete 权限的身份可以覆盖或销毁单个 Cloud Storage 对象。

  • 生命周期政策武器化:拥有 storage.buckets.update 权限的攻击者可以修改存储桶的对象生命周期管理配置,以创建一条立即或在短时间内删除所有对象的规则,从而导致大量数据被销毁。

  • 存储分区删除:拥有 storage.buckets.delete 权限的高权限攻击者可以删除整个 Cloud Storage 存储桶,立即销毁与其关联的所有对象、配置和政策。

  • 通知劫持:拥有 storage.buckets.update 权限的攻击者可以恶意更改或删除 Pub/Sub 通知配置。这种攻击可能会使依赖这些事件的下游系统无法正常运行,或者将通知重定向到攻击者控制的主题。

缓解措施
  • 如果您需要不可变存储或最短保留期限,请为整个存储桶配置存储桶锁定,或为单个对象配置对象锁定。

  • 配置对象版本控制和软删除政策,以便在包含关键数据的存储分区中发生意外或恶意重写时进行恢复。实现指定的软删除期限,以便您有足够的时间在永久删除之前检测和恢复对象。

  • 在包含关键数据的存储分区中启用数据访问审核日志,以帮助监控异常访问模式。

使用配置错误的 Storage Transfer Service 作业进行数据渗漏

拥有 storagetransfer.transferjobs.createstoragetransfer.transferjobs.update 权限的攻击者可以创建或修改 Storage Transfer Service 作业,以将数据从敏感的 Cloud Storage 存储桶复制到另一个项目中由攻击者控制的存储桶。此攻击媒介可用于静默且持续地渗漏大量数据,绕过可能侧重于 storage.objects.get 等直接 API 调用的典型数据访问监控。

STRIDE 类别

信息披露

MITRE ATT&CK 策略

渗漏

玻璃贴纸

恶意创建转移作业:拥有 storagetransfer.transferjobs.createstoragetransfer.transferjobs.update 权限的攻击者创建或修改 Storage Transfer Service 作业,以将敏感 Cloud Storage 存储桶中的数据复制到另一个项目中受攻击者控制的存储桶。

缓解措施
  • 严格限制 storagetransfer.transferjobs.createstoragetransfer.transferjobs.update 的 IAM 权限。仅向受信任的管理账号所用的角色分配这些权限。

  • 实现 VPC Service Controls 边界,以限制边界内服务与边界外服务之间的通信。

  • 对授予转移作业权限的角色使用 IAM 条件,以将源存储分区和目标存储分区限制为已知且经过授权的位置。

  • 定期监控 Cloud Audit Logs,以了解 Storage Transfer Service 作业的创建和修改情况。为指定了不受信任或外部目标位置的所有作业配置提醒。

因依赖项管理不当而导致数据访问权限丢失

对关键服务依赖项的攻击或管理不当可能会拒绝合法访问 Cloud Storage 中的数据,即使没有直接入侵存储系统本身,也会导致数据无法访问。

STRIDE 类别

篡改

MITRE ATT&CK 策略

影响

玻璃贴纸
  • CMEK 不可用:如果 Cloud Storage 存储桶配置为使用 CMEK,那么停用或删除后备 Cloud KMS 密钥会导致使用该密钥加密的所有对象在加密方面无法访问。Cloud Storage 服务代理无法执行解密,这会导致相应数据完全拒绝服务。

  • 恶意存储桶锁定:拥有 storage.buckets.update 权限的攻击者可以应用保留期限过长的存储桶锁定。此锁定会阻止合法删除数据,从而导致不必要的成本大幅累积,这是一种拒绝服务攻击。

缓解措施
  • 为 Cloud KMS 管理实施严格的 IAM 允许政策和职责分离。确保有权管理 Cloud Storage 存储分区的身份也无权管理存储分区使用的 Cloud KMS 密钥。

  • 使用 Cloud KMS 密钥删除防范机制。

  • 对于存储桶锁定,请严格控制 storage.buckets.update 权限,并使用监控功能在发生意外的配置更改时发出提醒。

通过可观测性不足来混淆活动

如果未正确配置审核和监控,攻击者可能会针对 Cloud Storage 资源执行恶意操作,而不会被检测到。如果可观测性不足,攻击者便可隐藏其踪迹,从而妨碍有效的突发事件响应和取证。

STRIDE 类别

否认

MITRE ATT&CK 策略

防护规避

玻璃贴纸
  • 数据访问日志处于停用状态:虽然管理员活动日志始终处于启用状态,但数据访问日志(用于记录对象读取和写入操作)默认处于停用状态。如果未明确启用,攻击者可以渗漏或篡改存储桶中的所有数据,而不会针对这些操作生成 Cloud Audit Logs,从而使违规行为难以检测或调查。

  • 日志接收器操纵:获得足够权限的攻击者可以停用或重新配置用于路由 Cloud Audit Logs 的日志接收器,从而有效地阻止安全相关数据流向监控系统。

  • 指标监控疏忽:攻击者执行低速缓慢的活动,例如在很长一段时间内逐渐渗漏少量数据。这些操作可能不会在 Cloud Audit Logs 中触发严重程度较高的提醒,但会在 Cloud Monitoring 指标中形成异常模式(例如,持续的出站流量)。如果不监控这些指标,攻击者就更容易不被发现。

缓解措施
  • 为包含敏感数据或关键数据的所有存储分区启用数据访问审核日志。

  • 确保日志路由到安全的集中式日志记录项目,并严格控制权限,以防止日志接收器遭到篡改。

  • 在 Cloud Monitoring 或 SIEM 中配置基于日志的提醒,以主动检测可疑活动,例如异常访问模式或 IAM 允许政策变更。

  • 根据关键 Cloud Monitoring 指标创建提醒,以检测偏离基准行为的情况。

  • 使用内置的 Storage Intelligence 信息中心和来自 Data Security Posture Management 的数据洞见,提供持续的对象级风险暴露监控和安全状况评估。

利用存储在 Cloud Storage 中的遭入侵工件进行供应链投毒

如果攻击者获得对用于存储软件工件(例如二进制文件、容器映像或构建脚本)的 Cloud Storage 存储桶的写入权限(例如 storage.objects.createstorage.objects.delete),他们就可以用恶意版本替换合法工件。信任此存储桶中制品的下游 CI/CD 流水线、开发者或最终用户会无意中运行遭入侵的代码,从而导致广泛的供应链攻击。

STRIDE 类别

篡改

MITRE ATT&CK 策略

初始访问

玻璃贴纸
  • 二进制文件替换:攻击者使用特洛伊木马化的版本覆盖发布二进制文件或库。当此制品被拉入 build 或部署时,攻击者的代码会在目标环境中运行。

  • 容器映像中毒:如果攻击者有权访问用作容器注册表(例如 Artifact Registry)后端的存储桶,则可能会篡改映像层,注入漏洞或后门。

  • 构建脚本修改:攻击者修改存储在 Cloud Storage 中的构建脚本(例如 cloudbuild.yamlMakefile),以更改构建流程本身。攻击者可能会修改 build 脚本,以便在编译期间窃取密钥或嵌入后门。

  • AI 模型中毒:攻击者可能会将 Cloud Storage 中的有效模型检查点替换为恶意检查点,后者在被生产系统加载时会运行代码。或者,攻击者可能会修改用于模型训练的 Cloud Storage 存储桶中的数据,以在训练后的模型中插入后门或恶意行为。

缓解措施
  • 使用 Artifact Registry 等专用制品管理服务,该服务提供漏洞扫描和更出色的访问权限控制。避免使用标准 Cloud Storage 存储分区来存储关键软件制品。

  • 为所有 build 制品实现数字签名。配置 CI/CD 流水线以在部署制品之前验证其签名,确保制品的完整性和来源。

  • 在存储桶上配置对象版本控制,以保留被恶意数据覆盖的对象。

使用 Cloud Storage 对象泛洪或出站流量滥用进行基于费用的拒绝服务攻击

如果攻击者对可公开写入或安全性较差的存储桶拥有对象创建权限,则可以上传大量小对象,从而导致 A 类操作和存储费用大幅增加。或者,如果攻击者对停用了“请求者付费”功能的存储桶具有读取权限,则可以反复下载大型对象,从而产生过高的网络出站流量费用,并可能因结算限额而影响合法用户的服务可用性。

STRIDE 类别

拒绝服务攻击

MITRE ATT&CK 策略

影响

玻璃贴纸
  • 对象泛洪:攻击者使用脚本在存储桶中快速创建数百万个小型对象,从而提高运营成本,并可能影响列出或处理存储桶内容的应用。

  • 出站流量滥用:对于托管大型公开数据集的存储桶,攻击者会反复下载文件,导致出站带宽费用过高,从而造成经济损失。这种滥用行为可能会导致项目达到结算配额,从而导致拒绝服务攻击。

缓解措施
  • 配置 Cloud Billing 提醒,以便在费用超出预定义的预算阈值时通知管理员,从而让您尽早发现异常支出。

  • 对于可公开访问的存储分区,请启用“请求者付款”。此功能会将数据访问和出站流量费用转移给下载数据的用户,从而减轻针对存储桶所有者的基于出站流量的费用攻击。

  • 使用 Storage Insights 监控对象级活动。存储空间分析功能可提供预测费用和识别可能成为出站滥用目标的流量较高的对象所需的可见性。

利用 Cloud Storage 对象版本控制滥用行为操纵数据完整性

虽然对象版本控制是一项关键的防御措施,但如果攻击者拥有足够的权限(例如 storage.objects.deletestorage.objects.create),则可以操纵对象历史记录来破坏数据完整性。他们可以删除对象的当前版本,导致较旧的(可能不正确或存在安全漏洞)版本成为“有效”版本。这可用于还原安全补丁、重新引入 bug 或恢复过时的信息,但由于对象仍然存在,因此不会立即显现出来。

STRIDE 类别

篡改

MITRE ATT&CK 策略

影响

玻璃贴纸
  • 安全补丁反转:攻击者删除包含安全补丁的最新版本的应用二进制文件或配置文件,导致系统恢复到之前的易受攻击的版本。

  • 因回滚导致的数据损坏:在依赖 Cloud Storage 存储状态或配置的系统中,攻击者将关键配置对象回滚到较旧的状态,导致服务配置错误或数据处理错误。

  • AI 模型完整性操纵:攻击者可能会覆盖或恢复存储在 Cloud Storage 存储桶中的 AI 模型检查点。

缓解措施
  • 开发依赖于特定对象版本的应用,以便通过对象的唯一世代编号(而不仅仅是名称)来检索对象。这样可确保始终提取正确的版本。

  • 对于需要不可变存储空间的数据,请使用定义了保留政策的存储桶锁定功能。

  • 配置软删除政策,以提供额外的防御层来防范恶意删除。对象版本控制无法防止存储桶删除。

使用由 Cloud Storage 触发的 Dataflow 流水线进行数据渗漏

如果 Dataflow 流水线配置为在 Cloud Storage 存储桶中创建对象时自动触发,则能够写入该存储桶的攻击者可能会窃取数据。如果 Dataflow 作业的服务账号有权访问其他敏感数据并写入外部位置(例如,另一个 Cloud Storage 存储桶或 BigQuery),攻击者可以精心制作一个输入文件,使流水线读取敏感数据并将其写入攻击者控制的位置。

STRIDE 类别

信息披露

MITRE ATT&CK 策略

渗漏

玻璃贴纸

跨项目数据渗漏:攻击者将文件上传到触发存储桶。Dataflow 流水线以具有特权的服务账号运行,从其他项目读取敏感数据,并将输出写入攻击者输入文件中指定的公开 Cloud Storage 存储桶。

缓解措施
  • 将 Dataflow 流水线及其 Cloud Storage 依赖项封装在 VPC Service Controls 边界内,以防止流水线将数据发送到未经授权的外部目的地。

  • 对 Dataflow 工作器服务账号应用最小权限原则。它应仅具有从来源读取数据和写入预期目标位置所需的特定权限。

  • DATA_WRITE 事件启用数据访问审核日志,以帮助审核 Dataflow 流水线中的可疑活动。

  • 在 Cloud Storage 存储桶上启用统一存储桶级访问权限,以确保基于 IAM 的访问权限控制保持一致。

通过在 Cloud Storage 中操纵 IaC 状态来破坏完整性

如果使用 Cloud Storage 存储桶来存储基础设施即代码 (IaC) 状态文件(例如 Terraform 中的 terraform.tfstate 文件),那么拥有状态存储桶写入权限的攻击者可以篡改状态文件。通过修改状态,攻击者可以在下次运行 IaC 时注入恶意资源、更改关键安全配置或导致资源被销毁。这种篡改会绕过代码审核流程,因为攻击目标是状态,而不是代码本身。

STRIDE 类别

篡改

MITRE ATT&CK 策略

影响

玻璃贴纸

安全控制停用:攻击者更改状态文件,以显示防火墙规则或 IAM 允许政策的不准确状态。下一次 Terraform 应用可能无法正确应用预期的安全配置。

缓解措施
  • 在存储状态文件的 Cloud Storage 存储桶上启用对象版本控制。对象版本控制功能可让您在状态文件遭到意外或恶意修改时恢复该文件。

  • 对状态文件存储桶实施严格的 IAM 控制。确保只有 CI/CD 服务账号具有写入权限,而开发者最多只能拥有只读权限。

存储在 Cloud Storage 中的启动或引导脚本的提权

如果 Compute Engine 实例或 GKE 节点从 Cloud Storage 存储桶拉取其启动或引导脚本,则具有该存储桶写入权限的攻击者可以修改这些脚本。由于这些脚本通常以高权限运行(例如,在虚拟机上以 root 身份运行或使用节点的服务账号运行),攻击者可以注入命令来创建后门用户、窃取元数据和访问令牌,或安装恶意软件。通过这些操作,攻击者可以将权限从 Cloud Storage 对象写入权限升级为对计算资源的完全控制权限。

STRIDE 类别

提权

MITRE ATT&CK 策略

提升权限

玻璃贴纸
  • 元数据窃取:攻击者向启动脚本添加 curl -H 'Metadata-Flavor: Google' http://metadata.google.internal/... 等命令,以窃取服务账号令牌或其他密文。

  • 反向 shell:攻击者注入命令以启动从计算实例到攻击者控制的服务器的反向 shell,从而获得交互式访问权限。

缓解措施
  • 将启动脚本存储在专门的、受到严格控制的 Cloud Storage 存储桶中。应用最小权限 IAM 允许政策,以便只有经过授权的管理员或 CI/CD 流水线才能修改脚本。考虑采用数据分类策略,在该策略中,您可以在用于启动脚本的存储分区上配置资源标记,并使用基于 IAM 标记的条件式访问权限来进一步限制访问权限。

  • 将脚本包含在自定义机器映像中,而不是从 Cloud Storage 中拉取脚本。此策略会创建不易受运行时修改影响的不可变制品。

使用 Cloud Storage 托管的机器学习训练数据的供应链后门

如果攻击者对包含机器学习模型训练数据的 Cloud Storage 存储桶拥有写入权限,则可能会毒化数据集。通过注入精心设计的恶意数据,攻击者可以在训练后的模型中创建后门。这种后门可能会导致模型错误地对特定输入进行分类,从而使攻击者受益,同时在一般数据上正常运行以躲避检测。例如,模型可能会批准欺诈性交易或绕过安全检查。

STRIDE 类别

篡改

MITRE ATT&CK 策略

影响

玻璃贴纸
  • 有针对性的错误分类:攻击者插入中毒数据,导致训练好的欺诈检测模型始终将攻击者控制的账号中的交易归类为合法交易。

  • 模型规避:攻击者通过将恶意软件示例标记为良性来污染恶意软件检测模型的训练数据,导致最终模型忽略其特定工具。

缓解措施
  • 对包含训练数据的 Cloud Storage 存储分区实施严格的访问权限控制。在授予对这些存储分区的写入权限时,请遵循最小权限原则,并使用 Policy Analyzer 等工具定期进行审核。

  • 不妨考虑采用数据分类策略,在该策略中,您可以在用于机器学习训练数据的存储分区上配置资源标记,并添加基于 IAM 标记的条件来进一步限制访问权限。

  • 审核用于训练数据的对象是否存在未经授权的修改。为 DATA_WRITE 事件配置对象版本控制、维护校验和并配置数据访问审核日志,以帮助审核与训练数据相关的对象创建事件的异常情况。

  • 定期审核和验证机器学习模型,以防出现意外行为。采用对抗性测试技术来探测训练期间引入的隐藏后门或漏洞。

  • 配置 VPC Service Controls 边界,以限制从受信任边界外部对敏感资源(例如训练数据和参与模型创建的其他服务)的访问。

利用由 Cloud Storage 中的对象创建触发的扇出工作流进行拒绝服务攻击

如果某个工作流(例如 Cloud Run Functions 或 Workflows)配置为触发 Cloud Storage 存储桶中的对象创建并执行资源密集型任务,则具有 storage.objects.create 权限的攻击者可以发起拒绝服务攻击。通过在短时间内上传大量文件(称为扇出触发),攻击者可以导致下游服务快速伸缩,消耗过多的资源,达到并发或伸缩限制,并产生巨额费用,最终导致合法用户无法使用服务。

STRIDE 类别

拒绝服务攻击

MITRE ATT&CK 策略

影响

玻璃贴纸
  • 资源耗尽:攻击者上传 10,000 个小文件,触发 10,000 个并行 Cloud Run 函数调用,导致项目耗尽 CPU 配额、内存或下游 API 速率限制。

  • 基于费用的 DoS:扇出在付费服务中触发大量执行,导致账单金额巨大,并可能导致账号中止,从而有效拒绝服务。

缓解措施
  • 对触发工作流的 Cloud Storage 存储分区实施严格的访问权限控制。在授予对这些存储分区的写入权限时,请遵循最小权限原则,并使用 Policy Analyzer 等工具定期进行审核。

  • 为事件驱动型 Cloud Run functions 设置并发限制,以控制并行执行的最大数量,防止资源耗尽。

  • 实现去抖动机制,然后调用主处理逻辑。一种去抖动机制是将任务添加到具有速率限制的 Cloud Tasks 队列。此机制通过将请求量突然激增的情况分散到一段时间内来帮助管理这种情况。

  • 配置 VPC Service Controls 边界,以限制从可信边界外部对敏感资源的访问,例如写入触发工作流的存储桶。

使用 Cloud Storage 支持的备份流水线进行未经授权的数据移动

备份和灾难恢复 (DR) 工具通常使用 Cloud Storage 作为备份的暂存区或最终目标位置。如果攻击者入侵了此工具的配置,他们可以将备份重定向到攻击者控制的 Cloud Storage 存储桶。备份服务账号通常对许多数据源(例如数据库或虚拟机)具有广泛的读取权限,因此攻击者可以通过操纵备份作业的目标参数来窃取大量敏感数据。

STRIDE 类别

信息披露

MITRE ATT&CK 策略

渗漏

玻璃贴纸
  • 备份作业重定向:具有修改备份作业配置权限的攻击者将目标 Cloud Storage 存储桶路径更改为 gs://attacker-public-bucket/

  • 跨项目备份:攻击者在遭入侵的项目中配置新的备份作业,以从敏感来源读取数据,并将其备份到由攻击者控制的另一个 Google Cloud 项目中的存储桶。

缓解措施
  • 确保备份工具的服务账号具有范围有限的权限。设置备份工具,使其只能写入特定的指定备份存储分区,而不能从任意位置读取数据。

  • 使用 VPC Service Controls 防止备份服务访问敏感数据源,以及写入安全边界之外的 Cloud Storage 存储分区。

在混合环境中,使用旧版 Cloud Storage ACL 绕过政策

Cloud Storage 支持两种互斥的访问权限控制系统:IAM 和旧版 ACL。如果停用统一存储桶级访问权限,系统会同时评估这两个系统。攻击者可以利用此配置,通过向对象添加旧版 ACL(例如,向个人 Google 账号或公开群组授予访问权限)来利用此配置,即使存储桶级允许政策看起来很严格也是如此。这种攻击会创建 IAM 中心型安全扫描器通常会忽略的影子访问路径,从而让攻击者绕过预期的安全政策。

STRIDE 类别

提权

MITRE ATT&CK 策略

防护规避

玻璃贴纸
  • 对象级公开访问权限:拥有 storage.objects.update 权限的攻击者向敏感对象添加了 public-read ACL,使互联网上的任何人都可以访问该对象,从而绕过限制性存储桶允许政策。

  • 跨账号访问:攻击者使用 ACL 为其外部账号分配关键配置对象的 OWNER 权限,从而使其能够修改该对象,而不会被 IAM 审核检测到。

缓解措施
  • 在所有 Cloud Storage 存储桶上启用统一存储桶级访问权限。统一的存储桶级访问权限会停用所有 ACL,并确保 IAM 是管理访问权限的唯一一致的方法,从而简化审核并防止出现这种绕过情况。

  • 使用组织政策限制条件 constraints/storage.uniformBucketLevelAccess 可在项目、文件夹或组织中的所有新存储桶中强制执行统一存储桶级访问权限。

利用以 Cloud Storage 为目标的遭入侵 CI/CD 流水线进行数据销毁

CI/CD 流水线通常会被授予高权限的服务账号,以管理基础架构和部署制品。如果攻击者破解了 CI/CD 系统,则可以使用流水线的服务账号对 Cloud Storage 执行破坏性操作。例如,攻击者将恶意代码注入到 build 脚本中或获得对编排器的访问权限,这都属于入侵行为。这种入侵可能涉及删除存储分区或覆盖关键对象。

STRIDE 类别

篡改

MITRE ATT&CK 策略

影响

玻璃贴纸
  • 恶意 build 步骤:攻击者向 CI/CD 流水线添加了一个会清除所有数据的步骤。例如,攻击者在 cloudbuild.yaml 中添加了一个运行 gcloud storage rm -r gs://critical-bucket/ 等命令的步骤。

  • 权限继承:攻击者使用遭入侵的流水线的服务账号(该账号具有广泛的权限)向自己的账号授予对 Cloud Storage 存储分区的管理员权限,以供日后使用。

缓解措施
  • 对 CI/CD 服务账号应用最小权限原则。例如,请勿向构建流水线分配删除生产环境存储分区的权限。为不同的流水线阶段(例如构建、测试或部署)使用单独的身份。

  • 通过启用存储桶锁定或对象锁定,或者确保 CI/CD 服务账号不具有 storage.buckets.delete 权限,来防止关键 Cloud Storage 存储桶被删除。

使用过度授权的紧急情况账号擅自删除存储桶

Break-glass 账号或紧急访问账号是仅在紧急情况下使用的高特权身份。如果这些账号未得到妥善保护和管控(例如,凭据泄露或访问权限不受时间限制),攻击者一旦入侵紧急情况账号,便可执行极具破坏性的操作。主要风险是删除整个 Cloud Storage 存储桶,这可能会导致灾难性的不可逆数据丢失,因为删除存储桶是一项永久性操作。

STRIDE 类别

提权

MITRE ATT&CK 策略

提升权限

玻璃贴纸
  • 灾难性数据丢失:攻击者入侵了管理不善的紧急情况账号,并运行脚本来删除项目中的所有 Cloud Storage 存储分区。

  • 勒索:攻击者获得访问权限,并威胁要删除关键存储分区,除非支付赎金。

缓解措施
  • 为紧急情况处理程序实现即时 (JIT) 访问权限,而不是使用具有永久特权的账号。按需授予权限,但仅限在有限的时间内用于特定用途。

  • 对包含关键对象的存储桶应用存储桶锁定,或对单个对象应用对象锁定。锁定功能可防止在指定的保留期限内删除存储桶及其对象,即使是拥有所有者权限的用户也无法删除。

使用写入 Cloud Storage 的遭入侵的日志记录接收器进行静默数据渗出

您可以配置 Cloud Logging,以将日志导出到 Cloud Storage 存储桶。如果攻击者获得修改日志接收器的权限,他们可以重新配置该接收器,以将敏感日志导出到另一个项目中由攻击者控制的 Cloud Storage 存储桶。导出敏感日志可让攻击者静默且持续地窃取日志中捕获的敏感数据。

STRIDE 类别

信息披露

MITRE ATT&CK 策略

渗漏

玻璃贴纸
  • 日志接收器重定向:攻击者修改现有日志接收器的目标位置属性,使其指向自己的 Cloud Storage 存储桶。

  • 恶意创建过滤条件:攻击者创建一个包含过滤条件的接收器,该过滤条件专门针对包含敏感信息(例如 PII 或令牌)的日志,并导出这些日志。

缓解措施
  • 监控 CreateSinkUpdateSink API 调用的 Cloud Audit Logs。配置提醒,以便在有任何新的或修改的日志接收器时通知安全团队,确保这些接收器已获得授权。

  • 配置 VPC Service Controls 边界以缓解数据渗漏问题。

通过集中式 CMEK 撤消功能启用勒索软件防护

如果 Cloud Storage 存储分区使用 CMEK 加密,则数据的可用性取决于密钥的可用性。如果攻击者获得了 Cloud KMS 的足够权限,就可以销毁或停用用于关键 Cloud Storage 存储桶的密钥。此操作会使存储桶中的所有数据在加密方面无法访问,实际上是一种数据销毁或勒索软件,因为数据仍然存在,但无法解密。

STRIDE 类别

篡改

MITRE ATT&CK 策略

影响

玻璃贴纸
  • 密钥销毁:拥有 cloudkms.cryptoKeyVersions.destroy 权限的攻击者永久销毁某个密钥版本,导致数据无法恢复。

  • 密钥停用:拥有 cloudkms.cryptoKeyVersions.disable 权限的攻击者停用密钥,导致 Cloud Storage 数据无法读取,直到密钥重新启用为止。此操作可能会导致长时间中断。

缓解措施
  • 强制规定 Cloud KMS 密钥在销毁之前必须处于“已安排销毁”状态的最短时长。默认情况下,此期限为 30 天,但您可以在首次创建密钥时配置 1 到 120 天的期限。密钥删除后,您无法修改此期限。考虑强制执行 constraints/cloudkms.minimumDestroyScheduledDuration 组织政策限制条件,以确保创建的密钥的安排销毁期限不低于您的预期最小值。

  • 严格限制对 Cloud KMS 管理员角色的访问权限。将密钥使用职责与密钥管理职责分开,以防止单个被盗用的账号同时使用和销毁密钥。

  • 定期轮替 Cloud KMS 密钥,并根据工作负载的敏感性或合规性要求选择轮替周期。

使用快照或备份导出功能将数据渗漏到 Cloud Storage

许多 Google Cloud 服务(例如 Compute Engine 或 Cloud SQL)允许创建快照或将备份导出到 Cloud Storage。如果攻击者有权执行这些导出操作,则可以创建包含敏感数据的资源的快照,并将该快照保存到权限宽松的 Cloud Storage 存储桶中,例如公共存储桶或与外部账号共享的存储桶。此操作会绕过主资源更严格的访问控制(例如数据库凭据),因为现在可以使用 Cloud Storage IAM 访问数据。

STRIDE 类别

信息披露

MITRE ATT&CK 策略

渗漏

玻璃贴纸
  • 将磁盘快照导出到公共存储桶:具有 compute.snapshots.createstorage.objectAdmin 权限的内部开发者创建包含 Secret 的虚拟机磁盘的快照,并将其导出到公共 Cloud Storage 存储桶。

  • 数据库导出:拥有 cloudsql.instances.export 权限的攻击者将生产数据库导出到攻击者控制的项目中的 Cloud Storage 存储桶。

缓解措施
  • 确保指定用于备份和快照的项目具有至少与源项目一样严格的 IAM 和 VPC Service Controls 政策,以保持一致的安全态势。

  • 考虑采用数据分类策略,在该策略中,您可以在用于备份的存储分区上配置资源标记,并添加基于 IAM 标记的访问条件,以进一步限制访问权限。