我们是一家 Oracle 数据库商店。我有一个应用程序,我认为 Oracle 可能不是最佳答案。我正在寻找一个轻量级、性能良好且非常安全的数据库。数据库本身可能有十几个表和数百万条记录。我不需要存储过程、集群或任何高端特性。
我的最终目标是安全。我正在寻找内置加密、整体安全设计和低调以最大程度地减少潜在的安全漏洞。
我想在 *nix 上运行它,因为它们比 Windows 更容易制作低调。
例如,在 BSD 世界中有几个变种。FreeBSD 是最便携的,而 OpenBSD 是最安全的。我正在寻找数据库世界的 OpenBSD。
我不知道任何具有此特定设计目标的现有项目。您将获得的最好的是具有相当好的内置安全性的 DBMS。大多数“NoSQL”DBMS 应用程序没有提供任何特别的安全性。传统的数据库管理系统通常具有相当丰富的安全模型,并且此类系统的安全性是一门成熟且易于理解的学科。
如果您想在安全的 Web 应用程序后面添加一些东西,您真的别无选择,只能在设计应用程序时考虑到安全性 - 传统的数据库安全性(例如,通过 sprocs 调解所有写访问,而不是直接对表进行写访问)是最好的有可能得到。不要忘记对机器有单独的 DBMS 服务器和防火墙访问权限。
如果您担心服务器的物理安全性,许多 DBMS 平台都有物理加密数据的选项(例如PostgreSQL)。一些操作系统还将支持加密文件系统,某些磁盘也支持物理加密。请注意,密钥恢复仍将否定加密 - 如果密钥物理存在于 DBMS 服务器上,那么精通技术的黑客很可能能够恢复它。
为了设计安全性并评估适合的架构,您实际上必须提出威胁评估,以了解您要保护的内容。一些场景可能是:
如果您想保护内部系统免受窥探,那么 DBMS 平台上适当的用户/角色安全性可能就足够了。
如果您想保护 Web 应用程序,那么您可以通过 sprocs 添加安全事务层来获得一些增量安全性。这将数据库写入限制为明确支持的事务 - 例如,如果入侵者想要删除审计跟踪,他们将不得不破坏应用程序和数据库的安全性才能从审计表中删除条目。但是,入侵者仍然可以执行任何有效的交易。
如果您在物理安全方面遇到问题,您可以尝试在磁盘级别进行加密。入门级 SAN 也可能对此有所帮助,因为磁盘只能通过 SAN 控制器访问。这要求窃贼破坏 SAN 控制器的安全性或对其内部分区格式进行逆向工程。一些 SAN 还提供物理磁盘加密。
请记住,大多数广泛使用的 DBMS 平台已用于 Web 应用程序,并且在该领域具有一定程度的成熟度。没有一个是专门为强化而设计的,但大多数(尤其是开源的)已经在 Web 应用程序中使用了 15 年的大部分时间。在这个领域,应用程序安全确实是薄弱环节。
全面披露:我在 Sybase SQL Anywhere 工程团队工作。我实际上负责许多安全功能。我试图回答这个问题,而不会让答案听起来像广告。
Sybase SQL Anywhere是一个轻量级 RDBMS,它包括您的所有标准 RDBMS 功能,如存储过程、触发器、行级锁定等,以及您的标准安全功能,如用户、组和对象(表、过程等)权限. 它还包含许多高级安全功能,包括强 (AES) 数据库加密和 SSL/HTTPS 通信加密。有一个 FIPS 批准的加密组件可用,它已获得EAL3+ 级别的通用标准认证(查找 Adaptive Server Anywhere)。
我不得不说,SQL Anywhere 的设计并没有将安全作为主要关注点。我不知道有任何数据库产品。