我应该使用什么角色以编程方式在 Cloudant/BigCouch/CouchDB 中创建和删除数据库?

What role should I use to programmatically create and delete databases in Cloudant/BigCouch/CouchDB?

Cloudant、CouchDB 和 BigCouch 都建议创建用户特定的数据库作为实现文档级访问控制的一种方式。即 AliceDB 将只有 Alice 可以阅读的文档,BobDB 将只有 Bob 的文档等等。

实施此模式需要以编程方式创建和删除数据库。有用于这些的 DB REST API,但这些 API 要求调用者具有服务器管理员权限。我在同一个集群上有许多其他不相关的数据库,我担心分发具有 serveradmin 权限的用户标识。 (如果客户端代码不小心删除了我的其他数据库怎么办?!!)

人们正在做什么来解决这个问题?我在 Cloudant、CouchDB 或 BigCouch 文档中找不到任何内容。

您有几个可能的选择:

  • Apache CouchDB 2.0 包含一个可能有用的 couch_peruser 配置选项。
  • 您可以创建自己的系统来执行与 couch_peruser 相同的操作。这将涉及创建一个程序,该程序有权创建新数据库并相应地分配权限。
  • Cloudant Envoy 可以提供每个用户拥有一个单独数据库的错觉,而无需实际创建单独的数据库。