基于角色的访问控制基础 出家如初 , 成佛有余 http://www.yeeach.com
议题 <ul><li>访问控制基础 </li></ul><ul><li>RBAC 模型 </li></ul><ul><li>基于 RBAC 的系统实现 </li></ul>
访问控制的概念和目标 <ul><li>一般概念 : </li></ul><ul><ul><li>是针对越权使用资源的防御措施 </li></ul></ul><ul><li>基本目标 : </li></ul><ul><ul><li>防止对任何资源...
主体、客体和授权 <ul><li>客体( Object ):规定需要保护的资源又称作目标 target) </li></ul><ul><li>主体( Subject ):或称为发起者 (Initiator)  是一个主动的实体规定可以访问该资源...
访问控制策略与机制 <ul><li>访问控制策略 (Access Control Policy): 访问控制策略在系统安全策略级上表示授权。是对访问如何控制 , 如何作出访问决定的高层指南 </li></ul><ul><li>访问控制机制( A...
访问控制策略 <ul><li>自主访问控制( discretionary policies) :基于身份的访问控制 IBAC(Identity Based Access Control) </li></ul><ul><li>强制访问控制 (ma...
自主访问控制( DAC ) <ul><li>基本思想 </li></ul><ul><ul><li>基于身份的访问控制 IBAC(Identity Based Access Control) </li></ul></ul><ul><ul><li>...
强制访问控制( MAC ) <ul><li>基于安全标记( security labels ) </li></ul><ul><ul><li>安全标记是限制在目标上的一组安全属性信息项。在访问控制中,一个安全标签隶属于一个用户、一个目标、一个访问...
基于角色的访问控制 RBAC <ul><li>基于角色的访问控制是一个复合的规则,可以被认为是 IBAC 和 RBAC 的变体。一个身份被分配给一个被授权的组 </li></ul><ul><li>一些特点: </li></ul><ul><ul>...
访问控制的一般策略
RBAC 与传统访问控制的差别 <ul><li>增加一层间接性带来了灵活性 </li></ul>
议题 <ul><li>访问控制基础 </li></ul><ul><li>RBAC 模型 </li></ul><ul><li>基于 RBAC 的系统实现 </li></ul>
RBAC 模型 标准 <ul><li>NIST ( The National Institute of Standards and Technology ,美国国家标准与技术研究院)标准 RBAC 模型由 4 个部件模型组成: </li></u...
RBAC0 ( Core RBAC ) <ul><li>RBAC0 定义了能构成一个 RBAC 控制系统的最小的元素集合。 </li></ul><ul><li>五个基本数据元素 : </li></ul><ul><ul><li>用户 users(...
RBAC0 ( Core RBAC ) <ul><li>用户( User ):访问系统中的资源的主体,一般为人,也可为 Agent 等智能程序 </li></ul><ul><li>权限( Permission ):对计算机中某些受保护的资源的访...
RBAC0 ( Core RBAC )
RBAC1 ( Hierarchal RBAC ) <ul><li>RBAC1 引入角色间的继承关系 。角色的结构化分层是反映一个组织的授权和责任的自然 方式 </li></ul><ul><li>角色层次图( Role Hierarchies ...
RBAC1 ( Hierarchal RBAC )
RBAC1 ( Hierarchal RBAC ) 示例
RBAC2 ( Constraint RBAC ) <ul><li>RBAC2 模型中添加了责任分离 ( Separation of Duty ) 关系 </li></ul><ul><li>RBAC2 的约束规定了权限被赋予角色时 , 或角色被...
Static Separation of Duty <ul><ul><li>静态职责分离( Static Separation of Duty  ):指定角色的互斥关系,用于用户指派阶段。避免同一用户拥有互斥的角色 </li></ul></ul...
Static Separation of Duty
Dynamic Separation of Duty  <ul><ul><li>动态职责分离( Dynamic SD ):指定角色的互斥关系,用于角色激活阶段。允许同一用户拥有某些互斥的角色,但是不允许该用户同时激活互斥的角色。 </li></...
Dynamic Separation of Duty
RBAC 模型的优点 <ul><li>模型的优点 </li></ul><ul><ul><li>通过角色配置用户及权限,增加了灵活性 </li></ul></ul><ul><ul><li>支持多管理员的分布式管理,管理比较方便 </li></ul...
议题 <ul><li>访问控制基础 </li></ul><ul><li>RBAC 模型 </li></ul><ul><li>基于 RBAC 的系统实现 </li></ul>
组织机构模型
组织机构模型的业务视角 <ul><li>业务视角: </li></ul><ul><ul><li>核心元素:机构(部门 ) 、岗位、岗位权力、员工 </li></ul></ul><ul><ul><li>组织机构树:任何组织机构的层级关系形成了一棵...
组织机构模型的系统视角 <ul><li>系统视角:  </li></ul><ul><ul><li>核心元素:组织机构、角色、权限、用户 ( 操作员 ) 、用户组 </li></ul></ul><ul><ul><li>组织机构树:尤其是在处理集团...
功能权限 <ul><li>功能权限一般指操作权限 </li></ul><ul><li>功能权限解决能做什么的问题 </li></ul><ul><li>粗略说来,界面上用于功能操作的按钮的权限都可以归为功能权限,包括: </li></ul><ul...
数据权限 <ul><li>数据权限主要是对数据记录的操作权限 </li></ul><ul><li>数据权限解决能够对什么样数据进行操作的问题 </li></ul><ul><li>例如: </li></ul><ul><ul><li>订单记录包括如...
人员权限设计典型问题:性能 <ul><li>问题 </li></ul><ul><ul><li>在人员权限的角色、资源中涉及树的遍历,性能上存在较大瓶颈 </li></ul></ul><ul><li>解决方案 </li></ul><ul><ul>...
人员权限设计典型问题:数据权限 <ul><li>问题 </li></ul><ul><ul><li>目前系统实现的数据权限都写死在代码中,导致可维护性很差 </li></ul></ul><ul><li>解决方案 </li></ul><ul><ul...
人员权限的一个设计实例 <ul><li>一个曾经的项目的设计实例 </li></ul>
Kasai : RBAC 的开源实现 <ul><li>What is Kasai? </li></ul><ul><ul><li>Kasai is a 100% Java based authentication and authorizatio...
开源项目 <ul><li>Kasai </li></ul><ul><ul><li>http://kasai.manentiasoftware.com / </li></ul></ul><ul><ul><li>Open Source Identi...
请提意见!
Upcoming SlideShare
Loading in …5
×

Role Based Access Control Fundamental

3,369 views

Published on

讲解了基于RBAC模型的系统实现基础知识

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,369
On SlideShare
0
From Embeds
0
Number of Embeds
378
Actions
Shares
0
Downloads
95
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Role Based Access Control Fundamental

  1. 1. 基于角色的访问控制基础 出家如初 , 成佛有余 http://www.yeeach.com
  2. 2. 议题 <ul><li>访问控制基础 </li></ul><ul><li>RBAC 模型 </li></ul><ul><li>基于 RBAC 的系统实现 </li></ul>
  3. 3. 访问控制的概念和目标 <ul><li>一般概念 : </li></ul><ul><ul><li>是针对越权使用资源的防御措施 </li></ul></ul><ul><li>基本目标 : </li></ul><ul><ul><li>防止对任何资源(如计算资源、通信资源或信息资源)进行未授权的访问。从而使计算机系统在合法范围内使用;决定用户能做什么,也决定代表一定用户利益的程序能做什么 </li></ul></ul><ul><li>未授权的访问包括 </li></ul><ul><ul><li>未经授权的使用、泄露、修改、销毁信息以及颁发指令等 </li></ul></ul><ul><ul><li>非法用户进入系统 </li></ul></ul><ul><ul><li>合法用户对系统资源的非法使用 </li></ul></ul>
  4. 4. 主体、客体和授权 <ul><li>客体( Object ):规定需要保护的资源又称作目标 target) </li></ul><ul><li>主体( Subject ):或称为发起者 (Initiator) 是一个主动的实体规定可以访问该资源的实体通常指用户或代表用户执行的程序 </li></ul><ul><li>授权( Authorization) : 规定可对该资源执行的动作例如读写执行或拒绝访问 </li></ul><ul><li>一个主体为了完成任务可以创建另外的主体这些子主体可以在网络上不同的计算机上运行并由父主体控制它们; </li></ul><ul><li>主客体的关系是相对的 </li></ul>
  5. 5. 访问控制策略与机制 <ul><li>访问控制策略 (Access Control Policy): 访问控制策略在系统安全策略级上表示授权。是对访问如何控制 , 如何作出访问决定的高层指南 </li></ul><ul><li>访问控制机制( Access Control Mechanisms): 是访问控制策略的软硬件低层实现 </li></ul><ul><li>访问控制机制与策略独立可允许安全机制的重用 </li></ul><ul><li>安全策略之间没有更好的说法 , 只是一种可以比一种提供更多的保护 , 应根据应用环境灵活使用 </li></ul>
  6. 6. 访问控制策略 <ul><li>自主访问控制( discretionary policies) :基于身份的访问控制 IBAC(Identity Based Access Control) </li></ul><ul><li>强制访问控制 (mandatory policies), 基于规则的访问控制 RBAC ( Rule Based Access Control ) </li></ul><ul><li>基于角色的访问控制 RBAC ( Role Based Access Control ) </li></ul>
  7. 7. 自主访问控制( DAC ) <ul><li>基本思想 </li></ul><ul><ul><li>基于身份的访问控制 IBAC(Identity Based Access Control) </li></ul></ul><ul><ul><li>对象( object )的创建者为其所有者( owner ),可以完全控制该对象 </li></ul></ul><ul><ul><li>对象所有者有权将对于该对象的访问权限授予他人( grantee ) </li></ul></ul><ul><li>不同的 DAC 模型 </li></ul><ul><ul><li>Grantee 得到的权限能否转交他人? </li></ul></ul><ul><ul><ul><li>Strict DAC: grantee 不能授权他人 </li></ul></ul></ul><ul><ul><ul><li>Liberal DAC: grantee 可以授权他人。 根据 grantee 可以继续授权的深度可以分为一级的和多级的 </li></ul></ul></ul><ul><ul><li>对象的所有权可否变更? </li></ul></ul><ul><ul><li>何人可进行权力的吊销( revocation )? </li></ul></ul><ul><li>存在的问题 </li></ul><ul><ul><li>不易控制权限的传递 </li></ul></ul><ul><ul><li>容易引起权限的级联吊销 </li></ul></ul>
  8. 8. 强制访问控制( MAC ) <ul><li>基于安全标记( security labels ) </li></ul><ul><ul><li>安全标记是限制在目标上的一组安全属性信息项。在访问控制中,一个安全标签隶属于一个用户、一个目标、一个访问请求或传输中的一个访问控制信息 </li></ul></ul><ul><ul><li>最通常的用途是支持多级访问控制策略。在处理一个访问请求时,目标环境比较请求上的标签和目标上的标签,应用策略规则如( Bell Lapadula 规则)决定是允许还是拒绝访问 </li></ul></ul><ul><ul><li>基本假定( tranquility ) </li></ul></ul><ul><ul><li>主体和客体的安全标记一旦指定,不再改变 </li></ul></ul><ul><li>存在的问题 </li></ul><ul><ul><li>配置的粒度大 </li></ul></ul><ul><ul><li>缺乏灵活性 </li></ul></ul>
  9. 9. 基于角色的访问控制 RBAC <ul><li>基于角色的访问控制是一个复合的规则,可以被认为是 IBAC 和 RBAC 的变体。一个身份被分配给一个被授权的组 </li></ul><ul><li>一些特点: </li></ul><ul><ul><li>责任分离 (separation of duties) </li></ul></ul><ul><ul><li>角色分层 (role hierarchies) </li></ul></ul><ul><ul><li>角色激活 (role activation) </li></ul></ul><ul><ul><li>用户角色关系的约束 (constraints on user/role membership) </li></ul></ul>
  10. 10. 访问控制的一般策略
  11. 11. RBAC 与传统访问控制的差别 <ul><li>增加一层间接性带来了灵活性 </li></ul>
  12. 12. 议题 <ul><li>访问控制基础 </li></ul><ul><li>RBAC 模型 </li></ul><ul><li>基于 RBAC 的系统实现 </li></ul>
  13. 13. RBAC 模型 标准 <ul><li>NIST ( The National Institute of Standards and Technology ,美国国家标准与技术研究院)标准 RBAC 模型由 4 个部件模型组成: </li></ul><ul><ul><li>1 .基本模型 RBAC0 ( Core RBAC ) </li></ul></ul><ul><ul><li>2 .角色分级模型 RBAC1 ( Hierarchal RBAC ) </li></ul></ul><ul><ul><li>3 .角色限制模型 RBAC2 ( Constraint RBAC ) </li></ul></ul><ul><ul><li>4 .统一模型 RBAC3 ( Combines RBAC ) </li></ul></ul><ul><ul><li>http://csrc.nist.gov/groups/SNS/rbac/ </li></ul></ul>
  14. 14. RBAC0 ( Core RBAC ) <ul><li>RBAC0 定义了能构成一个 RBAC 控制系统的最小的元素集合。 </li></ul><ul><li>五个基本数据元素 : </li></ul><ul><ul><li>用户 users(USERS) 、角色 roles(ROLES) 、目标 objects(OBS) 、操作 operations(OPS) 、许可权 permissions(PRMS) </li></ul></ul><ul><ul><li>关系 </li></ul></ul><ul><ul><li>多对多,用户被分配一定角色,角色被分配一定的许可权 </li></ul></ul><ul><li>会话 sessions </li></ul><ul><ul><li>是用户与激活的角色集合之间的映射 </li></ul></ul>
  15. 15. RBAC0 ( Core RBAC ) <ul><li>用户( User ):访问系统中的资源的主体,一般为人,也可为 Agent 等智能程序 </li></ul><ul><li>权限( Permission ):对计算机中某些受保护的资源的访问许可,是一个广义概念 </li></ul><ul><ul><li>可以将权限理解成一个二元组( Operation , Object ) </li></ul></ul><ul><li>角色( Role ):应用领域内一种权力和责任的语义综合体 </li></ul><ul><ul><li>可以是一个抽象概念,也可以是对应于实际系统中的特定语义体,比如组织内部的职务等 </li></ul></ul><ul><ul><li>针对角色属性的不同,某些模型中将角色进一步细分为普通角色( Regular Role )和管理员角色( Administrative Role ) </li></ul></ul><ul><li>用户指派( User Assignment ):用户集到角色集的多对多的关系 </li></ul><ul><li>权限指派( Permission Assignment ):权限集到角色集的多对多的关系 </li></ul><ul><li>会话( Session ):对应于一个用户以及一组激活的角色。用户每次必须通过建立会话来激活角色,得到相应的访问权限 </li></ul>
  16. 16. RBAC0 ( Core RBAC )
  17. 17. RBAC1 ( Hierarchal RBAC ) <ul><li>RBAC1 引入角色间的继承关系 。角色的结构化分层是反映一个组织的授权和责任的自然 方式 </li></ul><ul><li>角色层次图( Role Hierarchies ):在角色继承关系下,角色集实际上构成了一个层次图 </li></ul><ul><li>角色间的继承关系可分为一般继承关系和受限继承关系。 </li></ul><ul><ul><li>一般继承关系 : 仅要求角色继承关系是一个绝对偏序关系,允许角色间的多继承。 </li></ul></ul><ul><ul><li>受限继承关系 : 则进一步要求角色继承关系是一个树结构,实现角色间的单继承。 </li></ul></ul>
  18. 18. RBAC1 ( Hierarchal RBAC )
  19. 19. RBAC1 ( Hierarchal RBAC ) 示例
  20. 20. RBAC2 ( Constraint RBAC ) <ul><li>RBAC2 模型中添加了责任分离 ( Separation of Duty ) 关系 </li></ul><ul><li>RBAC2 的约束规定了权限被赋予角色时 , 或角色被赋予用户时 , 以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。 </li></ul><ul><li>分类: </li></ul><ul><ul><li>静态职责分离( Static Separation of Duty ) </li></ul></ul><ul><ul><li>动态职责分离( Dynamic Separation of Duty ) </li></ul></ul>
  21. 21. Static Separation of Duty <ul><ul><li>静态职责分离( Static Separation of Duty ):指定角色的互斥关系,用于用户指派阶段。避免同一用户拥有互斥的角色 </li></ul></ul><ul><ul><li>SSD 定义了一个用户角色分配的约束关系,一个用户不可能同时分配 SSD 中的两个角色 </li></ul></ul><ul><ul><li>优点:实现简单,角色互斥语义关系清楚,便于管理 </li></ul></ul><ul><ul><li>缺点:不够灵活,不能处理某些实际情况 </li></ul></ul>
  22. 22. Static Separation of Duty
  23. 23. Dynamic Separation of Duty <ul><ul><li>动态职责分离( Dynamic SD ):指定角色的互斥关系,用于角色激活阶段。允许同一用户拥有某些互斥的角色,但是不允许该用户同时激活互斥的角色。 </li></ul></ul><ul><ul><li>优点:更灵活,直接与会话挂钩,适应实际管理需要 </li></ul></ul><ul><ul><li>缺点:实现复杂,不易管理 </li></ul></ul>
  24. 24. Dynamic Separation of Duty
  25. 25. RBAC 模型的优点 <ul><li>模型的优点 </li></ul><ul><ul><li>通过角色配置用户及权限,增加了灵活性 </li></ul></ul><ul><ul><li>支持多管理员的分布式管理,管理比较方便 </li></ul></ul><ul><ul><li>支持由简到繁的层次模型,适合各种应用需要 </li></ul></ul><ul><ul><li>完全独立于其它安全手段,是策略中立的( policy-neutral ) </li></ul></ul>
  26. 26. 议题 <ul><li>访问控制基础 </li></ul><ul><li>RBAC 模型 </li></ul><ul><li>基于 RBAC 的系统实现 </li></ul>
  27. 27. 组织机构模型
  28. 28. 组织机构模型的业务视角 <ul><li>业务视角: </li></ul><ul><ul><li>核心元素:机构(部门 ) 、岗位、岗位权力、员工 </li></ul></ul><ul><ul><li>组织机构树:任何组织机构的层级关系形成了一棵树,姑且叫组织机构树 </li></ul></ul><ul><ul><li>岗位树:与组织机构的树对应,每一个树节点都设有相应的岗位。姑且叫岗位树 </li></ul></ul><ul><ul><li>岗位权力:某个岗位具有相对的权责(权力、责任) </li></ul></ul><ul><ul><li>员工:员工定岗为某个岗位,因岗设人而非因人设岗 </li></ul></ul>
  29. 29. 组织机构模型的系统视角 <ul><li>系统视角: </li></ul><ul><ul><li>核心元素:组织机构、角色、权限、用户 ( 操作员 ) 、用户组 </li></ul></ul><ul><ul><li>组织机构树:尤其是在处理集团、代理商等多层级关系结构 </li></ul></ul><ul><ul><li>系统角色树:参考 RBAC 模型中的角色分层、继承关系 </li></ul></ul><ul><ul><li>资源树:在系统中所要授权的资源 </li></ul></ul><ul><ul><ul><li>例子:一级菜单 -> 二级菜单 -> 按钮 </li></ul></ul></ul>
  30. 30. 功能权限 <ul><li>功能权限一般指操作权限 </li></ul><ul><li>功能权限解决能做什么的问题 </li></ul><ul><li>粗略说来,界面上用于功能操作的按钮的权限都可以归为功能权限,包括: </li></ul><ul><ul><li>菜单项:系统管理菜单、账户管理菜单 </li></ul></ul><ul><ul><li>功能操作按钮(与具体数据记录操作无关) :增加、删除、修改、查询 </li></ul></ul>
  31. 31. 数据权限 <ul><li>数据权限主要是对数据记录的操作权限 </li></ul><ul><li>数据权限解决能够对什么样数据进行操作的问题 </li></ul><ul><li>例如: </li></ul><ul><ul><li>订单记录包括如下信息:订单号、客户名、商户名、订单金额、创建时间、代理商佣金、手续费、状态 </li></ul></ul><ul><ul><li>销售只能够看见属于自己商户的所有数据 </li></ul></ul><ul><ul><li>客服只能够看见所有订单的如下属性:订单号、客户名、订单金额、创建时间、状态 </li></ul></ul><ul><ul><li>财务能够查看所有订单的所有信息 </li></ul></ul>
  32. 32. 人员权限设计典型问题:性能 <ul><li>问题 </li></ul><ul><ul><li>在人员权限的角色、资源中涉及树的遍历,性能上存在较大瓶颈 </li></ul></ul><ul><li>解决方案 </li></ul><ul><ul><li>LDAP </li></ul></ul><ul><ul><li>缓存 </li></ul></ul><ul><ul><li>key-value store </li></ul></ul><ul><ul><li>数据冗余 </li></ul></ul>
  33. 33. 人员权限设计典型问题:数据权限 <ul><li>问题 </li></ul><ul><ul><li>目前系统实现的数据权限都写死在代码中,导致可维护性很差 </li></ul></ul><ul><li>解决方案 </li></ul><ul><ul><li>通过动态生成 SQL 来解决 </li></ul></ul><ul><ul><ul><li>ibastis 配置文件方式 </li></ul></ul></ul><ul><ul><ul><li>将数据权限作为细粒度的资源,在资源表、权限表中设定 </li></ul></ul></ul><ul><ul><ul><li>使用单独的数据权限表来维护 </li></ul></ul></ul><ul><ul><li>脚本语言: OGNL 、 BeanShell 、 Groovy </li></ul></ul>
  34. 34. 人员权限的一个设计实例 <ul><li>一个曾经的项目的设计实例 </li></ul>
  35. 35. Kasai : RBAC 的开源实现 <ul><li>What is Kasai? </li></ul><ul><ul><li>Kasai is a 100% Java based authentication and authorization framework. It allows you to integrate into your application a granular, complete and manageable permission scheme. The goal of the framework is to provide a simple-to-use-yet-powerful security environment for multi-user applications. </li></ul></ul>
  36. 36. 开源项目 <ul><li>Kasai </li></ul><ul><ul><li>http://kasai.manentiasoftware.com / </li></ul></ul><ul><ul><li>Open Source Identity Management Solutions Written in Java </li></ul></ul><ul><ul><li>http://www.manageability.org/blog/stuff/single-sign-on-in-java </li></ul></ul><ul><li>Spring Security ( aceig security ) </li></ul><ul><ul><li>http://static.springsource.org/spring-security/site / </li></ul></ul>
  37. 37. 请提意见!

×