云数据架构基础:IaaS/PaaS/SaaS中的数据分布

说实话,很多做安全的朋友,一上来就追着API漏洞或配置错误跑。但我个人的习惯是,先搞清楚数据到底躺在哪。你连房子结构都不清楚,怎么抓老鼠?

这一章我们扎进云服务的三种基本模型:IaaS、PaaS、SaaS。不聊虚的,就看数据在这些模型里是怎么分布、怎么流动的。嗯,理解了这个,后面讲暴露路径才接地气。

IaaS:云里的“毛坯房”

IaaS给你的是虚拟服务器、网络、存储。说白了,就像你租了个毛坯房。地板、墙壁、水管是云厂商的,但里面的家具、装修、甚至墙上的画,全归你管。

所以数据分布也很直白:

  • 虚拟磁盘(云硬盘):操作系统、应用代码、数据库文件、日志文件,全在这。
  • 对象存储(如S3、OSS):图片、视频、备份包、静态网站文件。我常见有人把数据库备份直接扔进公共桶,这是个大坑。
  • 内存与临时存储:应用运行时,缓存数据、会话信息在内存里。实例重启或回收,这些数据就没了。
  • 网络流量:数据在VPC内部、跨可用区、或者出公网时,都在线上流动。
⚠️ 我在项目中遇到过 一个客户,他们在IaaS上自建了Elasticsearch集群。安全组规则写得像筛子,允许了/0访问9200端口。数据完全裸奔。你想想看,这相当于把毛坯房的钥匙挂在大门口。

在IaaS里,用户对自己数据的控制权最大,但责任也最大。你不仅要保护数据本身,还得保护承载数据的虚拟基础设施的配置。

PaaS:数据的“抽象层”与“残留风险”

PaaS让你不用管服务器和操作系统了。你只管把代码或数据扔给平台,平台负责运行。听起来很美好?但数据分布变得更隐蔽了。

核心数据分布点:

  1. 托管数据库实例:像RDS、Cloud SQL。数据在底层存储里,但你对物理磁盘没权限。你只能通过平台API或客户端工具访问。
  2. 应用运行环境:你的代码、配置、环境变量。我见过最离谱的一次,有人在PaaS的环境变量里直接放了数据库连接字符串,密码还是明文。
  3. 临时文件系统:应用实例的本地磁盘。多个实例间不共享,实例被销毁时,数据也会被清除。但注意:有些平台会重用虚拟机,残留数据可能被下一个租户读到。
  4. 日志与监控数据:平台会采集你的应用日志、指标。这些数据通常存储在平台自己的服务里,你只能通过平台界面查看。
💡 避坑指南: 我曾经调试过一个PaaS应用,发现日志里把用户的信用卡前几位给打印出来了。平台日志服务默认会保留30天,这30天里,任何有日志查看权限的员工都能看到。一定要在应用层对敏感数据做脱敏,不要指望云平台帮你过滤。

PaaS的核心问题在于:数据流经了很多你没法直接控制的黑盒组件。比如负载均衡、API网关、服务网格。这些组件在处理请求时,可能会在内存或临时存储里留下数据的副本。

SaaS:数据在“黑盒”里,你只能信任

SaaS就是直接用软件。比如Salesforce、钉钉、腾讯会议。数据完全存储在SaaS提供商的后端。你连服务器在哪、数据库类型是什么都不知道。

数据分布和风险主要集中在:

  • 应用数据库:你的业务数据存储在厂商的数据库里,通常是多租户共享的。
  • 文件存储:附件、文档、上传的图片。
  • 元数据:谁创建了记录、什么时候修改的、访问日志。
  • 配置数据:你的工作流、权限设置、自定义字段。

为什么这里风险高?因为数据控制权完全不在你手里。你只能依赖厂商的承诺和审计报告。比如厂商员工有没有权限看到你的数据?厂商的备份是否加密?如果厂商被入侵,你的数据会不会跟着遭殃?

我记得有一次评估一个SaaS客服系统。厂商说数据是加密存储的,但后来发现,他们用的是应用层加密,加密密钥就硬编码在代码里。这不等于没加密吗?

责任边界:谁对谁的数据负责?

这里必须提一个常被误解的概念:共享责任模型。不是所有安全责任都在云厂商那,也不是都在你这。

用一张图来总结,比较清晰:

云服务模型中的责任边界与数据分布 用户控制区域(数据 + 配置 + 访问) IaaS 用户控制:OS、应用、数据 虚拟磁盘、对象存储 网络配置、安全组 运行时内存数据 风险高发区: • 错误配置(公开桶) • 弱安全组 • 未加密磁盘 • 密钥泄露 PaaS 用户控制:应用代码、数据 托管数据库实例 环境变量、配置 临时文件系统 风险高发区: • 硬编码凭据 • 日志泄露 • 平台层漏洞 • 残留数据 SaaS 用户控制:用户数据、配置 业务数据(厂商DB) 文件附件 元数据、审计日志 风险高发区: • 厂商安全策略 • 多租户隔离 • 员工权限过大 • 数据访问审计 云厂商控制区域(基础设施 + 平台 + 应用) 向右移动:用户控制权减弱,云厂商控制权增强,但数据暴露路径更隐蔽

看懂了这张图,你就能明白:数据暴露路径的风险,会随着控制权的转移而变化。

在IaaS里,暴露路径多是配置错误和漏洞。在PaaS里,多了平台API滥用和残留数据。在SaaS里,则更多是厂商信任和权限管控问题。

快速对比表格

维度 IaaS PaaS SaaS
数据分布 虚拟磁盘、对象存储、内存、网络 托管的数据库、应用环境、日志 厂商后端、多租户数据库
用户控制范围 最大:OS、应用、数据 居中:应用代码、数据 最小:仅用户数据与配置
主要暴露点 安全组、存储桶策略、密钥管理 环境变量、平台API、代码库 权限配置、第三方集成、信任
典型案例 公开的S3桶泄露用户资料 Heroku环境变量泄露数据库密码 Slack 泄露导致数据外流

你想想看,如果一个攻击者想搞数据,他肯定会先摸清数据在哪。所以,我们做防御的,更得比攻击者先一步摸清这个底牌。

📌 核心要点:
  1. IaaS:数据在你能控制的物理或虚拟边界内。保护重点是边界和配置。
  2. PaaS:数据在平台黑盒里流动。保护重点是应用层和API安全性。
  3. SaaS:数据完全托管。保护重点是信任、权限和第三方风险。

我个人建议,在开始任何云安全项目前,先花半小时画一张你们业务的数据分布图。标清楚哪个服务用的是什么模型,数据躺在哪。这张图,比任何扫描器都值钱。