image

Nexign Academy

Образовательная площадка
для ИТ-компаний

Nexign

SSO

Аутентификация пользователей по технологии единого входа

НАЗНАЧЕНИЕ

Продукт «Аутентификация пользователей по технологии единого входа (SSO)» – это единый центр управления доступом, который содержит унифицированный механизм аутентификации пользователей с поддержкой технологии единого входа. 

Продукт предназначен для обеспечения безопасности внутреннего контура от внешних угроз и контроля доступа пользователей.

SSO предоставляет публичные программные интерфейсы:

  • REST API;
  • сообщения MBUS;
  • AMQP API.

SSO предоставляет графический пользовательский интерфейс для управления данными.

АРХИТЕКТУРА РЕШЕНИЯ

ФУНКЦИОНАЛЬНЫЕ ВОЗМОЖНОСТИ

  • Управление моделью доступа
  • Управление парольными политиками пользователей и прочими административными возможностями
  • Управление пользователями
  • Управление приложениями (клиентами) 
  • Аутентификация пользователей по стандартам OAUTH2 и OIDC
  • Расчёт прав пользователей 
  • Выдача прав пользователей

КЛЮЧЕВЫЕ ПРЕИМУЩЕСТВА

  • Высокий уровень безопасности – применяется механизм аутентификации на базе токенов доступа стандартов JWT и JWS.
  • Комфортная среда для абонента – при обращении к услуге или сервису абонент не вводит каждый раз логин и пароль.
  • Масштабируемость – поддерживается горизонтальное масштабирование.
  • Надежность – применяется балансировка нагрузки.

ОСОБЕННОСТИ ЭКСПЛУАТАЦИИ

Для эксплуатации SSO необходим следующий набор программного обеспечения:

  • Операционная система Red OS 7.3;
  • OpenJDK;
  • СУБД PostgreSQL;
  • «Сервер кэшей» (COUCHBASE);
  • RabbitMQ (опционально для отправки нотификаций);
  • «Шлюз доступа к API» (API_GATEWAY) – (опционально - для работы веб-интерфейса).

Для работы автоинсталлятора также потребуются:

1. Ansible 2.10.7;

2. Jinja2 2.11.3;

3. Python 3.6 с пакетами:

  • jmespath 0.9.3;
  • lxml 4.2.5;
  • kazoo 2.5.0;
  • pywinrm 0.3.0;
  • natsort 6.0.0;
  • PyYAML 5.4.1.

УСТАНОВКА

Подготовьте дистрибутив к локальной установке.

Скачайте и распакуйте дистрибутив продукта.

Создайте схему развертывания.

В каталоге дистрибутива install/inventory/localhost содержится пример с настройками схемы развёртывания.

В каталоге дистрибутива install/inventory/default содержатся настройки компонентов по-умолчанию.

Чтобы создать собственную схему развёртывания, создайте копию каталога localhost и переименуйте её (например, staging).

Настройте общие параметры.

При необходимости переопределите нужные настройки компонентов и настройки конфигурации в файлах install/inventory/localhost/group_vars/sso/*.yml

Подробнее о настройках inventory см. документацию Ansible.

Настройте хосты.

Настройте хосты сервера, на котором устанавливается продукт, и опишите группы серверов схемы развертывания в файле install/inventory/localhost/1-isem-sso.yml.

В каждой группе укажите серверы, на которые необходимо выполнить установку компонентов продукта, и параметры соединения с ними в формате: alias, имя серверной машины ansible_host и метод подключения ansible_connection.

Пример:

# deploy на удаленную машину
ansible_connection=ssh
ansible_host=<адрес удаленной машины>

# Либо deploy на localhost
ansible_connection=local
ansible_host=localhost

Файл install/inventory/localhost/1-isem-sso.yml по умолчанию заполнен параметрами для локальной установки и в минимальной конфигурации. Нельзя изменять названия существующих групп. Можно добавлять новые хосты, новые группы и наследования.

Выполните конфигурацию продукта.

Конфигурация продукта задается в файлах:

  • install/inventory/localhost/group_vars/*.yml;

Запустите автоинсталлятор.

Запуск комманд Ansible должен производиться из каталога install.

Общий вид команды запуска:

ansible-playbook  -i inventory/default -i inventory/localhost –u <REMOTE_USER> -k sso-deploy.yml

где:

  • -i <inventory/localhost> – inventory, который будет использоваться при выполнении сценария (если указать каталог, то сценарий пройдется по всем хост-файлам, находящимся в указанном каталоге);
  • -u – пользователь, от имени которого Ansible будет подключаться к серверам, указанным в файле хостов в inventory;
  • -k – необходимость ввода пароля пользователя, указанного в ключе -u.

При необходимости можно добавить дополнительные параметры:

  • --become-user – привилегированный пользователь;
  • -K – необходимость ввода пароля для привилегированного пользователя, указанного в ключе --become-user;
  • -b – необходимость выполнения сценария от имени привилегированного пользователя;
  • -t – перечисление тегов, которые будут выполняться в сценарии (по умолчанию используется all, то есть запуск всех тегов);
  • -l – перечисление хостов или групп, по которым будет выполнен сценарий (по умолчанию сценарий будет выполнен для всех хостов);
  • -v – уровень журналирования; максимальное количество v=4 (-vvvv), чем больше v, тем выше уровень журналирования;
  • -e – дополнительные переменные задаются в виде key=value или YAML/JSON. Если указывается имя файла, то имя должно начинаться с @. Полный список ключей можно посмотреть в официальной документации Ansible.

Переключитесь на новую версию продукта и зафиксируйте ее.

Установленная версия принимается или финализируется отдельным шагом при запуске роли app/version/finalize. На этом шаге удаляется файл DEPLOY_UNFINISHED и создается символическая ссылка current на принятую версию.

Переключитесь на новую версию вводом команды:

ansible-playbook  -i inventory/default -i inventory/localhost –u <REMOTE_USER> -k sso-deploy-finalize.yml

Если установленная версия работает корректно, ее можно зафиксировать для возможности отката на нее.

Зафиксируйте установку версии (статус новой версии продукта – успешно установлена) вводом команды:

ansible-playbook  -i inventory/default -i inventory/localhost –u <REMOTE_USER> -k sso-deploy-success.yml

Стоимость продукта

Чтобы узнать стоимость продукта и детали по услугам внедрения и поддержки, свяжитесь с нами: sales@nexign.com

Полная документация по продукту

Полный пакет документации передается заказчику с дистрибутивом и содержит подробное описание функциональности, инструкции по установке продукта, детали по взаимодействию с внешним окружением и особенности эксплуатации. Свяжитесь с нами, чтобы узнать подробности: sales@nexign.com

Материалы по теме