系统管理指南:安全性服务

第 9 章 使用基于角色的访问控制(任务)

本章介绍与使用各种不同的角色分配超级用户功能相关的任务。角色可以使用的机制包括权限配置文件、授权和特权。以下是本章中的任务列表:

有关 RBAC 的概述,请参见基于角色的访问控制(概述)。有关参考信息,请参见第 10 章,基于角色的访问控制(参考)。要通过 RBAC 或不通过 RBAC 使用特权,请参见第 11 章,权限(任务)

使用 RBAC(任务列表)

要使用 RBAC,需要规划和配置 RBAC 以及了解如何承担角色。熟悉角色后,便可以进一步自定义 RBAC 以处理新操作。以下任务列表列出了这些主要任务:

任务 

说明 

参考 

规划和配置 RBAC  

在站点上配置 RBAC。 

配置 RBAC(任务列表)

使用角色 

通过命令行和在 Solaris Management Console GUI 中承担角色。 

使用角色(任务列表)

自定义 RBAC 

为站点自定义 RBAC。 

管理 RBAC(任务列表)

配置 RBAC(任务列表)

要有效地使用 RBAC,需要进行规划。使用以下任务列表可在站点上规划并初步实现 RBAC。

任务 

说明 

参考 

1. 规划 RBAC  

涉及检查站点的安全要求,以及确定如何在站点上使用 RBAC。 

如何规划 RBAC 实现

2. 学习使用 Solaris Management Console 

涉及熟悉 Solaris Management Console。 

《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

3. 配置第一个用户和角色 

使用 Solaris Management Console 的 RBAC 配置工具创建用户和角色,并将角色指定给用户。 

《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

4. (可选)创建可以承担角色的其他用户 

确保存在可以承担管理角色的用户。 

《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

5. (建议)创建其他角色并将其指定给用户 

使用 RBAC 工具为特定管理区域创建角色,并将这些角色指定给用户。 

如何使用 GUI 创建和指定角色

示例 9–5

使用命令行创建角色,并将这些角色指定给用户。 

如何通过命令行创建角色

如何将角色指定给本地用户

6. (建议)审计角色操作 

预先选择包括记录角色操作的审计事件的审计类。 

如何审计角色

7. (可选)使 root 用户成为角色

防止匿名 root 登录,这是一个安全漏洞。

如何使 root 用户成为角色

配置 RBAC

可以使用以下实用程序配置 RBAC:

Procedure如何规划 RBAC 实现

RBAC 可以作为组织管理其信息资源方式的组成部分。进行规划时,需要全面了解 RBAC 功能以及组织的安全要求。

  1. 了解 RBAC 基本概念。

    请阅读基于角色的访问控制(概述)。使用 RBAC 来管理系统与使用常规的 UNIX 管理做法完全不同。开始实现之前,应先对 RBAC 概念进行了解。有关更详细的信息,请参见第 10 章,基于角色的访问控制(参考)

  2. 检查安全策略。

    您组织的安全策略应详细说明系统面临的潜在威胁,衡量每种威胁的风险并制订应对这些威胁的策略。通过 RBAC 隔离与安全相关的任务可以作为该策略的一部分。虽然可以按照缺省设置安装系统建议的角色及其配置,但是您可能需要自定义 RBAC 配置以符合安全策略。

  3. 确定组织需要 RBAC 的程度。

    根据安全需要,选择如何使用 RBAC,如下所述:

    • 无 RBAC-您可以以 root 用户身份执行所有任务。在此配置中,您将以自己的身份登录。然后,在选择 Solaris Management Console 工具时,键入 root 作为用户。

    • 仅单一角色-此方法添加一个角色。该角色会被指定主管理员权限配置文件。此方法与超级用户模型类似,因为该角色具有超级用户功能。但是,通过此方法可以跟踪已承担该角色的用户。

    • 建议的角色-此方法创建三个基于以下权限配置文件的角色:主管理员、系统管理员和操作员。这些角色适用于管理员具有不同责任级别的组织。

    • 自定义角色-您可以创建自己的角色以满足组织的安全要求。新角色可以基于现有或自定义的权限配置文件。

    • 使超级用户成为角色-此方法可防止任何用户以 root 身份登录。相反,在承担 root 角色之前,用户必须以普通用户身份登录。有关详细信息,请参见如何使 root 用户成为角色

  4. 确定适用于组织的建议角色。

    请查看建议的角色的功能和缺省的权限配置文件。通过缺省的权限配置文件,管理员可以使用单个配置文件配置建议的角色。以下三个缺省的权限配置文件可用于配置建议的角色:

    • 主管理员权限配置文件-用于配置可以执行所有管理任务、为其他用户授予权限以及编辑与管理角色关联的权限的角色。该角色中的用户可将该角色指定给其他用户,并可为其他用户授予权限。

    • 系统管理员权限配置文件-用于配置可执行大多数与安全无关的管理任务的角色。例如,系统管理员可以添加新的用户帐户,但不能设置口令或为其他用户授予权限。

    • 操作员权限配置文件-用于配置可以执行介质备份和打印机维护等简单管理任务的角色。

    要进一步检查权限配置文件,请阅读以下内容之一:

    • /etc/security 目录中,阅读 prof_attr 数据库和 exec_attr 数据库的内容。

    • 在 Solaris Management Console 中,使用“权限”工具显示权限配置文件的内容。

    • 在本书中,参阅权限配置文件的内容以了解某些典型的权限配置文件的摘要。

  5. 确定是否有任何其他角色或权限配置文件适用于组织。

    请在站点上查找可能从受限制访问中受益的其他应用程序或应用程序系列。合适的 RBAC 候选对象包括:影响安全的应用程序、可能导致服务被拒绝的应用程序,或需要对管理员进行特殊培训的应用程序。您可以自定义角色和权限配置文件,以处理组织的安全要求。

    1. 确定新任务所需的命令。

    2. 确定适用于此任务的权限配置文件。

      检查现有权限配置文件是否可以处理此任务,或是否需要创建单独的权限配置文件。

    3. 确定适用于此权限配置文件的角色。

      确定是否应将此任务的权限配置文件指定给现有角色,或是否应创建新角色。如果使用现有角色,请检查其他权限配置文件是否适用于将被指定该角色的用户。

  6. 确定应将哪些用户指定给可用角色。

    根据最低特权的原则,应将用户指定给适合其信任级别的角色。如果禁止用户访问用户无需执行的任务,则可以减少潜在的问题。

Procedure如何使用 GUI 创建和指定角色

您可以以超级用户身份,也可以使用主管理员角色来创建新角色。 在此过程中,新角色的创建者会承担主管理员的角色。

开始之前
  1. 启动 Solaris Management Console。


    # /usr/sbin/smc &
    

    有关登录说明,请参见如何在 Solaris Management Console 中承担角色

  2. 单击“管理角色”图标。

  3. 从“操作”菜单中选择“添加管理角色”。

  4. 填写一系列对话框中的字段以创建新角色。

    有关可能的角色,请参见示例 9–1示例 9–4


    提示 –

    Solaris Management Console 中的所有工具都会在页面底部或向导面板的左侧显示信息。您可随时选择“帮助”,以查找有关在此界面中执行任务的其他信息。


  5. 将角色指定给用户。


    提示 –

    填写角色的属性后,最后一个对话框将提示您为该角色指定一个用户。


  6. 在终端窗口中,重新启动名称服务高速缓存守护进程。


    # svcadm restart system/name-service-cache
    

    有关更多信息,请参见 svcadm(1M)nscd(1M) 手册页。


示例 9–1 为系统管理员权限配置文件创建角色

在本示例中,新角色可以执行与安全无关的系统管理任务。该角色是通过执行上述过程创建的,其参数如下:



示例 9–2 为操作员权限配置文件创建角色

操作员权限配置文件可以管理打印机并将系统备份到脱机介质。您可能希望将该角色指定给各个班次上的某个用户。为此,可在“步骤 1:进入‘角色名’对话框”中选择角色邮件列表选项。该角色是通过执行上述过程创建的,其参数如下:



示例 9–3 为与安全相关的权限配置文件创建角色

缺省情况下,仅有主管理员配置文件包含与安全相关的命令和权限。如果要创建功能不如主管理员强大,但可处理某些与安全相关的任务的角色,则必须创建该角色。

在以下示例中,该角色可保护设备。该角色是通过执行上述过程创建的,其参数如下:

在以下示例中,该角色可确保系统和主机在网络上的安全。该角色是通过执行上述过程创建的,其参数如下:



示例 9–4 为具有有限范围的权限配置文件创建角色

许多权限配置文件的范围都是有限的。在本示例中,该角色的唯一任务是管理 DHCP。该角色是通过执行上述过程创建的,其参数如下:



示例 9–5 修改用户的角色指定

在本示例中,将向现有用户添加角色。您可以修改用户的角色指定,方法是在 Solaris Management Console 的“用户”工具中单击“用户帐户”图标,双击相应用户,然后按照联机帮助的说明将角色添加到该用户的功能。


故障排除

如果角色不具有应有的功能,请检查以下情况:

Procedure如何通过命令行创建角色

Solaris Management Console GUI 是管理 RBAC 的首选方法。要使用该 GUI,请参见如何使用 GUI 创建和指定角色。另外,还可以使用命令行界面,如此过程中所述。


注 –

请勿尝试同时使用命令行和图形用户界面来管理 RBAC。这样可能会导致对配置所做的更改出现冲突,从而使得行为不可预测。您可以使用这两种工具来管理 RBAC,但是不能同时使用二者。


开始之前

要创建角色,必须承担具有主管理员权限配置文件的角色,或切换到用户 root

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 选择以下命令之一,在命令行上创建角色。

    • 对于本地名称服务范围内的角色,请使用 roleadd 命令。


      注 –

      与 Solaris Management Console GUI 或命令行界面相比,roleadd 命令的限制更多。运行 roleadd 命令后,还必须运行 usermod 命令才能将角色指定给用户。然后,用户还必须为角色设置口令,如如何将角色指定给本地用户中所述。



      # roleadd -c comment \
      
      -g group -m homedir -u UID -s shell \
      
      -P profile rolename
      
      -c comment

      描述 rolename 的注释。

      -g group

      rolename 的组指定。

      -m homedir

      rolename 的起始目录的路径。

      -u UID

      rolename 的 UID。

      -s shell

      rolename 的登录 shell。此 shell 必须是配置文件 shell。

      -P profile

      rolename 的一个或多个权限配置文件。

      rolename

      新本地角色的名称。

    • 使用 smrole add 命令。

      此命令可在 NIS、NIS+ 或 LDAP 等分布式名称服务中创建角色。此命令将作为 Solaris Management Console 服务器的客户机运行。


      $ /usr/sadm/bin/smrole -D domain-name \ 
      
      -r admin-role -l <Type admin-role password> \
      
      add -- -n rolename -a rolename -d directory\
      
      -F full-description -p profile
      
      -D domain-name

      要管理的域的名称。

      -r admin-role

      可以修改角色的管理角色的名称。管理角色必须具有 solaris.role.assign 授权。如果要修改已承担的角色,则该角色必须具有 solaris.role.delegate 授权。

      -l

      admin-role 的口令输入提示。

      --

      验证选项和子命令选项之间必需的分隔符。

      -n rolename

      新角色的名称。

      -c comment

      描述角色功能的注释。

      -a username

      可以承担 rolename 的用户的名称。

      -d directory

      rolename 的起始目录。

      -F full-description

      rolename 的完整说明。此说明显示在 Solaris Management Console GUI 中。

      -p profile

      rolename 的功能中包括的权限配置文件。此选项可为角色提供具有管理功能的命令。您可以指定多个 -p profile 选项。

  3. 要使更改生效,请参见如何将角色指定给本地用户


示例 9–6 使用 smrole 命令创建自定义操作员角色

smrole 命令可在名称服务中指定新角色及其属性。在以下示例中,主管理员创建了一个新版本的操作员角色。该角色具有标准的操作员权限配置文件以及介质恢复权限配置文件。请注意,此命令会提示您输入新角色的口令。


% su primaryadm

Password: <键入 primaryadm 的口令> 

$ /usr/sadm/bin/smrole add -H myHost -- -c "Backup and Restore Operator" \

-n operadm2 -a janedoe -d /export/home/operadm \

-F "Backup/Restore Operator" -p "Operator" -p "Media Restore"

Authenticating as user: primaryadm



Type /? for help, pressing <enter> accepts the default denoted by [ ]

Please enter a string value for: password :: <键入 primaryadm 的口令>



Loading Tool: com.sun.admin.usermgr.cli.role.UserMgrRoleCli from myHost

Login to myHost as user primaryadm was successful.

Download of com.sun.admin.usermgr.cli.role.UserMgrRoleCli from myHost was successful.



Type /? for help, pressing <enter> accepts the default denoted by [ ]

Please enter a string value for: password ::<键入 operadm2 的口令>



$ svcadm restart system/name-service-cache

包含 list 子命令的 smrole 命令用于显示新角色:


$ /usr/sadm/bin/smrole list --

Authenticating as user: primaryadm



Type /? for help, pressing <enter> accepts the default denoted by [ ]

Please enter a string value for: password :: <键入 primaryadm 的口令>



Loading Tool: com.sun.admin.usermgr.cli.role.UserMgrRoleCli from myHost

Login to myHost as user primaryadm was successful.

Download of com.sun.admin.usermgr.cli.role.UserMgrRoleCli from myHost was successful.

root                    0             Superuser

primaryadm            100             Most powerful role

sysadmin              101             Performs non-security admin tasks

operadm               102             Backup Operator

operadm2              103             Backup/Restore Operator

Procedure如何将角色指定给本地用户

此过程会将本地角色指定给本地用户、重新启动名称高速缓存守护进程,然后说明用户如何承担该角色。

要将角色指定给分布式名称服务中的用户,请参见如何通过命令行创建角色如何更改角色的属性

开始之前

您已按照如何通过命令行创建角色中所述添加了本地角色。您必须已承担主管理员角色或已切换到超级用户。

  1. 将角色指定给本地用户。

    如果已使用 roleadd 命令添加了本地角色,则必须执行此步骤。使用 smrole 命令和 Solaris Management Console 创建角色时,此步骤为可选步骤。


    # usermod -u UID -R rolename
    
    -u UID

    用户的 UID。

    -R rolename

    指定给用户的角色。

  2. 要使更改生效,请重新启动名称服务高速缓存守护进程。


    # svcadm restart system/name-service-cache

    如果已使用 Solaris Management Console 界面添加了角色,请转至使用角色(任务列表)。否则,请继续执行下一步。

  3. (可选的)要解除锁定角色帐户,用户必须创建口令。

    如果已使用 roleadd 命令添加了本地角色,则必须执行此步骤。


    % su rolename
    
    Password: <键入 rolename 的口令>
    
    Confirm Password: <重新键入 rolename 的口令>
    
    $

示例 9–7 通过命令行创建和指定本地角色

在本示例中,将创建管理 Solaris 加密框架的角色。加密管理权限配置文件中包含用于管理本地系统中的硬件和软件加密服务的 cryptoadm 命令。


# roleadd -c "Cryptographic Services manager" \

-g 14 -m /export/home/cryptoadm -u 104 -s pfksh \

-P "Crypto Management" cryptomgt

# usermod -u 1111 -R cryptomgt

# svcadm restart system/name-service-cache

% su cryptomgt

Password: <键入 cryptomgt 的口令>

Confirm Password: <重新键入 cryptomgt 的口令>

$ /usr/ucb/whoami

cryptomgt

$

有关 Solaris 加密框架的信息,请参见第 13 章,Solaris 加密框架(概述)。要管理该框架,请参见管理加密框架(任务列表)


Procedure如何审计角色

可以审计角色执行的操作。审计记录中包括承担角色的用户的登录名、角色名和角色执行的操作。 6180:AUE_prof_cmd:profile command:ua,as 审计事件用于收集该信息。通过预先选择 as 类或 ua 类,可以审计角色操作。

  1. 规划审计并编辑审计配置文件。

    有关更多信息,请参见Solaris 审计(任务列表)

  2. audit_control 文件的 flags 行中包括 ua 类或 as 类。


    # audit_control file
    
    dir:/var/audit
    
    flags:lo,as
    
    minfree:20
    
    naflags:lo

    ua 类和 as 类包括其他审计事件。要查看类中包括的审计事件,请阅读 audit_event 文件。另外,还可以使用 bsmrecord 命令,如示例 29–22 中所示。

  3. 完成审计服务的配置,然后启用审计。

    有关更多信息,请参见配置和启用审计服务

Procedure如何使 root 用户成为角色

此过程说明如何将 root 从登录用户更改为角色。完成此过程后,将无法再以 root 身份登录到系统,但在单用户模式下除外。如果已为您指定 root 角色,则可以对 root 执行 su

通过将 root 用户更改为角色,可以防止匿名 root 登录。由于用户必须首先登录,然后才能承担 root 角色,因此用户的登录 ID 将提供给审计服务并位于 sulog 文件中。

开始之前

如果将 root 用户更改为角色,但未将该角色指定给有效用户,或当前没有与 root 用户等效的现有角色,则任何用户都不能成为超级用户。

  1. 以普通用户身份登录到目标主机。

  2. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  3. 创建可承担 root 角色的本地用户。


    $ useradd -c comment -d homedir username
    
    -c comment

    描述用户的注释。

    -d homedir

    用户的起始目录。此目录应位于本地系统中。

    username

    新本地用户的名称。


    # useradd -c "Local administrative user" -d /export/home1 admuser
    
  4. 为用户指定口令。


    # passwd -r files admuser
    
    New Password:    <键入口令>
    
    Re-enter new Password: <重新键入口令>
    
    passwd: password successfully changed for admuser
    
    #
  5. 确保您未以 root 身份登录。


    # who
    
    jdoe    console      May 24 13:51    (:0)
    
    jdoe    pts/5        May 24 13:51    (:0.0)
    
    jdoe    pts/4        May 24 13:51    (:0.0)
    
    jdoe    pts/10       May 24 13:51    (:0.0)
    
  6. root 用户更改为角色。


    # usermod -K type=role root
    
  7. 验证 root 是否为角色。

    user_attr 文件中 root 项的显示应与以下内容类似:


    root::::type=role;auths=solaris.*,solaris.grant;profiles=Web Console 
    
    Management,All;lock_after_retries=no
  8. root 角色指定给本地管理用户。


    # usermod -R root admuser
    
  9. 配置在失败时返回的名称服务。

    1. 打开新的终端窗口并承担 root 角色。


      % whoami
      
      jdoe
      
      % su admuser
      
      Enter password:   <键入 admuser 的口令>
      
      % roles
      
      root
      
      % su root
      
      Enter password:   <键入 root 的口令>
      
      #
    2. 编辑 nsswitch.conf 文件。

      例如,nsswitch.conf 文件中的以下各项将允许返回名称服务。


      passwd:  files nis [TRYAGAIN=0 UNAVAIL=return NOTFOUND=return]
      
      group:  files nis [TRYAGAIN=0 UNAVAIL=return NOTFOUND=return]
  10. root 角色指定给名称服务中选定的用户帐户。

    有关过程,请参见如何更改用户的 RBAC 属性

使用角色(任务列表)

以下任务列表列出了用于在指定角色后使用角色的过程:

任务 

说明 

参考 

使用 Solaris Management Console 

以角色身份对自身进行验证,以便在 Solaris Management Console 中执行管理任务。 

如何在 Solaris Management Console 中承担角色

在终端窗口中承担角色 

在配置文件 shell 中执行命令行管理任务。 

如何在终端窗口中承担角色

使用角色

使用缺省的 Solaris 权限配置文件设置角色并将其指定给用户后,便可以使用这些角色。可以通过命令行来承担角色。在 Solaris Management Console 中,还可使用角色以本地方式和通过网络来管理系统。

Procedure如何在终端窗口中承担角色

开始之前

必须已为您指定了角色,并且必须使用该信息更新名称服务。

  1. 在终端窗口中,确定可以承担的角色。


    % roles
    
    Comma-separated list of role names is displayed
    
  2. 使用 su 命令承担角色。


    % su rolename
    
    Password: <键入 rolename 的口令>
    
    $

    带有角色名的 su 命令会将 shell 更改为该角色的配置文件 shell。配置文件 shell 可识别安全性属性(授权、特权和集 ID 位)。

  3. 验证您现在是否已承担某种角色。


    $ /usr/ucb/whoami
    
    rolename
    

    您现在可在此终端窗口中执行角色任务。

  4. (可选的)查看角色的功能。

    有关过程,请参见如何确定角色可以运行的特权命令


示例 9–8 承担主管理员角色

在以下示例中,用户承担主管理员角色。在缺省配置中,该角色与超级用户等效。然后,该角色会查看哪些特权可供在角色的配置文件 shell 中键入的任何命令使用。


% roles

sysadmin,oper,primaryadm

% su primaryadm

Password: <键入 primaryadm 口令>

$ /usr/ucb/whoami 提示符更改为角色提示符

primaryadm

$ ppriv $$

1200:   pfksh

flags = <none>

        E (Effective): all

        I (Inheritable): basic

        P (Permitted): all

        L (Limit): all

有关特权的信息,请参见权限(概述)



示例 9–9 承担 root 角色

在以下示例中,用户承担 root 角色。该角色是在如何使 root 用户成为角色中创建的。


% roles

root

% su root

Password: <键入 root 的口令>

# /usr/ucb/whoami 提示符更改为角色提示符

root

$ ppriv $$

1200:   pfksh

flags = <none>

        E: all

        I: basic

        P: all

        L: all

有关特权的信息,请参见权限(概述)



示例 9–10 承担系统管理员角色

在以下示例中,用户承担系统管理员的角色。与主管理员角色相反,系统管理员角色在其有效集中具有基本的特权集。


% roles

sysadmin,oper,primaryadm

% su sysadmin

Password: <键入 sysadmin 的口令>

$ /usr/ucb/whoami 提示符更改为角色提示符

sysadmin

$ ppriv $$

1200:   pfksh

flags = <none>

        E: basic

        I: basic

        P: basic

        L: all

有关特权的信息,请参见权限(概述)。有关该角色功能的简短说明,请参见系统管理员权限配置文件


Procedure如何在 Solaris Management Console 中承担角色

要在 Solaris Management Console GUI 中更改信息,需要具有管理功能。角色可为您提供管理功能。如果要查看信息,则必须具有 solaris.admin.usermgr.read 授权。基本 Solaris 用户权限配置文件包括此授权。

开始之前

必须已为您指定了可以更改用户或角色属性的管理角色。例如,主管理员角色可更改用户或角色的属性。

  1. 启动 Solaris Management Console。


    % /usr/sbin/smc &
    

    有关详细说明,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 根据任务选择工具箱。

    导航至包含相应名称服务范围内的工具或集合的工具箱,然后单击该图标。这些范围包括文件(本地)、NIS、NIS+ 和 LDAP。如果导航窗格中未显示相应的工具箱,请从“控制台”菜单中选择“打开工具箱”并装入相关的工具箱。

  3. 选择要使用的工具。

    导航到该工具或集合,然后单击相应图标。用于管理 RBAC 元素的工具位于“用户”工具中,如下图所示:

    标题为 "Management Tools" 的窗口在左侧显示“导航”窗格,在右侧显示“工具”窗格,并在下方显示具有“关联说明”的“信息”窗格。
  4. 在“登录:用户名”对话框中键入用户名和口令。

  5. 在“登录:角色”对话框中对自身进行验证。

    该对话框中的“角色”选项菜单显示了为您指定的角色。请选择角色并键入角色口令。

管理 RBAC(任务列表)

以下任务列表列出了用于在初步实现基于角色的访问控制 (role-based access control, RBAC) 后自定义 RBAC 的过程。

任务 

说明 

参考 

修改角色的属性 

修改角色的功能(特权、特权命令、配置文件或授权)。 

如何更改角色的属性

创建或更改权限配置文件 

创建权限配置文件。或修改授权、特权命令或权限配置文件中的补充权限配置文件。 

如何创建或更改权限配置文件

更改用户的管理功能 

向普通用户添加角色、权限配置文件、授权或特权。 

如何更改用户的 RBAC 属性

确保传统应用程序安全 

为传统应用程序启用集 ID 权限。脚本可以包含具有集 ID 的命令。传统应用程序可检查授权(如果适用)。 

如何为传统应用程序添加 RBAC 属性

这些过程可用于管理 RBAC 中使用的元素。有关用户管理的过程,请参阅《系统管理指南:基本管理》中的第 5  章 “管理用户帐户和组(任务)”

管理 RBAC

Solaris Management Console GUI 是管理 RBAC 的首选方法。


注 –

请勿尝试同时使用命令行和图形用户界面来管理 RBAC。这样可能会导致对配置所做的更改出现冲突,从而使得行为不可预测。这两种工具都可以管理 RBAC,但是不能同时使用二者。


Procedure如何更改角色的属性

开始之前

要更改角色属性,您必须已承担主管理员角色或已切换到超级用户。角色属性包括口令、权限配置文件和授权。

    使用以下方法之一更改角色属性。

    • 使用 Solaris Management Console 中的“用户”工具。

      要启动该控制台,请参见如何在 Solaris Management Console 中承担角色。请按照左侧窗格中的说明在“管理角色”中修改角色。有关更详细的信息,请参见联机帮助。

    • 使用 rolemod 命令。

      此命令可修改本地名称服务中定义的角色的属性。


      $ rolemod -c comment -P profile-list rolename
      
      -c comment

      描述角色功能的新注释。

      -P profile-list

      角色具有的配置文件的列表。此列表将替换当前的配置文件列表。

      rolename

      要修改的现有本地角色的名称。

      有关更多命令选项,请参见 rolemod(1M) 手册页。

    • 使用包含 modify 子命令的 smrole 命令。

      此命令可修改 NIS、NIS+ 或 LDAP 等分布式名称服务中的角色的属性。此命令将作为 Solaris Management Console 服务器的客户机运行。


      $ /usr/sadm/bin/smrole -D domain-name \ 
      
      -r admin-role -l <Type admin-role password> \
      
      modify -- -n rolename  -r username -u username
      
      -D domain-name

      要管理的域的名称。

      -r admin-role

      可以修改角色的管理角色的名称。管理角色必须具有 solaris.role.assign 授权。如果要修改已承担的角色,则该角色必须具有 solaris.role.delegate 授权。

      -l

      admin-role 的口令输入提示。

      --

      验证选项和子命令选项之间必需的分隔符。

      -n rolename

      新角色的名称。

      -r username

      无法再承担 rolename 的用户的名称。

      -u username

      现在可以承担 rolename 的用户的名称。

      有关更多命令选项,请参见 smrole(1M) 手册页。


示例 9–11 使用 rolemod 命令更改本地角色的属性

在本示例中,将修改 operadm 角色以使其具有介质恢复权限配置文件。


$ rolemod -c "Handles printers, backup, AND restore" \

-P "Printer Management,Media Backup,Media Restore,All" operadm


示例 9–12 使用 smrole modify 命令更改本地角色的属性

在以下示例中,将修改 operadm 角色以添加介质恢复权限配置文件。


$ /usr/sadm/bin/smrole -r primaryadm -l <Type primaryadm password> \

modify -- -n operadm -c "Handles printers, backup, AND restore" \

-p "Media Restore"


示例 9–13 使用 smrole modify 命令更改域中的角色

在以下示例中,将更改 clockmgr 角色。ID 为 108 的 NIS 用户无法再承担该角色。ID 为 110 的 NIS 用户可以承担 clockmgr 角色。


$ /usr/sadm/bin/smrole -D nis:/examplehost/example.domain \

-r primaryadm -l <Type primaryadm password> \

modify -- -n clockmgr -r 108 -u 110

Procedure如何创建或更改权限配置文件

权限配置文件是一种角色属性。如果 prof_attr 数据库不包含满足您需求的权限配置文件,则应创建或更改权限配置文件。要了解有关权限配置文件的更多信息,请参见RBAC 权限配置文件

开始之前

要创建或更改权限配置文件,您必须已承担主管理员的角色或已切换到超级用户。

    使用以下方法之一更改角色的属性。

    • 使用 Solaris Management Console 中的“用户”工具。

      要启动该控制台,请参见如何在 Solaris Management Console 中承担角色。请按照左侧窗格中的说明在“权限”中创建或更改权限配置文件。有关更详细的信息,请参见联机帮助。

    • 使用 smprofile 命令。

      使用此命令可以添加、修改、列出或删除权限配置文件。此命令可在文件以及 NIS、NIS+ 或 LDAP 等分布式名称服务中运行。smprofile 命令将作为 Solaris Management Console 服务器的客户机运行。


      $ /usr/sadm/bin/smprofile -D domain-name \ 
      
      -r admin-role -l <Type admin-role password> \
      
      add | modify -- -n profile-name \
      
      -d description  -m help-file -p supplementary-profile
      
      -D domain-name

      要管理的域的名称。

      -r admin-role

      可以修改角色的管理角色的名称。管理角色必须具有 solaris.role.assign 授权。如果要修改已承担的角色,则该角色必须具有 solaris.role.delegate 授权。

      -l

      admin-role 的口令输入提示。

      --

      验证选项和子命令选项之间必需的分隔符。

      -n profile-name

      新配置文件的名称。

      -d description

      配置文件的简短说明。

      -m help-file

      已创建并放置在 /usr/lib/help/profiles/locale/C 目录中的 HTML 帮助文件的名称。

      -p supplementary-profile

      此权限配置文件中包括的现有权限配置文件的名称。您可以指定多个 -p supplementary-profile 选项。

      有关更多命令选项,请参见 smprofile(1M) 手册页。


示例 9–14 通过命令行修改权限配置文件

在以下示例中,网络管理权限配置文件充当网络安全权限配置文件的补充配置文件。包含网络安全配置文件的角色现在可以配置网络和主机,而且还可以运行与安全相关的命令。


$ /usr/sadm/bin/smprofile -D nisplus:/example.host/example.domain \

-r primaryadm -l <Type primaryadm password> \

modify -- -n "Network Security" \

-d "Manage network and host configuration and security" \

-m RtNetConfSec.html -p "Network Management"

运行此命令之前,管理员创建了一个新的帮助文件 RtNetConfSec.html,并将其放置在 /usr/lib/help/profiles/locale/C 目录中。



示例 9–15 使用权限工具创建新的权限配置文件

下表列出了名为“生成管理员”的假设的权限配置文件的样例数据。此权限配置文件包括子目录 /usr/local/swctrl/bin 中的命令。这些命令的有效 UID 为 0。生成管理员权限配置文件适用于管理软件开发的生成和版本控制的管理员。

选项卡 

字段 

示例 

一般 

名称 

生成管理员 

 

说明 

用于管理软件生成和版本控制。 

 

帮助文件名称 

BuildAdmin.html

命令 

添加目录 

单击“添加目录”,在对话框中键入 /usr/local/swctrl/bin,然后单击“确定”。

 

命令遭拒/许可的命令 

/usr/local/swctrl/bin 移动到“许可的命令”列。

 

设置安全性属性 

选择 /usr/local/swctrl/bin,单击“设置安全性属性”,然后将“有效 UID”设置为 root

授权 

排除的授权/包括的授权 

无授权。

辅助权限 

排除的权限/包括的权限 

无补充权限配置文件。


故障排除

如果权限配置文件没有为角色提供所需的功能,请检查以下情况:

Procedure如何更改用户的 RBAC 属性

用户属性包括口令、权限配置文件和授权。为用户提供管理功能的最安全的方法是将角色指定给用户。有关说明,请参见直接指定安全属性时的安全注意事项

开始之前

要更改用户属性,您必须已承担主管理员角色或已切换到超级用户。

    使用以下方法之一更改用户的 RBAC 属性。

    • 使用 Solaris Management Console 中的“用户”工具。

      要启动该控制台,请参见如何在 Solaris Management Console 中承担角色。请按照左侧窗格中的说明在“用户帐户”中修改用户。有关更详细的信息,请参见联机帮助。


      提示 –

      为用户直接指定授权、特权或权限配置文件并不是一个好的做法。首选方法是将角色指定给用户。然后,用户承担角色以执行特权操作。


    • 使用 usermod 命令。

      此命令可修改本地名称服务中定义的用户的属性。


      $ usermod -R rolename username
      
      -R rolename

      现有本地角色的名称。

      username

      要修改的现有本地用户的名称。

      有关更多命令选项,请参见 usermod(1M) 手册页。

    • 使用包含 modify 子命令的 smuser 命令。

      此命令可修改 NIS、NIS+ 或 LDAP 等分布式名称服务中的用户的属性。此命令将作为 Solaris Management Console 服务器的客户机运行。


      $ /usr/sadm/bin/smuser -D domain-name \ 
      
      -r admin-role -l <Type admin-role password> \
      
      modify -- -n username -a rolename
      
      -D domain-name

      要管理的域的名称。

      -r admin-role

      可以修改角色的管理角色的名称。管理角色必须具有 solaris.role.assign 授权。如果要修改已承担的角色,则该角色必须具有 solaris.role.delegate 授权。

      -l

      admin-role 的口令输入提示。

      --

      验证选项和子命令选项之间必需的分隔符。

      -n username

      指定了 rolename 的用户的名称。

      -a rolename

      将指定给 username 的角色的名称。您可以指定多个 -a rolename 选项。

      有关更多命令选项,请参见 smuser(1M) 手册页。


示例 9–16 通过命令行修改本地用户的 RBAC 属性

在本示例中,用户 jdoe 现在可以承担系统管理员的角色。


$ usermod -R sysadmin jdoe


示例 9–17 使用 smuser 命令修改用户的 RBAC 属性

在本示例中,为用户 jdoe 指定了两个角色:系统管理员和操作员。由于该用户和这两个角色是在本地定义的,因此不必使用 -D 选项。


$ /usr/sadm/bin/smuser -r primaryadm -l <Type primaryadm password> \

modify -- -n jdoe -a sysadmin -a operadm

在以下示例中,该用户是在 NIS 名称服务中定义的。因此,需要使用 -D 选项。两个角色是在名称服务中定义的。角色 root 是在本地定义的。


$ /usr/sadm/bin/smuser -D nis:/examplehost/example.domain \

-r primaryadm -l <Type primaryadm password> \

modify -- -n jdoe -a sysadmin -a operadm -a root

Procedure如何为传统应用程序添加 RBAC 属性

传统应用程序是一个命令或一组命令。先针对权限配置文件中的每个命令设置安全性属性。然后,在角色中包括该权限配置文件。承担该角色的用户便可以运行具有安全性属性的传统应用程序。

要将传统应用程序添加到 Solaris Management Console,请参见《系统管理指南:基本管理》中的“向 Solaris Management Console 中添加工具”

开始之前

要更改权限配置文件中命令的安全性属性,您必须已承担主管理员角色或已切换到超级用户。

  1. 使用 Solaris Management Console 中的“用户”工具。

    要启动该控制台,请参见如何在 Solaris Management Console 中承担角色。请按照左侧窗格中的说明在“权限”中修改权限配置文件。有关更详细的信息,请参见联机帮助。

  2. 向实现传统应用程序的命令添加安全性属性。

    向传统应用程序添加安全性属性的方式与为任何命令添加安全性属性的方式相同。您必须将具有安全性属性的命令添加到权限配置文件。对于传统命令,请为命令指定 euid=0uid=0 安全性属性。有关该过程的详细信息,请参见如何创建或更改权限配置文件

  3. 将传统应用程序添加到权限配置文件后,在角色的配置文件列表中包括该权限配置文件。

    要向角色添加权限配置文件,请参见如何更改角色的属性


示例 9–18 向脚本中的命令添加安全性属性

如果某个脚本中的命令需要设置 setuid 位或 setgid 位才能成功运行,则将必须在权限配置文件中为该脚本的可执行脚本命令添加安全性属性。然后,在角色中包括该权限配置文件,并将该角色指定给用户。当用户承担该角色并执行该脚本时,此命令便会以安全性属性运行。

要将安全性属性添加到命令或 shell 脚本,请参见如何创建或更改权限配置文件



示例 9–19 检查脚本或程序中的授权

要检查脚本授权,需要添加一项基于 auths 命令的测试。有关此命令的详细信息,请参见 auths(1) 手册页。

例如,以下行会测试用户是否具有作为 $1 参数提供的授权:


if [ `/usr/bin/auths|/usr/xpg4/bin/grep $1` ]; then

        echo Auth granted

else

        echo Auth denied

fi

要使测试更加完整,应在测试中包括检查其他使用通配符的授权的逻辑。例如,要测试用户是否具有 solaris.admin.usermgr.write 授权,需要检查以下字符串:

如果您要编写程序,请使用函数 getauthattr() 对授权进行测试。