在本地帐户/组下运行的 WebSphere MQ 无法读取 Active Directory 用户的组成员身份。解决方法或替代解决方案?

在本地帐户/组下运行的 WebSphere MQ 无法读取 Active Directory 用户的组成员身份。解决方法或替代解决方案?

我正在开发一个使用 WebSphere MQ v6.0 的应用程序。WebSphere MQ 目前由于以下问题无法运行:

  • WebSphere MQ 服务在本地组“mqm”中的本地用户“MUSR_MQADMIN”下运行
  • 我尝试使用自己的帐户 BIZ\noahz 使用该服务
  • MUSR_MQADMIN 需要检查 BIZ\noahz 是否在本地组“mqm”中
  • MUSR_MQADMIN 没有权限读取 BIZ\noahz 的 Active Directory 组成员身份
  • MQ日志文件中出现以下错误:

----- amqzfubn.c : 3582 -------------------------------------------------------

2011 年 1 月 31 日 18:51:32 - 进程 (704.1105) 用户 (MUSR_MQADMIN) 程序 (amqzlaa0.exe) AMQ8079:尝试检索用户“noahz@biz”的组成员身份信息时访问被拒绝。

解释:以用户“musr_mqadmin@noahz-biz”的权限运行的 WebSphere MQ 无法检索指定用户的组成员身份信息。操作:确保 Active Directory 访问权限允许用户“musr_mqadmin@noahz-biz”读取用户“noahz@biz”的组成员身份。要检索域用户的组成员身份信息,MQ 必须以域用户的权限运行。

----- amqzfubn.c : 3582 -------------------------------------------------------

我在 IBM 的网站上找到了更多信息: http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/index.jsp?topic=/com.ibm.mq.amqtac.doc/wq10830_.htm

我的 Windows 机器没有 Active Directory 管理员权限,所以我的问题是:

我还能做些什么来解决(或解决)此问题并让 WebSphere MQ 再次为我工作吗?例如,我可以在 WebSphere MQ 中禁用此安全检查吗?

更新以下是我从 IBM 支持部门得到的回复:

通常,这些错误表明 MQ 服务在 dcom 中配置为在其下运行的用户 ID 存在问题。如果您不确定这是什么用户 ID,可以使用以下命令进行检查:

打开命令提示符并输入:dcomcnfg。组件服务 MMC 打开后,双击“组件服务”,双击“计算机”,双击“我的电脑”,双击“DCOM 配置”。在窗口中,查找“IBM MQSeries 服务”,右键单击,然后选择属性。单击“身份”选项卡。它应该显示“此用户”,后面跟着一个 ID。

请确保 MQ 服务 ID(来自上面的“身份”选项卡)在本地具有所需的权限。授予其以下缺少的任何权限:

打开开始->程序->管理工具->本地安全设置。

打开本地策略,然后打开用户权限分配,双击检查是否设置了以下权限:
- 作为批处理作业登录
- 作为服务登录
- 关闭系统
- 调试程序
- 增加配额
- 作为操作系统的一部分
- 绕过遍历检查
- 替换进程级令牌

最终的结果是,我的 IT 部门和 InfoSec 决定 WebSphere MQ 是“服务器软件”,因此不允许在单独的工作站上使用,所以我甚至从未测试过上述解决方案!

答案1

虽然我找不到上面提到的 DCOM 条目(与 V7.1 相关?),但我能够借助前面提到的 runas-tip 创建、启动和连接到本地 Windows V7.1 Qmgr,而无需 Active Directory 访问权限。这是我所做的:

  • 在Windows的lusrmgr中更改用户MUSR_MQADMIN的密码
  • 检查 MQService 是否已停止
  • 在服务列表中,更改用户 MUSR_MQADMIN 的密码
  • 打开 DOSbox 并执行:C:> runas /user:MUSR_MQADMIN "crtmqm QMGR1" C:> runas /user:MUSR_MQADMIN "strmqm QMGR1" (请注意,对于每个命令您都必须提供密码)
  • 右键单击任务栏中的 MQ 图标并选择“WebSphere MQ Explorer”
  • MQ Explorer 打开后,会用向下的红色箭头指示 Qmgr“QMGR1”。右键单击此图标并选择“开始...”
  • 在弹出的窗口中选择“开始交互”,点击“确定”
  • QMGR1 图标现在应该有一个向上的绿色箭头(已开始),并且其方块应该是黄色(已连接)。
  • 在 MQ Explorer 中创建一个名为 TEST1 的队列,并使其默认持久性持久化
  • 在 DOSbox 中执行:
    C:> amqsput TEST1 QMGR1 输入一条消息...然后输入一个空行以结束示例程序
  • 现在检查 MQ Explorer 中是否有您的消息!

提示:可以使用命令“mqrc,fi C:>mqrc 2085”快速检查 MQ 返回代码

答案2

WebSphere MQ 始终需要获取任何试图运行其组件或授权访问其资源的 ID 的组成员身份。如果这些 ID 是非本地的,则 MQ 将需要在拥有该 ID 的域中执行 SAM 成员身份查找的权限。有几种可用的解决方法:

  1. 使用本地 ID。MQ 将始终能够在本地 SAM 数据库中执行查找,因为它必须由管理员安装,并在安装期间授予其自身适当的本地权限。它不必是 MUSR_MQADMIN,但如果要运行 QMgr,它必须在 mqm 组中。
  2. 使用 WMQ Explorer 启动 QMgr。任何较新版本的 WMQ Explorer 都会提示不同的选项,其中之一是使用拥有该服务的 ID 启动 QMgr。启动后,您可以使用常规 ID 访问队列和主题。

更新:
我希望在你的 IT 部门采取严厉措施之前我能想到这一点,但可以禁用对象权限管理器。这是在 AD 域上执行查找的组件。我知道禁用它可以允许任何东西连接到 QMgr 而不会出现域权限问题。我很确定这样做还允许您的 ID 执行运行 QMgr 的进程。

答案3

我也正在使用 Websphere Message Broker 开发应用程序。目前我有一个“开发人员”版本。我找到了一种解决方法,即在安装 MQ 时禁用 SAM 成员资格监视。

为此,我从安装目录 (Websphere_MQ_V7.5) 运行了“Websphere MQ Launchpad”(在 Windows 中运行 Setup.exe)。在“网络配置”选项卡中,有一个选项可以禁用用户 ID 配置。选择“否”并执行安装。

但这并不意味着这对于生产和 QA 环境来说不是最好的选择。

答案4

我想最好的办法是使用鲁纳斯以 mq 用户身份运行:

runas /user:MUSR_MQADMIN "strmqm <qmgr-name>"

相关内容