couchdb - 在 Couchdb 2.1 集群中创建只读和只写用户
问题描述
我最近创建了一个 3 服务器 couchdb 2.1 集群,并正在研究创建一些应用程序安全性。这个想法是有一个只写用户将被提供给需要写入数据库的应用程序和一个只读用户,它将由从数据库读取的应用程序使用。另一个只读用户将被授予开发人员做开发人员所做的事情。问题是我找不到任何关于这样做的文档。我们以前在旧的 1.6 安装上安装过这个,但这是在我之前设置的。任何指导表示赞赏。
解决方案
创建一个只读用户是相当简单的。您必须在数据库上创建一个仅允许某些角色写入数据库的验证函数。旧的堆栈溢出文章在这里。 CouchDB 范围的只读访问权限
只写数据库有点棘手。您必须在数据库前面放置一个代理,该代理只允许访问写入接口并阻止访问读取接口。我有一个项目,我们通过在前面放置一个代理并将其指向 couchdb 上的重写接口来完成此操作。
代理指向
设计文档看起来像
{
"_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 的解决方法,它会创建错误,因为它请求
开始复制时。该调用并不是真正需要的,解决方法是在数据库中创建一个返回类似响应的文档。
{
"_id": "fakedb",
"_rev": "1-063ad938e0501105d2f304db16dd4970",
"db_name": "dbname"
}
推荐阅读
- kubernetes - 无法使用 initContainers 访问卷内容
- jmeter - 如何从命令行禁用 jMeter 中的配置元素
- c++ - 没有参数的构造函数给我错误
- xamarin.forms - 如何在组列表视图中使用分页
- java - Is there a way to crop an SVG using java-batik?
- spring - Spring boot static resources and controllers endpoint mixed
- react-native - 如何从反应原生包中禁用羽毛笔编辑器的自动缩放?
- api - Strapi Cron 在迁移到版本 strpi-3.0.0 后不起作用
- javascript - 我的锚标签不断打开我服务器上的链接
- c++ - 通过函数参数使模板函数选择类型