@AvKa3003

Стоит ли данные авторизации главного администратора хранить в окружении?

Новичок в серверной разработке. После повторения уроков и освоения с базовыми технологиями решил наконец сделать что-то своё. Как отправную точку для начала разработки приложения взял организацию ролей пользователей т.к. уже заранее знаю какие они будут. Тут столкнулся с проблемой непонимания оптимального способа создания точки входа для администрирования. Понятно что роли пользователям могут выдавать более старшие по званию если использовать иерархическую структуру. Тут возник вопрос - как создаётся самый старший пользователь. Должен ли он быть один или их может быть несколько. Я не пользовался CMS, но полагаю что там админки раздаёт человек имеющий соответствующие права в CMS. Но если CMS системы нет и админка будет самописная, как лучше поступить. Есть конечно вариант напрямую запросом в БД или временным кодом модно создать одного главного админа который будет либо единственным в своём роде, либо сможет раздавать такой же уровень прав, что кажется мне крайне идиотским решением т.к. во-первых - когда нет одного главенствующего человека может начаться хаос, а во-вторых очевидно что такой функционал должен быть не одноразовой затычкой. Мне пришла мысль, что можно указать логин и хэш пароля прямо в .env файле. К роуту авторизации этого пользователя можно предоставлять только с определённого пула IP-адресов, которые храним в этом же файле окружения вместе с ключами шифрования JWT. Раз в этом файле хранятся ключи шифрования, то полагаю место достаточно надёжное и почему бы так не поступить. Таким образом у нас есть полноценный функционал по управлению root-пользователем. В любой момент его данные авторизации и допустимые адреса для входа можно изменить при надобности.

Изобрёл ли я велосипед, какую-то откровенную дичь или вариант имеющий право на жизнь.

Тут заметил одну проблему. Если появится потребность в изменении пула IP-адресов, или данных входа, придётся перезагружать сервак и на какое-то время ложить сервис. Может есть возможность подтягивать изменения в рантайме из файла окружения. Я только видел как меняют окружение из кода программы, а я подумал о возможности изменить .env и из терминала заставить сервер подтянуть изменения.
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
@12rbah
Вот пример того пользователи хранятся в вордпрессе примерв целом как вариант можете загуглить rbac + ваш язык и посмотреть как реализована либа и как её используют. Еще будет полезно погуглить rbac design.
Мне пришла мысль, что можно указать логин и хэш пароля прямо в .env файле
На самом деле немного странное решение, вполне нормально хранить эти данные в бд, если не ошибаюсь в wp так и делают.
К роуту авторизации этого пользователя можно предоставлять только с определённого пула IP-адресов, которые храним в этом же файле окружения вместе с ключами шифрования JWT.
Так не стоит делать, если это нужно то лучше написать в отдельноё middleware, которое будет уметь это делать, эта задача к системе ролей никак не относится.
Раз в этом файле хранятся ключи шифрования, то полагаю место достаточно надёжное и почему бы так не поступить.
Довольно неудобно менять пароль, по сути нужно перезапускать систему для этого
создать одного главного админа который будет либо единственным в своём роде, либо сможет раздавать такой же уровень прав
Вообще это не такая и редкая ситуация когда только 1 человек знает все пароли, но стоит предусмотреть возможность чтобы была возможность того, чтобы админ мог создавать пользователей с любыми ролями и привилегиями. Я же правильно понял, что вы хотите создать систему ролей которую можно будет применить к любому проекту, то глупо ограничивать пользователя, пусть делает что ему нужно, с вашей стороны нужно обеспечить гибкую систему ролей.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@mitya_k
Тут заметил одну проблему. Если появится потребность в изменении пула IP-адресов, или данных входа, придётся перезагружать сервак и на какое-то время ложить сервис. Может есть возможность подтягивать изменения в рантайме из файла окружения. Я только видел как меняют окружение из кода программы, а я подумал о возможности изменить .env и из терминала заставить сервер подтянуть изменения.


Сделай watcher для файла с секретами через fs.watch, тогда при изменение файла с данными сервер сможет их подхватить без перезапуска
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы