Безопасное автоматическое создание ролей _user - PullRequest
0 голосов
/ 23 сентября 2018

Я создаю веб-приложение, которое использует CouchDB в качестве своей базы данных.Как только пользователь создает учетную запись (т. Е. Он создал документ в базе данных _user), я хочу иметь возможность изменять свои роли для отражения выполненных задач.Например, когда пользователь создает учетную запись, отправляется электронное письмо, чтобы они могли проверить свой адрес электронной почты.После проверки я хочу добавить пользователю verified роль, чтобы только тогда он мог писать в свою базу данных (через приложение).

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

Этот поток , кажется, указывает, что учетные данные администратора могут храниться в виде открытого текста в файле, доступном для службы проверки (но не для чего-либо еще).Это кажется ... опасным.Но это может быть просто сочетание моей паранойи и отсутствия глубокого понимания безопасности.

Итак, несколько вопросов:

  1. Хранит учетные данные администратора в открытом текстовом файле дляслужба проверки в порядке безопасности?

  2. Есть ли другой способ изменить роль пользователя без необходимости хранения учетных данных администратора?Другими словами, есть ли способ сделать то, что предлагает этот поток , и дать только некоторые права администратора (например, изменение ролей) без фактического использования администратора?

Еслиэто помогает, все веб-приложение, couchDB и служба проверки запускаются в отдельных контейнерах Docker, объединенных в сеть с docker-compose, и предоставляются только через обратный прокси-сервер NGINX, а также в отдельном контейнере.

Кроме того, по разным причинамрешение, не включающее изменение роли пользователя, не будет работать в моем случае.Я должен иметь возможность отслеживать статус verified в роли пользователя.

1 Ответ

0 голосов
/ 24 сентября 2018
  1. Безопасно, если файл хранится на стороне сервера и недоступен для общественности.(Вы не хотите, чтобы этот файл обслуживался вашим NGINX или сервером Apache)

  2. Не совсем.

Так, как я вижуэто, вам нужна «служба регистрации», которая имеет следующие функции:

  • регистрация (аутентификация меньше).Любой может зарегистрировать
  • подтверждение учетной записи (требуется некоторая безопасность).Возможно, ему нужен токен или что-то вроде этого

Обе эти функции используют учетную запись "admin" для выполнения операций, и это абсолютно безопасно.

...