1、权限管理基础:什么是权限管理、权限管理的目标、常见权限模型概述

各位好,我是老刘。在密钥权限这个领域摸爬滚打了十几年,今天咱们聊聊最基础的东西——权限管理。

你可能觉得,“权限管理”不就是给用户分个角色、打个勾吗?嗯,表面看确实是这样。但我见过太多项目因为权限设计不清晰,最后出大乱子。有一次生产环境密钥被误删,原因就是某个实习生拿到了不該有的管理员权限… 从那天起我就明白,权限管理绝不是随便搞搞的事。

1.1 什么是权限管理?

说白了,权限管理就是一套控制“谁能干什么”的规则。

核心就三个要素:主体(谁)、客体(什么资源)、操作(增删改查)。

  • 主体:用户、服务账号、设备等发起请求的实体。
  • 客体:文件、数据库、API、密钥等被保护的资源。
  • 操作:读取、写入、执行、删除、授权等行为。

我个人的习惯是,每次设计系统前都会先列一张“主体–客体–操作”映射表。你想想看,如果连这个都没理清,后面谈什么安全?

一句话总结:权限管理 = 谁(Who)能对什么(What)做什么(How)。

1.2 权限管理的目标

很多新人以为权限管理只是为了“不让坏人进来”。其实不止。我归纳了四个核心目标:

目标说明我踩过的坑
机密性 未授权用户不能获取敏感信息 曾经把生产密钥配到了开发环境配置文件里,差点泄露
完整性 数据不能被未授权方篡改 一个运维脚本没加权限检查,导致配置被批量改坏
可用性 授权用户能正常访问资源 过度收紧权限导致正常业务崩溃,教训深刻
可审计性 所有操作都可以追溯 没有日志,出问题只能靠猜… 后来我逼着团队上了全链路审计
我的经验:不要只盯着“防外人”,内部权限失控才是大隐患。权限设计时,最小权限原则和职责分离必须同时考虑。

1.3 常见权限模型概述

这里我重点讲四种主流模型。你在项目中遇到的大部分场景,都能用它们覆盖。

1.3.1 DAC(自主访问控制)

资源所有者自己决定谁能访问。Linux文件权限就是典型:chmod 755 这种。自由度高,但管理成本高,很容易留下“走后门”的风险。我记得早期一个内部工具用DAC,结果每个员工都能随便改权限,最后变成一锅粥。

1.3.2 MAC(强制访问控制)

系统强制给主体和客体打安全标签,用户不能改。常用于军事、政府系统。比如 SELinux。好处是安全等级高,坏处是配置复杂,真不是一般业务能hold住的。

1.3.3 RBAC(基于角色的访问控制)

这是咱们课程的核心。把权限赋予角色,再把角色赋予用户。灵活性好,管理简单。现在大多数企业系统都在用。我所在的公司从DAC切换到RBAC后,密钥权限管理效率提升了至少3倍。

1.3.4 ABAC(基于属性的访问控制)

根据用户、资源、环境等多维属性动态判断。比如“只允许上班时间来自内网的运维工程师执行重启”。这种模型很强大,但规则引擎复杂,一般配合RBAC使用。

模型控制粒度灵活性管理成本适用场景
DAC细(按文件)高低(初期)个人系统、小团队
MAC粗(按标签)低高强安全领域
RBAC中(按角色)中中企业应用、密钥管理
ABAC细(按属性)极高高复杂动态场景
避坑提醒:我曾经在项目里直接上ABAC,结果业务规则越写越多,性能也扛不住。后来老老实实先用RBAC打底,再对特殊场景加ABAC策略。循序渐进,别想一口气吃成胖子。

下面这张图把权限管理的整体结构画出来了。你可以对照着看,方便理解各个模型的关系。

权限管理知识体系 主体(用户/服务) 客体(资源/密钥) 操作(增删改查) 核心目标:机密性·完整性·可用性·可审计性 DAC 自主访问控制 MAC 强制访问控制 RBAC 基于角色 ABAC 基于属性 RBAC是本课程重点,后续章节会深入角色设计、权限分离 以及如何在密钥分配中落地最小权限原则。

从这个图能看出来,无论选哪种模型,最终都要围绕那四个目标去落地。我个人建议:大多数场景先用RBAC,它清晰又省力。如果业务实在复杂,再在部分资源上用ABAC补丁。

回顾一下:权限管理就是给主体、客体、操作定规矩。目标就四个:机密、完整、可用、可审计。模型选型上,DAC自由但难控,MAC安全但死板,RBAC最通用,ABAC最强但别滥用。

嗯,基础概念就这些。下节课我们会直接上手搭建一个最简单的RBAC权限结构,到时候你就能感受到“角色”这个东西有多好用了。