14 марта в Слёрм стартует курс «Безопасность проекта: аутентификация в Keycloak». Мы пообщались с его автором Виктором Поповым, техлидом DevOps-команды дирекции больших данных в X5 Group. Он рассказал, какие задачи помогает решать инструмент и кто его выбирает — стартапы или энтерпрайз. А также поделился мнением о перспективах Keycloak и о том, даёт ли умение работать с ним карьерные преимущества.
Действительно ли тема настройки Keycloak набирает популярность
За последние полтора-два года Keycloak довольно сильно вырос и выстрелил. Это видно и по количеству вакансий, и по комьюнити, и по публикующимся материалам.
Когда я только начинал разбираться в Keycloak, что-то спросить можно было только у Google. Ты попадал в рассылки разработчиков, а это, мягко говоря, не самая удобная форма подачи информации. Если и попадались какие-то статьи, то только базовые в духе «Мы за 20 минут поднимаем демку и прикручиваем приложение». А дальше просто бездна в виде официальной документации. То есть, на начальном уровне информация ещё была, а чуть дальше — вакуум, и ты бил шишки на собственном проде.
Identity-провайдеры одновременно и давно с нами, и сравнительно недавно. Просто Keycloak — как будто бы самый популярный. Он универсальный и закрывает большое количество потребностей. Да, это не идеальный инструмент, но если без опыта, бюджета и должной компетенции пытаться сделать что-то подобное самостоятельно, получится сильно хуже и дороже.
Какие задачи решает Keycloak
Как и все identity-провайдеры, Keycloak используется для аутентификации и авторизации. Но в целом он ещё про управление пользователями и про безопасность в широком смысле. Безопасность — это всегда сложно и больно, а Keycloak берёт эту историю на себя.
Как было когда-то: мы приходили в приложение с логином и паролем, получали постоянный токен и дальше нас по нему авторизовало. Если токен утекал, начинались серьёзные проблемы. А потом в Oauth2 предложили вариант с динамически меняющимися токенами. Это уменьшило площадь атаки и сделало систему надёжнее и безопаснее. Теперь пароль мы используем, а значит, подвергаем риску утечки редко, а ключи, по которым пользователь авторизуется на сайте, автоматически обновляются каждые несколько минут.
В чём преимущества
У Keycloak 2 основных преимущества. Первое — развитое русскоязычное и международное комьюнити. Популярным инструментом проще пользоваться, потому что вам всегда есть кому задать вопрос.
Второе — нормальный порог входа. Keycloak считается не самым тривиальным инструментом, но он проще аналогичных продуктов, скажем, той же Ory Hydra.
Конкретно у Ory Hydra адовый порог входа. Это мощный конструктор «собери сам», где ты под себя создаёшь решение авторизации, что довольно трудозатратно. Keycloak можно прикрутить за 20 минут к демоприложению и за пару дней к небольшому проду.
Кто обычно выбирает Keycloak
С Keycloak работают и небольшие стартапы, и тяжёлый энтерпрайз. Но есть специфика его использования.
У стартапов обычно меньше требований, поэтому они могут взять продукт из коробки, быстро и базово его настроить, и этого будет достаточно. Если речь об энтерпрайзе, это всегда история про то, как куча людей с огромным опытом по локоть закапываются в инструменте делают какие-то неочевидные вещи под себя и свои задачи. На совместном митапе X5 и Слёрма коллеги из Сбера говорили, что весь Сбер ID работает на Keycloak. Он сильно кастомизирован, и это не тот Keycloak, который можно взять из Docker Hub, но вся кодовая база оттуда.
Есть ли ограничения, которые не позволяют компании использовать Keycloak
Ограничения скорее не в инструменте, а в стандарте OpenID Connect. Со стандартом нельзя торговаться — он либо подходит вам, либо нет.
Хотя есть некоторые расхождения, Keycloak работает максимально близко к стандарту. Если вам не подходит OpenID Connect, то вам не подходит Keycloak. Городить что-то перпендикулярно стандарту не получится.
Какие сложности могут возникать при работе с Keycloak
Самая распространённая проблема связана с большим количеством сессий — когда их много, кэш Keycloak начинает странно вести себя. Но есть надежда, что эта проблема решится в новой версии — Keycloak X. В ней кэш можно полностью отделить от самого keycloak и работать с infinispan, как с самостоятельным приложением. То есть, используя официальную документацию, а не её интерпретацию от разработчиков Keycloak.
На этапе подключения приложения к Keycloak у многих стреляет СORS. Подробнее про CORS вот тут: https://developer.mozilla.org/ru/docs/Web/HTTP/CORS
На практике ты прописываешь в настройках один адрес, а кто-то поднимает тестовый стенд на другом, или какой-то путь не учли. В браузере начинают сыпаться СORS-ошибки.
Ещё могут стрелять внешние зависимости, например, тюнинг подключения к базе данных. Пока у тебя маленький инстанс, всё классно. Но он растёт, выжирает коннект, и в какой-то момент ты понимаешь, что база, которую развернули на коленке, не справляются.
В остальном Keycloak — одна из немногих штук, которая при небольшой нагрузке “просто работает”
Когда вреда больше, чем пользы
Самый яркий пример — over-engineering. Например, когда вы делаете сайтик с котиками для трёх друзей и гробите 400 часов и кучу денег на энтерпрайз грейд авторизацию. Это просто не нужно, достаточно более простого решения.
Есть сервисы, которым не критичны безопасность и надёжность, потому что они не Amazon, у которого каждая секунда простоя стоит миллиарды долларов. Им не нужен Keycloak.
Внедрение технологии всегда чего-то стоит. Вам нужно оплатить курс инженеру, оплатить его работу или просто посидеть вечер и поковыряться в документации. Если внедрение стоит больше, чем даёт, оно не нужно.
Про перспективы Keycloak и карьерные преимущества
Мы живём в прикольное время, когда постоянно рождается что-то новое. Никто не может гарантировать, что завтра какой-нибудь стартап не анонсирует штуку в 10 раз удобнее и производительнее Keycloak. Но при этом есть Oauth2 и OpenID Connect — фундаментальные вещи, которые не меняются часто. И Keycloak — лишь одна из их реализаций. Умея работать с Keycloak и понимая его сущности, вы без проблем перейдёте на другой инструмент.
Сам по себе Keycloak — точно не фича, которая сразу открывает десятизначные зарплаты. Ко всему прочему вам нужно быть хорошим разработчиком или инженером. Но умение работать с Keycloak — востребованный навык и хорошая строчка в резюме, расширяющая пул работы, на которую можно претендовать.
Чему бы отдал предпочтение: самостоятельному обучению или курсам
Я люблю курсы, но больше как интро в технологию. Если можно не биться о базовую документацию 2 месяца, а сходить на 2-дневный курс, получить фундамент и дальше уже биться о более интересную документацию — я за. Это проще и понятнее.
Если говорить о глубоких знаниях, не очень верю, что есть ещё какая-то опция кроме как ковырять стенды и документацию. Так не только в Keycloak, а в любой технологии.
Но для начального этапа классно, когда есть курс, который объясняет азы и логику и даёт целостные, а не фрагментарные знания. И наш курс как раз об этом.
Моя цель — дать фундамент и помочь сэкономить время на поиске информации и погружении в тему. За 5 вечеров я объясню, как всё работает, как пользоваться Keycloak, как развернуть его в пристойной конфигурации и в какую сторону копать дальше под конкретные задачи.
Курс «Безопасность проекта: аутентификация в Keycloak»
На курсе вы получите фундаментальные знания по работе с Keycloak и узнаете, как обеспечьте безопасность проекта с минимальными усилиям.
Посмотреть программу и записаться: https://slurm.io/keycloak