本章介绍了有关 RBAC 的参考资料。以下是本章中参考信息的列表:
有关使用 RBAC 的信息,请参见第 9 章,使用基于角色的访问控制(任务)。有关概述信息,请参见基于角色的访问控制(概述)。
本节介绍了一些典型的权限配置文件。权限配置文件可以包括授权、带有安全属性的命令,以及补充权限配置文件。权限配置文件根据功能的强弱从高到低列出。有关如何将权限配置文件分配给站点中角色的建议,请参见如何规划 RBAC 实现。
主管理员权限配置文件-在一个配置文件中提供了超级用户的功能。
系统管理员权限配置文件-提供可以执行与安全性无关的大多数任务的配置文件。此配置文件包括一些其他配置文件以创建功能强大的角色。
操作员权限配置文件-提供有限的功能以管理文件和脱机介质。此配置文件包括用于创建简单角色的补充权限配置文件。
打印机管理权限配置文件-提供有限数量的命令和授权以处理打印。此配置文件是涉及单个管理区域的数个配置文件之一。
基本 Solaris 用户权限配置文件-使用此配置文件,用户可以在安全策略的限定范围内使用系统。缺省情况下,会在 policy.conf 文件中列出此配置文件。
所有权限配置文件-为角色提供访问不具有安全属性的命令的权限。
每个权限配置文件都具有关联的帮助文件。帮助文件以 HTML 形式提供,是可自定义的。这些文件驻留在 /usr/lib/help/auths/locale/C 目录中。
将主管理员权限配置文件指定给系统上功能最强的角色。拥有主管理员权限配置文件的角色具有超级用户功能。
solaris.* 授权有效地指定由 Solaris 软件提供的所有授权。
通过 solaris.grant 授权,角色可以为任何权限配置文件、角色或用户指定任何授权。
命令指定 *:uid=0;gid=0 提供了使用 UID=0 和 GID=0 运行任何命令的功能。
如有必要,可以为站点自定义帮助文件 RtPriAdmin.html。帮助文件存储在 /usr/lib/help/auths/locale/C 目录中。
另请注意,如果主管理员权限配置文件与站点的安全策略不一致,则可以修改配置文件或者根本就不指定配置文件。但是,需要在一个或多个其他权限配置文件中处理主管理员权限配置文件中的安全功能。然后将这些权限配置文件指定给角色。
表 10–1 主管理员权限配置文件的内容
目的 |
内容 |
---|---|
执行所有管理任务 |
命令: *:uid=0;gid=0 授权:solaris.*、solaris.grant 帮助文件: RtPriAdmin.html |
系统管理员权限配置文件适用于系统管理员角色。由于系统管理员不具有主管理员具有的广泛功能,因此不使用通配符。相反,此配置文件是一组不涉及安全性的独立的补充管理权限配置文件。显示其中一个补充权限配置文件中带有安全属性的命令。
请注意,将在补充权限配置文件列表的末尾指定所有权限配置文件。
表 10–2 系统管理员权限配置文件的内容
目的 |
内容 |
---|---|
执行大多数非安全性的管理任务 |
补充权限配置文件:审计查看、打印机管理、计时程序管理、设备管理、文件系统管理、邮件管理、维护和修复、介质备份、介质恢复、名称服务管理、网络管理、对象访问管理、进程管理、软件安装、用户管理、所有 帮助文件: RtSysAdmin.html |
补充配置文件之一中的命令 |
对象访问管理权限配置文件,solaris 策略: /usr/bin/chgrp:privs=file_chown、 /usr/bin/chmod:privs=file_chown、/usr/bin/chown:privs=file_chown 、/usr/bin/setfacl:privs=file_chown suser 策略: /usr/bin/chgrp:euid=0、/usr/bin/chmod:euid=0、/usr/bin/chown:euid=0、 /usr/bin/getfacl:euid=0、/usr/bin/setfacl:euid=0 |
操作员权限配置文件是一个功能较弱的配置文件,提供执行备份和打印机维护的功能。恢复文件的功能与安全性相关更密切。因此,在此配置文件中,缺省值将不包括恢复文件的功能。
表 10–3 操作员权限配置文件的内容
目的 |
内容 |
---|---|
执行简单的管理任务 |
补充权限配置文件:打印机管理、介质备份、所有 帮助文件: RtOperator.html |
打印机管理是适用于特定任务区域的典型权限配置文件。此配置文件包括授权和命令。下表显示了部分命令列表。
表 10–4 打印机管理权限配置文件的内容
目的 |
内容 |
---|---|
管理打印机、守护进程和假脱机 |
授权:solaris.admin.printer.delete、solaris.admin.printer.modify、solaris.admin.printer.read 命令: /usr/bin/cancel:euid=lp;uid=lp , /usr/bin/lpset:egid=14, /usr/bin/lpstat:euid=0 , /usr/lib/lp/local/lpadmin:uid=lp;gid=8, /usr/lib/lp/lpsched:uid=0 , /usr/sbin/lpadmin:egid=14;uid=lp;gid=8, /usr/sbin/lpfilter:euid=lp;uid=lp, /usr/ucb/lprm:euid=0 帮助文件: RtPrntMngmnt.html |
缺省情况下,会通过 policy.conf 文件将基本 Solaris 用户权限配置文件自动指定给所有用户。此配置文件提供了正常操作中有用的基本授权。请注意,基本 Solaris 用户权限配置文件提供的便利必须与站点的安全要求平衡。需要更严格安全性的站点可能希望从 policy.conf 文件中删除此配置文件。
表 10–5 基本 Solaris 用户权限配置文件的内容
目的 |
内容 |
---|---|
自动将权限指定给所有用户 |
授权:solaris.profmgr.read、solaris.jobs.users、solaris.mail.mailq、solaris.admin.usermgr.read、solaris.admin.logsvc.read、solaris.admin.fsmgr.read、solaris.admin.serialmgr.read、solaris.admin.diskmgr.read、solaris.admin.procmgr.user、solaris.compsys.read、solaris.admin.printer.read、solaris.admin.prodreg.read、solaris.admin.dcmgr.read、solaris.snmp.read、solaris.project.read、solaris.admin.patchmg.read、solaris.network.hosts.read、solaris.compsys.read、solaris.admin.volmgr.read 补充权限配置文件:所有 帮助文件: RtDefault.html |
所有权限配置文件使用通配符包括所有命令。此配置文件提供了可访问未在其他权限配置文件中显式指定的所有命令的角色。如果没有所有权限配置文件或使用通配符的其他权限配置文件,则角色只能访问显式指定的命令。如此有限的命令集不是很实用。
所有权限配置文件(如果使用)应该是指定的最终权限配置文件。此最后一个位置可确保不会意外覆盖其他权限配置文件中的显式安全属性指定。
表 10–6 所有权限配置文件的内容
目的 |
内容 |
---|---|
以用户或角色的身份执行任何命令 |
命令: * 帮助文件: RtAll.html |
权限配置文件中的命令按顺序进行解释。第一次出现的命令版本是用于此角色或用户的命令的唯一版本。不同的权限配置文件可以包括相同命令。因此,配置文件列表中权限配置文件的顺序至关重要。应该首先列出具有最多功能的权限配置文件。
权限配置文件在 Solaris Management Console GUI 和 prof_attr 文件中列出。在 Solaris Management Console GUI 中,具有最多功能的权限配置文件应该是指定权限配置文件列表中最顶部的配置文件。在 prof_attr 文件中,具有最多功能的权限配置文件应该是补充配置文件列表中的第一个配置文件。此放置方法可确保带有安全属性的命令列在不带安全属性的相同命令之前。
Solaris Management Console 权限工具提供了一种检查权限配置文件内容的方法。
prof_attr 和 exec_attr 文件提供了划分更细的视图。prof_attr 文件包含在系统上定义的每个权限配置文件的名称。此文件还包括每个配置文件的授权和补充权限配置文件。 exec_attr 文件包含权限配置文件的名称及其带有安全属性的命令。
RBAC 授权是可以授予角色或用户的独立权限。在用户获取对应用程序或应用程序内特定操作的访问权限之前,将通过 RBAC 兼容应用程序检查授权。此检查替换了常规 UNIX 应用程序中对 UID=0 的测试。
授权具有在内部以及文件中使用的名称。例如,solaris.admin.usermgr.pswd 是一个授权的名称。授权具有简短说明,此说明出现在图形用户界面 (graphical user interface, GUI) 中。例如,Change Passwords 是 solaris.admin.usermgr.pswd 授权的说明。
根据约定,授权名称由顺序颠倒过来的供应商 Internet 名称、主题区域(任何子区域)和功能组成。授权名称的各个部分以点分隔。com.xyzcorp.device.access 便是一个示例。此约定的例外是 Sun Microsystems, Inc. 的授权,它使用前缀 solaris 代替 Internet 名称。使用命名约定,管理员可以用分层方式应用授权。通配符 (*) 可以表示点右侧的所有字符串。
可将以下情况视为如何使用授权的示例:操作员角色中的用户可能限于 solaris.admin.usermgr.read 授权,此授权只提供可对用户配置文件的读取访问,不提供写入访问。系统管理员角色自然地具有 solaris.admin.usermgr.read 和 solaris.admin.usermgr.write 授权,以对用户文件进行更改。但是,如果没有 solaris.admin.usermgr.pswd 授权,系统管理员就不能更改口令。主管理员具有所有这三个授权。
需要 solaris.admin.usermgr.pswd 授权才能在 Solaris Management Console 用户工具中更改口令。使用 smuser、smmultiuser 和 smrole 命令中的口令修改选项时也需要此授权。
使用以后缀 grant 结束的授权,用户或角色可将以相同前缀开头的任何指定授权委托给其他用户。
例如,具有授权 solaris.admin.usermgr.grant 和 solaris.admin.usermgr.read 的角色可将 solaris.admin.usermgr.read 授权委托给其他用户。具有 solaris.admin.usermgr.grant 和 solaris.admin.usermgr.* 授权的角色可将具有 solaris.admin.usermgr 前缀的任何授权委托给其他用户。
以下四个数据库存储 RBAC 元素的数据:
policy.conf 数据库包含应用于所有用户的授权、权限和权限配置文件。有关更多信息,请参见policy.conf 文件。
每个 RBAC 数据库都使用 key=value 语法存储属性。此方法可以适应将来的数据库扩展。此外,使用此方法,系统可以在遇到其策略未知的关键字时继续运行。key=value 内容将文件链接起来。四个数据库中的以下链接项说明了 RBAC 数据库协同工作的方式。
在以下示例中,通过为用户 jdoe 指定角色 filemgr,使此用户获取文件系统管理配置文件的功能。
在 user_attr 数据库的 jdoe 用户项中为用户 jdoe 指定角色 filemgr。
# user_attr - user definition jdoe::::type=normal;roles=filemgr |
在 user_attr 数据库的角色项中为角色 filemgr 指定权限配置文件文件系统管理。
# user_attr - role definition filemgr::::profiles=File System Management;type=role |
用户和角色在本地系统上的 passwd 和 shadow 文件中(或者在分布式名称服务的等效数据库中)唯一定义。
文件系统管理权限配置文件在 prof_attr 数据库中定义。此数据库还为文件系统管理项指定了三组授权。
# prof_attr - rights profile definitions and assigned authorizations File System Management:::Manage, mount, share file systems: help=RtFileSysMngmnt.html; auths=solaris.admin.fsmgr.*,solaris.admin.diskmgr.*,solaris.admin.volmgr.* |
这些授权在 auth_attr 数据库中定义。
# auth_attr - authorization definitions solaris.admin.fsmgr.:::Mounts and Shares::help=AuthFsmgrHeader.html solaris.admin.fsmgr.read:::View Mounts and Shares::help=AuthFsmgrRead.html solaris.admin.fsmgr.write:::Mount and Share Files::help=AuthFsmgrWrite.html |
在 exec_attr 数据库中为文件系统管理权限配置文件指定带有安全属性的命令。
# exec_attr - rights profile names with secured commands File System Management:suser:cmd:::/usr/sbin/mount:uid=0 File System Management:suser:cmd:::/usr/sbin/dfshares:euid=0 … File System Management:solaris:cmd:::/usr/sbin/mount:privs=sys_mount … |
RBAC 数据库的名称服务范围只能应用于本地主机。此范围还可以包括由 NIS、NIS+ 或 LDAP 之类的名称服务提供服务的所有主机。在 /etc/nsswitch.conf 文件中为每个数据库设置具有优先级的名称服务。
auth_attr 项-设置 auth_attr 数据库的名称服务优先级。
passwd 项-设置 user_attr 数据库的名称服务优先级。
prof_attr 项-设置 prof_attr 数据库的名称服务优先级。此外,还设置 exec_attr 数据库的名称服务优先级。
例如,如果将带有安全属性的命令指定给存在于两个名称服务范围中的权限配置文件,则只会使用第一个名称服务范围中的项。
user_attr 数据库包含补充 passwd 和 shadow 数据库的用户和角色信息。user_attr 数据库包含授权、权限配置文件和指定角色之类的扩展用户属性。 user_attr 数据库中的字段以冒号分隔,如下所示:
user:qualifier:res1:res2:attr |
这些字段具有以下含义:
passwd 数据库中指定的用户或角色的名称。
保留这些字段供将来使用。
以分号 (;) 分隔的关键字-值对的可选列表,用于说明将在用户运行命令时应用的安全属性。四个有效关键字为 type、auths、profiles 和 roles。
如果此帐户属于普通用户,则可以将 type 关键字设置为 normal。如果此帐户属于角色,则 type 是 role。
auths 关键字指定从 auth_attr 数据库中定义的名称中选择的以逗号分隔的授权名称列表。授权名称可以包括星号 (*) 字符作为通配符。例如,solaris.device.* 表示所有的 Solaris 设备授权。
profiles 关键字指定 prof_attr 数据库中排序的逗号分隔权限配置文件名称列表。权限配置文件的排序方式与 UNIX 搜索路径的排序方式类似。列表中包含要执行的命令的第一个配置文件定义将应用于命令的安全属性(如果存在)。
可以通过以逗号分隔的角色名称列表将 roles 关键字指定给用户。请注意,角色在同一 user_attr 数据库中定义。通过将类型值设置为 role 来表示角色。不能将角色指定给其他角色。
以下示例演示了如何在典型的 user_attr 数据库中定义操作员角色。此示例显示了如何将角色指定给用户 jdoe。通过 type 关键字区分角色和用户。
% grep operator /etc/user_attr jdoe::::type=normal;roles=operator operator::::profiles=Operator;type=role |
所有授权都存储在 auth_attr 数据库中。可以将授权指定给用户、角色或权限配置文件。首选方法是将授权放置在权限配置文件中,将配置文件包括在角色的配置文件列表中,然后将角色指定给用户。
auth_attr 数据库中的字段以冒号分隔,如下所示:
authname:res1:res2:short_desc:long_desc:attr |
这些字段具有以下含义:
用于以 prefix.[suffix] 格式标识授权的唯一字符串。Solaris OS 的授权使用 solaris 作为前缀。所有其他授权应使用与创建授权的组织的 Internet 域名顺序相反的名称开头的前缀(例如,com.xyzcompany)。后缀指示要授权的内容,通常是功能区域和操作。
当 authname 由前缀和功能区域组成并以句点结束时,authname 将用作应用程序 GUI 中使用的标题。由两部分组成的 authname 不是实际授权。authname 的值 solaris.printmgr. 便是一个标题示例。
当 authname 以单字 "grant" 结束时,authname 将用作授予授权。使用授予授权,用户可以将具有相同前缀和功能区域的授权委托给其他用户。authname 的值 solaris.printmgr.grant 便是一个授予授权示例。solaris.printmgr.grant 授予用户将 solaris.printmgr.admin 和 solaris.printmgr.nobanner 之类的授权委托给其他用户的权限。
保留以供将来使用。
授权的短名称。此短名称适于在用户界面中(如 GUI 中的滚动列表中)显示。
详细说明。此字段标识授权的目的、使用授权的应用程序以及可能使用授权的用户类型。可以在应用程序的帮助文本中显示详细说明。
以分号 (;) 分隔的关键字-值对的可选列表,用于说明授权属性。可以指定零个或多个关键字。
关键字 help 标识 HTML 形式的帮助文件。可以通过 /usr/lib/help/auths/locale/C 目录中的 index.html 文件访问帮助文件。
以下示例显示了带有一些典型值的 auth_attr 数据库:
% grep printer /etc/security/auth_attr solaris.admin.printer.:::Printer Information::help=AuthPrinterHeader.html solaris.admin.printer.delete:::Delete Printer Information::help=AuthPrinterDelete.html solaris.admin.printer.modify:::Update Printer Information::help=AuthPrinterModify.html solaris.admin.printer.read:::View Printer Information::help=AuthPrinterRead.html |
请注意,solaris.admin.printer. 被定义为标题,这是因为授权名称以点 (.) 结束。GUI 使用标题组织授权系列。
prof_attr 数据库存储名称、说明、帮助文件的位置以及指定给权限配置文件的授权。指定给权限配置文件的命令和安全属性存储在 exec_attr 数据库中。有关更多信息,请参见exec_attr 数据库。prof_attr 数据库中的字段以冒号分隔,如下所示:
profname:res1:res2:desc:attr |
这些字段具有以下含义:
权限配置文件的名称。权限配置文件名称区分大小写。user_attr 数据库也使用此名称指示指定给角色和用户的配置文件。
保留以供将来使用。
详细说明。此字段应介绍权限配置文件的目的,包括有兴趣使用此配置文件的用户类型。详细说明适于在应用程序的帮助文本中显示。
以分号 (;) 分隔的关键字-值对的可选列表,用于说明在执行时应用于对象的安全属性。可以指定零个或多个关键字。两个有效关键字为 help 和 auths。
关键字 help 标识 HTML 形式的帮助文件。可以通过 /usr/lib/help/auths/locale/C 目录中的 index.html 文件访问帮助文件。
关键字 auths 指定从 auth_attr 数据库中定义的那些名称中选择的以逗号分隔的授权名称列表。可以使用星号 (*) 字符作为通配符来指定授权名称。
以下示例显示了两个典型的 prof_attr 数据库项。请注意,打印机管理权限配置文件是操作员权限配置文件的补充权限配置文件。根据显示的需要,另起一行来显示此示例。
% grep 'Printer Management' /etc/security/prof_attr Printer Management::: 权限配置文件的名称 Manage printers, daemons, spooling: 说明 help=RtPrntAdmin.html; 帮助文件 auths=solaris.admin.printer.read, 授权 solaris.admin.printer.modify,solaris.admin.printer.delete ... Operator::: 权限配置文件的名称 Can perform simple administrative tasks: 说明 profiles=Printer Management, 补充权限配置文件 Media Backup,All; help=RtOperator.html 帮助文件 |
exec_attr 数据库定义需要安全属性才能成功运行的命令。这些命令是权限配置文件的一部分。具有安全属性的命令可以由为其指定了此配置文件的角色运行。
exec_attr 数据库中的字段以冒号分隔,如下所示:
name:policy:type:res1:res2:id:attr |
这些字段具有以下含义:
权限配置文件的名称。权限配置文件名称区分大小写。该名称指的是 prof_attr 数据库中的配置文件。
与此项相关联的安全策略。目前,suser 和 solaris 是有效项。solaris 策略可识别权限,而 suser 策略则不能。
指定的实体类型。目前,唯一有效的实体类型是 cmd(命令)。
保留以供将来使用。
标识实体的字符串。命令应该具有全路径或带有通配符 (*) 的路径。要指定参数,请编写具有这些参数的脚本并使 id 指向此脚本。
以分号 (;) 分隔的关键字-值对的可选列表,用于说明将在执行时应用于实体的安全属性。可以指定零个或多个关键字。有效关键字的列表取决于强制执行的策略。
对于 suser 策略,四个有效关键字为 euid、uid、egid 和 gid。
euid 和 uid 关键字包含单个用户名或数字用户 ID (user ID, UID)。通过 euid 指定的命令使用提供的 UID 运行,这与在可执行文件上设置 setuid 位类似。通过 uid 指定的命令使用实际 UID 和有效 UID 运行。
egid 和 gid 关键字包含单个组名或数字组 ID (group ID, GID)。通过 egid 指定的命令使用提供的 GID 运行,这与在可执行文件上设置 setgid 位类似。通过 gid 指定的命令使用实际 GID 和有效 GID 运行。
对于 solaris 策略,有效关键字为 privs。值由以逗号分隔的权限列表组成。
以下示例显示了 exec_attr 数据库中的一些典型值:
% grep 'File System Management' /etc/security/exec_attr File System Management:suser:cmd:::/usr/sbin/ff:euid=0 File System Management:solaris:cmd:::/usr/sbin/mount:privs=sys_mount … |
policy.conf 文件提供了向所有用户授予特定权限配置文件、特定授权和特定权限的方法。文件中的相关项由 key=value 对组成:
以下示例显示了 policy.conf 数据库中的一些典型值:
# grep AUTHS /etc/security/policy AUTHS_GRANTED=solaris.device.cdrw # grep PROFS /etc/security/policy PROFS_GRANTED=Basic Solaris User # grep PRIV /etc/security/policy #PRIV_DEFAULT=basic #PRIV_LIMIT=all |
有关权限的更多信息,请参见权限(概述)。
本节列出了用于管理 RBAC 的命令,还提供了一个命令表,其中命令的访问可以由授权控制。
虽然可以手动编辑本地 RBAC 数据库,但是强烈建议不要进行此类编辑。以下命令可用于管理对具有 RBAC 的任务进行访问。
表 10–7 RBAC 管理命令
命令的手册页 |
说明 |
---|---|
名称服务高速缓存守护进程,适用于高速缓存 user_attr、prof_attr 和 exec_attr 数据库。使用 svcadm 命令重新启动守护进程。 |
|
下表提供了在 Solaris 系统上如何使用授权限制命令选项的示例。有关授权的更多介绍,请参见授权命名和委托。
表 10–8 命令和关联的授权