
1) 【一句话结论】采用基于角色的访问控制(RBAC)结合细粒度权限和临时授权机制,通过数据库表设计(用户表、角色表、权限表、案件权限表、临时授权表)实现身份认证、角色绑定、权限检查及审计,确保只有授权人员(律师、客户经理)能访问特定案件或客户信息,并支持律师对客户经理的权限继承(临时授权)。
2) 【原理/概念讲解】核心是基于角色的访问控制(RBAC),按角色分配权限而非直接给用户,管理更高效。例如,所有律师属于“律师”角色,该角色拥有“案件查看、编辑”等权限;客户经理属于“客户经理”角色,仅能查看客户信息。细粒度权限针对具体案件,如案件ID为“C001”的权限仅授予“律师”角色。此外,引入临时授权机制实现权限继承:律师可通过系统界面授权客户经理查看特定案件,系统自动更新临时授权表并记录日志,授权有效期内有效,到期自动撤销。类比:学校课程权限,老师(角色)可看所有课程,但特定课程(案件)只有该课程老师(律师)能看,学生(客户经理)只能看自己的课程(客户信息),而老师可以授权学生临时看特定课程(案件)。
3) 【对比与适用场景】
4) 【示例】数据库表结构及访问流程:
用户登录:
1. 输入凭证(密码+双因素认证),验证身份(ID)。
2. 获取用户角色(如“律师”)。
3. 检查临时授权:查询temp_auth表,若存在当前用户对当前案件的授权,则优先使用临时权限。
4. 查询案件权限表:若案件ID在角色允许的权限列表中(包括临时授权),返回数据;否则拒绝,记录日志。
例如:
张律师(角色=律师)访问案件C001:
- 无临时授权,查询case_permission:案件C001允许角色=律师,返回详情。
李经理(角色=客户经理)访问案件C001:
- 查询case_permission:案件C001不允许角色=客户经理,拒绝访问。
张律师授权李经理查看案件C001(1周):
- 系统插入temp_auth记录(李经理、C001、当前时间+7天、张律师)。
- 李经理登录后访问C001:优先使用临时授权,返回数据。
5) 【面试口播版答案】面试官您好,针对法律数据敏感性和合规要求,我会设计一个基于角色的访问控制(RBAC)方案,结合细粒度权限和临时授权机制。首先,身份认证:用户登录时通过密码+双因素认证验证身份,绑定角色(如律师、客户经理)。权限分级:律师角色可访问所有案件信息,客户经理仅能查看客户信息。具体到案件,通过案件ID与用户角色匹配数据库中的案件权限表,比如律师能访问案件ID1-1000,客户经理无权。同时,支持律师授权客户经理临时查看特定案件,系统会记录授权的起始时间和有效期,到期自动撤销。所有访问操作都会记录审计日志,包括用户、时间、操作、案件ID,用于合规审计。这样能确保只有授权人员访问特定信息,并支持权限继承,符合敏感数据合规要求。
6) 【追问清单】
7) 【常见坑/雷区】