跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 管理:安全服务 Oracle Solaris 11 Information Library (简体中文) |
在已配置并使用 RBAC 后,请使用以下过程维护并修改系统上的 RBAC。
以下任务列表列出了有关在初步实现基于角色的访问控制 (role-based access control, RBAC) 后维护 RBAC 的过程。
|
以上这些过程管理用户、角色以及权限配置文件的安全属性。有关基本的用户管理过程,请参阅《Oracle Solaris 管理:常见任务》中的第 2 章 "管理用户帐户和组(概述)"。
开始之前
您必须是 root 角色。
# passwd [-r naming-service] target-rolename
将口令更改应用于 files 或 ldap 系统信息库。缺省的系统信息库为 files。如果没有指定系统信息库,所有系统信息库中的口令都将发生更改。
要修改的现有角色的名称。
有关更多命令选项,请参见 passwd(1) 手册页。
示例 9-17 更改角色的口令
在以下示例中,root 角色将更改本地 devmgt 角色的口令。
# passwd -r files devmgt New password: Type new password Confirm password: Retype new password
在以下示例中,root 角色将更改 LDAP 目录服务中 devmgt 角色的口令。
# passwd -r ldap devmgt New password: Type new password Confirm password: Retype new password
在以下示例中,root 角色将更改文件和 LDAP 中 devmgt 角色的口令。
# passwd devmgt New password: Type new password Confirm password: Retype new password
开始之前
您必须分配有 User Security(用户安全)权限配置文件之后,您才能更改角色的安全属性(除了角色的口令和审计标志)。角色属性包括权限配置文件和授权。要指定审计标志或更改角色的口令,必须采用 root 角色。
有关更多信息,请参见如何获取管理权限。
此命令可修改在本地命名服务或 LDAP 中定义的角色的属性。-A、-P 和 -R 选项的值可以通过 - 或 ++ 进行修改。- 表示从当前指定的值中减去该值。++ 表示将该值与当前指定的值相加。
有关 rolemod 命令的更多信息,请参见以下内容:
如果要简单了解,请参见如何创建角色中有关 roleadd 命令的介绍。
有关此命令的所有参数,请参见 rolemod(1M) 手册页。
有关 -K 选项的关键值列表,请参见 user_attr(4) 手册页。
以下命令可以替换 LDAP 系统信息库中 devmgt 角色的指定权限配置文件。
$ rolemod -P "Device Management,File Management" -S ldap devadmin
示例 9-18 更改本地角色的安全属性
在以下示例中,管理员将修改 prtmgt 角色以包括 VSCAN Management(VSCAN 管理)权限配置文件。
$ rolemod -c "Handles printers and virus scanning" \ -P "Printer Management,VSCAN Management,All" prtmgt
这些权限配置文件将添加到通过 policy.conf 文件授予的配置文件。
示例 9-19 将特权直接指定给角色
在以下示例中,安全管理员会向 systime 角色授予一个非常特定的特权,该特权可以影响系统时间。
$ rolemod -K priv=proc_clock_highres systime
priv 关键字的值始终都位于角色进程的特权列表中。
用户属性包括登录 shell、权限配置文件和角色。为用户提供管理权能的最安全方法是将角色指定给用户。有关讨论,请参见直接指定安全属性时的安全注意事项。
开始之前
您必须分配有 User Security(用户安全)权限配置文件之后,您才能更改用户的安全属性(除了用户的口令和审计标志)。要指定审计标志或更改角色的口令,必须采用 root 角色。要更改其他用户属性,必须为您指定 User Management(用户管理)权限配置文件。
有关更多信息,请参见如何获取管理权限。
该命令可以修改在本地命名服务或 LDAP 命名服务中定义的用户的属性。该命令的 RBAC 参数类似于 useradd 命令的参数,如 user_attr(4) 手册页和示例 9-23 中所述。
在以下示例中,为 LDAP 用户指定了 devmgt 角色。该角色将替换所有之前的角色指定。devmgt 角色必须存在于 LDAP 命名服务中。
$ usermod -R devmgt -S ldap jdoe-ldap
在以下示例中,该角色将添加到所有之前的角色指定中。
$ usermod -R +devmgt -S ldap jdoe-ldap
示例 9-20 将角色指定给本地用户。
在本示例中,用户 jdoe 现在可以承担 System Administrator(系统管理员)sysadmin 角色。
$ userattr roles jdoe secdevice $ usermod -R secdevice,sysadmin jdoe $ userattr roles jdoe secdevice,sysadmin
示例 9-21 从用户的限制特权集中删除特权
在以下示例中,防止所有源自 jdoe 初始登录的会话使用 sys_linkdir 特权。也就是说,即使在用户运行 su 命令之后,也不能生成指向目录的硬链接,并且也不能解除目录链接。
$ usermod -K limitpriv=all,!sys_linkdir jdoe $ userattr limitpriv jdoe all,!sys_linkdir
示例 9-22 创建可以管理 DHCP 的用户
在本示例中,安全管理员将在 LDAP 中创建一个用户。登录时,jdoe-dhcp 用户能够管理 DHCP。
# useradd -P "DHCP Management" -s /usr/bin/pfbash -S ldap jdoe-dhcp
由于已为用户指定了 pfbash 作为登录 shell,因此 DHCP Management(DHCP 管理)权限配置文件中的安全属性对用户缺省 shell 中的用户可用。
示例 9-23 将授权直接指定给用户
在本示例中,安全管理员将创建一个可以控制屏幕亮度的本地用户。
# useradd -c "Screened JDoe, local" -s /usr/bin/pfbash \ -A solaris.system.power.brightness jdoe-scr
该授权将添加到用户的现有授权指定中。
示例 9-24 将特权直接指定给用户
在本示例中,安全管理员会向 jdoe 用户授予一个非常特定的特权,该特权可以影响系统时间。
$ usermod -K defaultpriv=basic,proc_clock_highres jdoe
defaultpriv 关键字的值将替换现有的值。因此,对于要保留 basic 特权的用户,指定了值 basic。在缺省配置中,所有用户都拥有基本特权。
仅可以将 Oracle Solaris 用户限于桌面访问。
开始之前
您必须是 root 角色。
例如,可以将 pfbash shell 指定给用户。
# usermod -s /usr/bin/pfbash username
所有用户进程现在都受 RBAC 控制。
以下命令可以创建权限配置文件。end 命令表明添加的命令不需要安全属性。要在 LDAP 系统信息库中创建权限配置文件,请使用 -S ldap 选项。
# profiles -p "Desktop Applets" profiles:Desktop Applets> set desc="Can use basic desktop applications" profiles:Desktop Applets> add cmd=/usr/bin/nautilus;end profiles:Desktop Applets> add cmd=/usr/bin/dbus-launch;end profiles:Desktop Applets> add cmd=/usr/lib/dbus-daemon;end profiles:Desktop Applets> add cmd=/usr/lib/clock-applet;end profiles:Desktop Applets> add cmd=/usr/lib/gconfd-2;end profiles:Desktop Applets> add cmd=/usr/lib/gvfsd;end profiles:Desktop Applets> add cmd=/usr/lib/gvfsd-metadata;end profiles:Desktop Applets> add cmd=/usr/lib/gvfsd-trash;end profiles:Desktop Applets> add cmd=/usr/lib/gvfs-hal-volume-monitor;end profiles:Desktop Applets> add cmd=/usr/lib/gnome-pty-helper;end profiles:Desktop Applets> add cmd=/usr/lib/utmp_update;end profiles:Desktop Applets> add cmd=/usr/bin/sh;end profiles:Desktop Applets> add cmd=/usr/bin/bash;end profiles:Desktop Applets> add cmd=/usr/bin/csh;end profiles:Desktop Applets> add cmd=/usr/bin/ksh;end profiles:Desktop Applets> commit profiles:Desktop Applets> exit
查看各项是否出现错误,例如拼写、缺失或重复错误。
# profiles -p "Desktop Applets" info Found profile in files repository. name=Desktop Applets desc=Can use basic desktop applications cmd=/usr/bin/nautilus cmd=/usr/bin/dbus-launch cmd=/usr/lib/dbus-daemon cmd=/usr/lib/clock-applet cmd=/usr/lib/gconfd-2 cmd=/usr/lib/gvfsd cmd=/usr/lib/gvfsd-metadata cmd=/usr/lib/gvfsd-trash cmd=/usr/lib/gvfs-hal-volume-monitor cmd=/usr/lib/gnome-pty-helper cmd=/usr/lib/utmp_update cmd=/usr/bin/sh cmd=/usr/bin/bash cmd=/usr/bin/csh cmd=/usr/bin/ksh
提示 - 您可以为一个应用程序或一类具有桌面图标的应用程序创建一个权限配置文件。然后,将 Desktop Applets(桌面 Applet)作为补充权限配置文件添加到该新的权限配置文件中。结合使用这些权限配置文件可允许用户使用适当的桌面应用程序。
# usermod -P "Desktop Applets,Stop" username
该用户没有 Basic Solaris User(基本 Solaris 用户)或 Console User(控制台用户)权限配置文件。因此,该用户不能运行 Desktop Applets(桌面 Applet)权限配置文件中的命令以外的任何命令。例如,用户无权访问终端窗口。
有关更多信息,请参见权限配置文件、搜索指定安全属性的顺序和《Trusted Extensions 配置和管理》中的"如何限定用户仅使用桌面应用程序"。
usermod 命令可以修改在本地命名服务或 LDAP 中定义的用户属性。有关此命令的参数,请参见 usermod(1M) 手册页。
您可以通过下列两种方式限制角色或用户,使其执行有限数量的管理操作。
可以使用 Stop(停止)权限配置文件。
Stop(停止)权限配置文件是创建受限 shell 的最简单方式。不会参考在 policy.conf 文件中指定的授权和权限配置文件。在缺省配置中,并没有为角色或用户指定 Basic Solaris User(基本 Solaris 用户)权限配置文件、Console User(控制台用户)权限配置文件或 solaris.device.cdrw 授权。
可以修改某系统的 policy.conf 文件,并要求角色或用户使用该系统执行管理任务。
开始之前
您必须是 root 角色。
例如,可以限制 auditrev 角色,使其仅执行审计查看。
# rolemod -P "Audit Review,Stop" auditrev
由于 auditrev 角色不具有 Console User(控制台用户)权限配置文件,因此审计者无法关闭系统。由于该角色不包含 solaris.device.cdrw 授权,因此审计者无法读取或写入 CD-ROM 驱动器。由于该角色不具有 Basic Solaris User(基本 Solaris 用户)权限配置文件,因此该角色不能运行 Audit Review(审计查看)权限配置文件中的命令以外的任何命令。例如,不能运行 ls 命令。该角色使用 File Browser(文件浏览者)查看审计文件。
有关更多信息,请参见权限配置文件和搜索指定安全属性的顺序。
rolemod 命令可修改在本地命名服务或 LDAP 中定义的角色的属性。有关此命令的参数,请参见 rolemod(1M) 手册页。RBAC 参数列表与 roleadd 命令列表相似,如如何创建角色中所述。
示例 9-25 修改系统以使权限仅对其用户可用
在以下示例中,管理员将创建一个仅可以用来管理网络的系统。管理员将从 policy.conf 文件中删除 Basic Solaris User(基本 Solaris 用户)权限配置文件和 solaris.device.cdrw 授权。不删除 Console User(控制台用户)权限配置文件。在生成的 policy.conf 文件中,受影响的行如下所示:
... #AUTHS_GRANTED=solaris.device.cdrw #PROFS_GRANTED=Basic Solaris User CONSOLE_USER=Console User ...
只有显式为其指定了授权、命令或权限配置文件的用户才能使用该系统。登录后,已授权的用户可以执行管理任务。如果授权的用户位于该系统上,则该用户将拥有 Console User(控制台用户)权限。
缺省情况下,用户只有键入角色的口令才能承担角色。执行以下过程可使在 Oracle Solaris 中承担角色的过程与在 Linux 环境中承担角色的过程相似。
开始之前
您必须已承担了包括 User Security(用户安全)权限配置文件的角色。该角色不得是要更改其 roleauth 值的角色。
$ rolemod -K roleauth=user rolename
为了承担该角色,指定的用户现在可以使用自己的口令,而非专为该角色创建的口令。
示例 9-26 使用权限配置文件时允许角色使用指定的用户的口令
在以下示例中,root 角色可在本地系统上更改角色 secadmin 的 roleauth 值。
# profiles -K roleauth=user "System Administrator"
当指定了 Security Administrator(安全管理员)权限配置文件的用户要承担该角色时,系统将提示用户需要输入口令。在以下序列中,角色名称为 secadmin:
% su - secadmin Password: Type user password $ /** You are now in a profile shell with administrative rights**/
如果已为用户指定了其他角色,则用户也将使用自己的口令对这些角色进行验证。
示例 9-27 更改 LDAP 系统信息库中角色的 roleauth 值
在以下示例中,root 角色允许可以承担角色 secadmin 的所有用户在承担角色时使用自己的口令。对于由 LDAP 服务器管理的所有系统上的这些用户,都授予了该功能。
# rolemod -S ldap -K roleauth=user secadmin # profiles -S ldap -K roleauth=user "Security Administrator"
故障排除
如果已对角色设置 roleauth=user,则通过用户口令,验证的角色可以访问指定给该角色的所有权限。此关键字是搜索相关关键字。有关更多信息,请参见搜索指定安全属性的顺序。
当管理员淘汰已从网络中删除的系统时,可能会将 root 更改为用户。在该实例中,以 root 身份登录系统可简化清除过程。
开始之前
您必须成为分配有 User Management(用户管理)和 User Security(用户安全)权限配置文件的管理员。
例如,从两个用户中删除角色指定。
% su - root Password: a!2@3#4$5%6^7 # roles jdoe root # roles kdoe root # roles ldoe secadmin # usermod -R "" jdoe # usermod -R "" kdoe #
# rolemod -K type=normal root
当前承担 root 角色的用户保持不变,而具有 root 访问权限的其他用户可以使用 su 命令成为 root 或以 root 用户身份登录系统。
您可以使用以下命令之一。
# getent user_attr root root::::auths=solaris.*;profiles=All;audit_flags=lo\:no;lock_after_retries=no; min_label=admin_low;clearance=admin_high
如果输出中缺少 type 关键字或此关键字等于 normal,则此帐户不是一个角色。
# userattr type root
如果输出为空或列出了 normal,则此帐户不是一个角色。
示例 9-28 防止 root 角色被用于配置系统
在以下示例中,站点安全策略要求应防止 root 帐户维护系统。管理员已创建和测试维护系统的角色。这些角色包括每个安全配置文件和 System Administrator(系统管理员)权限配置文件。已为一位可信用户指定了可以恢复备份的角色。没有任何角色可以更改系统、用户或权限配置文件的审计标志。
为防止使用 root 帐户维护系统,安全管理员删除了 root 的 role 指定。由于 root 帐户必须能够以单用户模式登录到系统,所以该帐户保留了一个口令。
# rolemod -K roles= jdoe # userattr roles jdoe
示例 9-29 将 root 用户更改为 root 角色
首先,root 将 root 帐户更改为角色并验证此更改。
# rolemod -K type=role root # getent user_attr root root::::type=role;auths=solaris.*;profiles=All;audit_flags=lo\:no; lock_after_retries=no;min_label=admin_low;clearance=admin_high
然后,root 将 root 角色指定给一个本地用户。
# usermod -R root jdoe
故障排除
在桌面环境中,如果 root 为角色,则您不得以 root 身份直接登录。一条诊断消息会指出 root 在您的系统中为角色。
如果您没有可以承担 root 角色的本地帐户,请创建一个。在单用户模式下以 root 身份登录到系统,创建一个本地用户帐户和口令,并将 root 角色指定给该新帐户。然后,以新用户的身份登录并承担 root 角色。