Database 如何安全地存储我的CouchDB管理员密码?
昨天我花了很长时间为我的CouchDB实例进行配置,以便创建一个小应用程序,让CouchDB为我管理身份验证和授权 所以我最终得到了这样的结果: 最重要的是,我有一个服务器管理员,他在我的CouchBD实例中基本上是上帝 然后,我创建了一个名为“mydatabase”(例如)的数据库,并添加了“mydatabase\u dba”角色作为admin,以及“mydatabase\u user”角色作为reader 我还创建了一个名为“_users”的数据库,其中包含所有数据库管理员和用户及其角色,还创建了一个名为“_auth”的设计文档,用于管理授权 只有服务器管理员是这个数据库的管理员,我添加了角色为“mydatabase_dba”的用户作为读卡器。然后,对于那些了解它的人,我修改了“\u auth”文档的“validate\u doc\u update”字段,以便角色为“mydatabase\u dba”的用户只能处理角色为“mydatabase\u user”的用户 因此,总结一下:Database 如何安全地存储我的CouchDB管理员密码?,database,security,passwords,couchdb,Database,Security,Passwords,Couchdb,昨天我花了很长时间为我的CouchDB实例进行配置,以便创建一个小应用程序,让CouchDB为我管理身份验证和授权 所以我最终得到了这样的结果: 最重要的是,我有一个服务器管理员,他在我的CouchBD实例中基本上是上帝 然后,我创建了一个名为“mydatabase”(例如)的数据库,并添加了“mydatabase\u dba”角色作为admin,以及“mydatabase\u user”角色作为reader 我还创建了一个名为“_users”的数据库,其中包含所有数据库管理员和用户及其角色,还
- 服务器管理员仍然是上帝
- 角色为“mydatabase\u user”的用户可以连接到“mydatabase”,但他们只是阅读器
- 角色为“mydatabase_dba”的用户是“mydatabase”的管理员
- 角色为“mydatabase\u dba”的用户可以连接到作为读卡器的数据库“\u users”
- 角色为“mydatabase\u dba”的用户只能管理“\u users”中角色为“mydatabase\u user”的用户
- 在我的应用程序中创建一个用户界面,让管理员连接并执行他必须执行的操作
- 再编写一些代码,让应用程序自动执行,这是我更喜欢的解决方案,但问题是:我必须存储管理员凭据
但是如何安全地存储它们呢?正如我在上一篇文章中所说,即使我存储的是散列密码而不是纯文本密码,如果攻击者访问我的应用程序源代码,他将拥有我的管理员凭据…应用程序永远不应该拥有管理权限。应该只给予它运行所需的最低限度的权利。如果应用程序需要一些管理权限,请确保它拥有尽可能少的权限。除此之外,大多数情况下,这些凭证以纯文本形式存储在只有应用程序才能访问的文件中
切勿将此文本文件提交到源代码管理器(Subversion、Git等)中将文件放入正在运行的系统必须是安装过程中的一个步骤。+1。我冒昧地添加了一个提醒,不要在任何地方检查此类文件。请您明确说明管理员需要执行哪些任务?如果您更详细地解释需求,也许可以这样做。谢谢理想情况下,管理员只用于创建和管理“\u用户”数据库中角色为“mydatabase\u user”的用户。然后,这些用户将能够使用“mydatabase”。我可以将其从“mydatabase”的管理员列表中删除,这样只有用户才能访问它,但如果攻击者获得其凭据,即使他无法访问“mydatabase”,他仍然可以搞乱其所有用户。。。