Вопрос или проблема
Я создаю эту панель администратора и у меня есть вопрос, на котором я застрял уже некоторое время. И я начинаю задаваться вопросом, какие данные администратор должен иметь возможность редактировать/просматривать у других зарегистрированных пользователей.
Должны ли администраторы иметь возможность:
- Сменить пароль пользователя?
- Отправить пользователю электронное письмо для сброса пароля?
- Изменить учетные данные пользователя (имя, фамилия, электронная почта)?
К слову, пользователи имеют возможность нажать на забыли пароль на экране входа, чтобы самостоятельно запросить сброс пароля. Они также могут самостоятельно изменять учетные данные своей учетной записи. Должен ли я все-таки реализовать какую-либо из этой функциональности на стороне администратора? Плюсы и минусы этого?
Это зависит от бизнес-контекста приложения. Если эти вопросы важны для бизнес-контекста, возможно, вы могли бы разделить роль администратора на две отдельные роли? Или внедрить правило двух человек?
Вы должны реализовывать функцию только в том случае, если она вам действительно нужна. Меньше функций означает меньше кода, и таким образом вы снижаете вероятность возникновения ошибок и проблем с безопасностью. Дайте администраторам только те возможности, которые им действительно нужны, исходя из принципа наименьших привилегий: если учетная запись администратора будет скомпрометирована, меньше привилегий означает меньший возможный ущерб.
Большинство Систем Управления Контентом (CMS, таких как WordPress, Joomla и др.) имеют несколько ролей с различными привилегиями, например: гость, пользователь, редактор, продавец, администратор, супер администратор и т.д. Наиболее привилегированные учетные записи могут изменять почти все, включая имена, контактную информацию и пароли. Возможность изменения имен, адресов и т.д. очень полезна в некоторых случаях, поэтому это, вероятно, функция, которая вам понадобится. С другой стороны, я не совсем уверен в необходимости изменения паролей пользователей. С технической точки зрения это создает возможность плохих практик (например, установить пароль, а затем отправить его по электронной почте или другим небезопасным каналам). Тем не менее, я не считаю это серьезной проблемой безопасности, ведь изменение пароля пользователя, вероятно, не самое худшее, что может сделать скомпрометированная учетная запись администратора. Во всех CMS, которые я видел, администратор на самом деле может устанавливать программное обеспечение по своему усмотрению (плагины и расширения), поэтому, говоря в общем, мне не стоит беспокоиться о возможности изменения паролей пользователей. Однако в вашем конкретном случае, если вам не нужна эта функция и вы можете избежать ее реализации, лучше ее избежать.
Должны ли администраторы иметь возможность изменять пароль пользователя:
Нет, администратор системы не должен иметь возможность выдавать себя за любого пользователя, так как это приведет к ложным аудитам и регистрации.
Должны ли администраторы иметь возможность отправлять пользователю электронное письмо для сброса пароля?
Если механизм сброса пароля реализован должным образом, административный пользователь не должен беспокоиться о выполнении таких задач. В этом случае пользователи могут сами запросить сброс пароля.
Должны ли администраторы иметь возможность изменять учетные данные пользователя (имя, фамилия, электронная почта)?
Определенно не электронная почта, так как это вызовет проблемы у конечного пользователя с входом (если электронная почта используется в качестве имени для входа) и механизмом сброса пароля.
Также я не вижу действительной причины для изменения имени и фамилии пользователя, кроме использования заглавных букв. Однако это также может быть сделано программным путем в процессе регистрации.
Ответ или решение
Вопрос о том, какие действия администраторы могут выполнять с учетными записями пользователей, требует тщательного рассмотрения в контексте безопасности, удобства и потребностей бизнес-процессов. Ниже приведены рекомендации по каждому из предложенных пунктов.
-
Изменение пароля пользователя администратором:
- Рекомендуется не предоставлять такую возможность. Возможность изменения пароля администрацией может создать проблемы с аудиторским следом и учётными записями. Если администратор меняет пароль, это может привести к неясностям в том, кто действительно владеет учетной записью. Вместо этого следует предложить пользователям возможность сброса пароля через механизм восстановления, что также соответствует принципу самоуправления пользователей.
-
Отправка пользователю письма для сброса пароля:
- Визуально это может показаться логичным, однако достаточно того, что пользователи имеют возможность самостоятельно запрашивать сброс через страницу "Забыли пароль?". Это разгружает администраторов от лишних задач и снижает риски, связанные с потенциальным злоупотреблением.
-
Изменение информации учетной записи пользователя (имя, фамилия, адрес электронной почты):
- Изменение адреса электронной почты не рекомендуется, так как это может повлиять на возможность пользователя войти в систему и восстановить пароль. Если адрес электронной почты используется для входа в систему, его изменение может создать много проблем и недопонимания.
- Изменение имени и фамилии может быть допустимо, но только при обоснованной необходимости. В большинстве случаев такая функциональность может быть избыточной, особенно если информация о пользователе обрабатывается корректно при регистрации. Если появится необходимость, лучше автоматизировать этот процесс на этапе регистрации.
Общие рекомендации:
- Принцип наименьших привилегий: Предоставляйте администраторам только те полномочия, которые им действительно необходимы. Чем меньше функций, тем меньше вероятность возникновения ошибок и проблем с безопасностью.
- Разделение ролей: Рассмотрите возможность создания различных уровней доступа для администраторов, таких как "старший администратор" и "операционный администратор", что позволит разграничить доступ к чувствительной информации и операциям.
- Безопасность и аудит: Любые действия, предпринимаемые администраторами, должны быть зафиксированы с целью обеспечения прозрачности и аудитного контроля.
Таким образом, лучше держать механизмы изменения учетных записей пользователей минимальными и оставлять за пользователями возможность управления своими учетными данными.