我有一个AmazonMQ设置(ActiveMQ 5.17.1),用户在我的terraform中定义如下:
user {
username = "myUser"
password = "somethingSecret"
console_access = false
}以及没有任何ActiveMQ的authorizationMap配置:我的客户端能够毫无问题地进行连接。
现在,我想为其他一些用户设置authorizationMap,并在所有队列和主题上授予用户myUser管理权限。
这是我的authorizationMap的样子
<authorizationPlugin>
<map>
<authorizationMap>
<authorizationEntries>
<authorizationEntry queue="SYS1.IN.>" read="system1"/>
<authorizationEntry queue="SYS2.IN>" read="system2"/>
<authorizationEntry queue="SYS2.OUT>" write="system2"/>
<!-- few other queues / permissions -->
<!-- taken from https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/child-element-details.html#authorizationEntry -->
<authorizationEntry admin="admins,activemq-webconsole" read="admins,users,activemq-webconsole" write="admins,activemq-webconsole" queue=">"/>
<authorizationEntry admin="admins,activemq-webconsole" read="admins,users,activemq-webconsole" write="admins,activemq-webconsole" topic=">"/>
</authorizationEntries>
</authorizationMap>
</map>
</authorizationPlugin>我还在terraform中将myUSer添加到管理组中:
user {
username = "myUser"
password = "somethingSecret"
groups = ["admins"]
}但是,在这个设置中,我在AWS日志(以及客户端)中看到一个错误,上面写着:
... User myUser doesn't have permission to write in topic `ActiveMQ.Advisory.Connection` ...我尝试在authorizationMap中添加以下条目(保留上面现有的条目):
<authorizationEntry topic="ActiveMQ.Advisory.>" read="admins,activemq-webconsole" write="admins,activemq-webconsole" admin="admins,activemq-webconsole"/>但是错误仍然是一样的。
注意,当我试图从控制台(与另一个用户一起发送console_access = true)在队列中发送消息时,会出现一个错误,但我可以创建新的队列。
请注意,我在每次配置更改之间强制重新启动代理,但上述错误仍然存在。
发布于 2022-12-01 09:17:50
我发现我的terraform文件有两个问题:
首先,我必须添加身份验证:
authentication_strategy = "simple"但仅此一项仍未奏效。
从控制台中,我看到我的代理war没有引用最新的配置。
其次,我必须在配置中显式地添加revision行,如下所示:
configuration {
id = aws_mq_configuration.conf-amq-area51-dev.id
revision = aws_mq_configuration.conf-amq-area51-dev.latest_revision
}为了明确引用最新版本,正如我所做的(错误)假设,不引用修订将隐式地采用最新版本。
在这两个更改之后,我能够正确地使用我的用户,控制台管理也在正常工作。
https://stackoverflow.com/questions/74578303
复制相似问题