云数据架构基础:IaaS/PaaS/SaaS中的数据分布
说实话,很多做安全的朋友,一上来就追着API漏洞或配置错误跑。但我个人的习惯是,先搞清楚数据到底躺在哪。你连房子结构都不清楚,怎么抓老鼠?
这一章我们扎进云服务的三种基本模型:IaaS、PaaS、SaaS。不聊虚的,就看数据在这些模型里是怎么分布、怎么流动的。嗯,理解了这个,后面讲暴露路径才接地气。
IaaS:云里的“毛坯房”
IaaS给你的是虚拟服务器、网络、存储。说白了,就像你租了个毛坯房。地板、墙壁、水管是云厂商的,但里面的家具、装修、甚至墙上的画,全归你管。
所以数据分布也很直白:
- 虚拟磁盘(云硬盘):操作系统、应用代码、数据库文件、日志文件,全在这。
- 对象存储(如S3、OSS):图片、视频、备份包、静态网站文件。我常见有人把数据库备份直接扔进公共桶,这是个大坑。
- 内存与临时存储:应用运行时,缓存数据、会话信息在内存里。实例重启或回收,这些数据就没了。
- 网络流量:数据在VPC内部、跨可用区、或者出公网时,都在线上流动。
在IaaS里,用户对自己数据的控制权最大,但责任也最大。你不仅要保护数据本身,还得保护承载数据的虚拟基础设施的配置。
PaaS:数据的“抽象层”与“残留风险”
PaaS让你不用管服务器和操作系统了。你只管把代码或数据扔给平台,平台负责运行。听起来很美好?但数据分布变得更隐蔽了。
核心数据分布点:
- 托管数据库实例:像RDS、Cloud SQL。数据在底层存储里,但你对物理磁盘没权限。你只能通过平台API或客户端工具访问。
- 应用运行环境:你的代码、配置、环境变量。我见过最离谱的一次,有人在PaaS的环境变量里直接放了数据库连接字符串,密码还是明文。
- 临时文件系统:应用实例的本地磁盘。多个实例间不共享,实例被销毁时,数据也会被清除。但注意:有些平台会重用虚拟机,残留数据可能被下一个租户读到。
- 日志与监控数据:平台会采集你的应用日志、指标。这些数据通常存储在平台自己的服务里,你只能通过平台界面查看。
PaaS的核心问题在于:数据流经了很多你没法直接控制的黑盒组件。比如负载均衡、API网关、服务网格。这些组件在处理请求时,可能会在内存或临时存储里留下数据的副本。
SaaS:数据在“黑盒”里,你只能信任
SaaS就是直接用软件。比如Salesforce、钉钉、腾讯会议。数据完全存储在SaaS提供商的后端。你连服务器在哪、数据库类型是什么都不知道。
数据分布和风险主要集中在:
- 应用数据库:你的业务数据存储在厂商的数据库里,通常是多租户共享的。
- 文件存储:附件、文档、上传的图片。
- 元数据:谁创建了记录、什么时候修改的、访问日志。
- 配置数据:你的工作流、权限设置、自定义字段。
为什么这里风险高?因为数据控制权完全不在你手里。你只能依赖厂商的承诺和审计报告。比如厂商员工有没有权限看到你的数据?厂商的备份是否加密?如果厂商被入侵,你的数据会不会跟着遭殃?
我记得有一次评估一个SaaS客服系统。厂商说数据是加密存储的,但后来发现,他们用的是应用层加密,加密密钥就硬编码在代码里。这不等于没加密吗?
责任边界:谁对谁的数据负责?
这里必须提一个常被误解的概念:共享责任模型。不是所有安全责任都在云厂商那,也不是都在你这。
用一张图来总结,比较清晰:
看懂了这张图,你就能明白:数据暴露路径的风险,会随着控制权的转移而变化。
在IaaS里,暴露路径多是配置错误和漏洞。在PaaS里,多了平台API滥用和残留数据。在SaaS里,则更多是厂商信任和权限管控问题。
快速对比表格
| 维度 | IaaS | PaaS | SaaS |
|---|---|---|---|
| 数据分布 | 虚拟磁盘、对象存储、内存、网络 | 托管的数据库、应用环境、日志 | 厂商后端、多租户数据库 |
| 用户控制范围 | 最大:OS、应用、数据 | 居中:应用代码、数据 | 最小:仅用户数据与配置 |
| 主要暴露点 | 安全组、存储桶策略、密钥管理 | 环境变量、平台API、代码库 | 权限配置、第三方集成、信任 |
| 典型案例 | 公开的S3桶泄露用户资料 | Heroku环境变量泄露数据库密码 | Slack 泄露导致数据外流 |
你想想看,如果一个攻击者想搞数据,他肯定会先摸清数据在哪。所以,我们做防御的,更得比攻击者先一步摸清这个底牌。
- IaaS:数据在你能控制的物理或虚拟边界内。保护重点是边界和配置。
- PaaS:数据在平台黑盒里流动。保护重点是应用层和API安全性。
- SaaS:数据完全托管。保护重点是信任、权限和第三方风险。
我个人建议,在开始任何云安全项目前,先花半小时画一张你们业务的数据分布图。标清楚哪个服务用的是什么模型,数据躺在哪。这张图,比任何扫描器都值钱。