【问题标题】:Create a Read-only and Write-only user in Couchdb 2.1 Cluster在 Couchdb 2.1 集群中创建只读和只写用户
【发布时间】:2019-02-05 15:06:37
【问题描述】:

我最近创建了一个 3 服务器 couchdb 2.1 集群,并正在研究创建一些应用程序安全性。这个想法是有一个只写用户将被提供给需要写入数据库的应用程序和一个只读用户将由从数据库读取的应用程序使用。另一个只读用户将被授予开发人员做开发人员所做的事情。问题是我找不到任何关于这样做的文档。我们以前在旧的 1.6 安装中安装过这个,但这是在我之前设置的。任何指导表示赞赏。

【问题讨论】:

    标签: couchdb


    【解决方案1】:

    创建只读用户非常简单。您必须在数据库上创建一个仅允许某些角色写入数据库的验证函数。旧的堆栈溢出文章在这里。 CouchDB-wide read-only access rights

    只写数据库有点棘手。您必须在数据库前面放置一个代理,该代理只允许访问写入接口并阻止访问读取接口。我有一个项目,我们通过在前面放置一个代理并将其指向 couchdb 上的重写接口来完成此操作。

    代理指向

    https://couchserver.com/databasename/_design/app/_rewrite

    设计文档看起来像

    {
       "_id": "_design/app",
       "rewrites": [
           {
               "to": "../../_bulk_docs",
               "from": "/db/_bulk_docs",
               "method": "POST"
           },
           {
               "to": "../../_revs_diff",
               "from": "/db/_revs_diff",
               "method": "POST"
           },
           {
               "to": "../../_local/*",
               "from": "/db/_local/*",
               "method": "GET"
           },
           {
               "to": "../../_local/*",
               "from": "/db/_local/*",
               "method": "POST"
           },
           {
               "to": "../../_local/*",
               "from": "/db/_local/*",
               "method": "PUT"
           },
           {
               "to": "../../../",
               "from": "/",
               "method": "GET"
           },
           {
               "to": "../../fakedb",
               "from": "/",
               "method": "GET"
           },
           {
               "to": "/../../fakedb",
               "from": "/db/*",
               "method": "GET"
           }
       ]
    }
    

    这允许我们打开最小的接口,让 pouchdb 将数据从客户端同步到我们的服务器。我们必须添加的最后一点是 pouchdb 的解决方法,它会创建错误,因为它向

    发出请求

    https://proxyserver.com/db

    开始复制时。调用并不是真正必要的,解决方法是在数据库中创建一个返回类似响应的文档。

    {
       "_id": "fakedb",
       "_rev": "1-063ad938e0501105d2f304db16dd4970",
       "db_name": "dbname"
    }
    

    【讨论】:

      猜你喜欢
      • 2019-04-22
      • 2018-04-23
      • 2021-12-22
      • 1970-01-01
      • 1970-01-01
      • 2010-10-20
      • 1970-01-01
      相关资源
      最近更新 更多