Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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

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

Auth

...

Profile

Вводим сущность AuthDomain – как область сети, в которой действует общая политика на имена пользователей и пароли

Добавляем новую таблицу sa_authdomain вида

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

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

NOT NULL

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

local – локальная база пользователей для железки

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

...

snmp_roVARCHAR SNMP RO community
snmp_rwVARCHAR SNMP RW community

Доработка ManagedObject

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

ПолеТипConstraintОписание
auth_domainprofile_idINTEGERNOT NULL REFERENCES sa_authdomainauthprofileСсылка на AuthDomain

При миграции каждой железке прописывается Auth Domain local.

В случае, если для железки выбирается Auth Domain типа local, то появляются поля для ввода логина и паролей, в противном случае они скрываются

AuthProfile

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

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

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

...

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

...

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

  • Если auth_domain == localprofile пустое, ищем запись в noc.console_credentials по user _id  и managed_object_id, проверяем, что auth_domain_id ссылается на AuthDomain
  • Если auth_domain != localprofile непустое, то ищем запись в noc.console_credentials по user _id и auth_domain_idprofile
  • Если сохраненный пароль не найден - спрашиваем
  • Если в профиле пользователя установлен save_console_password - сохраняем пароль в noc.console_credentials

...

Доработки SAE

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

...