我们有一个由 SQL Azure 托管的数据库,可通过 REST 服务访问,而 REST 服务本身只能通过 https 访问。但我们想知道,是否应该加密整个或部分数据库,以防黑客访问(我们不是主要目标,但学生会知道这个系统)。Azure 数据库设置了防火墙规则,只允许少数系统访问。
加密会不会增加什么意义?加密会不会只是一种安全手段?或者说,不管怎样,数据库加密都是最佳实践。
答案1
您的 REST API 将成为这里的薄弱环节,特别是如果您锁定了 SQL Azure 防火墙(并且您甚至可以将其锁定到只有 Windows Azure Compute 实例可以访问它的程度)。
SQL Azure 没有内置加密机制,因此您需要在数据访问层(或直接在 REST API 实现方法中)执行此步骤。解密也是如此。所以...正如@Bart 指出的那样:如果有人破坏了您的 REST API 的安全性,他们将可以访问未加密的数据(与破坏期间使用的凭据相关)。
关于一般数据库加密实践:如果您在云中加密/解密,那么在某些时候,静态数据是未加密的(这在考虑 PII 时至关重要)。
答案2
如果有一个接口可以导出数据,而有人设法攻破了该接口(无论输入是否经过健全性检查还是其他方法),加密实际上都无济于事。您的大部分交互都来自该接口。如果有人窃取了磁盘上的原始文件,我认为加密会很方便。除非您将数据存储为由应用程序解密的加密信息,这是另一个抽象层,但这听起来有点愚蠢……
数据有多敏感?如果数据极其敏感,您可以限制特定用户组通过 IP 进行访问,或通过特定 VLAN/VPN 接口进行访问。您可能需要重新考虑托管超出您控制范围的极其敏感的数据。