Mongodb 如何在服务器端拒绝集合插入/更新

Mongodb 如何在服务器端拒绝集合插入/更新,mongodb,security,meteor,collections,Mongodb,Security,Meteor,Collections,我有一个Meteor应用程序(a),它连接到一些生产远程集合(另一个应用程序B)上,我只想a从B的集合中读取数据,而不修改B的集合数据(即使修改发生在B的服务器端)。 如何在A中实现这一点?您完全可以控制Meteor应用程序服务器代码在数据库中的功能 要确保应用程序A服务器代码无法写入数据库,只需使用任何集合插入、更新或上传方法 Meteor的特殊之处在于,它还可以允许客户端启动的DB修改:只需确保删除不安全的包,并且绝不在服务器代码中使用collectionallow方法 现在,对于您的案例来

我有一个
Meteor
应用程序(a),它连接到一些生产远程集合(另一个应用程序B)上,我只想a从B的集合中读取数据,而不修改B的集合数据(即使修改发生在B的服务器端)。

如何在A中实现这一点?

您完全可以控制Meteor应用程序服务器代码在数据库中的功能

要确保应用程序A服务器代码无法写入数据库,只需使用任何集合
插入
更新
上传
方法

Meteor的特殊之处在于,它还可以允许客户端启动的DB修改:只需确保删除
不安全的
包,并且绝不在服务器代码中使用collection
allow
方法


现在,对于您的案例来说,一个非常简单、防弹且标准的实践解决方案就是为您的应用程序a创建一个不同的数据库用户,仅具有读取权限,正如@NeilLunn所解释的那样。这种不同的DB用户凭据是传递给应用程序a的
MONGO_URL
变量的一部分,因此这是connec的唯一方法将应用程序A添加到与应用程序B相同的远程数据库中。

您不仅可以在搜索引擎中键入内容吗?您可以这样做。然后您可能会意识到“数据库管理”对于编程站点来说是“离题的”。您可以询问哪里可能有答案,但实际上阅读文档“应该”为您解决此问题。另外,请不要将标记名作为问题标题的一部分。您问题上的标记将作为元数据包含在搜索引擎中。哦,请查看dba网站上的答案:当然,这只不过是指向文档。示例用法就在那里。您好@NeilLunn,感谢您对标记名的建议。Abo但问题是,有两件事:1.我问的是Meteor特定的解决方案,2.我想知道如何在应用程序a内部做到这一点,因为我不想弄乱应用程序B的mongo配置。编写“代码”来授权访问功能(或加载应用程序的插件)是一种选择,但它似乎不适合“阻止A从B等”。如果你花一点时间实际阅读手册,我想你会发现它确实做到了你所要求的,只需为每个“应用程序”设置不同的用户。我现在意识到你可能还没有得到的部分是,在“真实世界”中,你的meteor应用程序是“只是代码”。实际的MongoDB部分将连接到“外部”服务器,而不是开发中使用的每个实例。