我正在開發一個使用 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 ---------------------------------------- ----------------
1/31/2011 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 有問題。如果您不確定這是什麼 userid,您可以檢查以下內容:
開啟命令提示字元並鍵入:dcomcnfg。組件服務 MMC 打開後,雙擊“組件服務”,雙擊“計算機”,雙擊“我的電腦”,雙擊“DCOM 配置”。在視窗中,尋找“IBM MQSeries Services”,然後右鍵單擊它,然後選擇屬性。按一下“身分”標籤。它應該顯示“此用戶”,後面跟著一個 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 資源管理器將會打開,並且應使用向下的紅色箭頭指示 Qmgr“QMGR1”。右鍵單擊該圖標並選擇“開始...”
- 在彈出視窗中選擇“開始互動”,然後按一下“確定”
- QMGR1 圖示現在應該有一個向上的綠色箭頭(已啟動),其方塊應為黃色(已連接)。
- 在 MQ Explorer 中建立一個名為 TEST1 的佇列並使其預設持久化
- 在 DOSbox 中執行:
C:> amqsput TEST1 QMGR1 鍵入訊息 ...,然後鍵入一個空白行以結束範例程序 - 現在在 MQ Explorer 中檢查您的訊息是否存在!
提示:可以使用指令「mqrc , fi C:>mqrc 2085 快速檢查 MQ 回傳碼
答案2
WebSphere MQ 將始終需要取得嘗試執行其元件或授權存取其資源的任何 ID 的群組成員身分。如果這些 ID 不是本機 ID,則 MQ 將需要在擁有該 ID 的網域中執行 SAM 成員資格尋找的權限。有幾個可用的解決方法:
- 使用本地身份證。 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>"