如何分离数据库中的敏感数据(MySql)


9

我需要设计一个数据库,其中将包含有关用户的个人疾病的信息。

为了实现数据库表的列,可以采用哪种方法:加密信息,在两个不同的DB中分离数据,一种用于敏感数据而另一种用于不敏感数据,或者两者兼而有之?


1
您需要保护谁免受数据攻击?
Oded 2012年

好问题,但是,也许应该将其迁移到dba.stackexchange.com/questions
FrustratedWithFormsDesigner 2012年

@Oded dba应该无法查看有关数据库用户疾病的信息。
卡洛2012年

2
但是谁不应该呢?
Oded 2012年

1
您可以在应用程序端对其进行加密,但是应用程序将具有密钥。这是“输入”数据的Web应用程序吗?
Ominus

Answers:


5

您可以使用存储在Web应用程序中的密钥来加密数据,以便以加密形式从db写入/读取数据。但是,任何有权访问该代码的人都可以访问该密钥,而使用该密钥可以访问未加密的数据。这样解决了要求

dba应该无法查看有关数据库用户疾病的信息。

至于用于分离数据库,我认为这不是必需的。您正在存储加密的数据,并按用户使用数据库权限,表(如果需要的话)将绰绰有余。我认为额外的数据库增加了一层复杂性。除非它在不同的位置,否则它可能会比单个数据库系统有一个小改进。


1
分离数据库的另一个原因是法律或合同要求,敏感数据必须存储在辖区内(而不是云中)。
吉尔伯特·勒布朗克

2

Ominus的答案解决了您的第一个问题。第二个问题的答案可能需要有关您的应用程序的更多详细信息。

如果患者必须访问数据库,则具有更高安全性的另一种方法可能是为每个用户拥有一个单独的数据库。在这种方法中,您可能会使用提供多租户,多数据库功能的框架。但是,问题在于,如果您有单独的应用程序用户和单独的数据库用户,那么同步这些用户将非常困难。我想患者虽然不需要访问您的数据库。如果确实需要,每个用户拥有一个密钥可能是最安全的。

除了法律或合同要求之外,我想到的其他一些原因还包括:客户对安全性提高的看法使销售变得更加容易,对加密被破坏的担忧以及对密钥被泄露的担忧。

关于Briddmus的回答部分,他说“您需要加密的不只是医疗信息”:仅当数据库中的每个人都有医疗状况时,这才成立。(我想是这种情况)。

注意:此答案的某些部分更适合用作评论,但我还没有足够的代表来在此处发表评论。


1

对于这种类型的应用程序,您需要考虑应该允许谁访问数据。对于医疗信息,我认为它仅限于输入该信息的用户以及他们允许查看的任何人。

为了防止DBA查看数据,您必须使用DBA无法访问的代码对其进行加密。

您还需要对信息进行加密,以使应用程序程序员也无法访问它。如果程序员可以任何用户身份登录,则没有必要加密来自DBA的信息。

您也不想使用相同的代码加密所有数据。该软件可能存在一个错误,该错误向一个用户显示了另一个用户的信息。因此,最好使用特定于该用户的代码对每个用户的数据进行加密。

需要注意的是,您不仅需要加密医疗信息,还需要加密。作为最终用户,我什至不希望您的DBA知道我有病,更不用说病情了。因此,您还需要加密有关用户的任何个人身份信息。这包括以下内容:

  • 名称
  • 出生日期
  • 电子邮件地址
  • 性别
  • 地址
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.