首页 > Websphere系列, 安全 > 安全第一-WebSphere启用全局安全性

安全第一-WebSphere启用全局安全性

2009年6月11日 hashei 发表评论 阅读评论

记得小时候有一次出去春游,带队的老师一直喜欢唠叨《方世玉》里李国邦的“安全第一”,那时候不怎么看得起这个懦弱胆小、明哲保身的胖男人,“安全第一”的口头禅也成了我调侃的对象。但是如今回想起他为信守承诺挺身而出并付出生命的镜头,却觉得他是电影里最贴近我们的普通人。

跑题了那么多,为的是说明WebSphere中启用管理安全性的必要性——否则谁都可以进入你的控制台修改配置,就算开发阶段没有安全要求,但是WebSphere没有Weblogic的那种锁定模式,所以当两个人同时修改配置并保存时,往往会发生操作丢失和冲突的问题。所以接下来介绍针对控制台的安全性设置,当然最直接的就是在安装profile的时候就启用管理安全性。

在管理控制台-安全中启用“全局安全性”,并把“应用程序安全性”、“执行Java 2安全性”选项前的勾去掉——我们今天只考虑控制台的安全性。

接下来对于“用户注册表”的选择,有三种方法:

最简单的——配置本地操作系统用户

    1. 单击安全性 > 全局安全性
    2. 在“用户注册表”下,单击本地操作系统
    3. 服务器用户标识字段中输入有效用户名。
    4. 服务器用户密码字段中输入用户密码。
    5. 可选: 选中授权时忽略大小写选项以使 WebSphere Application Server 在您使用缺省授权时能够执行不区分大小写的授权检查。
    6. 单击确定

这里的用户标识和密码,是指操作系统的用户和密码。就是说Windows环境下,你需要先在计算机管理的“本地用户和组”里设置一个帐号,类Unix环境需要先user add一个帐号并设置密码。优点是简单明了,缺点则是引入了另一层不安全——你的系统管理员帐号公开出来了,原因见引用。虽说一般都是使用WebSphere的安装运行帐号作为这里所设置的帐号(又有一个问题,如果是域环境中搭建Windows故障转移集群,那么这个帐号还必须是域管理员帐号),WebSphere管理员原本就知道这个帐号的,但往往开发人员也需要知道控制台的登录密码进行应用发布,这就造成了权限控制的不便。而且有些项目的安全策略需要定期修改系统密码,那更会造成种种不便。所以更常用的,是第二种“用户注册表”今天想了想,用的最多的其实是“联合存储库”,WAS建立Profiles启用安全性默认就是用这种模式

在非 admin 用户(Windows 平台)或非 root 用户(Unix 平台)的环境中,如何为 WAS 设置安全特性?

答:在非admin用户(Windows平台)/非root用户(Unix平台)环境中运行WAS时,在全局安全(global security)特性被启用的前提下,用户的注册表(registry)必须是LDAP或一个特定的注册表(自定义注册表)。

如果想使用本地操作系统的注册表,运行WAS的用户必须有管理员/root用户的权限来调用本地系统的认证或收集用户/组信息的API。

最常用的——“联合存储库”

  1. 单击安全性 > 安全管理、应用程序和基础结构
  2. 在“用户帐户存储库”下,单击联合存储库,选择设置为当前。
  3. 点击“配置”,常规属性的“域名”中已经填好defaultWIMFileBasedRealm,在“主要管理用户名”中填入wasadmin,勾选“自动生成的服务器标识”,点击应用。
  4. 出来设置密码的界面,输入密码,点击确认。
  5. 保存配置,重启应用服务器。

最常用的另一种选择——配置定制用注册表

    1. 单击安全性 > 全局安全性
    2. 在“用户帐户存储库”下,单击定制独立注册表
    3. 在“服务器用户标识”字段中输入有效用户名。 此标识是仅用于 WebSphere Application Server 安全性的安全性服务器标识,与运行服务器的系统进程无关。服务器调用本地操作系统用户注册表来认证和获取有关用户的特权信息(通过调用该特定用户注册表中的本机 API)。
    4. 在“服务器用户密码”字段中输入用户的密码。(这里的用户名和密码就是等下需要在users.props和group.props里面自己添加的
    5. 在“定制注册表类名”字段中,输入实现了 com.ibm.websphere.security.UserRegistry 接口的以点分隔的类名的完整位置。 对于样本来说,该文件名是 com.ibm.websphere.security.FileRegistrySample。该文件在 WebSphere Application Server 类路径中,最好是在 app_server_root/lib/ext 目录中。此文件存在于所有产品进程中。因此,此文件存在于单元类路径和所有节点类路径中。注意: 提供的样本旨在使您熟悉此功能。请不要在实际生产环境中使用此样本。(我一般就用这个Sample,当然生产环境还是要用自己开发的
    6. 将定制注册表类名添加到类路径中。 建议您将包含定制用户注册表实现的 Java 归档(JAR)文件添加到 app_server_root/classes 目录中。(将上述com.ibm.websphere.security.FileRegistrySample拷贝到目录中
    7. 可选: 选择授权时忽略大小写选项以执行不区分大小写的检查。 仅当用户注册表不区分大小写并且在用户和组查询期间不提供一致的大小写时,才有必要启用此选项。
    8. 如果要输入任何其他用于初始化注册表的属性,请单击应用
    9. 可选: 输入其他属性以初始化您的实现。
      1. 单击定制属性 > 新建
      2. 输入属性名和属性值。对于样本,输入下面这两个属性。假定 users.props 文件和 groups.props 文件在产品安装目录下的customer_sample 目录中。可以将这些属性放在您选择的任何目录中并通过定制属性来引用它们的位置。但是,确保该目录有适当的访问许可权。属性名
        属性值usersFile
        ${USER_INSTALL_ROOT}/customer_sample/users.props(文件放哪无所谓,路径制定正确即可,配置完后可以把权限改为400,提高一下安全性,我不太确定,忘了这个WAS会不会加密这个文件,加密的话还要给个写入权限,明天做实验试一下)

        groupsFile
        ${USER_INSTALL_ROOT}/customer_sample/groups.props

        users.props 文件 groups.props 文件 提供了这两个属性的样本。(点击自己去看吧,我不把样本复制过来了,基本上是Linux下shadow文件的格式

        将不会使用描述必需验证表达式字段,可以不填写这些字段。

        在包含多个 WebSphere Application Server 进程(例如不同机器中的单元和多个节点)的 Network Deployment 环境中,这些属性可供每个进程使用。由于相对名称USER_INSTALL_ROOT 将扩展为产品安装目录,所以,请使用此名称来查找文件。如果未使用此名称,请确保那些文件在所有节点上都在同一位置中。

        会将基于 WebSphere Application Server V4 的定制用户注册表迁移至基于 com.ibm.websphere.security.UserRegistry 接口的定制用户注册表。

      3. 单击应用
      4. 重复此步骤以添加其他属性。
    10. 单击确定并完成必需的步骤以打开安全性。

对于配置认证机制。WAS存在两个认证机制:第一,简单WebSphere认证机制(SWAM,单个服务器需求使用SWAM选项);第二,轻量级第三方认证(LTPA,多服务器分布式需求使用LTPA选项)。这个比较蛮烦,又能唠叨一篇。

经此折腾,管理控制台的安全性就启用了。还有一种是使用LDAP来实现用户认证,这在大型的企业环境中比较常见,明天细说这种的配置。

  1. 香我宁
    2009年6月12日09:23 | #1

    woding

  2. littlechen
    2009年11月18日18:42 | #2

    最近我所管理的WAS集群不知怎回事出了点问题,还请楼主能够释疑。
    AIX的WAS控制台原来设置了管理安全性,与AIX的root用户相关联,登录管理。
    某次,修改了AIX的root用户使之可设置长密码,并且修改了root密码;关闭了AIX的telnet和X界面;开启了SSH2服务。后来,以root用户登陆WAS控制台WAS Dmgr就会dump。
    尝试修改security.xml文件,将enable值改为false。WAS控制台恢复无全局安全性状态,可以正常登录管理。继续设置管理安全性,仍然是一登陆就dump,无解,不知如何处理。

  3. hashei
    2009年11月18日21:38 | #3

    littlechen :
    最近我所管理的WAS集群不知怎回事出了点问题,还请楼主能够释疑。
    AIX的WAS控制台原来设置了管理安全性,与AIX的root用户相关联,登录管理。
    某次,修改了AIX的root用户使之可设置长密码,并且修改了root密码;关闭了AIX的telnet和X界面;开启了SSH2服务。后来,以root用户登陆WAS控制台WAS Dmgr就会dump。
    尝试修改security.xml文件,将enable值改为false。WAS控制台恢复无全局安全性状态,可以正常登录管理。继续设置管理安全性,仍然是一登陆就dump,无解,不知如何处理。

    日志里有什么错误信息?集群的每台服务器都修改root密码了么?重新设置管理安全性后有没有同步一下?或者修改认证模式,用“联合存储库”

  1. 2009年6月20日16:21 | #1