我正在开发一个使用 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 成员身份查找的权限。有几种可用的解决方法:
- 使用本地 ID。MQ 将始终能够在本地 SAM 数据库中执行查找,因为它必须由管理员安装,并在安装期间授予其自身适当的本地权限。它不必是 MUSR_MQADMIN,但如果要运行 QMgr,它必须在 mqm 组中。
- 使用 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>"