2. Руководство по эксплуатации / 2.6. Настройки безопасности
2. Руководство по эксплуатации / 2.6. Настройки безопасности

2.6. Настройки безопасности

2.6. Настройки безопасности

Администрирование функций безопасности включает в себя следующее:

2.6.1. Ролевая модель доступа

В TDG реализована ролевая модель доступа к функциям системы и данным, хранящимся в системе. По умолчанию, определены три роли, которые могут быть назначены различным пользователям и внешним приложениям для авторизованного доступа и действий в системе:

  • «admin»
  • «supervisor»
  • «user»

Данные роли можно рассматривать как своего рода шаблоны — они являются нередактируемыми и имеют предзаданный набор прав.

Роль Доступ к функциям Доступ к данным
admin Полный доступ ко всем функциям. read/write для всех агрегатов
supervisor Полный доступ в режиме «только для чтения» — имеет доступ ко всем разделам системы, но не может менять ее настройки. read для всех агрегатов
user Ограниченный доступ. Запрещен доступ к разделам, связанным с администрированием системы (скрыты вкладки Cluster, Configuration files, Model, Audit Log, Settings). Отсутствует

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

Текущий список ролей пользователей можно увидеть на вкладке Settings > Roles:

../_images/user_roles01.png

Для работы ролевой модели доступа необходимо назначить одному из наборов реплик в кластере роль account_manager. Это делается на этапе настройки кластера.

2.6.1.1. Создание роли пользователя

Администратор имеет возможность создания новых ролей доступа, в том числе на базе уже существующих (ролей по умолчанию или ранее созданных пользовательских ролей). Для новой роли может быть задан произвольный набор прав, и также к ней может быть привязан профиль доступа к данным.

Для создания новой роли пользователя:

  1. На вкладке Settings > Roles нажмите Add new role. Откроется диалог создания роли.
  2. В диалоге создания задайте следующие параметры:
    • Name — название роли;
    • Description (optional) — (опционально) произвольное описание роли;
    • Inherit from role — (опционально) выбор существующей роли, на базе которой будет создаваться новая.
  3. В таблице отметьте флаг Allowed для тех действий, которые будут доступны для пользователя данной роли (перечислены в списке в колонке Action). Профили доступа к данным, если они уже созданы в системе, отображаются в этом же списке. Назначить профиль доступа к данным можно и позднее, отредактировав набор действий для этой роли.
  4. Сохраните новую роль, нажав Save.
../_images/user_roles02.png

2.6.2. Управление пользователями

Текущий список пользователей TDG и инструменты для управления ими находятся на вкладке Settings > Users:

../_images/user_list.png

Управление пользователями включает в себя следующие операции:

2.6.2.1. Создание профиля пользователя

Для создания профиля пользователя TDG:

  1. В web-интерфейсе перейдите на вкладку Settings > Users и нажмите Create user. Откроется диалог создания пользователя.

    ../_images/user_create01.png
  2. В диалоге укажите следующие параметры:

    • Name — имя пользователя;
    • Email — электронная почта пользователя;
    • Password — пароль для авторизации в системе (должен соответствовать политике паролей). Также пароль можно сгенерировать автоматически:
      • либо кнопкой Generate;
      • либо оставить поле пустым — в этом случае система автоматически сгенерирует пароль и отправит пользователю на указанный Email (для этого необходимо иметь настроенный SMTP-сервер).
    • Expires in — (опционально) срок действия пароля;
    • Role — роль пользователя согласно ролевой модели доступа.
  3. Нажмите Submit.

При создании профиля автоматически генерируется уникальный идентификатор пользователя, который отображается в колонке LOGIN в таблице User list и который используется в дальнейшем для авторизации в web-интерфейсе.

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

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

../_images/user_create02.png

Примечание

Помимо создания профилей пользователей в web-интерфейсе, их можно импортировать в систему посредством JSON-файла.

2.6.2.2. Редактирование и удаление профиля пользователя

Для редактирования профиля пользователя:

  1. В web-интерфейсе перейдите на вкладку Settings > Users.
  2. В таблице User list в колонке ACTIONS для нужного пользователя нажмите Edit.
  3. В диалоге редактирования профиля пользователя измените необходимые параметры и нажмите Submit.

Для удаления профиля пользователя из системы в колонке ACTIONS нажмите More для нужного пользователя и выберите в выпадающем меню Delete. В диалоговом окне подтвердите удаление, нажав OK.

2.6.2.3. Изменение статуса пользователя

При создании профиля пользователя он автоматически активируется в системе, на что указывает статус «active» в колонке STATUS таблицы User list. Администратор может изменить статус пользователя вручную — заблокировать пользователя в системе:

  1. В колонке ACTIONS нажмите More для нужного пользователя и выберите в выпадающем меню Block user:

    ../_images/user_block01.png
  2. В диалоговом окне укажите, если необходимо, причину изменения статуса (параметр Reason) и нажмите Block. Если ранее статус пользователя уже менялся, причина последнего изменения статуса будет указана в параметре Previous Reason.

    ../_images/user_block02.png

Статус пользователя будет изменен на «blocked» и отображен в колонке STATUS.

В дальнейшем администратор может заново активировать профиль пользователя по аналогичной процедуре (More > Unblock user).

2.6.2.4. Сброс пароля пользователя

Администратор может сбросить пароль любого из пользователей: в колонке ACTIONS нажмите More для нужного пользователя и выберите в выпадающем меню Reset password. В диалоговом окне подтвердите сброс пароля, нажав OK. После этого на электронный адрес пользователя, указанный в его профиле, будет выслан временный пароль для авторизации в системе.

Для корректной работы отправки нового пароля на электронный адрес должен быть настроен SMPT-сервер. Для этого необходимо:

  1. Развернуть и запустить SMTP-сервер.

  2. В файле конфигурации TDG config.yml прописать следующие настройки и загрузить измененную конфигурацию в систему:

    connector:
      output:
        - name: to_smtp
          type: smtp
          url: <URI SMPT-сервера>
          from: <адрес отправителя>
          timeout: <значение тайм-аута, секунды>
    
    account_manager:
      only_one_time_passwords: true
      output:
        name: to_smtp
    

2.6.2.5. Экспорт/импорт профилей пользователей

Профили пользователей можно экспортировать из системы в формате JSON. Для этого на вкладке Settings > Users нажмите Export:

../_images/user_export01.png

В результате система сформирует и экспортирует файл с именем users-<N>.json (где <N> — порядковый номер), который содержит массив с профилями всех текущих пользователей. Профиль каждого пользователя имеет следующий формат (пример):

[
   {
     "expires_in":2592000,
     "login":"pc9199",
     "email":"petrov@mailserver.com",
     "created_at":1586236779870364400,
     "state_reason":"petrov@mailserver.com state is changed to active: recover from disabled",
     "failed_login_attempts":1,
     "uid":"23563aa8-facc-4970-89f3-cfc267609c3b",
     "role":"admin",
     "state":"active",
     "username":"Петров",
     "last_login":1586236825716746000,
     "last_password_update_time":null
   },
   {
   ...
   }
]

Также возможна обратная операция — импорт профилей пользователей в систему.

Для импорта вначале необходимо подготовить файл с профилями пользователей в формате JSON. Это может быть ранее экспортированный файл с профилями (см. выше), или же администратор может подготовить файл с этими данными самостоятельно. В описанном представлении данных пользователя в формате JSON обязательными являются все поля кроме:

  • state_reason;
  • last_login;
  • last_password_update_time;
  • password.

Отдельно нужно сказать про поле password и логику генерации пароля пользователя при импорте профиля. Существует 2 варианта создания пароля:

  1. Указать пароль в явном виде в поле password — в этом случае флаг Generate passwords в диалоге импорта отмечать не нужно (см. ниже процедуру импорта), и пароль для пользователя будет взять из поля password как есть. При этом пароль должен соответствовать текущей политике паролей, определенной в системе.
  2. Сгенерировать пароль автоматически — в этом случае в поле password необходимо передать пустое значение (null) или просто не указывать это поле в JSON, а в диалоге импорта нужно отметить флаг Generate passwords. Пароль будет сгенерирован автоматически в соответствии с текущей политикой паролей.

Важно

Для всех импортируемых пользователей в JSON должен быть выбран один и тот же вариант генерации пароля - либо вариант 1, либо вариант 2.

После успешного импорта профиля данные пользователя, включая пароль, будут отображены в web-интерфейсе. Также можно настроить отправку данных на электронную почту пользователя. Для этого необходимо иметь настроенный SMTP-сервер и в диалоге импорта отметить флаг Send passwords via user’s email.

Пример профиля пользователя в формате JSON для импорта в систему:

[
   {
     "expires_in":2592000,
     "login":"rk7222",
     "email":"ivanov@mailserver.com",
     "created_at":1586236779870364400,
     "state_reason":null,
     "failed_login_attempts":0,
     "uid":"a0067457-faf2-4441-b213-7c823422bab6",
     "role":"admin",
     "state":"active",
     "username":"Иванов",
     "last_login":null,
     "last_password_update_time":null,
     "password":null
   }
]

Для импорта профилей пользователей:

  1. На вкладке Settings > Users нажмите Import. Откроется диалоговое окно.

    ../_images/user_import01.png
  2. В диалоговом окне выберите JSON-файл с профилями пользователей (Choose File), отметьте, если необходимо, опции, связанные с генерацией паролей (Generate passwords и Send passwords via user’s email), и нажмите Apply.

В случае успешного импорта новые профили пользователей будут добавлены в таблицу User list. Данные профилей, включая пароли, будут показаны в web-интерфейсе в сообщении о результатах операции импорта.

../_images/user_import02.png

Важно

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

Также данные импортированного пользователя, включая пароль, можно сохранить в формате .csv — кнопка Download passwords в сообщении с результатами импорта.

2.6.2.6. Управление политикой паролей

Политика создания паролей для авторизации пользователей в системе регулируется на вкладке Settings > Password Policy. Данная политика применима в равной степени как к паролям, которые пользователи задают вручную, так и к автоматически сгенерированным паролям. Изменять политику паролей может только администратор.

../_images/passpolicy.png

Политика определяет минимальную допустимую длину пароля (Password length) и то, какие категории символов должны быть обязательно включены в пароль:

  • латинские буквы в нижнем регистре (Include Lowercase Characters);
  • латинские буквы в верхнем регистре (Include Uppercase Characters);
  • цифры от 0 до 9 включительно (Include Digits);
  • дополнительные символы !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ (Include Symbols).

Значения по умолчанию: длина пароля — 8 символов; в пароле должны обязательно присутствовать символы из первых трех категорий (дополнительные символы — опционально).

Для изменения политики паролей необходимо поменять значения нужных параметров и нажать ОК.

2.6.3. Токен приложений

Приложениям внешних систем для доступа к данным и функциям TDG необходим авторизованный доступ, который организуется через токены приложений.

Общий процесс выглядит следующим образом: в web-интерфейсе администратор генерирует токен, назначает для него права доступа к объектам TDG и передает токен разработчикам внешней системы.

Сгенерировать токен можно в web-интерфейсе: вкладка Settings > Tokens, кнопка Create token. В диалоге создания необходимо указать следующие параметры и нажать Submit:

  • Name — имя (ключ) токена, которое будет в дальнейшем идентифицировать его в системе;
  • Expires in — (опционально) срок действия токена;
  • Role — роль токена. Аналогична роли пользователя согласно ролевой модели доступа.
../_images/token01.png

После генерации токен в явном виде будет доступен только в сообщении в web-интерфейсе:

../_images/token02.png

Важно

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

В дальнейшем сам сгенерированный токен и его имя являются нередактируемыми. Отредактировать можно только срок действия токена и его роль.

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

2.6.4. Права доступа к данным

TDG дает возможность установить для каждой роли права на действия с данными (объекты с логическим типом «Aggregate», далее — агрегат), которые обрабатываются и хранятся в системе:

  • Read — чтение (получение) информации о хранящихся в системе агрегатах;
  • Write — вставка и удаление агрегатов.

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

Права доступа к данным задаются в web-интерфейсе через создание профиля доступа (data action), который потом назначается для каких-либо из пользовательских ролей.

Для создания профиля доступа:

  1. Перейдите на вкладку Settings > Data actions.

  2. Нажмите Add new Data Action. Откроется диалог создания профиля.

    ../_images/data_action01.png
  3. В поле Name введите имя профиля доступа.

  4. Для каждого из агрегатов отметьте галочками нужные права, Read и/или Write.

  5. Сохраните профиль, нажав Save.

Созданный профиль доступа отображается на вкладке Settings > Data actions. Профиль является редактируемым, т.е. в дальнейшем можно изменять права Read/Write для нужных агрегатов.

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

Примечание

Назначить профиль доступа можно только для роли, созданной в системе администратором. Для ролей по умолчанию («admin», «supervisor», «user») эта операция недоступна, т.к. эти роли нередактируемые и являются своего рода шаблонами с предзаданным набором прав.

Чтобы назначить профиль доступа для существующей роли:

  1. Перейдите на вкладку Settings > Roles и в колонке Action для нужной роли нажмите Edit.

  2. В диалоге редактирования отметьте флаг Allowed для нужного профиля доступа.

    ../_images/data_action02.png
  3. Сохраните настройки роли, нажав Save.

Аналогично профиль доступа можно назначить и при создании новой роли.

2.6.5. Режим обязательной аутентификации

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

Для этого необходимо:

  1. Создать профиль пользователя с ролью «admin».
  2. Авторизоваться в системе под этим пользователем.
  3. Включить режим обязательной аутентификации (отключить анонимный доступ).

Режим обязательной аутентификации включается/отключается на вкладке Cluster переключателем Auth.

../_images/user_auth03.png