1. 访问控制概述:从一道门禁说起

各位好,我是老赵。今天咱们开始聊《企业级访问控制体系搭建》这门课。第一讲,我想先把这个最基础的概念讲透——访问控制到底是什么。

说白了,访问控制就是一道门禁。只不过这道门,不是物理的,是逻辑的。你想想看,一个公司里,不是所有人都能进财务室,也不是所有人都能看工资单。放到系统里,道理一模一样:谁、能干什么、在什么条件下干。

我刚开始做安全那会儿,觉得这玩意儿太简单了。不就是加个权限判断嘛。后来被现实狠狠教育了一顿——一个没做好访问控制的系统,就像把公司大门钥匙复印了一万份扔大街上。嗯,咱们今天就把这个地基打牢。

什么是访问控制

访问控制,英文叫 Access Control。它的核心意思就一句话:限制主体对客体的操作权限。

举个例子。你打开一个文档管理系统,想删除一份合同。系统会先问:你是谁?你属于哪个角色?你有删除权限吗?这三个问题问完,才决定让不让你删。

这个过程,就是访问控制。它不是一个单一的技术,而是一整套策略、模型和机制的集合。

核心定义:访问控制是系统根据预设的安全策略,对主体访问客体的行为进行授权和约束的机制。它确保只有合法的用户,在合法的条件下,执行合法的操作。

为什么需要访问控制

这个问题我问过不少刚入行的朋友。有人答「为了安全」,有人答「防止数据泄露」。都对,但不够全。

我个人习惯把原因归纳为三个层面:

  • 保护机密性——不该看的人看不到。比如员工的薪资数据,只有HR和财务的特定人员能看。
  • 保障完整性——不该改的人改不了。比如生产环境的配置,只有运维主管能修改。
  • 确保可用性——该用的人能用上。比如客服系统,客服人员必须能正常登录操作。

我在项目中遇到过一家创业公司,早期图省事,所有员工用一个超级管理员账号。后来离职员工删了数据库,公司瘫痪了两天。你说惨不惨?这就是没有访问控制的代价。

避坑指南:我曾经见过一个项目,上线前才发现所有API接口都没有做权限校验。谁都能调谁的数据。那感觉就像你家大门没锁,还贴了张纸条「欢迎光临」。所以,访问控制一定要从设计阶段就开始考虑,别等上线再补。

访问控制的核心三要素

聊了这么多,咱们得把最核心的东西拎出来。访问控制有三个要素,你记住这三个词,后面所有内容都围着它们转:主体、客体、操作。

我画了张图,帮你直观理解这三者的关系。

访问控制核心三要素关系图 主体 (Subject) 用户 / 进程 / 服务 操作 (Operation) 读 / 写 / 执行 / 删除 客体 (Object) 文件 / 数据库 / API 发起 作用于 访问控制策略 (Policy) 决定是否允许本次访问 核心逻辑:主体通过操作访问客体,策略决定是否放行 三者缺一不可,任何访问控制模型都围绕这个三角展开

1. 主体(Subject)

主体就是「谁」要发起访问。它可以是:

  • 用户——比如你、我、张三、李四
  • 进程或服务——比如后台的定时任务、微服务A调用微服务B
  • 设备——比如某个IoT传感器、打印机

这里有个容易混淆的点。我记得有一次评审代码,开发同学把「用户ID」当成了主体。其实不对。主体是发起动作的实体,而用户ID只是它的一个标识。真正的主体,是那个「能动的」东西。

2. 客体(Object)

客体就是「什么」被访问。说白了,就是被保护的对象。常见的客体有:

  • 文件、文档
  • 数据库表、记录
  • API接口
  • 内存区域
  • 网络资源

你想想看,一个系统里,客体可能成千上万。怎么管理?这就是后面要讲的资源建模。现在你只要记住:客体是被动的一方,它不会主动发起任何动作。

3. 操作(Operation)

操作就是「怎么做」。主体对客体能干什么事。最常见的操作有:

操作类型 说明 示例
读取(Read) 查看数据内容 查看订单详情
写入(Write) 新增或修改数据 更新用户信息
执行(Execute) 运行程序或脚本 执行报表生成任务
删除(Delete) 移除数据或资源 删除过期日志
授权(Delegate) 将权限转授给他人 管理员授权子管理员

这里有个细节。不同系统对操作的定义不一样。文件系统可能只有RWX,但业务系统里操作可以很细,比如「审批报销单」「导出报表」「重置密码」。嗯,这就是后面要讲的细粒度权限。

小技巧:我在设计权限模型时,习惯把操作分为两类:数据操作(增删改查)和功能操作(审批、导出、配置)。分开设计,后面扩展起来会轻松很多。

三要素如何协同工作

光知道三个概念还不够。你得明白它们怎么配合。

我举个例子。假设系统里有一条规则:「只有财务经理可以审核报销单」。

  • 主体:用户「张三」,角色是「财务经理」
  • 客体:报销单ID为 2024-001 的记录
  • 操作:审核(Approve)

当张三点击「审核」按钮时,系统会做三件事:

  1. 确认张三的身份(认证)
  2. 检查张三是否有「审核报销单」的权限(授权)
  3. 记录这次操作(审计)

你看,认证、授权、审计,这三个A(Authentication, Authorization, Auditing)就是访问控制的三大支柱。咱们后面会花大篇幅讲。

一句话总结:访问控制就是回答三个问题——你是谁(主体)、你要干什么(操作)、对谁干(客体)。回答清楚了,安全就守住了一半。