我们正在与20个人一起进行一个大型学校项目。该案是一个分散的匿名聊天平台。因此我们不允许设置中央服务器,因此我们正在研究分布式数据库,并发现Cassandra最适合我们的项目。
这意味着所有正在运行该应用程序的人都将是一个Cassandra节点。这对我引起了很多关注,主要是恶意节点。如果每个人都在他们的计算机上运行一个Cassandra节点,我们如何才能防止他们进行操纵/破坏,甚至只是直接删除数据?
我正在做一些研究,并且开始得出结论,Cassandra(以及我研究过的其他分布式数据库)是用于公司拥有,运行和维护数据库的公司解决方案的。在我们的情况下,这是不正确的,因为一旦应用程序启动,就不会有“所有者”。每个用户都是系统的一部分。
我知道在分散式/分布式系统中防止恶意节点的一种(或也许是唯一的)方法是让节点相互检查。我在Cassandra中找不到这样做的方法,因此我的问题是,我们可以防止数据破坏和恶意节点成为威胁吗?
正如您提到的,Cassandra的设计假定您将控制所有节点,因为一旦任何第三方都可以访问您的数据副本,您就失去了对其处理权限的控制,类似于互联网上的任何帖子。
一个确保只有“授权节点”加入集群的选项,您可以强制执行SSL节点间加密,这可以使您有所控制,但有一些警告:
关于语句I know one (or maybe the only) way to prevent malicious node in a decentralized/distributed system is to have nodes keep each other in check.
,Cassandra已经在使用八卦机制来使每个节点相互检查。