好的,我想检查是否可以远程运行MQ服务器中的某些操作系统或MQSC命令。 只要我知道,这可以用SYSTEM.ADMIN.SVRCONN
完成。 为此,我将一个远程队列pipe理器添加到我的WebSphere MQ客户端。 我把队列pipe理器名称放在服务器上,IP地址正确,但是当我使用SYSTEM.ADMIN.SVRCONN
作为通道名时,我得到: Channel name not recognized (AMQ4871)
错误。
另外,如果我有一个像MY.CHANNEL.NAME这样的通道名称,并且它是一个以mqm
作为其MCAUSER
的服务器连接通道,我可以通过服务器上的这个通道运行一些命令(MQSC或OS)吗?
谢谢。
EDIT1
我正在使用WebSphere MQ v.7.0
通过“我添加远程队列pipe理器到我的WebSphere MQ客户端”我的意思是我添加了一个远程队列pipe理器到MQ Explorer。
EDIT2
我想在这个编辑中更准确地解释我的问题。 我想通过MQ Explorer连接到远程Qmanager。 我知道Qmanager的名字和它的知识产权。 此外,远程Qmanager同时具有SYSTEM.ADMIN.SVRCONN
和SYSTEM.AUTO.SVRCONN
通道可用。 当我检查这些频道的CHLAUTH
,我有:
AMQ8878: Display channel authentication record details. CHLAUTH(SYSTEM.ADMIN.SVRCONN) TYPE(ADDRESSMAP) ADDRESS(*) USERSRC(CHANNEL) AMQ8878: Display channel authentication record details. CHLAUTH(SYSTEM.*) TYPE(ADDRESSMAP) ADDRESS(*) USERSRC(NOACCESS) dis chl(SYSTEM.ADMIN.SVRCONN) MCAUSER 5 : dis chl(SYSTEM.ADMIN.SVRCONN) MCAUSER AMQ8147: WebSphere MQ object SYSTEM.ADMIN.SVRCONN not found. dis chl(SYSTEM.AUTO.SVRCONN) MCAUSER 6 : dis chl(SYSTEM.AUTO.SVRCONN) MCAUSER AMQ8414: Display Channel details. CHANNEL(SYSTEM.AUTO.SVRCONN) CHLTYPE(SVRCONN) MCAUSER( )
正如你在这里看到的,我应该可以通过这两个通道连接并运行一些命令。 但是,当我在远程configuration中selectSYSTEM.ADMIN.SVRCONN
作为通道名称时:我Channel name not recognized (AMQ4871)
,当我selectSYSTEM.AUTO.SVRCONN
作为通道名称时,我得到: You are not authorized to perform this operation (AMQ4036).
任何想法?
我将一个远程队列管理器添加到我的WebSphere MQ客户端。
我完全不知道这意味着什么。 MQ Explorer保留了一个队列管理器定义列表。 MQ客户端只是一个连接库。
如果您的意思是将远程队列管理器添加到MQ资源管理器,那么它是有道理的。 除了在资源管理器中定义连接之外,还必须在队列管理器中设置连接。 这意味着定义SYSTEM.ADMIN.SVRCONN
通道或一个名称,定义和启动一个监听器。 如果您位于7.1或更高版本的队列管理器(在询问MQ时列出版本总是好的),那么您还需要创建一个CHLAUTH规则以允许连接,另一个CHLAUTH规则允许具有管理权限的连接。 要么完全禁用CHLAUTH规则,但不建议这样做。
如果我有一个像
MY.CHANNEL.NAME
这样的通道名称,并且它是一个以mqm
作为其MCAUSER
的服务器连接通道,我可以通过服务器上的这个通道运行一些命令(MQSC或OS)吗?
也许。
MQ开箱即拒绝所有客户端连接。 有CHLAUTH规则拒绝管理连接和其他CHLAUTH规则拒绝SYSTEM.ADMIN.SVRCONN以外的任何SYSTEM.*
通道的连接。 由于管理员连接被拒绝,所以非管理员用户在使用SYSTEM.ADMIN.SVRCONN
之前必须使用SET AUTHREC
或setmqaut
命令进行SYSTEM.ADMIN.SVRCONN
,因此MQ被称为“默认安全”。
当您创建MY.CHANNEL.NAME
并以管理员身份进行连接时,如果启用CHLAUTH,连接将被拒绝。 你将不得不添加一个新的CHLAUTH规则,如…
SET CHLAUTH('MY.CHANNEL.NAME') TYPE(BLOCKUSER) USERLIST('*NOBODY') WARN(NO) ACTION(ADD)
…为了允许管理员连接。
(注意:MQ CHLAUTH阻止规则使用黑名单方法,默认规则阻止 来自所有通道的 *MQADMIN
上面列出的规则覆盖默认规则,因为通道名称更具体,并且阻止 *NOBODY
– 这是一个列表不包含mqm或任何其他管理用户标识的用户标识,这很奇怪,但这就是它的工作原理。
关于这个话题的更多信息请参见http://t-rob.net/links ,尤其是Morag关于CHLAUTH
规则的会议介绍是必读的。
20150506更新
对原始问题编辑#1和#2的回应如下:
第一个编辑表示QMgr在v7.0,第二个显示QMgr已经定义了CHLAUTH记录。 由于CHLAUTH在7.1版本之前是不可用的,所以这两个语句是相互排斥的 – 它们不能同时为真。 提供MQ服务器或客户端的版本时,最好粘贴到dspmqver
的输出中。 如果问题涉及GSKit,Java代码或基本代码之外的其他组件,那么dspmqver -a
会更好。
问题更新中提供的MQSC输出完全解释了错误。
dis chl(SYSTEM.ADMIN.SVRCONN) MCAUSER 5 : dis chl(SYSTEM.ADMIN.SVRCONN) MCAUSER AMQ8147: WebSphere MQ object SYSTEM.ADMIN.SVRCONN not found.
正如Morag所说, SYSTEM.ADMIN.SVRCONN
不能被使用,因为它没有被定义。
AMQ8878: Display channel authentication record details. CHLAUTH(SYSTEM.*) TYPE(ADDRESSMAP) ADDRESS(*) USERSRC(NOACCESS)
发生auths错误是因为任何连接到没有被明确覆盖的SYSTEM.*
SVRCONN通道都被这个规则阻塞。 SYSTEM.ADMIN.SVRCONN的CHLAUTH规则优先,因为它更明确,并允许非管理员连接到该通道。 SYSTEM.AUTO.SVRCONN
缺少类似的覆盖规则,意味着它被上面列出的SYSTEM.*
声道的现有规则所拒绝。
如前所述, 强烈建议访问链接的网站,阅读Morag关于MQ v7.1安全性和CHLAUTH规则的会议演示。 它解释了如何应用CHLAUTH规则,优先级如何工作,也许最重要的是如何用MATCH(RUNCHECK)
参数验证它们。
要执行MQ安全性权限, 至少需要以下内容:
SYSTEM.*
开头的通道SYSTEM.*
并设置MCAUSER('*NOBODY')
。 mqm
或管理员权限连接到频道,请定义CHLAUTH规则以验证频道,最好使用TLS和证书。 有几件事情你不想做,因为在莫拉格和我的演讲中解释的原因。 这些包括…
SYSTEM.AUTO.SVRCONN
。 SYSTEM.*
任何东西( SYSTEM.ADMIN.SVRCONN
或SYSTEM.BROKER.*
除外)用于合法连接。 我希望人们学习MQ的安全性,并且很好地学习它。 但是,作为一名专业顾问,我必须告诉你,即使是雇用了我现场授课并帮助实施的客户也无法将其锁定。 从这个事实中可以得到两个见解。
首先,如果您没有足够的时间来加速MQ安全性,那么实现将不安全。 为了研究这个话题,以便理解所有这些部分如何配合得很好,以便设计一个体面的安全模型,需要用QMgr进行实践培训,你可以建立,锤击,拆卸,再次构建等等,需要几周专门的实践研究,或者数月或数年的随意学习。 我的建议是获得MQ Advanced for Developers。 它功能完全,免费,并且具有您正在使用的v7.1或v7.5 QMgr上的控件的超集。
第二点是,学习MQ(或任何其他IT)安全性没有捷径。 如果把它看作是一个简单的配置问题,那么在实施时就几乎保证不安全。 如果在学习所有可用于身份验证,授权和策略实施的不同控制,然后学习它们如何相互作用以及如果将安全作为实践的规则接近的情况下接近,那么可以实现一些有意义的安全性。
解决第二个问题需要投资教育。 仔细阅读演示文稿,并试用您管理的测试QMgr上的各种控件。 了解哪些错误发生在哪些错误日志中,哪些错误日志会生成事件消息以及生成哪种类型的事件。 在SupportPacs中获取一些诊断工具,比如我最喜欢的MS0P ,并熟悉它们。 考虑参加MQ技术大会 (在这里你可以遇到很多在SO上回答的人)进行更深入的培训。
如果您(或您的雇主)没有准备好深入技能构建或正在尝试在即将到来的项目截止日期前了解这一点,那么考虑根据需要聘请深入的MQ安全技能,这个主题的实时在职培训是一个不安全网络的秘诀。
当我使用SYSTEM.ADMIN.SVRCONN作为通道名称时,出现了以下情况:通道名称未被识别(AMQ4871)错误。
您是否在远程队列管理器上定义了频道?
如果我有一个像MY.CHANNEL.NAME这样的通道名称,并且它是一个以mqm作为其MCAUSER的服务器连接通道,我可以通过服务器上的这个通道运行一些命令(MQSC或OS)吗?
当然。 其他人也可以。 您应该阅读MQ安全性,不要将您的队列管理器暴露给黑客。