繁体   English   中英

如何使用同一个CouchDB实例中的许多应用程序来处理`_users`数据库中的用户?

[英]How to handle users in `_users` database with many applications in the same CouchDB instance?

根据Matt Woodward的博客,在《 CouchDB身份验证和安全性权威指南》中,他指出了一些有关CouchDB的知识,我不确定我是否完全理解。

  1. 他说:

    “基本上,CouchDB中的安全性工作方式是将用户存储在_users数据库中(如果需要,也可以存储在其他地方;可以在配置文件中更改此信息)...”。

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

  1. 他还说

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

    然后,他补充

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

那么匿名用户是否可以阅读特定数据库中的文档?

首先,我要说的是,这些文章虽然仍然很有启发性,但它们已有几年历史,并且可能已过时。 如果您想了解CouchDB,我建议您通读官方文档

现在回答您的问题。 (有关此处此处的安全性的更多信息)

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

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

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

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

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

总而言之,匿名用户默认可以读取/写入任何内容。 一旦指定了管理员,安全性就会提高,某些操作只能由该管理员执行。 如果指定数据库成员/管理员,则数据库的安全性将进一步提高,仅允许那些用户甚至读取数据库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM