Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Секреты движка RabbitMQ

Механизм секретов RabbitMQ динамически генерирует учетные данные пользователей на основе настроенных разрешений и виртуальных хостов. Это означает, что службам, которым необходим доступ к виртуальному хосту, больше не нужно жестко прописывать учетные данные.

Поскольку каждая служба обращается к очереди сообщений с уникальными учетными данными, аудит значительно упрощается при обнаружении сомнительного доступа к данным. Легко отслеживайте проблемы вплоть до конкретного экземпляра службы по имени пользователя RabbitMQ.

StarVault использует как собственную внутреннюю систему отзыва, так и функцию удаления пользователей RabbitMQ при создании пользователей RabbitMQ, чтобы гарантировать, что пользователи станут недействительными в течение разумного срока действия аренды.

1. Установка

Большинство секретных модулей необходимо настроить заранее, прежде чем они смогут выполнять свои функции. Эти действия обычно выполняет оператор или инструмент управления конфигурацией.

  1. Включите механизм секретов RabbitMQ:

    $ starvault secrets enable rabbitmq
    Success! Enabled the rabbitmq secrets engine at: rabbitmq/

    По умолчанию движок секретов будет монтироваться по имени движка. Чтобы включить движок секретов по другому пути, используйте аргумент -path.

  2. Настройте учетные данные, которые StarVault использует для связи с RabbitMQ для генерации учетных данных:

    $ starvault write rabbitmq/config/connection \
     connection_uri="http://localhost:15672" \
     username="admin" \
     password="password"
    Success! Data written to: rabbitmq/config/connection

    Пользователь StarVault должен обладать правами администратора для управления другими пользователями.

  3. Настройте роль, которая сопоставляет имя в StarVault с разрешениями виртуального хоста:

$ starvault write rabbitmq/roles/my-role \
 vhosts='{"/":{"write": ".*", "read": ".*"}}'
Success! Data written to: rabbitmq/roles/my-role

Записывая путь roles/my-role, мы определяем роль my-role. Эта роль будет создана путём оценки заданных выражений vhosts, vhost_topics и tags . По умолчанию роли не назначены ни теги, ни виртуальные хосты, ни разрешения на доступ к топикам. Если разрешения на доступ к топикам не определены и используется бэкэнд авторизации по умолчанию, публикация в topic exchange или подписка на топик всегда разрешены.

2. Использование

После настройки механизма секретов и получения пользователем/машиной токена StarVault с необходимыми разрешениями он может генерировать учетные данные.

  1. Создайте новые учетные данные, прочитав из конечной точки /creds имя роли:

$ starvault read rabbitmq/creds/my-role
Key Value

lease_id

rabbitmq/creds/my-role/I39Hu8XX0mbof4wiK5bKMn9

lease_duration

768h

lease_renewable

true

password

3yNDBikgQvrkx2VA2zhq5IdSM7Iwk1rYMYJr

username

root-39669250-3894-8032-c420-3d58483ebfc4

Используя списки управления доступом (ACL), можно ограничить использование движка секретов rabbitmq, так что доверенные операторы смогут управлять определениями ролей, а пользователи и приложения будут ограничены в учетных данных, которые им разрешено читать.

3. API

Движок секретов RabbitMQ имеет полноценный HTTP API. Подробнее см. в API движка секретов RabbitMQ.