Скрыть консоль администратора Keycloak от общего доступа

Мы рассматриваем возможность использования Keycloak для наших общедоступных API-интерфейсов REST (в основном для приложений загрузки Spring) для авторизации и аутентификации наших пользователей.

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

  1. общедоступный экземпляр Keycloak, который публикует только то, что необходимо, например. путь администратора недоступен. В этом случае должны быть доступны только пути, рекомендованные здесь: https://www.keycloak.org/server/reverseproxy#_exposed_path_recommendations.

  2. частный экземпляр Keycloak, который доступен только из внутренней сети, но предлагает пользовательский интерфейс администратора (консоль). С помощью которого можно управлять пользователями/разрешениями.

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
0
0
116
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Да, это, безусловно, обычная установка. В зависимости от ваших требований всегда рекомендуется иметь более одного экземпляра Keycloak в одной базе данных из соображений доступности. Keycloak разделяет некоторые данные памяти (например, сеансы) в кэше Infinispan, который совместно используется одним или несколькими экземплярами Keycloak (обычно называемыми кластером).

Затем вы должны использовать балансировщик нагрузки (например, haproxy, nginx, apache, выбор практически бесконечен) и настроить его для отправки запросов к фактическим экземплярам Keycloak.

Возможная установка может быть следующей: Использование 4 экземпляров Keycloak на 4 серверах:

  • public-keycloak-1.internal.example.com
  • public-keycloak-2.internal.example.com
  • private-keycloak-1.internal.example.com
  • private-keycloak-2.internal.example.com

Затем вы можете добавить 2 балансировщика нагрузки:

  • keycloak.example.com (отправка запросов на public-keycloak-*)
  • keycloak.internal.example.com (отправка запросов на private-keycloak-*)

В этом примере keycloak.internal.example.com будет экземпляром, к которому вы подключаетесь для выполнения административных задач в Keycloak через Admin Console или Admin API, а keycloak.example.com будет хостом, который вы используете. для Auth{n,z} для ваших приложений.

Ограничение доступа к Admin API и Admin Console можно выполнить на уровне балансировщика нагрузки (ограничивая запросы по этим путям), но начиная с Keycloak 20 также можно полностью отключить Admin API и Admin Console. Это делается путем отключения соответствующих функций, указанных в документации. Таким образом, вы можете отключить функции «admin-api», «admin» и «admin2». Если вы сделаете это на экземплярах public-keycloak-*, то запросы к общедоступному балансировщику нагрузки никогда не смогут в конечном итоге коснуться Admin API или консоли, потому что Keycloak изначально настроен так, чтобы просто не обслуживать эти запросы.

Другие вопросы по теме