1. 访问控制概述:从一道门禁说起
各位好,我是老赵。今天咱们开始聊《企业级访问控制体系搭建》这门课。第一讲,我想先把这个最基础的概念讲透——访问控制到底是什么。
说白了,访问控制就是一道门禁。只不过这道门,不是物理的,是逻辑的。你想想看,一个公司里,不是所有人都能进财务室,也不是所有人都能看工资单。放到系统里,道理一模一样:谁、能干什么、在什么条件下干。
我刚开始做安全那会儿,觉得这玩意儿太简单了。不就是加个权限判断嘛。后来被现实狠狠教育了一顿——一个没做好访问控制的系统,就像把公司大门钥匙复印了一万份扔大街上。嗯,咱们今天就把这个地基打牢。
什么是访问控制
访问控制,英文叫 Access Control。它的核心意思就一句话:限制主体对客体的操作权限。
举个例子。你打开一个文档管理系统,想删除一份合同。系统会先问:你是谁?你属于哪个角色?你有删除权限吗?这三个问题问完,才决定让不让你删。
这个过程,就是访问控制。它不是一个单一的技术,而是一整套策略、模型和机制的集合。
核心定义:访问控制是系统根据预设的安全策略,对主体访问客体的行为进行授权和约束的机制。它确保只有合法的用户,在合法的条件下,执行合法的操作。
为什么需要访问控制
这个问题我问过不少刚入行的朋友。有人答「为了安全」,有人答「防止数据泄露」。都对,但不够全。
我个人习惯把原因归纳为三个层面:
- 保护机密性——不该看的人看不到。比如员工的薪资数据,只有HR和财务的特定人员能看。
- 保障完整性——不该改的人改不了。比如生产环境的配置,只有运维主管能修改。
- 确保可用性——该用的人能用上。比如客服系统,客服人员必须能正常登录操作。
我在项目中遇到过一家创业公司,早期图省事,所有员工用一个超级管理员账号。后来离职员工删了数据库,公司瘫痪了两天。你说惨不惨?这就是没有访问控制的代价。
避坑指南:我曾经见过一个项目,上线前才发现所有API接口都没有做权限校验。谁都能调谁的数据。那感觉就像你家大门没锁,还贴了张纸条「欢迎光临」。所以,访问控制一定要从设计阶段就开始考虑,别等上线再补。
访问控制的核心三要素
聊了这么多,咱们得把最核心的东西拎出来。访问控制有三个要素,你记住这三个词,后面所有内容都围着它们转:主体、客体、操作。
我画了张图,帮你直观理解这三者的关系。
1. 主体(Subject)
主体就是「谁」要发起访问。它可以是:
- 用户——比如你、我、张三、李四
- 进程或服务——比如后台的定时任务、微服务A调用微服务B
- 设备——比如某个IoT传感器、打印机
这里有个容易混淆的点。我记得有一次评审代码,开发同学把「用户ID」当成了主体。其实不对。主体是发起动作的实体,而用户ID只是它的一个标识。真正的主体,是那个「能动的」东西。
2. 客体(Object)
客体就是「什么」被访问。说白了,就是被保护的对象。常见的客体有:
- 文件、文档
- 数据库表、记录
- API接口
- 内存区域
- 网络资源
你想想看,一个系统里,客体可能成千上万。怎么管理?这就是后面要讲的资源建模。现在你只要记住:客体是被动的一方,它不会主动发起任何动作。
3. 操作(Operation)
操作就是「怎么做」。主体对客体能干什么事。最常见的操作有:
| 操作类型 | 说明 | 示例 |
|---|---|---|
| 读取(Read) | 查看数据内容 | 查看订单详情 |
| 写入(Write) | 新增或修改数据 | 更新用户信息 |
| 执行(Execute) | 运行程序或脚本 | 执行报表生成任务 |
| 删除(Delete) | 移除数据或资源 | 删除过期日志 |
| 授权(Delegate) | 将权限转授给他人 | 管理员授权子管理员 |
这里有个细节。不同系统对操作的定义不一样。文件系统可能只有RWX,但业务系统里操作可以很细,比如「审批报销单」「导出报表」「重置密码」。嗯,这就是后面要讲的细粒度权限。
小技巧:我在设计权限模型时,习惯把操作分为两类:数据操作(增删改查)和功能操作(审批、导出、配置)。分开设计,后面扩展起来会轻松很多。
三要素如何协同工作
光知道三个概念还不够。你得明白它们怎么配合。
我举个例子。假设系统里有一条规则:「只有财务经理可以审核报销单」。
- 主体:用户「张三」,角色是「财务经理」
- 客体:报销单ID为 2024-001 的记录
- 操作:审核(Approve)
当张三点击「审核」按钮时,系统会做三件事:
- 确认张三的身份(认证)
- 检查张三是否有「审核报销单」的权限(授权)
- 记录这次操作(审计)
你看,认证、授权、审计,这三个A(Authentication, Authorization, Auditing)就是访问控制的三大支柱。咱们后面会花大篇幅讲。
一句话总结:访问控制就是回答三个问题——你是谁(主体)、你要干什么(操作)、对谁干(客体)。回答清楚了,安全就守住了一半。