2017-02-18 30 views
1

我正在开发移动售票系统,并且正在审核我对嵌入式SymmetricDS的要求。到目前为止,唯一的问题是我找不到任何直接解决行级安全问题的信息。在SymmetricDS中实现行级安全

使用案例:

一些移动点销售的节点将被记录在作为卖方,有的管理者。每个人都可以查看其他人的销售情况。卖家可以创造新的销售,但从不修改它们。经理可以修改现有的销售,但不能删除它们。

问题:

我没有在Android移动POS单位严格控制,所以他们不值得信任 - 这是不现实的,以防止反编译的APK恶意卖方和创建一个恶意客户端节点。我的环境具有安全性要求,因此恶意卖方不能修改服务器上的销售表。我可以相信假设的恶意卖家不能访问管理员凭证,我可以相信服务器软件是安全的。

问题:

  1. 是服务器端的行级安全负载过滤器的工作?
  2. 过滤器脚本是否可以访问发起更改的node_id?
  3. 过滤器脚本是否可以访问用于注册始发节点的认证凭证?
+0

什么意味着行级安全? –

+0

行级安全意味着有一种机制来控制对单个行的CRUD访问。用户'A'可能能够更新行1(可能是因为他们创建了它),但只有读取行2.用户'B'可以更新所有行,但不能删除任何东西。 –

回答

2
  1. 是的。其中的一些可以通过编写器过滤器来实现,例如更新限制到某组节点。禁用从节点删除行只意味着不应该为该节点组创建删除触发器
  2. 是的,这是可能的。在抽象加载文件的扩展名中实现的方法接受携带主叫方外部ID的参数(org.jumpmind.symmetric.io.data.Batch#getSourceNodeIdDataContext#getBatch()
  3. 基本认证对于所有节点都是相同的。有一个密码是在执行握手时自动生成的,并存储在数据库中。让你的加载文件实现对称接口ISymmetricEngineAware,它允许注入一个可用于访问数据库的引擎
+0

太好了,谢谢。经考虑,#3不是一个破坏交易的人;我只需要一个节点<=> Userid表,其中一个节点只能修改自己的行...假设我可以实现行级安全性。 :-) –