【问题标题】:How to handle users in `_users` database with many applications in the same CouchDB instance?如何在同一个 CouchDB 实例中处理具有多个应用程序的 `_users` 数据库中的用户?
【发布时间】:2015-10-31 00:41:40
【问题描述】:

根据 Matt Woodward 的博客,在 The Definitive Guide to CouchDB Authentication and Security 中,他指出了一些关于 CouchDB 的事情,我不确定我是否完全理解。

  1. 他说:

    “基本上,CouchDB 中的安全工作方式是将用户存储在_users 数据库中(或者如果您愿意,可以在其他位置;这可以在配置文件中更改)...”。

所以,整个 CouchDB 的所有用户都存储在一个数据库中,对吧?这意味着如果我在同一个 CouchDB 的不同数据库中运行多个应用程序,我必须处理想要访问这两个应用程序的用户,对吗?

  1. 他也说

    “数据库读取者只能读取特定数据库上的文档和视图,没有其他权限”。

    然后,他补充说

    “默认情况下,所有数据库都为匿名用户启用读/写,即使您在数据库上定义了数据库管理员”。

那么匿名用户可以或不可以读取特定数据库中的文档吗?

【问题讨论】:

    标签: javascript authentication authorization couchdb nosql


    【解决方案1】:

    我首先要说的是,这些文章虽然内容丰富,但已有数年历史,可能已经过时。如果您想了解 CouchDB,我建议您阅读 official documentation

    现在回答你的问题。 (更多关于安全herehere的信息)

    在 CouchDB 中,您可以在开发应用程序时逐步建立安全性。默认是非常开放的,你可以通过添加配置来锁定。 (我认为这是一种非常直观的方式)

    默认情况下,CouchDB 处于“Admin Party”模式,这意味着任何人都可以读写任何内容。 (因为每个用户,包括匿名用户,都被视为管理员)

    一旦您将 任何 管理员用户添加到您的服务器,(通过配置,而不是 _users 数据库)派对就结束了。这意味着某些操作现在只能由您明确定义的管理员执行。 (如创建数据库、设置配置等​​)

    在这种状态下,匿名用户仍然可以在任何已创建的数据库中读取/写入普通文档。 (设计文档只能由管理员修改)如果您准备开始锁定单个数据库,您可以通过在给定数据库的 security object 中指定用户/角色来做到这一点。

    当人们使用术语“数据库阅读器”时,他们的意思是用户已被添加为安全对象中的“成员”。 (通过他们的用户名或他们的角色)通过在数据库的安全对象中指定任何成员或管理员,那么只有这些用户将拥有数据库内部的权限,所有其他用户都将被禁止。

    总而言之,匿名用户默认可以读/写任何东西。一旦指定了管理员,安全性就会加强,某些操作只能由该管理员执行。如果您指定数据库成员/管理员,则数据库的安全性会更加严格,仅允许这些用户甚至读取数据库。

    【讨论】:

      猜你喜欢
      • 2021-08-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-26
      • 2011-12-24
      • 2010-10-08
      • 1970-01-01
      • 2015-05-24
      • 2012-04-09
      相关资源
      最近更新 更多