根据Matt Woodward的博客,在The Definitive Guide to CouchDB Authentication and Security中,他指出了一些关于CouchDB的事情,我不确定我是完全理解的。
他说:
"基本上,CouchDB中安全性的工作方式是用户存储在_users
数据库中(如果您愿意,可以存储在其他地方;可以在配置文件中更改)..." 。
因此,整个CouchDB的所有用户都存储在一个数据库中,对吧?这意味着,如果我在同一个CouchDB中的不同数据库中运行多个应用程序,我必须处理想要访问这两个应用程序的用户,是否正确?
他也说
"数据库读者只能读取特定数据库上的文档和视图,并且没有其他权限"。
然后,他补充说
"默认情况下,即使您在数据库上定义了数据库管理员,也会为匿名用户启用所有数据库的读/写操作。
所以匿名用户可以或不可以读取特定数据库中的文档?
答案 0 :(得分:0)
我首先要说的是,这些文章虽然仍然提供信息,但已有几年的历史,可能已经过时了。如果您正在尝试了解CouchDB,我建议您阅读official documentation。
的详细信息在CouchDB中,您可以在开发应用程序时逐步建立安全性。默认设置非常开放,您可以通过添加配置来锁定内容。 (我认为这是一种非常直观的方式)
默认情况下,CouchDB位于" Admin Party"模式,这意味着任何人都可以读写任何东西。 (因为每个用户,包括匿名用户,都被视为管理员)
将任何管理员用户添加到您的服务器后(通过配置,而不是p.rightIn,
p:nth-child(4),
p:nth-child(6)
{
float: right;
margin: 0px 5px;
width: auto;
}
数据库),该方已结束。这意味着某些操作现在仅由您明确定义的管理员执行。 (例如创建数据库,设置配置等)
在此状态下,匿名用户仍可以在已创建的任何数据库中读取/写入普通文档。 (设计文档只能由管理员修改)如果您已准备好开始锁定单个数据库,则可以通过在给定数据库的security object中指定用户/角色来实现此目的。
当人们使用术语"数据库阅读器"时,他们意味着用户已被添加为"成员"在安全对象中。 (通过用户名或角色)通过在数据库的安全对象中指定任何成员或管理员,只有那些用户在数据库中拥有权限,所有其他用户都将被禁止。
总而言之,匿名用户可以默认读/写任何内容。一旦指定了管理员,安全性就会收紧,某些操作只能由该管理员完成。如果指定数据库成员/管理员,则数据库的安全性会更加严格,只允许这些用户甚至读取数据库。