Каковы минимальные права доступа для вышестоящего пользователя при использовании RabbitMQ Exchange Federation
Я хочу убедиться, что все пользователи в моих кластерах RabbitMQ имеют только те права, которые им нужны для их предполагаемой цели.
Я использую федерацию Exchange между двумя кластерами RabbitMQ и хочу ограничить права пользователя в восходящем кластере, чтобы он мог объединять сообщения только с одного Exchange. Это делается для того, чтобы пользователь, используемый нижестоящим кластером, не мог публиковать/подписываться/настраивать что-либо, выходящее за рамки его предполагаемой цели (или, по крайней мере, настолько, насколько это возможно).
Я понимаю, что разрешения могут быть сложными, поскольку рабочая очередь и привязки должны динамически создаваться в вышестоящем кластере, поэтому это может быть непросто.
Во всех примерах, которые я нашел, указано, что права пользователя устанавливаются следующим образом:
Федерация работает нормально, когда у пользователя есть эти настройки, но это всемогущий пользователь, и мне это не нравится. Если я попытаюсь перенастроить его на что-то более конкретное, я получу ошибку, подобную приведенной ниже:
{server_initiated_close,403,
<<"ACCESS_REFUSED - access to exchange 'exchange-a' in vhost 'vhost-a' refused for user 'user-a'">>}
Как я могу ограничить эти разрешения, чтобы пользователь федерации не имел больше доступа, чем ему нужно?
1 ответ
Я не нашел ответа на этот вопрос ни в одной из своих книг или онлайн-ресурсов, поэтому этот ответ основан на наблюдениях, пробах и ошибках...
Решение
Федерация Exchange, по-видимому, требует вышестоящего пользователя, у которого есть разрешения на чтение из целевого вышестоящего обмена, а также на настройку, чтение и запись в обмен и очередь вышестоящей федерации, которые создаются динамически.
Имена динамически созданного обмена и очереди используют исходное имя обмена и оба имеют префикс
federation:
и суффикс с
->
и имя нисходящего кластера. Динамически создаваемая биржа также имеет суффикс дополнительной буквы алфавита.
Основываясь на этом, я обнаружил, что эти минимальные права доступа работают очень хорошо (с исправлением имен Exchange и нисходящего кластера):