Solaris上的基于角色的权限控制
Solaris上的基于角色的权限控制(RBAC:Role Based Access Control)
RBAC是Solaris上的一个新的安全特性,主要用来控制那些通常只有超级用户才有权限的任务。Sun的文档可以从下面这些链接找到:
Solaris 9 System Administration Guide: Security Services -- Role-Based Access Control http://docs.sun.com/app/docs/doc/817-0365/6mg5vpmdl?a=view
一、用RBAC替代简单的超级用户模式
通常在Unix系统中,root用户(也就是所说的超级用户)是全能的,他可以读取写入任何文件,可以运行所有程序,也可以杀死任何进程。实际上,任何成为超级用户的人可以修改防火墙,改变监察记录,读取工资报表和其它机密记录,以及关闭整个网络。
RBAC(Role Based Access Control 基于角色的权限控制)给这种要么100分要么0分的超级用户模式提供了另一种选择。RBAC使用了最低权限原则,也就是说用户应该得到所需的权限,但是不应该得到其它不需要的权限。RBAC允许一个企业或机构,分散超级用户的能力,分配给特殊的用户帐号。这些用户帐号被称为roles(角色)。这些角色可以根据工作所需分配给特定的人。
设置角色的灵活性给企业和其它Solaris的使用者提供了多种可能的安全政策。有三个很容易设置的基本角色如下:
* Primary Administrator (主要管理员) --一个强有力的角色,等同于root。
* System Administrator (系统管理员) -- 一个和安全性无关的拥有相对较少权力的角色,不能设置或改变密码。
* Operator (操作员) -- 一个较低级的管理角色,主要进行备份,恢复,打印管理等操作。
一个机构可根据自己的安全需要设置角色,不需要一定设置上面所说的这些角色。可以在某些领域,例如安全、网络、防火墙管理等领域,设置特定的角色。另一种策略是增加一个单一的强有力的管理员角色,另外给那些被允许修理部分系统的用户设置一个高级用户角色。
二、Solaris RBAC组成部分
在Solaris操作系统的RBAC用户模式中,用户登陆并担任分配给他们的角色,允许他们使用限定的管理图形工具和命令。RBAC模式在Solaris 操作系统中加入了下面这些组成部分:
* Privileged Application (有特权的应用程序) -- 一个可以改写系统控制、检查特定用户、用户组和授权(authorizations)的程序。
* Role (角色) -- 运行那些只有授权用户才能运行的特权程序的一个特殊身份。
* Authorization (授权) -- 分配给一个角色或用户(或者权限描述文件(rights profile))的许可,用来执行一系列通常在安全机制下被禁止的行为。
* Rights Profile (权限素描) -- 可以分配给一个角色或用户的定义文件。一个权限素描由授权(authorizations), 带有setuid或setgid许可限制的命令(commands),以及其它权限素描组成。
下表显示了RBAC各组成部分之间的关系:(Figure 1)
角色 <-- 用户
^
|---------------
权限素描 <-- 授权
^
|
命令
^
|
安全属性
在RBAC里面, 用户们被分配了角色。角色具有权限素描和授权所定义的能力。授权通常来说由权限素描定义,但是也可以直接分配给角色。
--------
注意事项:权限素描和授权也可以直接分配给用户。但是在实际操作上这种用法应尽量避免,因为它可能由于用户的疏忽而导致权限的滥用。
--------
带有安全属性的命令可以被分配给权限素描。安全属性指真实的或者执行上的UID或 GID属性。
下图用操作员角色(operator)和打印管理权限素描作为例子显示了RBAC的组成部分之间的关系。
角色 用户
Operator johnDoe
权限素描 授权
Operator solaris.admin.printer.read
Printer management solaris.admin.printer.modify
Media backup solaris.admin.printer.delete
... ...
带安全属性的命令
/usr/sbin/accept: euid=0
/usr/ucb/lpq: euid=lp
操作员角色被用来维护打印机和执行媒体备份。用户johnDoe被分配了操作员这个角色,提供操作员密码之后可以担任这个角色。
操作员权限被赋予操作员角色。操作员权限素描包含两部分互为补充的内容,打印机管理和媒体备份,反映出操作员角色的主要任务。
打印机管理权限主要是用来管理打印机,打印后台程序(daemons),和打印任务序列(spoolers)。打印管理权限被分配了三个特权 (authorizations): solaris.admin.printer.read, solaris.admin.printer.delete, solaris.admin.printer.modify。这三个授权允许用户管理打印序列内的信息。打印机管理也包含了一些具有安全属性的命令,例如带euid=0属性的/usr/sbin/accept,以及带euid=lp属性的/usr/ucb/lpq。
三、特权应用程序
那些可以免除系统控制的应用程序被称为特权应用程序。
三.一、检查UIDs和GIDs的应用程序
需要root权限或者其它特殊用户(User ID)或用户组(Group ID)权限的应用程序在Unix中已经存在很久了。RBAC权限素描机制使你可以指定UID或GID给特定的命令。你可以在权限素描里独立列出某个带执行安全属性的命令,而不是转换这个命令所属的用户(ID)。一个拥有这种权限的用户或者角色可以运行这个程序,而不需要成为root。
IDs可以被指定为真实的或者执行上的。分配执行用户比分配真实用户好。执行用户的概念类似于文件权限位的setuid特性。然而,某些shell scripts和程序需要一个真实的root用户身份,在这种情况下,可以设置真实用户身份。例如,pkgadd命令就需要一个真实的用户身份。如果你碰到一个命令,执行用户身份不足以运行这个命令的话,你就需要授权给真实用户身份,这可以通过在SMC Right Properties对话框里,设置安全属性选项来完成。具体参见《创建或改变一个权限素描》(Creating or Changing a Right Profile) http://docs.sun.com/app/docs/doc/817-0365/6mg5vpmee?a=view .
三.二、需要授权的应用程序
RBAC另外提供了一些检查授权(Authorization)的命令。从定义上来说,root 用户拥有所有的授权,可以运行任何应用程序。到目前为止,检查授权的应用程序包括以下几类:
* 全部的Solaris Management Console套装工具
* 和batch job相关的命令,例如at, atq, batch, 和crontab等
* 面向设备的命令,例如allocate, deallocate, list_devices, 和cdrw等
三.三、配置文件的shell
授权用户可以从Solaris Management Console启动程序使用特权应用程序,也可以从profile shell运行命令行程序。一个profile shell是一个特殊种类的shell,通过它可以使用profile规定的特权应用程序。当一个用户运行su命令担任一个角色的时候,profile shell就被启动。Profile shell包括pfsh, pfcsh, 和pfksh,分别对应Bourne shell(sh), C shell(csh), 和Korn shell(ksh)。
四、RBAC角色
一个角色是一个特殊类型的用户帐号,通过它可以运行特权应用程序。角色的创建和通常的用户帐号的创建采用同样的方式,有一个home directory, groups, password 等。一个角色的能力是由权限素描(rights profile)和分配给它的授权(authorizations)来确定的。角色不可以继承。
当一个用户担任一个角色的时候,角色属性替代了用户属性。角色信息被储存在passwd, shadow, user_attr, 和audit_user数据库里面。设置角色的具体细节参见《配置推荐角色、创建角色和改变角色特性》(Configuring Recommended Rolse, Creating Roles, and Changing Role Properties) http://docs.sun.com/app/docs/doc/817-0365/6mg5vpmej?a=view#rbacref-25 .
所有担任同一角色的用户拥有同一个home directory, 在同一用户环境下操作,对文件拥有相同的权限。当用户需要担任某一角色时,可以从命令行运行su命令并提供角色名称和密码,也可以从Solaris Management Console工具里进行操作。
用户不可以直接作为角色登陆。因此,把root设置成一个角色很有用,它可以避免匿名的root登陆。(译者注:例如好几个人知道root密码的时候,或者root密码被破译的情况)。用户必须首先用自己的用户帐号登陆。一个用户不可以从一个角色直接担任另一个角色。一个用户的真实UID的活动可以一直被纪录。
Solaris 9预装软件没有预先定义好的角色。像前面描述的一样,你可以很容易地设置三个推荐的角色。
五、RBAC授权
一个授权(authorization)是一个具体的分配给角色或用户的权力。遵从RBAC的应用程序可以在分配某个应用或者特定操作之前检查一个用户的授权。这种检查代替了传统的Unix应用程序的UID=0的检查。要了解更多关于授权的内容,可以参考《授权、auth_attr 数据库和需要授权的命令》(Authorization, the auth_attr Database, and Commands That Require Authorizations) http://docs.sun.com/app/docs/doc/817-0365/6mg5vpmej?a=view#rbacref-28 .
六、RBAC 权限素描
一个RBAC权限素描(Rights Profiles)是一个系统高级权限的集合。这些权限可以分配给一个角色或者用户。一个权限素描可以包含定义了执行用户(组)或真实用户(组)的命令、授权(authorization)和其它权限素描。权限素描信息被分配在prof_attr和exec_attr数据库中。更多关于权限素描的内容,可以参考《权限素描的内容、prof_attr数据库和exec_attr数据库》(Contents of Rights Profiles, The prof_attr Database and The exec_attr Database) http://docs.sun.com/app/docs/doc/817-0365/6mg5vpmej?a=view#rbacref-26 .
七、命名服务范围
命名服务范围对于理解RBAC是一个重要的概念。一个角色可以操作的范围可以被限制在单个的主机上,也可以是所有的共用一个命名服务如NIS, NIS+, 或者LDAP的主机总和。本地本地配置文件或者分布式数据库的优先顺序可以在/etc/nsswitch.conf文件里确定。查询按得到第一个合适的响应之后就中止了。也就是说,如果权限素描在两个地方都有,则只用前面的那个。
$汗水$
页:
[1]