Управление пользователями, virtual hosts и разрешениями
Используйте пользователей RabbitMQ, virtual hosts и разрешения, чтобы изолировать приложения и снизить влияние скомпрометированных учетных данных. Производственная нагрузка не должна использовать учетную запись администратора, созданную платформой, совместно с клиентскими приложениями.
В этом руководстве показано, как создать virtual host, создать пользователя приложения и назначить разрешения с минимально необходимыми привилегиями.
Содержание
Предварительные требованияМодель разрешенийПроцедура1. Создайте virtual host2. Создайте пользователя приложения3. Назначьте разрешения приложения4. Назначайте topic permissions при необходимости5. Проверьте доступРекомендуемые практикиСвязанная информацияПредварительные требования
Перед управлением пользователями и разрешениями убедитесь, что выполнены следующие условия:
- У вас есть доступ к management endpoint или
kubectl execк RabbitMQ Pod. - У вас есть учетные данные администратора. Для учетной записи по умолчанию, созданной платформой, см. Управление пользователями.
- Вам известны имя virtual host, имя пользователя приложения и шаблон именования exchange или queue, который требуется приложению.
Модель разрешений
Разрешения RabbitMQ привязаны к virtual host и включают три регулярных выражения:
Используйте узкие регулярные выражения для пользователей приложений. Назначайте теги administrator только операционным пользователям, которым нужны права управления на уровне всего экземпляра.
Процедура
1. Создайте virtual host
Создайте virtual host для приложения:
Для команд, выполняемых внутри RabbitMQ Pod, также можно использовать rabbitmqctl:
2. Создайте пользователя приложения
Создайте пользователя для приложения. Не используйте этого пользователя для администрирования.
Если вы используете rabbitmqctl, выполните:
Храните пароль приложения в Kubernetes Secret или в одобренном вами secret manager. Не храните его в манифестах приложения в виде открытого текста.
3. Назначьте разрешения приложения
В следующем примере пользователю payments-app разрешается настраивать, публиковать сообщения и потреблять их из ресурсов, начинающихся с payments., в virtual host payments:
Эквивалентная команда rabbitmqctl:
4. Назначайте topic permissions при необходимости
Если приложение использует topic authorization, задавайте topic permissions отдельно от разрешений на ресурсы:
Настраивайте topic permissions только в том случае, если этого требует ваша модель авторизации.
5. Проверьте доступ
Выведите список virtual hosts, пользователей и разрешений:
Проверьте подключение приложения с помощью учетной записи пользователя приложения, а не учетной записи администратора.
Рекомендуемые практики
- Создавайте отдельный virtual host для каждого приложения или каждой tenant-границы.
- Создавайте одного пользователя RabbitMQ для каждой runtime-идентичности приложения.
- Используйте узкие регулярные выражения разрешений вместо
.*для пользователей приложений. - Держите пользователей-администраторов отдельно от пользователей-производителей и пользователей-потребителей.
- Периодически обновляйте пароли приложений через обновления Kubernetes
Secretили через одобренный вами secret manager. - Удаляйте пользователей и разрешения, когда приложение выводится из эксплуатации.