我需要设计一个数据库,其中将包含有关用户的个人疾病的信息。
为了实现数据库表的列,可以采用哪种方法:加密信息,在两个不同的DB中分离数据,一种用于敏感数据而另一种用于不敏感数据,或者两者兼而有之?
我需要设计一个数据库,其中将包含有关用户的个人疾病的信息。
为了实现数据库表的列,可以采用哪种方法:加密信息,在两个不同的DB中分离数据,一种用于敏感数据而另一种用于不敏感数据,或者两者兼而有之?
Answers:
Ominus的答案解决了您的第一个问题。第二个问题的答案可能需要有关您的应用程序的更多详细信息。
如果患者必须访问数据库,则具有更高安全性的另一种方法可能是为每个用户拥有一个单独的数据库。在这种方法中,您可能会使用提供多租户,多数据库功能的框架。但是,问题在于,如果您有单独的应用程序用户和单独的数据库用户,那么同步这些用户将非常困难。我想患者虽然不需要访问您的数据库。如果确实需要,每个用户拥有一个密钥可能是最安全的。
除了法律或合同要求之外,我想到的其他一些原因还包括:客户对安全性提高的看法使销售变得更加容易,对加密被破坏的担忧以及对密钥被泄露的担忧。
关于Briddmus的回答部分,他说“您需要加密的不只是医疗信息”:仅当数据库中的每个人都有医疗状况时,这才成立。(我想是这种情况)。
注意:此答案的某些部分更适合用作评论,但我还没有足够的代表来在此处发表评论。
对于这种类型的应用程序,您需要考虑应该允许谁访问数据。对于医疗信息,我认为它仅限于输入该信息的用户以及他们允许查看的任何人。
为了防止DBA查看数据,您必须使用DBA无法访问的代码对其进行加密。
您还需要对信息进行加密,以使应用程序程序员也无法访问它。如果程序员可以任何用户身份登录,则没有必要加密来自DBA的信息。
您也不想使用相同的代码加密所有数据。该软件可能存在一个错误,该错误向一个用户显示了另一个用户的信息。因此,最好使用特定于该用户的代码对每个用户的数据进行加密。
需要注意的是,您不仅需要加密医疗信息,还需要加密。作为最终用户,我什至不希望您的DBA知道我有病,更不用说病情了。因此,您还需要加密有关用户的任何个人身份信息。这包括以下内容: