MQ权限管理

单击左侧导航树上的 “ 授权管理 > 权限管理 ” ,右侧区域显示 “权限管理” 界面,“权限管理”显示当前集群中声名的队列或主题对于“MQ用户组”的执行(可读、可写、管理)权限,即如果该“MQ用户组”在此队列或主题上声明的是可读、可写、管理权限,则与该“MQ用户组”关联的“MQ用户”对此队列或主题具有执行(读、写、管理)权限,同时在“权限管理”界面可进行权限的添加、修改、删除操作。例如,我们要对队列名称为“test-queue”的队列做权限控制使用户名为“wenyb”的“MQ用户”拥有读、写、管理权限,只需对该用户关联的“MQ用户组”添加读、写、管理权限即可。即对用户组名称为“admin”的用户组添加读、写、管理权限。权限添加完成后,“admin”拥有了读、写、管理权限,“wenyb”是“admin”用户组下的用户,因此“wenyb”也就拥有了admin所拥有的权限,同时会在MQ部署目录的conf目录下的auth.xml文件中保存权限信息。

auth.xml文件
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<root>
    <anonymous allowed="false" username="anonymous" group="anonymous"/>
    <users>
        <user username="wenyb" password="000000" groups="admin"/>
    </users>
    <authorizations>
        <queueAuthz queue="test-queue" readRoles="admin" 
                                       writeRoles="admin" 
                                       adminRoles="admin"/>
        <topicAuthz topic="PMQ.Advisory.*" readRoles="admin" 
                                           writeRoles="admin" 
                                           adminRoles="admin"/>
    </authorizations>
</root>

说明: 用户名为“wenyb”所在的用户组为“admin”,“admin”具有读、写、管理权限。 读权限:获取消息 写权限:发送消息 管理权限:创建、删除队列

​ 目标地址声明支持通配符,以轻松支持组合名称层次结构。

通配符:

"." 用于作为路径上名字间的分隔符。
"*" 用于匹配路径上的任何名字。
">" 用于递归地匹配任何以这个名字开始的destination。

通配符定义目标地址名称示例:

PMQ.Advisory.*

可以定义目标地址名称为“PMQ.Advisory.XXX”的队列或主题,例如:PMQ.Advisory.TempQueue,PMQ.Advisory.TempTopic,PMQ.Advisory.Test,.....。

>

可以定义任何目标地址名称的队列或主题。

用户名为“wenyb”的MQ用户发送消息给队列“test-queue”客户端示例代码如下:


private String brokerURL= "tcp://192.168.1.194:61616";
@Test
public void testMQProducerQueue() throws Exception{
    //1、创建工厂连接对象,需要制定ip和端口号
    ConnectionFactory connectionFactory = new PMQConnectionFactory("wenyb",
                                                        "000000",brokerURL);
    //2、使用连接工厂创建一个连接对象
    Connection connection = connectionFactory.createConnection();
    //3、开启连接
    connection.start();
    //4、使用连接对象创建会话(session)对象
    Session session = connection.createSession(false, 
                                                Session.AUTO_ACKNOWLEDGE);
    //5、使用会话对象创建目标对象,包含queue和topic(一对一和一对多)
    Queue queue = session.createQueue("test-queue");
    //6、使用会话对象创建生产者对象
    MessageProducer producer = session.createProducer(queue);
    producer.setTimeToLive(10000000);
    producer.setDeliveryMode(1);
   //7、使用会话对象创建一个消息对象
   TextMessage textMessage = session.createTextMessage("hello!test-queue");
   textMessage.setJMSExpiration(10000000);
   textMessage.setJMSDeliveryMode(1);
   System.out.println("我是队列生产者!");
   //8、发送消息
   producer.send(textMessage);
   System.in.read();
   //9、关闭资源
   producer.close();
   session.close();
   connection.close();
}

image-20200701143301949

  1. 添加权限

    点击权限列表左上角的“添加权限”按钮,弹出添加权限表单,填写目标地址声明、选择用户组、选择执行权限、选择类型后点击“保存”按钮,提示操作成功后,添加权限成功。

    image-20200701144050055

    表单参数说明
    名称:声明的队列或主题的名称或目标地址名称,支持字母、数字、下划线及其组合,必填项。
    用户组:通过下拉列表选取,必填项。
    权限:队列或主题的操作权限,通过下拉列表选取,必填项。
    类型:声名的目标地址类型,通过下拉列表选取,必填项。
    

    image-20200701144411747

    image-20200701144502770

    image-20200701144548002

  2. 编辑权限

    点击权限列表中操作列中的“编辑”按钮,弹出编辑权限表单,修改目标声明(队列或主题)的权限信息后点击“保存”按钮,提示操作成功后,可修改此目标声明(队列或主题)的用户组,以及用户组的操作权限。

    image-20200701145920689

    image-20200701150209988

  3. 删除权限

    点击权限列表中操作列中的“删除”按钮,弹出删除确认提示框,点击“确定”,提示操作成功后,可删除此目标地址声明以及用户组权限。

    image-20200701150459648

  4. 权限关闭

    权限校验默认时开启状态,可以通过修改配置文件pmq.xml关闭权限,具体操作如下图所示:

    image-20200909105424748

results matching ""

    No results matching ""