🐳 Запуск сервера Keycloak в контейнере Docker – Information Security Squad
🐳 Запуск сервера Keycloak в контейнере Docker

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

По состоянию на 2020 года этот проект сообщества JBoss находился под управлением Red Hat, которая использует его в качестве проекта для своего продукта RH-SSO.

С концептуальной точки зрения цель этого инструмента – упростить защиту приложений и сервисов.

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

Нет необходимости иметь дело с хранением пользователей или аутентификацией.

Все это доступно из коробки.

Вы даже получите расширенные функции, такие как User Federation, Identity Brokering и Social Login.

Keycloak состоит из двух основных компонентов.

  • Keycloak Server – это серверный компонент Keycloak.
  • Keycloak Application Adapter – это плагины для приложений для доступа к службам аутентификации Keycloak.
В этой статье мы создадим и запустим сервер Keycloak в контейнере Docker.

Особенности Keycloak:

Некоторые примечательные особенности Keycloak:

  • Регистрация пользователя
  • Single Sign-On/Sign-Off, принадлежащих к одной области
  • 2-факторная аутентификация
  • Интеграция LDAP
  • Брокер Kerberos

Скачивание необходимых образов из Docker Hub:

Подключитесь к серверу от УЗ администратора с помощью инструмента ssh.

Поскольку мы уже установили Docker, теперь мы можем получить доступ к Docker Hub и загрузить необходимые образы.

Здесь мы создаем два контейнера,

  • фактический сервер Jboss/Keycloak и
  • MariaDB как хранилище данных для сервера Keycloak

Сначала скачайте официальный образ mariadb.

sudo docker pull mariadb
Using default tag: latest
latest: Pulling from library/mariadb
5c939e3a4d10: Pull complete
c63719cdbe7a: Pull complete
19a861ea6baf: Pull complete
651c9d2d6c4f: Pull complete
077e14009561: Pull complete
5f038f59a326: Pull complete
1b0216466f21: Pull complete
1b0570aa273a: Pull complete
07d05628c2aa: Pull complete
8f2f7d8e5cbd: Pull complete
fbf3ad7b2eec: Pull complete
22080b3a46be: Pull complete
8021ad8acbef: Pull complete
0b1f06407ccd: Pull complete
Digest: sha256:6f80d059050b80fd8bd951323f6e4a7dde36d62e355cf01b92d26c34d3f702f6
Status: Downloaded newer image for mariadb:latest
Теперь скачайте образ jboss/keycloak.
$ sudo docker pull jboss/keycloak
Using default tag: latest
latest: Pulling from jboss/keycloak
03e56b46bf0b: Pull complete
3a13cc2f5d65: Pull complete
315b0e98b961: Pull complete
3ac53bc98ab6: Pull complete
08d597fdd8b1: Pull complete
Digest: sha256:70171289054e77e2a091fd4b7d274807e777bd01d18719a7b7b139b67d1952d4
Status: Downloaded newer image for jboss/keycloak:latest

Создайте виртуальную сеть в Docker:

Чтобы соединить контейнеры MariaDB и Keycloak, нам нужно создать виртуальную сеть.

$ sudo docker network create keycloak-network
152e689ac69f722e8b36bcb61558dba740ec909ec27c5a8ba34f2f5ca0694038

Запустите сервер MariaDB в контейнере Docker:

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

$ mkdir /home/itsecforu/keycloak_data

Создайте контейнер MariaDB и смонтируйте в нем каталог keycloak_data.

$ sudo docker run -d \
> --name mariadb \
> --net keycloak-network \
> -v /home/ahmer/keycloak_data:/var/lib/mysql \
> -e MYSQL_ROOT_PASSWORD=Root@1234 \
> -e MYSQL_DATABASE=keycloak \
> -e MYSQL_USER=keycloak \
> -e MYSQL_PASSWORD=Keycloak@1234 \
> mariadb
55de1ec4e0c94dbe22897e6122cec57a250c95cbc4dc1be76fc7a06832f7641a

Используя Docker, мы успешно запустили контейнер MariaDB, который будет служить хранилищем данных для сервера Keycloak.

Теперь проверьте содержимое каталога keycloak_data.

ls /home/itsecforu/keycloak_data/
aria_log.00000001  ibdata1      ibtmp1             mysql
aria_log_control   ib_logfile0  keycloak           performance_schema
ib_buffer_pool     ib_logfile1  multi-master.info
Вы можете видеть, что контейнер MariaDB создал свои файлы базы данных в каталоге keycloak_data.

Запустите сервер Jboss/Keycloak в контейнере Docker:

Создайте и запустите контейнер Jboss/Keycloak с помощью команды docker.

$ sudo docker run -d \
> --name keycloak \
> --net keycloak-network \
> -p 8080:8080 \
> -e KEYCLOAK_USER=admin \
> -e KEYCLOAK_PASSWORD=Admin@1234 \
> -e DB_ADDR=mariadb \
> -e DB_USER=keycloak \
> -e DB_PASSWORD=Keycloak@1234 \
> jboss/keycloak
e2b42254fa94804e1ab9cf2924fa0463b8997205f6002e81f542b117f56a91bf

Мы создали и запустили контейнер Jboss/Keycloak.

Проверьте состояние контейнеров докеров с помощью следующей команды.

sudo docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                              NAMES
e2b42254fa94        jboss/keycloak      "/opt/jboss/tools/doâ¦"   10 minutes ago      Up 10 minutes       0.0.0.0:8080->8080/tcp, 8443/tcp   keycloak
55de1ec4e0c9        mariadb             "docker-entrypoint.sâ¦"   26 minutes ago      Up 26 minutes       3306/tcp                           mariadb
Разрешите порт службы 8080/tcp на хосте, чтобы к нашему серверу Keycloak могли получить доступ другие компьютеры в сети.
sudo ufw allow 8080/tcp
Rules updated
Rules updated (v6)
sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Доступ к веб-интерфейсу сервера Keycloak

Откройте URL-адрес http://ваш-ip:8080 в браузере.

Щелкните на «Administration Console», чтобы получить к ней доступ.
Войдите в систему как admin, которого мы определили при создании контейнер.

После успешного входа мы переходим на страницу «Realm Settings».

Мы успешно запустили контейнер Keycloak в Docker.

Теперь вы можете использовать его для создания областей, пользователей, ролей и т. д.
Для этого вам следует обратиться к документации Keycloak.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *