Java Solaris 加入Sun中国技术社区 我的社区 注册说明

BigAdmin 系统管理门户网站
专题文章:将 Sun Java System Identity Manager 与 Solaris 操作系统中的 RBAC 配置文件一起使用

将 Sun Java System Identity Manager 与 Solaris 操作系统中的 RBAC 配置文件一起使用

Scott Fehrman,2005 年 8 月


概述

Sun Java System Identity Manager 利用 Resource Adapter 在运行 Solaris 操作系统的系统上创建、修改和删除帐户。需要由有权执行用户管理任务的用户来配置 Identity Manager Resource Adapter。用于 Solaris 操作系统的 Resource Adapter 可以使用 root 帐户、sudo 实用程序或“特权”用户帐户。

大多数客户不允许使用 Identity Manager 来管理具有 root 帐户的用户。要使用 sudo 功能,您需要在 Solaris 操作系统上进行安装和配置。(sudo 是随附 CD 上的一个实用程序,Sun 不支持该程序。)创建“代理”或“特权”帐户是一种为特定用户授予精细访问权限的安全方法。Solaris 操作系统具有一个为各个用户或角色委派特权命令的内置机制。

本文档说明了如何将 Solaris 操作系统(发行版 9 和 10)配置为与 Identity Manager 一起使用,以便通过用于 Solaris 操作系统的 Identity Manager Resource Adapter 使用特权配置文件来创建、修改和删除用户帐户。

RBAC 和配置文件

Solaris 操作系统提供了基于角色的访问控制 (Role-Based Access Control, RBAC),以便委派管理任务。可以将 RBAC 作为使用 root 帐户进行用户管理的替代方法。RBAC 也可以替代 sudo 实用程序,后者不是 Solaris 支持的功能。本文介绍了一个称为配置文件的 RBAC 组件。给定的配置文件用于定义可以执行的特权命令。可以将配置文件分配给多个用户和/或角色。

Solaris 操作系统中的配置文件是使用以下方法启用的:让用户使用 su 切换到某个角色,或者在“配置文件 shell”中执行特权命令。Solaris 操作系统提供了三个不同的配置文件 shell:

/usr/bin/pfsh
/usr/bin/pfcsh
/usr/bin/pfksh

使用配置文件

可以使用两种方法在配置文件 shell 中执行特权命令。

通过在 /etc/passwd 中将某个配置文件 shell 指定为缺省登录 shell,可以将用户或角色自动放在配置文件 shell 中。下面的示例指出,用户 idmadm 可以自动执行特权命令,因为它具有 /usr/bin/pfksh shell。

$ grep idmadm /etc/passwd
idmadm:x:23734:1:IdMgr Admin:/export/home/idmadm:/usr/bin/pfksh

对于允许在其配置文件中运行特权命令的用户,他们可以使用非配置文件 shell(cshkshbash 等)。配置文件命令是使用 pfexec 命令执行的:

-bash-3.00$ pfexec useradd johndoe ...

本文档说明如何创建允许管理用户帐户的代理(或特权)用户。将为代理用户 idmadm 分配一个名为 "Identity Management" 的自定义 Solaris 配置文件,该配置文件可以执行 Identity Manager Resource Adapter 所需的命令。


设置 RBAC 配置文件

设置一个配置文件,以便能够执行 Identity Manager Resource Adapter 所需的命令。要创建新的配置文件,您需要具有 root 访问权限。

/etc/security/prof_attr 文件中尚未存在的配置文件创建一个名称。此示例将使用一个名为 "Identity Management" 的配置文件。在进行更改之前,请制作原始文件 exec_attrprof_attr 的副本。以 root 用户身份执行以下命令:

# cp /etc/security/exec_attr /etc/security/exec_attr.orig
# cp /etc/security/prof_attr /etc/security/prof_attr.orig

root 用户身份在 /etc/security/prof_attr 文件末尾添加以下行:

Identity Management:::Sun Identity Manager Profile:

通过添加此行,可以定义一个名为 "Identity Management" 的新配置文件。第 2 个字段和第 3 个字段为保留字段,第 4 个字段为注释字段。最后一个字段支持某些选项。以 root 用户身份在 /etc/security/exec_attr 文件末尾添加以下行。

注:对于 Solaris 9 操作系统和 Solaris 10 操作系统,文件条目中的第 2 个字段是不同的。第 2 个字段定义了与配置文件相关联的策略。在 Solaris 9 操作系统中,唯一可用的策略是 suser。对于 Solaris 10 操作系统,此策略必须为 solaris

对于 Solaris 9 操作系统,请使用以下条目:

Identity Management:suser:cmd:::/usr/sbin/useradd:uid=0
Identity Management:suser:cmd:::/usr/sbin/userdel:uid=0
Identity Management:suser:cmd:::/usr/sbin/usermod:uid=0
Identity Management:suser:cmd:::/usr/sbin/groupadd:uid=0
Identity Management:suser:cmd:::/usr/sbin/groupdel:uid=0
Identity Management:suser:cmd:::/usr/sbin/groupmod:uid=0
Identity Management:suser:cmd:::/usr/bin/logins:uid=0;gid=bin
Identity Management:suser:cmd:::/usr/bin/which:uid=0;gid=bin
Identity Management:suser:cmd:::/usr/bin/passwd:uid=0
Identity Management:suser:cmd:::/usr/ccs/bin/make:uid=0
Identity Management:suser:cmd:::/usr/bin/yppasswd:uid=0
Identity Management:suser:cmd:::/usr/bin/chmod:uid=0
Identity Management:suser:cmd:::/usr/bin/chown:uid=0
Identity Management:suser:cmd:::/usr/bin/cp:uid=0
Identity Management:suser:cmd:::/usr/bin/mv:uid=0
Identity Management:suser:cmd:::/usr/bin/rm:uid=0
Identity Management:suser:cmd:::/usr/bin/sed:uid=0
Identity Management:suser:cmd:::/usr/bin/touch:uid=0

对于 Solaris 10 操作系统,请使用以下条目:

Identity Management:solaris:cmd:::/usr/sbin/useradd:uid=0
Identity Management:solaris:cmd:::/usr/sbin/userdel:uid=0
Identity Management:solaris:cmd:::/usr/sbin/usermod:uid=0
Identity Management:solaris:cmd:::/usr/sbin/groupadd:uid=0
Identity Management:solaris:cmd:::/usr/sbin/groupdel:uid=0
Identity Management:solaris:cmd:::/usr/sbin/groupmod:uid=0
Identity Management:solaris:cmd:::/usr/bin/logins:uid=0;gid=bin
Identity Management:solaris:cmd:::/usr/bin/which:uid=0;gid=bin
Identity Management:solaris:cmd:::/usr/bin/passwd:uid=0
Identity Management:solaris:cmd:::/usr/ccs/bin/make:uid=0
Identity Management:solaris:cmd:::/usr/bin/yppasswd:uid=0
Identity Management:solaris:cmd:::/usr/bin/chmod:uid=0
Identity Management:solaris:cmd:::/usr/bin/chown:uid=0
Identity Management:solaris:cmd:::/usr/bin/cp:uid=0
Identity Management:solaris:cmd:::/usr/bin/mv:uid=0
Identity Management:solaris:cmd:::/usr/bin/rm:uid=0
Identity Management:solaris:cmd:::/usr/bin/sed:uid=0
Identity Management:solaris:cmd:::/usr/bin/touch:uid=0

下表(表 1)显示了 Identity Manager 中的 Solaris Resource Adapter 所需的 Solaris 命令。所有这些命令必须可由 Identity Manager 代理用户执行,而不会出现任何权限错误。

Solaris Resource Adapter 所需的 Solaris 命令
命令
描述
useradd
管理新的用户登录
userdel
删除用户登录
usermod
修改用户的登录信息
groupadd
添加(创建)新的组定义
groupdel
删除组定义
groupmod
修改组定义
logins
列出用户和系统登录信息
which
查找命令;显示路径名或别名
passwd
更改登录口令和口令属性
make
维护、更新和重新生成相关的程序和文件
yppasswd
更改 NIS 数据库中的网络口令
chmod
更改文件的模式(权限)
chown
更改文件的所有者
cp
复制文件
mv
重命名文件或移到另一个目录中
rm
删除文件
sed
流编辑器
touch
更新文件的时间/日期戳
 

注:不必将上表(和配置文件)中列出的某些命令添加到配置文件中。它们将包含在 "Identity Management" 配置文件中,这是因为它们访问需要额外权限的文件,或者由于已知的访问问题。这些命令包括 loginswhich

其他命令供 Identity Manager Resource Adapter 代理用户使用。这些命令不需要特殊权限,因而不需要添加到配置文件中。出于安全方面的考虑,建议您仅将特权命令添加到配置文件中。为了便于参考,我们在下 表(表 2)中列出了这些(非特权)命令。

非特权命令
命令
描述
auths
输出为用户授予的权限
last
显示有关用户的登录和注销信息
listusers
列出用户登录信息
profiles
输出用户的执行配置文件
roles
输出为用户授予的角色
ypcat
输出 NIS 数据库中的值
ypmatch
输出 NIS 映射中的一个或多个密钥的值
awk
模式扫描和处理语言
cat
连接并显示文件
cut
剪切文件的每一行中的选定字段
diff
比较两个文件
echo
回显参数
grep
在文件中搜索模式
ls
列出目录的内容
sleep
挂起执行一段时间
sort
对文本文件进行排序、合并或顺序检查
tail
传送文件的最后一部分
 

创建代理用户

创建将由 Identity Manager 使用的代理或特权用户。以 root 用户身份登录到 Solaris 系统。创建 idmadm 帐户并设置其口令。根据需要,修改 "Home Directory"(主目录)路径名以便与您的环境相匹配。

login: root
password: ******
# useradd -c "Identity Manager proxy user" -d /export/home/idmadm
-m -s /usr/bin/pfksh -P "Identity Management" idmadm


# passwd idmadm
New Password: idmadm
Re-enter new password: idmadm
passwd: password successfully changed for idmadm

idmadm 用户的主目录中创建以下文件:

$ vi /export/home/idmadm/.profile

EDITOR=emacs; export EDITOR
PATH=/usr/bin:/usr/sbin; export PATH

测试代理用户

测试特权用户帐户。登录到系统,然后以交互方式创建测试用户。

login: idmadm
password: ******

$ which logins
/usr/bin/logins

$ logins
root 0 root 0 Super-User
daemon 1 other 1
bin 2 bin 2
sys 3 sys 3
adm 4 adm 4 Admin
uucp 5 uucp 5 uucp Admin
nuucp 9 nuucp 9 uucp Admin
smmsp 25 smmsp 25 SendMail Program
listen 37 adm 4 Network Admin
gdm 50 gdm 50 GDM Reserved UID
lp 71 lp 8 Line Printer Admin
webservd 80 webservd 80 WebServer Reserved UID
mysql 23732 mysql 100 MySQL
idmadm 23739 other 1 Identity Manager proxy user
nobody 60001 nobody 60001 NFS Anonymous Access User
noaccess 60002 noaccess 60002 No Access User
nobody4 65534 nogroup 65534 SunOS 4.x NFS Anon Access User

$ groupadd idmgrp

$ grep idmgrp /etc/group
idmgrp::101:

$ useradd -c "test user 1" -d /export/home/user1 -g idmgrp
-m -s /usr/bin/csh user1



$ grep user1 /etc/passwd
user1:x:23734:1:user1:/export/home/user1:/usr/bin/csh

$ ls -l /export/home/user1
total 4
drwxr-xr-x 2 user1 other 512 Feb 26 09:31 .
drwxr-xr-x 8 root root 512 Feb 28 15:38 ..

$ usermod -s /usr/bin/bash user1
$ grep user1 /etc/passwd
user1:x:23734:1:user1:/export/home/user1:/usr/bin/bash

$ passwd user1
New Password: password
Re-enter new Password: password
passwd: password successfully changed for user1

$ telnet localhost
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
login: user1
Password: password
Sun Microsystems Inc. SunOS 5.10 s10_74 December 2004
-bash-3.00$ id
uid=23735(user1) gid=101(idmgrp)
-bash-3.00$ exit

$ userdel user1
$ grep user1 /etc/passwd

$ groupdel idmgrp
$ grep idmgrp /etc/group

配置 Identity Manager Resource Adapter

将 Identity Manager 的 Solaris Resource Adapter 设置为使用代理(特权)用户。以“配置者”或能够配置资源适配器的其他用户的身份登录到 Identity Manager 上。

选择 Configure(配置)-> Manage Resources(管理资源)选项卡,确保选择了 Solaris Resource Type(Solaris 资源类型)。如果未选择,请将其选定,然后按 Save(保存)。

选择 Resources(资源)选项卡。选择标记为 New Resource...(新建资源...)的下拉按钮,然后选取 Solaris 选项。选择 Next(下一步)按钮继续。在本示例中,使用 Telnet 与 Solaris 操作系统进行通信。可以配置 SSH 以保护 Solaris 操作系统与 Identity Manager 之间的通信。

填写 Create Solaris Resource Wizard(创建 Solaris 资源向导)的第一页。请使用下面表 3 中显示的选项。

Create Solaris Resource Wizard(创建 Solaris 资源向导)(第 1 页)
字段
Host(主机):
localhost
Login User(登录用户):
idmadm
password(口令):
idmadm
Login Shell Prompt(登录 Shell 提示):
$
Make Directory(创建目录):
TRUE
 

在表单中输入信息后,选择 Test Connection(测试连接)按钮,以确保 Identity Manager 可以与 Solaris 操作系统进行通信。如果测试成功,将会刷新页面并显示一条状态消息(请参见下面的图 1)。

图 1
(单击放大)
图 1:资源参数(第 1 页,共 4 页)

如果 "Test Connection"(测试连接)失败(以红色文本显示),请确保所有命令(本文档的“测试代理用户”部分中的命令)都已完成,并且没有出现错误。然后复查在表单中输入的值。

按页面底部的 Next(下一步)按钮。

Create Solaris Resource Wizard(创建 Solaris 资源向导)的第 2 页(共 4 页)定义了在 Identity Manager 和 Solaris 操作系统之间映射的帐户属性。在本示例中,我们删除了 Authorizations(授权)属性(请参见图 2)。

图 2
(单击放大)
图 2:帐户属性(第 2 页,共 4 页)

按页面底部的 Next(下一步)按钮继续。

Create Solaris Resource Wizard(创建 Solaris 资源向导)的第 3 页(共 4 页)定义了标识模板。在本示例中,不需要进行修改(请参见图 3)。

图 3
(单击放大)
图 3:标识模板(第 3 页,共 4 页)

按页面底部的 Next(下一步)按钮继续。

Create Solaris Resource Wizard(创建 Solaris 资源向导的最后一页)(共 4 页)定义了 Identity Manager 参数。请使用下表中显示的选项。

Create Solaris Resource Wizard(创建 Solaris 资源向导)(第 4 页)
字段
Resource Name(资源名称):
<<唯一的名称>>
Display Name(显示名称):
描述
Exclude Accounts Rule(排除帐户规则):
Unix 排除资源帐户
 

有关示例,请参见图 4。

图 4
(单击放大)
图 4:帐户属性(第 4 页,共 4 页)

选择 Save(保存)按钮以完成资源向导。现在,您就可以使用 Solaris 资源了。通过管理界面创建新用户来测试资源。

为新的 Solaris 资源创建 Identity Manager 协调策略。在资源上运行完全协调,以便在 Solaris 系统和 Identity Manager 之间同步标识。


关于作者

Scott Fehrman 是 Sun Microsystems, Inc. 的 Identity Management Practice 部门的系统工程师。