温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

什么是细粒度访问控制

发布时间:2026-10-18 10:47:17 来源:亿速云 阅读:85 作者:小樊 栏目:数据库

细粒度访问控制(Fine-Grained Access Control,FGAC)是指在信息系统或应用中,根据用户身份、角色、上下文环境以及资源的具体属性,对“谁能在什么条件下对哪些数据的哪一部分进行什么操作”进行非常精细、灵活的控制,而不仅仅是“有/无权限”的粗粒度判断。


一、与“粗粒度访问控制”的区别

维度 粗粒度访问控制 细粒度访问控制
控制对象 整个系统、模块、功能菜单 具体数据行、字段、记录
示例 “能否访问报表系统” “能否查看某客户表中金额 > 100 万的记录”
典型模型 RBAC(角色权限) ABAC / PBAC(属性/策略权限)
灵活度 低 高

二、细粒度访问控制的常见维度

细粒度通常体现在以下几个方面:

  1. 用户维度
    • 用户ID、部门、岗位、角色
  2. 资源维度
    • 数据库行(如:只能看自己部门的订单)
    • 字段(如:隐藏薪资字段)
    • 文件(如:只能下载只读版本)
  3. 操作维度
    • 读 / 写 / 删 / 导出 / 打印
  4. 环境维度(上下文)
    • 时间(工作时间)
    • 地点(内网/IP)
    • 设备(公司电脑)
    • 风险等级(异常登录禁止导出)

三、常见实现模型

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

  • 角色 → 权限
  • 适合功能级权限
  • 对数据级权限支持有限

2. ABAC(基于属性的访问控制)✅ 细粒度常用

  • 策略示例:

    若 用户.部门 = 资源.部门 且 用户.角色 = “经理” 且 时间 ∈ 工作时间
    则 允许 读取 资源.金额字段

3. PBAC(基于策略的访问控制)

  • 使用独立策略引擎(如 OPA、Casbin)
  • 策略与代码解耦,便于动态变更

四、典型应用场景

  • 多租户 SaaS:租户间数据隔离
  • 金融系统:不同支行只能看本行客户
  • 医疗系统:医生只看本人患者病历
  • 数据中台:字段级脱敏与权限控制
  • API 网关:按用户属性限制接口返回字段

五、简单示例(数据库行级权限)

-- 只返回当前用户所在部门的订单
SELECT *
FROM orders
WHERE department_id = :current_user_department;

或使用视图:

CREATE VIEW user_orders AS
SELECT * FROM orders
WHERE owner_id = CURRENT_USER;

六、总结一句话

细粒度访问控制 = 在“正确的时间、正确的环境、正确的条件下,对正确数据的最小集合授予最小必要权限”。

如果你愿意,我也可以结合**具体系统(如数据库 / API / 前端 / Kubernetes)**给你讲实现方案。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手