MQ7.5以后的权限问题解决
来源:互联网 发布:喜马拉雅电台 知乎 编辑:程序博客网 时间:2024/06/10 19:05
MQ7.5以后权限是个问题,目前我也没有什么特别好的解决办法,把认证通道关闭就可以正常使用。
下面是IBM 官方的解释,可惜我没调通,望高人指点!
疑问
您使用MQ 7.1或者7.5创建了一个新的队列管理器。然后,您尝试使用管理员账户从客户端访问该队列管理器。您得到返回值为“2035 MQRC_NOT_AUTHORIZED”的错误。
为什么在MQ 6.x或者7.0.x中,MQ管理员可以远程访问队列管理器,而不会产生任何错误?
原因
当您使用MQ 7.1或者MQ 7.5创建一个新的队列管理器的时候,MQ 7.1新引入的通道认证记录功能就默认被启用。您可以使用下列命令来查看该设置。
$ runmqsc QmgrNameDISPLAY QMGR CHLAUTHAMQ8408: Display Queue Manager details.QMNAME(TEST01) CHLAUTH(ENABLED)
在默认情况下,创建队列管理器会产生下列三条通道认证记录:$ runmqsc QmgrName
DISPLAY 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)AMQ8878: Display channel authentication record details.CHLAUTH(*) TYPE(BLOCKUSER)USERLIST(*MQADMIN)
其中,最后一条记录拦截所有以MQ管理员身份的远程通道访问。非管理员用户在赋予一定权限的情况下仍然可以远程连接队列管理器,而管理员用户和匿名用户被禁止连接。这意味着在新版本MQ中,队列管理器更加安全。当然,这就需要显式定义管理权限。另外,需要注意以下几点:
a)如果升级一个队列管理器到MQ 7.1,那么这个新功能默认是关闭的。
$ runmqsc QmgrNameDISPLAY QMGR CHLAUTHAMQ8408: Display Queue Manager details.QMNAME(TEST01) CHLAUTH(DISABLED)
当然,您可以使用如下命令开启该功能。
ALTER QMGR CHLAUTH(ENABLED)
b) 如果您使用MQ资源管理器远程访问新创建的MQ 7.1队列管理器,会得到如下错误:
关闭该对话框后,弹出另外一个对话框:
该错误表明MQ资源管理器不能远程连接到队列管理器。
c) 从错误日志中,可以看到错误AMQ9776或者9777,然后还有AMQ9999。
c.1) AMQ9776: Channel was blocked by userid
c.2) AMQ9777: Channel was blocked
c.3) AMQ9999: Channel 'SYSTEM.ADMIN.SVRCONN' to host 'x (9.49.x.x)' ended abnormally.
以上错误表明远程连接符合某条通道认证记录,从而被拦截。
答案
1) 如果在生产环境中,建议使用非管理员账户访问队列管理器,而不是管理员账户。
2) 如果您一定要使用MQ管理员账户远程访问队列管理器,您可以采取以下措施。
2.a) 您可以参考下面的资料,添加两条通道认证记录。
http://www.websphereusergroup.org/go/article/view/251913/whats_new_in_websphere_mq_v7.1_security
第10页: 用户ID拦截
第一条记录拦截所有的管理员用户及“nobody”用户。
$ runmqsc QmgrName
SET CHLAUTH(*) TYPE(BLOCKUSER) USERLIST('nobody','*MQADMIN')
第二条记录对管理员账户开放了SYSTEM.ADMIN通道的访问,只拦截“nobody”用户。这里,MQ假设其它的通道认证记录或者用户安全出口可以完成对管理员账户的认证。
SET CHLAUTH(SYSTEM.ADMIN.*) TYPE(BLOCKUSER) USERLIST('nobody')同样,上面的记录适用于SYSTEM.ADMIN.SVRCONN通道,可以被MQ资源管理器使用。
如果您使用其它的自定义的通道,例如MY.ADMIN.SVRCONN。您需要定义如下记录:
SET CHLAUTH(MY.ADMIN.SVRCONN) TYPE(ADDRESSMAP) ADDRESS(*) USERSRC(CHANNEL)SET CHLAUTH(MY.ADMIN.SVRCONN) TYPE(BLOCKUSER) USERLIST('nobody')
注意:我们不建议用户连接SYSTEM.DEF.*通道。这些系统定义的通道是定义其它用户通道的模板。不建议用户使用SYSTEM.DEF.*和SYSTEM.AUTO.*通道。
2.b)该方法是2.a)的一个演变,但是只允许管理员账户从特定主机连接。
第一条规则拦截“nobody”用户。
SET CHLAUTH(SYSTEM.ADMIN.SVRCONN) TYPE(BLOCKUSER) USERLIST('nobody')
第二条规则删除所有对SYSTEM.ADMIN.SVRCONN通道的访问。
SET CHLAUTH(SYSTEM.ADMIN.SVRCONN) TYPE(ADDRESSMAP) ADDRESS(*) ACTION(REMOVE)
第三条规则添加一个访问入口。
SET CHLAUTH(SYSTEM.ADMIN.SVRCONN) TYPE(ADDRESSMAP) ADDRESS(9.27.4x.7y) USERSRC(CHANNEL)
2.c) 停止通道认证功能。
ALTER QMGR CHLAUTH(DISABLED)
警告:对于生产环境,停止该功能是不推荐的。因为停止该功能,将导致队列管理器接受所有的管理权限的连接,这就需要用户付出更大的努力去管理这些连接。因此,出于安全考虑,请保持通道认证记录功能启用。同时,使用MQ 7.1的其它功能完成连接认证。
- MQ7.5以后的权限问题解决
- ubuntu14.04安装MQ7.5
- MQ7 在Ubuntu上的安装
- websphere mq7在linux的配置
- android 6.0 以后的动态权限管理
- //这里根据得到的权限集合来配置返回的User对象供以后使用5
- 安装VS2012以后又安装IIS遇到的问题解决方案
- 关于dedecms数据量大以后生成目录缓慢的问题解决
- .net,Url重写以后Session访问报错的问题解决
- Android 6.0(23)以后动态权限的使用
- Android6.0以后 申请敏感权限两次的解决方法
- mysql root没有权限的问题解决
- iOS10 权限导致crash的问题解决方案
- Android 6.0+以后权限问题
- 安装ubuntu9.04以后不显示启动菜单或者没有windows启动项的问题解决方法
- 搭建网站: wamp打开LocalHost以后显示IIS7页面的问题解决方案
- 关于Mac系统接完投影仪拔下来以后有黑框的问题解决办法
- cvs 权限问题解决
- HDU 2154 跳舞毯
- WebService大讲堂之Axis2(7):将Spring的装配JavaBean发布成WebService
- Qt之自定义菜单(按钮菜单)
- jsonKit第三方包错误解决方案
- springmvc获取json Failed to load resource: the server responded with a status of 406 (Not Acceptable)
- MQ7.5以后的权限问题解决
- UVA - 11627 Slalom
- HDU-2808
- zynq虐我千百遍——第2篇 Linaro之devicetree
- String类(传智播客java基础毕老师的源码)
- 使用kaptcha插件生成加法计算验证码
- 【Python 学习手册笔记】列表与字典
- 从layout到extent的演变史(二)
- APACHE服务器出现No input file specified.的完美解决方案