跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 11.1 管理:安全服务 Oracle Solaris 11.1 Information Library (简体中文) |
在已配置并使用 RBAC 后,请使用以下过程维护并修改系统上的 RBAC。
以下任务列表列出了有关在初步实现基于角色的访问控制 (role-based access control, RBAC) 后维护 RBAC 的过程。
|
以上这些过程管理用户、角色以及权限配置文件的安全属性。有关基本的用户管理过程,请参阅《在 Oracle Solaris 11.1 中管理用户帐户和用户环境》中的第 1 章 "管理用户帐户和用户环境(概述)"。
因为一个角色可能会被指定给许多用户,所以承担角色的用户无法更改角色的口令。
开始之前
您必须承担 root 角色。有关更多信息,请参见如何使用指定给您的管理权限。
# passwd [-r naming-service] rolename
将口令更改应用于 files 或 ldap 系统信息库。缺省的系统信息库为 files。如果没有指定系统信息库,所有系统信息库中的口令都将发生更改。
要修改的现有角色的名称。
有关更多命令选项,请参见 passwd(1) 手册页。
示例 9-24 更改角色的口令
在以下示例中,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-25 更改本地角色的安全属性
在以下示例中,管理员将修改 prtmgt 角色以包括 VSCAN Management(VSCAN 管理)权限配置文件。
$ rolemod -c "Handles printers and virus scanning" \ -P "Printer Management,VSCAN Management,All" prtmgt
示例 9-26 将特权直接指定给角色
在以下示例中,安全管理员会向 systime 角色授予一个非常特定的特权,该特权可以影响系统时间。
$ rolemod -K defaultpriv='proc_clock_highres' systime
defaultpriv 关键字的值始终都位于角色进程的特权列表中。
Oracle Solaris 按指定时的顺序读取权限配置文件,如搜索指定安全属性的顺序中所述。在此过程中,您将重新排序权限配置文件。
开始之前
您必须是指定有 User Security(用户安全)权限配置文件的管理员。有关更多信息,请参见如何使用指定给您的管理权限。
该列表将按顺序显示。
$ profiles username|rolename
$ usermod | rolemod -P "list-of-profiles"
示例 9-27 按特定的顺序指定权限配置文件
在此示例中,管理员决定将包含特权命令的权限配置文件列出在角色 devadmin 的所有权限配置文件之后。
$ profiles devadmin Basic Solaris User All Device Management
因此,devadmin 角色无法使用为其指定的特权运行设备管理命令。
管理员重新为 devadmin 指定权限配置文件。在新的指定顺序中,devadmin 可以使用为其指定的特权运行设备管理命令。
$ rolemod -P "Device Management,Basic Solaris User,All" $ profiles devadmin Device Management Basic Solaris User All
您可以通过下列两种方式限制角色或用户,使其执行有限数量的管理操作。
可以使用 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-28 修改系统以使权限仅对其用户可用
在以下示例中,管理员将创建一个仅可以用来管理网络的系统。管理员将从 policy.conf 文件中删除 Basic Solaris User(基本 Solaris 用户)权限配置文件和任何授权。不删除 Console User(控制台用户)权限配置文件。在生成的 policy.conf 文件中,受影响的行如下所示:
... #AUTHS_GRANTED= #PROFS_GRANTED=Basic Solaris User CONSOLE_USER=Console User ...
只有显式为其指定了授权、命令或权限配置文件的用户才能使用该系统。登录后,已授权的用户可以执行管理任务。如果授权的用户位于该系统控制台上,则该用户将拥有 "Console User"(控制台用户)权限。
缺省情况下,用户只有键入角色的口令才能承担角色。执行以下过程可使在 Oracle Solaris 中承担角色的过程与在 Linux 环境中承担角色的过程相似。
开始之前
您承担包括 User Security(用户安全)权限配置文件的角色。该角色不得是要更改其 roleauth 值的角色。
$ rolemod -K roleauth=user rolename
为了承担该角色,指定的用户现在可以使用自己的口令,而非专为该角色创建的口令。
示例 9-29 使用权限配置文件时允许角色使用指定的用户的口令
在以下示例中,root 角色可在本地系统上更改角色 secadmin 的 roleauth 值。
$ profiles -p "Local System Administrator" profiles:Local System Administrator> set roleauth="user" profiles:Local System Administrator> end profiles:Local System Administrator> exit
当指定了 Security Administrator(安全管理员)权限配置文件的用户要承担该角色时,系统将提示用户需要输入口令。在以下序列中,角色名称为 secadmin:
% su - secadmin Password: Type user password $ /** You are now in a profile shell with administrative rights**/
如果已为用户指定了其他角色,则用户也将使用自己的口令对这些角色进行验证。
示例 9-30 更改 LDAP 系统信息库中角色的 roleauth 值
在以下示例中,root 角色允许可以承担角色 secadmin 的所有用户在承担角色时使用自己的口令。对于由 LDAP 服务器管理的所有系统上的这些用户,都授予了该功能。
# rolemod -S ldap -K roleauth=user secadmin
故障排除
如果已对角色设置 roleauth=user,则通过用户口令,验证的角色可以访问指定给该角色的所有权限。此关键字是搜索相关关键字。有关更多信息,请参见搜索指定安全属性的顺序。
当管理员淘汰已从网络中删除的系统时,可能会将 root 更改为用户。在该实例中,以 root 身份登录系统可简化清除过程。
开始之前
您必须成为 root。有关更多信息,请参见如何使用指定给您的管理权限。
例如,从两个用户中删除角色指定。
% 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-31 防止 root 角色被用于配置系统
在以下示例中,站点安全策略要求应防止 root 帐户维护系统。管理员已创建和测试维护系统的角色。这些角色包括每个安全配置文件和 System Administrator(系统管理员)权限配置文件。已为一位可信用户指定了可以恢复备份的角色。没有任何角色可以更改系统、用户或权限配置文件的审计标志。
为防止使用 root 帐户维护系统,安全管理员删除了 root 角色指定。由于 root 帐户必须能够以单用户模式登录到系统,所以该帐户保留了一个口令。
# usermod -K roles= jdoe # userattr roles jdoe
示例 9-32 将 root 用户更改为 root 角色
首先,root 用户将 root 帐户更改为角色并验证此更改。
# usermod -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 角色。