问题背景
原系统用户权限管理依赖手动配置,每新增一个角色需IT人员人工修改数据库字段。2023年Q2因权限配置错误导致3起业务数据泄露事件,平均修复时间4.2小时。
副高职称计算机要求在此强调:问题描述必须量化、可追溯、有业务影响。
解决方案
采用RBAC(基于角色的访问控制)模型,设计三级权限体系:
- 角色层:管理员、审核员、普通用户
- 权限层:增删改查(CRUD)
- 资源层:订单、客户、报表
通过继承机制减少配置项(如管理员自动继承审核员权限)。
实施细节
INSERT INTO role_inheritance (parent_role, child_role)
VALUES
('admin', 'auditor'),
('auditor', 'user');
CREATE OR REPLACE FUNCTION check_permission(user_id INT, resource VARCHAR, action VARCHAR)
RETURNS BOOLEAN AS $$
BEGIN
RETURN EXISTS (
SELECT 1 FROM role_permission rp
JOIN user_role ur ON rp.role_id = ur.role_id
WHERE ur.user_id = check_permission.user_id
AND rp.resource = check_permission.resource
AND (rp.action = check_permission.action
OR rp.action = 'admin')
);
END; $$ LANGUAGE plpgsql;
说明:采用函数封装而非视图,避免SQL注入风险;支持动态权限热加载(每10分钟刷新缓存)。