Slide 1

Slide 1 text

Время перемен OpenSource IAM в 2023 25.10.2023

Slide 2

Slide 2 text

IAM Системы

Slide 3

Slide 3 text

Время перемен OpenSource IAM в 2023 Identity and Access Management (IAM) 3 Регистрация Авторизация Аутентификация

Slide 4

Slide 4 text

Время перемен OpenSource IAM в 2023 Identity and Access Management (IAM) 3 Регистрация Авторизация Аутентификация Аудит доступов Управление пользователями

Slide 5

Slide 5 text

IAM + SSO 4 • Проверяет подлинность пользователя • Является единым местом по выдаче прав и ролей • Единая точка аудита действий пользователя • Берет на себя вопрос интеграции с внешними системами Время перемен OpenSource IAM в 2023

Slide 6

Slide 6 text

OAuth и OIDC 5 Время перемен OpenSource IAM в 2023

Slide 7

Slide 7 text

OAuth и OIDC OAuth (RFC-6749) • Говоря про OAuth, чаще всего имеется в виду OAuth 2.0 • Вводятся 2 токена: — Access token — Refresh token • Не отвечает за аутентификацию 5 Время перемен OpenSource IAM в 2023

Slide 8

Slide 8 text

OAuth и OIDC OAuth (RFC-6749) • Говоря про OAuth, чаще всего имеется в виду OAuth 2.0 • Вводятся 2 токена: — Access token — Refresh token • Не отвечает за аутентификацию OIDC • Прослойка аутентификации над OAuth 2 • Добавляет сведения о профиле пользователя • Появляется Identity Token (регламентировано JWT) 5 Время перемен OpenSource IAM в 2023

Slide 9

Slide 9 text

OAuth и OIDC OAuth (RFC-6749) • Говоря про OAuth, чаще всего имеется в виду OAuth 2.0 • Вводятся 2 токена: — Access token — Refresh token • Не отвечает за аутентификацию OIDC • Прослойка аутентификации над OAuth 2 • Добавляет сведения о профиле пользователя • Появляется Identity Token (регламентировано JWT) 5 Время перемен OpenSource IAM в 2023

Slide 10

Slide 10 text

Что если написать свою IAM систему? 6 Время перемен OpenSource IAM в 2023

Slide 11

Slide 11 text

Что если написать свою IAM систему? • Вам ее поддерживать • Отсутствие внешней экспертизы • Интеграция с другими сервисами 6 Время перемен OpenSource IAM в 2023

Slide 12

Slide 12 text

Что если написать свою IAM систему? • Вам ее поддерживать • Отсутствие внешней экспертизы • Интеграция с другими сервисами 6 Время перемен OpenSource IAM в 2023

Slide 13

Slide 13 text

Варианты IaM систем 7 • Authelia • Authentik • Zitadel • Casdoor Время перемен OpenSource IAM в 2023

Slide 14

Slide 14 text

8 • Написан на Go • Имеется возможность оплатить support • Имеются некритичные платные self-hosted features Немного фактов Время перемен OpenSource IAM в 2023

Slide 15

Slide 15 text

8 • Написан на Go • Имеется возможность оплатить support • Имеются некритичные платные self-hosted features • 5000+ звезд • 70+ контрибьюторов • Активно закрываются различные баги Немного фактов GitHub статистика Время перемен OpenSource IAM в 2023

Slide 16

Slide 16 text

8 • Написан на Go • Имеется возможность оплатить support • Имеются некритичные платные self-hosted features • 5000+ звезд • 70+ контрибьюторов • Активно закрываются различные баги Немного фактов GitHub статистика Что пошло не так? • На момент выбора решение было сырым • Поддержка LDAP частично в разработке Время перемен OpenSource IAM в 2023

Slide 17

Slide 17 text

8 • Написан на Go • Имеется возможность оплатить support • Имеются некритичные платные self-hosted features • 5000+ звезд • 70+ контрибьюторов • Активно закрываются различные баги Немного фактов GitHub статистика Что пошло не так? • На момент выбора решение было сырым • Поддержка LDAP частично в разработке Время перемен OpenSource IAM в 2023

Slide 18

Slide 18 text

9 • Написан на Python • Имеются платные self-hosted features Немного фактов Время перемен OpenSource IAM в 2023

Slide 19

Slide 19 text

9 • Написан на Python • Имеются платные self-hosted features • 4000+ звезд • 100+ контрибьюторов Немного фактов GitHub статистика Время перемен OpenSource IAM в 2023

Slide 20

Slide 20 text

9 • Написан на Python • Имеются платные self-hosted features • 4000+ звезд • 100+ контрибьюторов • На 1 человека приходится 98% залитого кода Немного фактов GitHub статистика Время перемен OpenSource IAM в 2023

Slide 21

Slide 21 text

9 • Написан на Python • Имеются платные self-hosted features • 4000+ звезд • 100+ контрибьюторов • На 1 человека приходится 98% залитого кода Немного фактов GitHub статистика Что пошло не так? • Отсутствует поддержка подгрупп внутри групп • LTS релизы только в Enterprise версии • В планах продукта разделение на Enterprise и Community версии Время перемен OpenSource IAM в 2023

Slide 22

Slide 22 text

9 • Написан на Python • Имеются платные self-hosted features • 4000+ звезд • 100+ контрибьюторов • На 1 человека приходится 98% залитого кода Немного фактов GitHub статистика Что пошло не так? • Отсутствует поддержка подгрупп внутри групп • LTS релизы только в Enterprise версии • В планах продукта разделение на Enterprise и Community версии Время перемен OpenSource IAM в 2023

Slide 23

Slide 23 text

10 • Написан на Go • Простая установка • Имеется некоторое количество плагинов Немного фактов Время перемен OpenSource IAM в 2023

Slide 24

Slide 24 text

10 • Написан на Go • Простая установка • Имеется некоторое количество плагинов • 17000+ звезд • 100+ контрибьюторов • На 3 человека приходится 98% залитого кода Немного фактов GitHub статистика Время перемен OpenSource IAM в 2023

Slide 25

Slide 25 text

10 • Написан на Go • Простая установка • Имеется некоторое количество плагинов • 17000+ звезд • 100+ контрибьюторов • На 3 человека приходится 98% залитого кода Немного фактов GitHub статистика Что пошло не так? • Отсутствует поддержка SAML в качестве внешнего IdP • github.com/authelia/authelia/issues/189 – поддержка OIDC (все еще позиционируется как Beta) • github.com/authelia/authelia/issues/1275 – невозможность изменения конфига без перезапуска пода Время перемен OpenSource IAM в 2023

Slide 26

Slide 26 text

10 • Написан на Go • Простая установка • Имеется некоторое количество плагинов • 17000+ звезд • 100+ контрибьюторов • На 3 человека приходится 98% залитого кода Немного фактов GitHub статистика Что пошло не так? • Отсутствует поддержка SAML в качестве внешнего IdP • github.com/authelia/authelia/issues/189 – поддержка OIDC (все еще позиционируется как Beta) • github.com/authelia/authelia/issues/1275 – невозможность изменения конфига без перезапуска пода Время перемен OpenSource IAM в 2023

Slide 27

Slide 27 text

11 • Написан на Go • Неофициально принадлежит Tencent • Очень подробная документация по подключению внешних провайдеров Немного фактов Casdoor Время перемен OpenSource IAM в 2023

Slide 28

Slide 28 text

11 • Написан на Go • Неофициально принадлежит Tencent • Очень подробная документация по подключению внешних провайдеров • 7000+ звезд • 140+ контрибьюторов • Активное community Немного фактов GitHub статистика Casdoor Время перемен OpenSource IAM в 2023

Slide 29

Slide 29 text

11 • Написан на Go • Неофициально принадлежит Tencent • Очень подробная документация по подключению внешних провайдеров • 7000+ звезд • 140+ контрибьюторов • Активное community Немного фактов GitHub статистика Что пошло не так? • github.com/casdoor/casdoor/issues/1531 • Весьма сомнительные решения по MR в GitHub Casdoor Время перемен OpenSource IAM в 2023

Slide 30

Slide 30 text

11 • Написан на Go • Неофициально принадлежит Tencent • Очень подробная документация по подключению внешних провайдеров • 7000+ звезд • 140+ контрибьюторов • Активное community Немного фактов GitHub статистика Что пошло не так? • github.com/casdoor/casdoor/issues/1531 • Весьма сомнительные решения по MR в GitHub Casdoor Время перемен OpenSource IAM в 2023

Slide 31

Slide 31 text

12 • Fork Casdoor • Разрабатывается группой энтузиастов • Закрывает различные недостатки casdoor Немного фактов Casgate Время перемен OpenSource IAM в 2023

Slide 32

Slide 32 text

12 • Fork Casdoor • Разрабатывается группой энтузиастов • Закрывает различные недостатки casdoor Немного фактов В чем отличие от Casdoor? • github.com/casdoor/casdoor/issues/1531 • Возможность создавать ссылку-приглашение • Добавлена возможность запросить смену пароля для пользователя при первом входе • Автоназначение роли по атрибутам от LDAP, SAML или OAuth • Гибкий AuthZ mapping ролей, основанный на casbin Casgate Время перемен OpenSource IAM в 2023

Slide 33

Slide 33 text

12 • Fork Casdoor • Разрабатывается группой энтузиастов • Закрывает различные недостатки casdoor Немного фактов В чем отличие от Casdoor? • github.com/casdoor/casdoor/issues/1531 • Возможность создавать ссылку-приглашение • Добавлена возможность запросить смену пароля для пользователя при первом входе • Автоназначение роли по атрибутам от LDAP, SAML или OAuth • Гибкий AuthZ mapping ролей, основанный на casbin Casgate GitHub статистика Время перемен OpenSource IAM в 2023

Slide 34

Slide 34 text

12 • Fork Casdoor • Разрабатывается группой энтузиастов • Закрывает различные недостатки casdoor Немного фактов В чем отличие от Casdoor? • github.com/casdoor/casdoor/issues/1531 • Возможность создавать ссылку-приглашение • Добавлена возможность запросить смену пароля для пользователя при первом входе • Автоназначение роли по атрибутам от LDAP, SAML или OAuth • Гибкий AuthZ mapping ролей, основанный на casbin Casgate GitHub статистика Время перемен OpenSource IAM в 2023

Slide 35

Slide 35 text

13 • Написан на Java • Разработан RedHat • Лежит в основе RedHat SSO Немного фактов Keycloak Время перемен OpenSource IAM в 2023

Slide 36

Slide 36 text

13 • Написан на Java • Разработан RedHat • Лежит в основе RedHat SSO Немного фактов Keycloak GitHub статистика • 17000+ звезд • 950+ контрибьюторов • Очень большое community Время перемен OpenSource IAM в 2023

Slide 37

Slide 37 text

13 • Написан на Java • Разработан RedHat • Лежит в основе RedHat SSO Немного фактов Почему остановились на нем? Keycloak GitHub статистика • 17000+ звезд • 950+ контрибьюторов • Очень большое community • Быстрые фиксы найденных уязвимостей • RedHat, как maintainer продукта • Существует с 2014 года • Большое количество плагинов • Большое community • Чат в Telegram • Профильные конференции Время перемен OpenSource IAM в 2023

Slide 38

Slide 38 text

Минимальная конфигурация Keycloak 14 Время перемен OpenSource IAM в 2023

Slide 39

Slide 39 text

Минимальная конфигурация Keycloak 14 Время перемен OpenSource IAM в 2023

Slide 40

Slide 40 text

Как мы работаем с Keycloak

Slide 41

Slide 41 text

Немного истории 16 2021 год Сами написали сервис авторизации на основе Azure AD + auth_request на nginx Март 2022 Azure объявляет об уходе из РФ Апрель 2022 Первоначальное подключение Keycloak как SSO в наши приложения Июнь 2022 Переход на работу с Keycloak, через proxy Август 2022 Обновление 17 -> 19 Октябрь 2023 Обновление 19 -> 21 Время перемен OpenSource IAM в 2023

Slide 42

Slide 42 text

Инсталляция Keycloak 17 Время перемен OpenSource IAM в 2023

Slide 43

Slide 43 text

Keycloak cache 18 Время перемен OpenSource IAM в 2023

Slide 44

Slide 44 text

Keycloak cache 18 Время перемен OpenSource IAM в 2023

Slide 45

Slide 45 text

Keycloak cache 18 Время перемен OpenSource IAM в 2023

Slide 46

Slide 46 text

Keycloak cache 18 Время перемен OpenSource IAM в 2023

Slide 47

Slide 47 text

Keycloak cache 18 Время перемен OpenSource IAM в 2023

Slide 48

Slide 48 text

Управление Keycloak 19 • Используем terraform провайдер для IaC: Время перемен OpenSource IAM в 2023

Slide 49

Slide 49 text

Базовые настройки безопасности Keycloak 20 • Закрыть master realm • Следовать рекомендациям по настройке reverse proxy • Закрыть endpoint с метриками Время перемен OpenSource IAM в 2023

Slide 50

Slide 50 text

Интеграция приложений с Keycloak

Slide 51

Slide 51 text

OIDC (OpenID connect) 22 Время перемен OpenSource IAM в 2023

Slide 52

Slide 52 text

OIDC через proxy 23 Время перемен OpenSource IAM в 2023

Slide 53

Slide 53 text

OIDC через proxy Посмотрим со стороны приложения 24 Время перемен OpenSource IAM в 2023

Slide 54

Slide 54 text

Как это видит приложение? 25 Время перемен OpenSource IAM в 2023

Slide 55

Slide 55 text

OIDC через proxy Конфигурация 26 Время перемен OpenSource IAM в 2023

Slide 56

Slide 56 text

Время перемен OpenSource IAM в 2023 Почему остановились на proxy? 27 • Для обновления Keycloak не подключаем разработчиков • Для обновления proxy разработчики также не нужны • Позволяет легко сменить SSO провайдера • Разграничение зон ответственности • Прозрачные логи перехода пользователей по URL

Slide 57

Slide 57 text

Права в Postgres через Keycloak

Slide 58

Slide 58 text

Проблематика • Создание пользователя через UI отнимает много времени • Небезопасная передача паролей • Пользователи забывают пароли • Привязка пользователя в БД к доменной УЗ 29 Время перемен OpenSource IAM в 2023

Slide 59

Slide 59 text

Решение 30 • Для выдачи прав достаточно выдать роль в Keycloak • Пароли генерируются автоматически и присылаются на почту • При блокировке УЗ – права пропадают автоматически • Общее время на выдачу прав сократилось в разы Время перемен OpenSource IAM в 2023

Slide 60

Slide 60 text

Спасибо за внимание! Maxim Yurchenko mv-yurchenko mv_yurchenko [email protected] Спасибо за внимание! Фамилия Имя Контакты