安全、自动化的 _user 角色创建

Secure, automated _user role creation

我正在构建一个使用 CouchDB 作为后端数据库的网络应用程序。一旦用户创建了一个帐户(即他们在 _user 数据库中创建了一个文档),我希望能够改变他们的角色以反映已完成的任务。例如,当用户创建一个帐户时,系统会发送一封电子邮件,以便他们验证其电子邮件地址。经过验证,我想为用户添加一个 verified 角色,这样他们才能写入他们的数据库(通过应用程序)。

我 运行 遇到的问题是只有管理员才能更改用户角色,因此据我所知,在某些时候自动化此操作需要自动化过程使用管理员凭据。我正在考虑在 this 线程中模拟解决方案并创建一个验证服务来接收电子邮件验证并具有 CouchDB 数据库的管理员凭据。那么问题就变成了如何给这个服务管理员凭据。

This 线程似乎表明管理员凭据可以明文形式存储在验证服务可访问的文件中(但不可用于其他任何内容)。这感觉……很危险。但这可能只是我偏执狂和对安全缺乏深刻理解的结合。

那么,几个问题:

  1. 正在将管理员凭据保存在明文文件中以供 从安全角度来看,验证服务可以吗?

  2. 有没有另一种方法可以更改用户角色而无需 需要存储管理员凭据?换句话说,有没有办法 做什么 this 线程建议并仅授予一些管理员权限(例如更改角色) 没有真正使用管理员?

如果有帮助,Web 应用程序、couchDB 和验证服务都 运行 在单独的 Docker 容器中,与 docker-compose 联网并且仅通过 NGINX 反向代理公开在一个单独的容器中。

此外,由于各种原因,不涉及用户角色更改的解决方案在我的情况下不起作用。我必须能够跟踪用户角色中的 verified 状态。

  1. 如果文件存储在服务器端并且无法被 public 访问,那么它是安全的。 (您不希望您的 NGINX 或 Apache 服务器提供此文件)

  2. 不是真的。

所以在我看来,您需要一个具有以下功能的 "registration service":

  • 注册(少认证)。任何人都可以注册
  • 帐户确认(需要一定的安全性)。也许,它需要一个令牌或类似的东西

这两个函数都使用 "admin" 帐户来执行操作,这是完全安全的。