Доступ запрещен для пользователя rabbitmq и celery

Я создаю виртуальный хост:

rabbitmqctl add_vhost test

Затем пользователь:

rabbitmqctl add_user user 123456

Затем я получаю разрешения для этого пользователя:

rabbitmqctl set_permissions -p test user "test" "test" "test"

Я использую Celery в tasks.py:

app = Celery('tasks', broker='amqp://user:123456@localhost/test', backend='amqp://user:123456@localhost/test')

Затем я запускаю:

celery -A tasks worker --loglevel=info

у меня ошибка:

amqp.exceptions.AccessRefused: Exchange.declare: (403) ACCESS_REFUSED - access to exchange 'celeryev' in vhost 'test' refused for user 'user'

Как это исправить?


person Lev    schedule 20.10.2014    source источник


Ответы (4)


Взгляните на set_permissions здесь: https://www.rabbitmq.com/rabbitmqctl.8.html#Access_control

Когда вы вызываете set_permissions, вы проходите тест для настройки, чтения и записи, поэтому ваш пользователь сможет использовать очередь/обмен только по имени test

Также взгляните на эту ссылку: https://www.rabbitmq.com/access-control.html

person old_sound    schedule 20.10.2014
comment
Спасибо. Я пытаюсь использовать celeryev в set_permissions, и у меня возникает ошибка при обмене reply.celery.pidbox, так что теперь я использую '.*', и это работает. Это сохраняет или мне нужно использовать регулярное выражение «сельдерей»? - person Lev; 21.10.2014
comment
регулярное выражение должно соответствовать имени очереди/обменов, которые вы планируете создать. - person old_sound; 21.10.2014

Если у вас все еще есть ошибка, проверьте правильность двойных кавычек (это случилось со мной)

".*"

вместо

“.*”

Чтобы быть уверенным, перечислите разрешения от пользователей в вашем vhostpath (по умолчанию /)

rabbitmqctl list_permissions -p /  
person Lexsoul    schedule 11.10.2017

Как упоминал Lexsoul, двойные кавычки могут быть неправильного типа, например:

sudo rabbitmqctl list_permissions -p EDO_DEVELOPING
*Listing permissions in vhost "EDO_DEVELOPING" ...
billing “.*”    “.*”    “.*”

и не сработало, поэтому я попробовал:

sudo rabbitmqctl clear_permissions -p EDO_DEVELOPING billing
Clearing permissions for user "billing" in vhost "EDO_DEVELOPING" ...

sudo rabbitmqctl set_permissions -p EDO_DEVELOPING billing ".*" ".*" ".*"
Setting permissions for user "billing" in vhost "EDO_DEVELOPING" ...

тогда

sudo rabbitmqctl list_permissions -p EDO_DEVELOPING 
Listing permissions in vhost "EDO_DEVELOPING" ...
billing .*  .*  .*

И работал на меня.

person Вячеслав Каляки&    schedule 20.04.2018

Я подтверждаю предыдущие детали в отношении грантов.

проблема: вызвало исключение канала access_refused: доступ к обмену 'reply.celery.pidbox'

решение: rabbitmqctl clear_permissions -p environment имя пользователя rabbitmqctl set_permissions -p environment skberge "." "." ".*"

person Manuel Lazo    schedule 30.10.2018