繁体   English   中英

用于安全性的 Oracle 增量校验和加密

[英]Oracle Incremental Checksum Crypto for Security

我有一个独特的问题要解决。 我有一个连接到 Oracle RDBMS 的旧 Java 应用程序。 应用程序中散布着各种查询和 DML - 插入、更新、删除,当然还有选择。 它使用 JBC( Preparedstatement ),尽管最近添加的一个 lodule 使用 JPA。

我需要向应用程序/数据库添加保护层/逻辑,如果任何用户(甚至可能是 DBA 或操作系统 root 用户)试图绕过应用程序修改数据(更新、插入或删除),我们能够将操作识别为审计的一部分。

审计跟踪似乎是这里要做的事情,除了我们甚至不能信任操作系统 root 用户,因此拥有 DBA 和 root 访问权限的人可以轻松修改数据并删除审计跟踪中的数据。

我正在考虑在敏感表上实现一种循环加密算法,以便在应用程序执行的每个 DML 上,引入加密/散列并且它是增量的,以便通过使用应用程序进行审计可以轻松捕获任何更改。

从理论上讲,这似乎是可行的,只是它可能会变得棘手,因为在每个 DML 之后,我们可能需要重新计算许多后续记录的哈希/校验和,这可能会使应用程序/数据库负担过重。

这是一个可行的解决方案吗?

你是对的,计算每个更新的数据行的哈希值会给系统带来负担。 您是否还要在将更改提交到数据库之前验证该哈希值,以确保应用程序之外没有任何更改? 这甚至是更多的开销,并且为您的应用程序提供了更多的自定义代码。 它也无法帮助您确定谁修改了数据,或者何时修改了数据,只能确定它是在应用程序之外更新的。 使用数据库触发器是行不通的,因为它们很容易被禁用,并且无法修改调用它们的同一个表(您需要一个单独的哈希表,其中每个表中的每一行数据都有一个条目)监视器)。 审计仍然是您最好的方式,因为它不需要对您的应用程序或数据架构进行任何修改。

您有几个关于审计的选项,具体取决于您使用的 Oracle 版本。 如果您使用的是 12c 或更高版本,您可以使用统一审计,它有自己的一组权限和角色来允许职责分离(即普通 DBA 与安全管理员)。 即使在旧版本中,您也可以对实际的审计跟踪表进行更新/删除审计,这样任何修改数据的尝试都会留下指纹。

最后,您可以使用 Splunk、Elastic Search、syslog 或 Oracle 的 Database Audit Vault 或其他一些文件监控解决方案等工具将您的审计记录集中到另一个系统,因为它们是由数据库创建的 - 使 DBA 或本地无法访问它们系统管理员。 这首先需要您的 DBA 和/或系统管理员进行一些配置工作,但对保护您的审计数据大有帮助。

说了这么多,迟早你将不得不信任两个人:在系统管理员和DBA。 如果你不能信任他们,那么你就陷入了深深的麻烦之中。

Oracle 20c 有区块链表 版本 20c 目前仅在 Oracle 的云中可用,但它可能会在几个月内在本地可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM