【发布时间】:2018-08-24 19:15:43
【问题描述】:
我正在尝试在 CouchDB 2.2 的单服务器部署上设置连续复制作业,从本地数据库到本地数据库,而无需传播用户密码。
我可以通过在此表单的 _replicator db 中创建一个文档来进行复制:
{
"_id": "my-replication-job-id",
"_rev": "1-5dd6ea5ad8479bb30f84dac02aaba59c",
"source": "http://username:password@localhost:5984/source_db_name",
"target": "http://username:password@localhost:5984/target_db_name",
"continuous": true,
"owner": "user-that-created-this-job"
}
在我的复制作业的source 和target 字段中,是否有任何方法可以在不以纯文本(或它的base64 编码版本)插入用户密码的情况下执行此操作?这一切都在同一台服务器上运行......数据库和复制作业本身。
我看到 Couch 2.2 添加了ability for replication jobs to maintain their authenticated state using a cookie,但我的理解是用户名和密码仍然是必要的,以便启动与源数据库和目标数据库的经过身份验证的会话。
我应该补充一点,我已经配置了require_valid_user = true。
提前致谢。
【问题讨论】:
-
我相信通过指定主机名(例如:
localhost:5984),您实际上并没有进行本地到本地复制。相反,您应该只指定数据库名称。 -
此外,只有管理员可以访问系统数据库中的文档,例如
_replicator,这是否解决了您的任何安全问题? -
如果您需要将复制配置为在已通过身份验证的用户之外的用户上下文中进行,我也会参考the documentation about "delegations"。它允许你指定一个自定义的
user_ctx可以接受用户或角色。 -
感谢@DominicBarnes 的指点。当我尝试只为
source和/或target指定数据库名称时,我在日志中收到错误:Could not open file /Users/mfogel/Library/Application Support/CouchDB2/var/lib/couchdb/<databasename>.couch: no such file or directory。这是真的 - 该文件不存在。数据库似乎在文件系统级别进行了分片,但复制器不尊重这一点……我能说的最好。
标签: security couchdb replication