Когда у вас появляется несколько сервисов, остро встаёт вопрос с управлением пользователями. Хочется всё это делать в одном месте, а не ходить по разным системам и актуализировать там учётные данные. Решений этой задачи не так много. Чаще всего используют тот или иной LDAP каталог и настраивают софт на работу с ним. Либо второй вариант - настраивают сервис SSO (single sign-on, технология единого входа). В качестве бэкенда для хранения учётных данных может выступать тот же LDAP, внутренняя база SSO либо что-то другое.
Организация SSO более сложный, но в то же время более гибкий, функциональный вариант, нежели просто какой-то каталог. Схема там примерно такая получается. У вас есть некий сервис SSO, который интегрируется с рабочими службами, типа админки сайта, системы мониторинга, почты, VPN и т.д. Этот же сервис в качестве источника информации о пользователях использует какой-то бэкенд, например, тот же LDAP каталог или свою внутреннюю базу. Пользователь заходит в админку сайта. Ему предлагается пройти аутентификацию. Он это делает, админка связывается с SSO, та проверяет введённую учётку. Если всё ОК, то возвращает админке информацию о том, что аутентификация прошла успешно, а так же набор прав для этой учётки.
Есть относительно новый open source продукт в качестве SSO - Keycloak. Он в последние года 3-4 стал прям очень популярен. В основном из-за двух причин. Во-первых, бесплатных продуктов такого класса в целом не так много. Во-вторых, он относительно просто и быстро настраивается.
У Keycloak есть неплохая документация, по которой развернуть продукт очень просто. Далее всё управление через веб интерфейс, что тоже сильно упрощает настройку. То есть бувально:
И идёте в веб интерфейс разбираться. Далее, к примеру, открываете руководство Grafana и настраиваете аутентификацию в ней через Keycloak. Алгоритм интеграции будет примерно такой:
1️⃣ Создаёте в Keycloak realm с нужными правами, которые поддерживает сервис. Например, с правами Admin, Viewer и Editor.
2️⃣ Далее создаёте отдельного клиента для Grafana с маппингом прав.
3️⃣ Создаёте пользователей в Keycloak с разными правами.
4️⃣ Добавляете в конфигурацию Grafana параметры из документации с учётом своих урлов и секрета клиента.
5️⃣ Пробуете зайти в Grafana, выбрав Sign in with Keycloak, и свою учётку в Keycloak.
Похожим образом настраивается интеграция с другими продуктами. Если они поддерживают такую интеграцию, то процесс будет максимально простым и быстрым. Достаточно будет создать реалм с нужными правами, клиента с маппингом прав, получить его секрет и использовать для интеграции.
В англоязычном интернете много статей с конкретными примерами интеграции различных сервисов и Keycloak. Всё современное и популярное его сейчас поддерживает, настраивается легко. С более старыми продуктами, типа postfix, dovecot будет посложнее, но в целом тоже решаемо. У postfix не видел поддержки, а у dovecot есть. Можно использовать его в качестве SASL (Simple Authentication and Security Layer). Проще ситуация, если используется веб интерфейс. Тот же Roundcube поддерживает Keycloak.
Так что если сейчас планируете построение каких-то информационных систем, сразу внедряйте SSO, чтобы потом не делать это уже по ходу дела.
#sso
Организация SSO более сложный, но в то же время более гибкий, функциональный вариант, нежели просто какой-то каталог. Схема там примерно такая получается. У вас есть некий сервис SSO, который интегрируется с рабочими службами, типа админки сайта, системы мониторинга, почты, VPN и т.д. Этот же сервис в качестве источника информации о пользователях использует какой-то бэкенд, например, тот же LDAP каталог или свою внутреннюю базу. Пользователь заходит в админку сайта. Ему предлагается пройти аутентификацию. Он это делает, админка связывается с SSO, та проверяет введённую учётку. Если всё ОК, то возвращает админке информацию о том, что аутентификация прошла успешно, а так же набор прав для этой учётки.
Есть относительно новый open source продукт в качестве SSO - Keycloak. Он в последние года 3-4 стал прям очень популярен. В основном из-за двух причин. Во-первых, бесплатных продуктов такого класса в целом не так много. Во-вторых, он относительно просто и быстро настраивается.
У Keycloak есть неплохая документация, по которой развернуть продукт очень просто. Далее всё управление через веб интерфейс, что тоже сильно упрощает настройку. То есть бувально:
# docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:24.0.2 start-devИ идёте в веб интерфейс разбираться. Далее, к примеру, открываете руководство Grafana и настраиваете аутентификацию в ней через Keycloak. Алгоритм интеграции будет примерно такой:
1️⃣ Создаёте в Keycloak realm с нужными правами, которые поддерживает сервис. Например, с правами Admin, Viewer и Editor.
2️⃣ Далее создаёте отдельного клиента для Grafana с маппингом прав.
3️⃣ Создаёте пользователей в Keycloak с разными правами.
4️⃣ Добавляете в конфигурацию Grafana параметры из документации с учётом своих урлов и секрета клиента.
5️⃣ Пробуете зайти в Grafana, выбрав Sign in with Keycloak, и свою учётку в Keycloak.
Похожим образом настраивается интеграция с другими продуктами. Если они поддерживают такую интеграцию, то процесс будет максимально простым и быстрым. Достаточно будет создать реалм с нужными правами, клиента с маппингом прав, получить его секрет и использовать для интеграции.
В англоязычном интернете много статей с конкретными примерами интеграции различных сервисов и Keycloak. Всё современное и популярное его сейчас поддерживает, настраивается легко. С более старыми продуктами, типа postfix, dovecot будет посложнее, но в целом тоже решаемо. У postfix не видел поддержки, а у dovecot есть. Можно использовать его в качестве SASL (Simple Authentication and Security Layer). Проще ситуация, если используется веб интерфейс. Тот же Roundcube поддерживает Keycloak.
Так что если сейчас планируете построение каких-то информационных систем, сразу внедряйте SSO, чтобы потом не делать это уже по ходу дела.
#sso
👍109👎1
Недавно рассказывал про один из самых популярных бесплатных сервисов SSO - Keycloak. Думаю, не сильно ошибусь, если вторым по популярности поставлю Authentik. В общем и целом они выполняют схожие функции, так что в лоб их трудно сравнить. Keycloak более старый продукт под крылом RedHat. Можно считать его более основательным, как с точки зрения решения запросов enterprise сегмента, так и безопасности. С другой стороны у Authentik немного больше возможностей.
Например, Authentik может выступать сам в роли LDAP каталога или сервиса RADIUS. Это удобно, если у вас есть приложения, которые поддерживают только их. Не нужны сторонние каталоги. Также в Authentik есть возможность настроить так называемый Application Proxy для приложений, которые не поддерживают SSO. Вот пример для Nginx, или для любого веб приложения, которое поддерживает только Basic Auth, которая реализуется через Authentik.
Запустить в работу Authentik так же просто, как и Keycloak. Есть готовый Docker Compose и набор контейнеров. Весь процесс описан в документации. Там же подробное видео. Отдельно отмечу совсем свежее (21 мар. 2024 г.) видео по этой теме:
▶️ Secure authentication for EVERYTHING! // Authentik
Автор подробно описывает, как запустить Authentik в прод и показывает пару примеров интеграции своих сервисов с этим SSO: Portainer и Proxmox VE. Видео интересное и информативное. Рекомендую посмотреть хотя бы для того, чтобы увидеть рабочую среду этого инженера.
Все интеграции Authentik собраны в отдельный раздел на сайте. По каждому продукту подробная пошаговая инструкция. Так что настроить по ней будет не сложно. В списке есть такие популярные продукты как Zabbix, Grafana, Uptime Kuma, Gitlab, OnlyOffice, Nextcloud, Rocket.chat, Roundcube, Proxmox VE, Apache Guacamole, pfSense, MinIO, ProFTPD, Home Assistant и т.д. Список большой.
В целом, Authentik выглядит немного проще по настройке и внедрению, так что для старта и небольших проектов он скорее всего будет более предпочтителен, нежели Keycloak. К тому же в явный плюс идёт встроенный каталог LDAP. В Keycloak нужно будет какой-то внешний каталог использовать. Но это чисто мои умозрительные заключения.
⇨ Сайт / Исходники / Видеоинструкция
#sso
Например, Authentik может выступать сам в роли LDAP каталога или сервиса RADIUS. Это удобно, если у вас есть приложения, которые поддерживают только их. Не нужны сторонние каталоги. Также в Authentik есть возможность настроить так называемый Application Proxy для приложений, которые не поддерживают SSO. Вот пример для Nginx, или для любого веб приложения, которое поддерживает только Basic Auth, которая реализуется через Authentik.
Запустить в работу Authentik так же просто, как и Keycloak. Есть готовый Docker Compose и набор контейнеров. Весь процесс описан в документации. Там же подробное видео. Отдельно отмечу совсем свежее (21 мар. 2024 г.) видео по этой теме:
▶️ Secure authentication for EVERYTHING! // Authentik
Автор подробно описывает, как запустить Authentik в прод и показывает пару примеров интеграции своих сервисов с этим SSO: Portainer и Proxmox VE. Видео интересное и информативное. Рекомендую посмотреть хотя бы для того, чтобы увидеть рабочую среду этого инженера.
Все интеграции Authentik собраны в отдельный раздел на сайте. По каждому продукту подробная пошаговая инструкция. Так что настроить по ней будет не сложно. В списке есть такие популярные продукты как Zabbix, Grafana, Uptime Kuma, Gitlab, OnlyOffice, Nextcloud, Rocket.chat, Roundcube, Proxmox VE, Apache Guacamole, pfSense, MinIO, ProFTPD, Home Assistant и т.д. Список большой.
В целом, Authentik выглядит немного проще по настройке и внедрению, так что для старта и небольших проектов он скорее всего будет более предпочтителен, нежели Keycloak. К тому же в явный плюс идёт встроенный каталог LDAP. В Keycloak нужно будет какой-то внешний каталог использовать. Но это чисто мои умозрительные заключения.
⇨ Сайт / Исходники / Видеоинструкция
#sso
👍84👎3
Я ранее делал пару заметок на тему бесплатных инструментов для организации SSO: Keycloak и Authentik. Первый более навороченный и сложный для больших организаций. Второй попроще и больше подходит для небольших инфраструктур, в том числе личных сервисов. По настройке и возможностям мне Authentik понравился больше. Жду подходящий проект, чтобы его внедрить. Уже давно решил, что где-нибудь его попробую.
Тут как раз на днях посмотрел видео про настройку Basic Auth на базе Authentik. Очень востребованная лично для меня функциональность. Я люблю использовать Basic Auth в Nginx для того, чтобы скрыть от посторонних глаз то, что не должно быть в публичном доступе: различные управляющие веб панели, типа postfixadmin или phpmyadmin, веб доступ к 1С и т.д.
▶️ Authentik и basic http аутентификация
Автор по шагам показал, как это сделать на примере Traefik и Nginx. Там ничего особо сложного, но из-за скудной документации по этой теме некоторые вещи неочевидны. С инструкцией всё понятно. Посмотрел наглядно, как это выглядит. Мне понравилось. С учётом того, как часто я использую Basic Auth, точно пригодится. Вот ссылка на документацию по теме. Там реально всего пару предложений и пример конфига.
У автора серия из 3-х публикаций про Authentik:
▶️ Настройка authentik по-быстрому
▶️ OIDC авторизация с помощью Authentik на примере Portainer
Этой информации достаточно для базового внедрения основных возможностей. Материал свежий и пока актуальный.
#sso #nginx
Тут как раз на днях посмотрел видео про настройку Basic Auth на базе Authentik. Очень востребованная лично для меня функциональность. Я люблю использовать Basic Auth в Nginx для того, чтобы скрыть от посторонних глаз то, что не должно быть в публичном доступе: различные управляющие веб панели, типа postfixadmin или phpmyadmin, веб доступ к 1С и т.д.
▶️ Authentik и basic http аутентификация
Автор по шагам показал, как это сделать на примере Traefik и Nginx. Там ничего особо сложного, но из-за скудной документации по этой теме некоторые вещи неочевидны. С инструкцией всё понятно. Посмотрел наглядно, как это выглядит. Мне понравилось. С учётом того, как часто я использую Basic Auth, точно пригодится. Вот ссылка на документацию по теме. Там реально всего пару предложений и пример конфига.
У автора серия из 3-х публикаций про Authentik:
▶️ Настройка authentik по-быстрому
▶️ OIDC авторизация с помощью Authentik на примере Portainer
Этой информации достаточно для базового внедрения основных возможностей. Материал свежий и пока актуальный.
#sso #nginx
YouTube
Authentik и basic http аутентификация
#radarr, #truenas, #proxmox #authentik
На бусти ролики будут появляться раньше, цена за просмотр минимальная для бусти
Реферальная ссылка на хостера smartape чьими услугами я пользуюсь http://www.smartape.ru/?partner=139490 или просто используйте промокод…
На бусти ролики будут появляться раньше, цена за просмотр минимальная для бусти
Реферальная ссылка на хостера smartape чьими услугами я пользуюсь http://www.smartape.ru/?partner=139490 или просто используйте промокод…
2👍74👎3
На прошлой неделе смотрел видео про необычную систему под названием Pangolin. Не стал про него упоминать, потому что толком не понял, что это за штука, хоть и подозревал, что что-то полезное. В итоге я её развернул, разобрался, как работает, и теперь расскажу своими словами. Это очень крутой и полезный софт, который, думаю, многим пригодится.
Pangolin - обратный прокси на базе Traefik со своей системой аутентификации или IAM (Identity and Access Management). Он способен объединять разрозненные веб сервера с помощью встроенной интеграции с Wireguard. Расскажу сразу на конкретном примере, как это работает.
Допустим у вас есть веб сервер с каким-то сайтом или другим веб-приложением, к которому вы хотите ограничить доступ, так как у него нет своей аутентификации, или вы просто хотите его скрыть от посторонних глаз. Рассказываю по шагам, что вам нужно будет сделать.
1️⃣ Покупаете или создаёте любую VPS с внешним IP и настроенной DNS записью. Устанавливаете туда Pangolin.
2️⃣ Создаёте в веб панели Pangolin так называемый сайт, что на самом деле означает отдельный веб сервер.
3️⃣ Получаете в Pangolin параметры подключения внешнего веб сервера к серверу с Pangolin. Он может использовать как стандартный WireGuard клиент, так и свой собственный под названием Newt. Это консольная программа, не требующая для установки туннеля прав root. В Pangolin вы получите готовую строку подключения типа:
для подключения веб сервера к Pangolin.
4️⃣ После того, как веб сервер подключится к Pangolin, создаёте у него в веб интерфейсе новый ресурс, который по сути является сайтом, к которому нужно ограничить доступ. Указываете URL, по которому он должен отвечать, IP адрес и порт на веб сервере, куда будут проксироваться запросы.
5️⃣ Меняете DNS запись сайта на IP адрес сервера Pangolin. Теперь он будет перенаправлять все запросы через WG туннель настроенного урла на веб сервер. То есть работает как обычный обратный прокси, только все запросы к веб серверу заворачивает в VPN.
6️⃣ В свойствах сайта в веб интерфейсе Pangolin настраиваете параметры доступа. Это может быть пользователь или роль на самом Pangolin, одиночный пароль или 6-ти значный PIN код.
7️⃣ Теперь при открытие настроенного урла, запрос будет уходить на сервер Pangolin. После успешной аутентификации запрос будет перенаправлен на веб сервер.
Всё это работает по HTTPS, сертификаты Let's Encrypt получаются автоматически. Сервер Pangolin собран в Docker контейнеры. Можно запускать его вручную через Docker Compose или использовать готовый установщик:
Я развернул, довольно быстро разобрался и закрыл аутентификацией тестовый сайт, который запустил на этом же VPS через Nginx на других портах. Каких-то особых проблем не было.
Я не раз видел в чате вопросы на тему того, как закрыть аутентификацией сайт, в котором её нет. До этого я рекомендовал взять Authentik, настроить там интеграцию с каким-то обратным прокси и его basic_auth и таким образом закрыть доступ. Но этот путь гораздо сложнее того, что я описал сейчас. Тут всё проще и быстрее. Разворачиваете Pangolin, создаёте пользователей, настраиваете проксирование и закрываете доступ к сайту.
⇨ 🌐 Сайт / Исходники / Видеообзор
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#webserver #wireguard #traefik #sso
Pangolin - обратный прокси на базе Traefik со своей системой аутентификации или IAM (Identity and Access Management). Он способен объединять разрозненные веб сервера с помощью встроенной интеграции с Wireguard. Расскажу сразу на конкретном примере, как это работает.
Допустим у вас есть веб сервер с каким-то сайтом или другим веб-приложением, к которому вы хотите ограничить доступ, так как у него нет своей аутентификации, или вы просто хотите его скрыть от посторонних глаз. Рассказываю по шагам, что вам нужно будет сделать.
# newt --id qqsyaa51zaovqdn --secret wyfbohgwk1uohzj2u8n2t4xn9gny9czgw7jmx3dk1nys755r --endpoint https://336261.simplecloud.ruдля подключения веб сервера к Pangolin.
Всё это работает по HTTPS, сертификаты Let's Encrypt получаются автоматически. Сервер Pangolin собран в Docker контейнеры. Можно запускать его вручную через Docker Compose или использовать готовый установщик:
# wget -O installer "https://github.com/fosrl/pangolin/releases/download/1.0.0-beta.8/installer_linux_amd64" && chmod +x ./installerЯ развернул, довольно быстро разобрался и закрыл аутентификацией тестовый сайт, который запустил на этом же VPS через Nginx на других портах. Каких-то особых проблем не было.
Я не раз видел в чате вопросы на тему того, как закрыть аутентификацией сайт, в котором её нет. До этого я рекомендовал взять Authentik, настроить там интеграцию с каким-то обратным прокси и его basic_auth и таким образом закрыть доступ. Но этот путь гораздо сложнее того, что я описал сейчас. Тут всё проще и быстрее. Разворачиваете Pangolin, создаёте пользователей, настраиваете проксирование и закрываете доступ к сайту.
⇨ 🌐 Сайт / Исходники / Видеообзор
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#webserver #wireguard #traefik #sso
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍165👎5