使用角色访问控制让Solaris服务器更安全

网络整理 - 06-30

  一角色的概述

  对于传统的Unix安全性模型超级用户拥有完全的超级用户特权而其他的用户没有足够的权限解决他们自己的问题有了基于角色的访问控制(RBAC)便可以取代传统的安全模型有了RBAC可以将超级用户的能力分成不同的包并将它们分别分配给分担管理任务的个体当使用RBAC划分超级用户特权时用户可以拥有不同程度的访问权限可以控制对其他用户特权操作的授权RBAC包括了如下特性

  角色一种特殊类型的用户账号可以用来执行一套管理任务

  在默认情况下Solaris 支持种不同的系统管理角色

  主管理员(PAPrimary Administrator)负责为其他用户分派权限并负责系统的安全问题等效于root 用户或超级用户的功能强大的角色

  系统管理员(SASystem Administrator)负责与安全无关的日常管理工作

  操作员(Operator)执行备份和设备维护操作

  PA和SA之间的区别主要取决于本地的安全策略例如尽管默认的PA角色具备添加用户和修改口令的权限而默认的SA角色并不具备修改口令的权限但在很多地方禁止SA的口令访问可能是不现实的RBAC的一个最大的好处就是它可以按照本地的需求非常方便地分配权限

  特征文件(profile)一种打包机制用特殊的属性将授权和命令分组例如使用用户和组的ID

  特征文件是用于授权的一个或一组特定的命令这些授权连接在一起形成某个角色并随后与某个用户或某些不同的用户建立关联关系我们可以为每个角色创建一个新的用户账号这些账号拥有自己的主目录和口令当执行特征文件中的命令时用户必须使用su命令进入角色账户因为这种角色用户是不允许直接登录的通过su命令访问角色账户与通过su命令访问普通账户的一个不同之处在于它们的审计功能即在通过su命令访问某个角色时它执行的所有操作连同用户的原始UID都会被记入日志这样每个访问角色的用户操作都会被明确地记入日志并进行审计

  授权一种用来授予对受限功能的访问权限的权利

  授权就是赋予某个角色执行某项操作的特权它是在/etc/security/auth_attr文件中定义的授权的定义形式与Internet的域名非常相似它的最左边为企业名称随后是依次细化的软件包和功能内容在默认情况下所有Solaris提供的软件包都是由前缀Solaris来加以识别的比如修改口令的授权就是Solarisadminusermgrpswd许多授权的划分都是十分细致的它可能只允许读访问而不允许写访问反之也是如此比如主管理员(PA)可能拥有Solarisadminusermgrread和Solarisadminusermgrwrite的授权因而可以对用户配置文件分别进行读访问和写访问操作而系统管理员(SA)虽然可能拥有Solarisadminusermgrread授权但他并没有Solarisadminusermgrwrite的授权因此他可以读用户配置文件但不能写

  二RBAC的图形模型

  在现实生活中经常提到某人扮演了什么角色在基于用户角色的用户权限管理中角色与实际的角色概念有所不同在这里角色可以看作是一组操作的集合不同的角色具有不同的操作集这些操作有系统管理员分配给角色图是RBAC的模型

  

  图 RBAC的模型

  角色权限配置文件和授权的关联如图所示授权和命令的定义关联起来构成了权限配置文件该权限配置文件再分派给不同的角色用户来使用
   

  

  

  图 角色权限配置文件和授权的关联

  在RBAC 中将角色指定给用户用户承担某种角色时便可使用此角色的功能角色从权限配置文件中获取其功能权限配置文件可以包含授权特权命令以及其他补充权限配置文件特权命令是指那些使用安全属性执行的命令图 使用操作员角色操作员权限配置文件以及打印机管理权限配置文件来说明RBAC的各种关系

  

  

  图 授权和特征文件与给予不同用户的角色的关系

  三RBAC的四个数据库

  Solaris共有四个RBAC数据库用于角色的管理下面依次介绍

  扩展的用户属性数据库(/etc/user_attr)将用户角色授权和权限配置文件相关联

  数据库user_attr是惟一需要的数据库其他数据库的使用取决于实现哪种安全功能/etc/user_attr数据库补充了passwd和shadow数据库它包含了扩展的用户属性例如授权和执行profile它也帮助你将角色分配给一个用户一个角色是一种特殊类型的用户账号允许一个用户执行一组管理任务它与一个普通的用户账号类似只是不通过登录窗口访问角色只能用su命令来访问他们的角色

  授权属性数据库(/etc/security/auth_attr)定义了授权及其授权的属性标识了相关的帮助文件

  所有的授权都被存储在/etc/security/auth_attr数据库中当直接将授权分配给用户或角色时授权被输入user_attr数据库中也可以为执行profile指定授权这些授权接下来就被分配给用户特定的特权程序能够查看授权并确定用户是否能够执行受限功能例如一个要编辑另一个用户的crontab文件的用户需要有Solarisjobsadmin授权

  权限配置文件数据库(/etc/security/prof_attr)定义权限配置文件列出权限配置文件分配的授权标识了相关的帮助文件

  权限配置被存储在prof_attr数据库中有了权限配置文件就可以使用特殊的属性将授权和命令分组并将其分配给用户或角色特殊的属性包括真正有效的UID和GID最常见的属性是将真正有效的UID设置为root

  权限执行属性数据库(/etc/security/exec_attr)定义了分配给一个权限配置文件的特权操作

  与权限配置文件相联系的执行属性就是命令命令能够使被赋予了配置文件的用户或角色运行特殊的安全属性Exec_attr文件包括了与权限配置文件相关联的一个基本命令列表

  另外nf文件提供将应用于所有用户的默认属性RBAC的几个数据库的相互关系如图所示

  

  

  图 RBAC的几个数据库的相互关系

  四RBAC几大特点

  ()访问权限与角色相关联不同的角色有不同的权用户以什么样的角色对资源进行访问决定了用户拥有的权限以及可执行何种操作

  ()角色继承角色之间可能有互相重叠的职责和权力属于不同角色的用户可能需要执行一些相同的操作RBAC 采用角色继承的概念如角色继承角色那么管理员在定义角色时就可以只设定不同于角色的属性及访问权限避免了重复定义

  ()最小权限原则即指用户所拥有的权力不能超过他执行工作时所需的权限实现最小特权原则需要分清用户的工作职责确定完成该工作的最小权限集然后把用户限制在这个权限结合的范围之内一定的角色就确定了其工作职责而角色所能完成的事物蕴涵了其完成工作所需的最小权限用户要访问信息首先必须具有相应的角色用 户无法饶过角色直接访问信息

  ()职责分离一般职责分离有两种方式静态和动态

  ()角色容量在一个特定的时间段内有一些角色只能有一定人数的用户占用在创建新的角色时应该指定角色的容量

  五总结

  基于角色的访问控制是一种方便安全高效的访问控制机制本文介绍了基于角色的访问控制(RBAC)的工作原理RBAC在Solaris 下的实现可以通过两种方法RBAC命令和SMC后边笔者会依次介绍