1. 访问控制基础:什么是访问控制、三要素与核心目标
各位同学好,我是老周。今天咱们正式开始《访问控制策略与风险防控》的第一章。
访问控制这东西,说白了就是一句话:谁,能对什么东西,做什么事。你想想看,不管是物理世界的门禁系统,还是数字世界的操作系统、数据库、云平台,核心逻辑都一样——拦住不该进来的人,放行该进来的人,并且管好他们在里面的行为。
我做了十几年安全架构,见过太多因为访问控制没做好而翻车的事故。有的公司把管理员账号密码贴在显示器上,有的把生产数据库对全公司开放查询权限……嗯,这些坑咱们后面会一个个讲。今天先把地基打牢。
核心一句话:访问控制是信息安全的第一道防线。防线没筑好,后面加密、审计、监控都是白搭。
1.1 什么是访问控制
访问控制(Access Control),就是一套机制,用来决定一个主体能否对某个客体执行特定操作。它不是一个单一的技术,而是一整套策略、模型和实现手段的组合。
我记得刚入行时带我的老架构师说过一句话,我一直记到现在:「没有访问控制的系统,就像没有锁的房门——不是不能住,而是你永远不知道谁会进来、进来干什么。」
从技术层面看,访问控制覆盖了从身份认证(你是谁)、授权(你能干什么)、到审计(你干了什么)的完整链条。这三个环节缺一不可。
我的习惯:做任何系统设计时,我第一件事不是画架构图,而是先画访问控制矩阵——把主体、客体、操作列清楚。这个习惯帮我避了至少80%的安全坑。
1.2 访问控制三要素:主体、客体、操作
三要素是访问控制的核心骨架。咱们一个一个拆开看。
1.2.1 主体(Subject)
主体是动作的发起者。可以是人,也可以是程序、进程、服务账号、设备。
- 用户:张三、李四,或者他们的数字身份
- 进程:运行中的Web服务器、数据库连接池
- 服务账号:API调用使用的机器人账号
- 设备:物联网终端、网络打印机
这里有个容易忽略的点:主体≠人。我在项目中遇到过好几次,团队只考虑了人类用户,却忘了给微服务之间的调用配置访问控制,结果一个服务被攻破,整个内网都沦陷了。
1.2.2 客体(Object)
客体是被访问的资源。一切需要保护的东西都是客体。
| 客体类型 | 举例 |
|---|---|
| 数据 | 数据库表、文件、API返回的JSON |
| 系统资源 | CPU、内存、磁盘、网络端口 |
| 功能模块 | 管理后台、报表导出、用户删除接口 |
| 物理设备 | 服务器机柜、门禁、摄像头 |
1.2.3 操作(Operation)
操作是主体对客体执行的动作。最常见的模型是CRUD——创建、读取、更新、删除。但实际场景远不止这些。
举个例子:一个文件系统里,操作可能是读、写、执行、修改权限、删除。一个API接口里,操作可能是GET、POST、PUT、DELETE。一个门禁系统里,操作可能是进入、退出、开门、关门。
我曾经踩过的坑:给一个内部系统设计权限时,只定义了「读」和「写」两种操作。结果业务方要求「只能看不能下载」「只能修改自己的记录」「只能导出前100条」……最后权限模型推倒重来。所以一开始就要把操作粒度想清楚。
1.3 访问控制的核心目标:CIA三元组
访问控制不是为了控制而控制。它最终要服务于三个核心目标:机密性、完整性、可用性。这就是信息安全领域常说的CIA三元组。
1.3.1 机密性(Confidentiality)
机密性确保信息不被未授权的人获取。说白了就是:不该看的人,绝对看不到。
实现机密性的手段包括:
- 最小权限原则:只给完成任务所需的最小权限
- 数据加密:即使数据被截获,也无法解读
- 访问控制列表(ACL):精确控制谁可以读
我见过最典型的机密性翻车案例:某公司把客户身份证号存在日志文件里,日志文件对所有开发人员可读。结果一个实习生把日志上传到了公开GitHub仓库……嗯,后续就是法务部门加班了。
1.3.2 完整性(Integrity)
完整性确保信息不被未授权的人篡改。说白了就是:不该改的人,绝对改不了;该改的人,也只能按规则改。
完整性比机密性更难保障,因为:
- 你不仅要防外部攻击者,还要防内部合法用户的误操作
- 有些场景下,数据需要被修改,但修改过程必须可追溯
我的经验:完整性控制最容易被忽视的是「删除」操作。很多系统只关注谁可以读、谁可以写,却忘了控制谁可以删。我曾经审计过一个系统,普通员工居然可以删除自己的考勤记录——这完整性就完全失控了。
1.3.3 可用性(Availability)
可用性确保授权用户在需要的时候能够访问到资源。说白了就是:该用的时候,系统必须能用。
可用性经常被安全团队忽略。你想想看,如果访问控制策略做得太严,导致正常业务流程走不通,那业务部门就会想办法绕过安全控制——这才是最大的风险。
举个例子:某公司为了防止数据泄露,把所有文件共享权限都收回了。结果销售团队为了给客户发报价单,开始用个人传文件……可用性没保障,安全策略就成了摆设。
| 目标 | 核心问题 | 典型威胁 | 控制手段 |
|---|---|---|---|
| 机密性 | 谁能看? | 数据泄露、越权查看 | 加密、ACL、最小权限 |
| 完整性 | 谁能改? | 数据篡改、误操作 | 校验和、审计日志、权限分离 |
| 可用性 | 能用吗? | 拒绝服务、权限锁死 | 冗余、限流、权限分级 |
1.4 三要素与CIA的关系
咱们把前面讲的两块内容串起来。三要素是「谁、对什么、做什么」,CIA是「要达到什么效果」。两者是手段和目标的关系。
我习惯用一个简单的框架图来理解它们的关系:
从图上可以看得很清楚:主体通过操作访问客体,这是访问控制的具体行为。而所有行为最终都要服务于机密性、完整性、可用性这三个目标。任何一个目标没达成,访问控制就是失败的。
1.5 一个简单的例子串起来
咱们用个实际场景把今天的内容串一遍。
假设你是一个HR系统的管理员。系统里有一份员工薪资表(客体)。你的日常工作包括查看薪资数据、修改错误记录(操作)。你是合法主体。
- 机密性:只有HR经理和财务总监能看薪资表,其他员工不能看。系统通过角色权限控制实现。
- 完整性:只有HR经理能修改薪资数据,普通HR只能查看。修改记录会被完整记录在审计日志里。
- 可用性:HR经理在任何时候都能正常访问系统。系统做了负载均衡和故障切换,不会因为单点故障导致无法访问。
你看,三要素和CIA在这个场景里完美配合。任何一个环节出问题,要么数据泄露,要么数据被篡改,要么业务中断。
总结一下今天的内容:
- 访问控制就是「谁对什么做什么」的规则集合
- 三要素:主体(谁)、客体(什么)、操作(做什么)
- 三大目标:机密性(不让看)、完整性(不让改)、可用性(不让停)
- 三要素是手段,CIA是目标,两者缺一不可