Skip to end of metadata
Go to start of metadata

Проблема

На настоящий момент логины и пароли на доступы на каждую железку задаются независимо, что приводит к ряду неудобств:

  • При вводе новых железок приходится каждый раз вбивать логин и пароль для доступа, даже если используются системы аутентификации RADIUS и TACACS+ и логины и пароли для группы железа совпадают
  • При изменении логина и пароля на RADIUS приходится изменять множество записей в базе руками
  • Нет возможности использовать логины и пароли текущего пользователя (например, в sa.managedobject > console)

Предлагаемое решение

Auth Profile

Вводим сущность AuthProfile, как множество Managed Object с совпадающими реквизитами доступа

ПолеТипConstraintОписание
idINTEGERNOT NULL PRIMARY KEYУникальный идентификатор
nameVARCHARNOT NULL UNIQUEУникальное название AuthProfile
typeVARCHAR

NOT NULL

Тип профиля. Одно из:

  • localgroup – локальная база пользователей для железки, при этом в пределах группы логины и пароли совпадают (административное ограничение)
  • radius – RADIUS authentication
  • tacplus – TACACS+ authentication
  • ldap - LDAP authentication
userVARCHAR Имя пользователя, используется NOC по умолчанию
passwordVARCHAR Пароль
super_passwordVARCHAR Пароль на дополнительные функции, в случае необходимости (enable для Cisco)
snmp_roVARCHAR SNMP RO community
snmp_rwVARCHAR SNMP RW community

Доработка ManagedObject

В таблицу sa_managedobject добавляется поле

ПолеТипConstraintОписание
auth_profile_idINTEGERREFERENCES sa_authprofileСсылка на AuthProfile

Алгоритм определения логина и пароля для доступа к железке

  • Если тип auth_profile_id IS NULL – используем логины и пароли, заданные в sa_managedobject
  • В противном случае используем логины и пароли из auth profile

Авторизация пользователей в консоли

Добавляем коллекцию noc.console_credentials

ПолеТипОписание
_idObjectIdИдентификатор записи
userintИдентификатор пользователя NOC
auth_profileintИдентификатор auth profile
managed_objectintИдентификатор managed object'а (только для пустых auth_profile_id)
userstrИмя пользователя
passwordstrПароль

В профиле пользователя необходимо добавить поле

ПолеТипConstraintОписание
save_console_passwordBOOLEAN Сохранять ли пароли в консоли

Для определения имени пользователя и пароля для доступа на железку

  • Если auth_profile пустое, ищем запись в noc.console_credentials по user  и managed_object
  • Если auth_profile непустое, то ищем запись в noc.console_credentials по user и auth_profile
  • Если сохраненный пароль не найден - спрашиваем
  • Если в профиле пользователя установлен save_console_password - сохраняем пароль в noc.console_credentials

Доработки SAE

В таблице map_task придется добавить поле credentials, с возможностью задавать логины и пароли для запуска скрипта

Дальнейшее развитие

Возможно создание каналов синхронизации для noc-sync для автоматического provisioning RADIUS и TACACS+ для централизованного управления учетными записями через NOC

  • No labels

4 Comments

  1. Unknown User (zi)

    тут важно продумать вопрос безопасности

    администратор нока или базы данных не должен иметь доступа к паролям в открытом виде или возможность их расшифровать

    1. Unknown User (zi)

      то есть что получается

      пароль пользователя должен быть зашифрован, но дожна быть возможность всегда пароль восстановить для использования по назначению, и очевидно что данных на сервере должно быть недостаточно чтобы пароль восстановить, например ключ которым зашифрован пароль надо хранить на клиенте

  2. Unknown User (dv)

    После прохождения процедуры администратор без проблем получит логин и пароль 1001 способом

  3. Unknown User (zi)

    что очень и очень плохо, и кстати не является оправданием чтобы гонять все открытым тесктом

     

    кстати, какой именно процедуры? о чем речь?

    одно дело админ получит доступ системный, а другое когда скомпрометированным паролем будет делать черные дела