在 SymmetricDS 中实现行级安全
Implementing row-level security in SymmetricDS
我正在开发一个移动票务系统,我正在审查我对嵌入式 SymmetricDS 的要求。到目前为止唯一的症结是我找不到任何直接解决行级安全性问题的信息。
用例:
一些移动销售点节点将以卖家身份登录,一些以管理员身份登录。每个人都可以查看其他人的销售情况。卖家可以创建新的销售,但绝不能修改它们。经理可以修改现有销售额,但不能删除它们。
问题:
我对 Android 移动 POS 单元没有严格控制,因此它们不值得信任 -- 阻止恶意卖家反编译 APK 并创建恶意客户端节点是不现实的。我的环境有安全要求,不允许恶意卖家修改服务器上的销售额table。我可以相信假想的恶意卖家无法访问经理凭据,我可以相信服务器软件是安全的。
问题:
- 服务器端行级安全是负载过滤器的工作吗?
- 过滤器脚本能否访问发起更改的 node_id?
- 过滤器脚本能否访问用于注册原始节点的身份验证凭据?
- 是的。其中一些可以通过编写器过滤器实现,比如更新限制到特定的一组节点。禁用从节点中删除行仅意味着根本不应为该节点组创建删除触发器
- 是的,这是可能的。在抽象加载文件的扩展中实现的方法接受携带调用者外部 ID 的参数(
org.jumpmind.symmetric.io.data.Batch#getSourceNodeId
和 DataContext#getBatch()
)
- 所有节点的基本身份验证都相同。执行握手时会自动生成一个密码,并将其存储在数据库中。让您的加载文件实现 symmetricds 接口
ISymmetricEngineAware
,它允许注入可用于访问数据库的引擎
我正在开发一个移动票务系统,我正在审查我对嵌入式 SymmetricDS 的要求。到目前为止唯一的症结是我找不到任何直接解决行级安全性问题的信息。
用例:
一些移动销售点节点将以卖家身份登录,一些以管理员身份登录。每个人都可以查看其他人的销售情况。卖家可以创建新的销售,但绝不能修改它们。经理可以修改现有销售额,但不能删除它们。
问题:
我对 Android 移动 POS 单元没有严格控制,因此它们不值得信任 -- 阻止恶意卖家反编译 APK 并创建恶意客户端节点是不现实的。我的环境有安全要求,不允许恶意卖家修改服务器上的销售额table。我可以相信假想的恶意卖家无法访问经理凭据,我可以相信服务器软件是安全的。
问题:
- 服务器端行级安全是负载过滤器的工作吗?
- 过滤器脚本能否访问发起更改的 node_id?
- 过滤器脚本能否访问用于注册原始节点的身份验证凭据?
- 是的。其中一些可以通过编写器过滤器实现,比如更新限制到特定的一组节点。禁用从节点中删除行仅意味着根本不应为该节点组创建删除触发器
- 是的,这是可能的。在抽象加载文件的扩展中实现的方法接受携带调用者外部 ID 的参数(
org.jumpmind.symmetric.io.data.Batch#getSourceNodeId
和DataContext#getBatch()
) - 所有节点的基本身份验证都相同。执行握手时会自动生成一个密码,并将其存储在数据库中。让您的加载文件实现 symmetricds 接口
ISymmetricEngineAware
,它允许注入可用于访问数据库的引擎