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是「要达到什么效果」。两者是手段和目标的关系。

我习惯用一个简单的框架图来理解它们的关系:

访问控制三要素与CIA关系图 访问控制三要素与CIA核心目标 主体 (Subject) 客体 (Object) 操作 (Operation) 访问控制 = 谁(主体)对什么(客体)做什么(操作) 机密性 完整性 可用性 手段:三要素定义「谁做什么」 → 目标:CIA保障「安全效果」

从图上可以看得很清楚:主体通过操作访问客体,这是访问控制的具体行为。而所有行为最终都要服务于机密性、完整性、可用性这三个目标。任何一个目标没达成,访问控制就是失败的。

1.5 一个简单的例子串起来

咱们用个实际场景把今天的内容串一遍。

假设你是一个HR系统的管理员。系统里有一份员工薪资表(客体)。你的日常工作包括查看薪资数据、修改错误记录(操作)。你是合法主体。

  • 机密性:只有HR经理和财务总监能看薪资表,其他员工不能看。系统通过角色权限控制实现。
  • 完整性:只有HR经理能修改薪资数据,普通HR只能查看。修改记录会被完整记录在审计日志里。
  • 可用性:HR经理在任何时候都能正常访问系统。系统做了负载均衡和故障切换,不会因为单点故障导致无法访问。

你看,三要素和CIA在这个场景里完美配合。任何一个环节出问题,要么数据泄露,要么数据被篡改,要么业务中断。

总结一下今天的内容:

  • 访问控制就是「谁对什么做什么」的规则集合
  • 三要素:主体(谁)、客体(什么)、操作(做什么)
  • 三大目标:机密性(不让看)、完整性(不让改)、可用性(不让停)
  • 三要素是手段,CIA是目标,两者缺一不可