我们正在讨论数据安全,出现了一个我需要确认的问题。这是一种情况:
我们有两个Oracle数据库:一个在源服务器上,一个在客户机服务器上。源服务器具有敏感信息,并且已完全安全,并被视为符合要求。我们希望运行一个group by查询来聚合来自源的数据,并将其存储在客户机上,一旦聚合,数据将不再敏感。
简单地说..。这包括三个部分: 1)源服务器上的数据;2)数据在网络上的传输;3)客户端服务器上的数据。
有人能解释聚合发生在哪里吗?传送的数据是什么?
换句话说,这是怎么一回事:
发布于 2017-10-11 06:26:03
Oracle优化分布式查询,以尽可能高效地执行它们,特别是它力求最小化通过网络发送的数据量。它总是尝试在远程服务器上运行查询,并且只将结果集发送到本地服务器。(将远程数据与本地数据连接时,情况要复杂得多,但这似乎不是您的场景)。了解更多信息。
因此,您可以在客户端服务器上运行查询,并确保敏感数据保留在源服务器上,并且只传输聚合结果集(#1选项)。然而,如果我是你的安全官员,我仍然会对这个解决方案不满意。它仍然意味着将敏感表上的select访问授予安全数据库之外的用户。那太冒险了。
更安全的解决方案是将数据聚合到安全服务器上,比如使用物化视图。客户端服务器访问该物化视图以获得聚合数据,这取决于您需要什么,可以通过查询或视图,也可以使用另一个物化视图。
完整的解决方案是在源数据库上有一个单独的模式来承载物化视图,这样外部用户甚至都不能访问拥有敏感数据的模式。显然,维护DMZ是额外的开销,但是所有的安全性都是开销。
发布于 2017-10-11 03:16:46
如果策略是永远不要查看客户端服务器中的敏感数据,则选项一是您的选择。至于实现选项2,客户端服务器需要能够从源服务器查询原始数据。
要实现选项1,可以使用源服务器上的物化视图聚合数据,然后使用db链接将聚合数据复制到客户端服务器。
https://stackoverflow.com/questions/46678219
复制相似问题