时间:2018-02-05 07:48:02

标签: mysql database-design database-schema

我有一个简单的用户和组数据库。

用户:uid(pk),名称,密码(不要担心密码)

组:gid(pk),name,owner_uid

会员:uid(fk),gid(fk)(用户可以属于多个群组)

现在,我不相信我的数据库管理员,并希望加密/保护特定的coloumns,以便db admin无法将任何现有的uid添加到任何gid。我如何修改我的情景以及我应该加密哪个颜色。

我有一个加密密钥,假设它保持安全,我也想利用sql查询,因此无法完成加密表并存储为blob。

1 个答案:

答案 0 :(得分:0)

我认为您不能使用数据库约束来执行此要求。您可以通过编程来管理它。但是,如果您编写一些触发器来处理它,您的(坏)管理员也可以访问触发器。

Member添加额外的列,例如key_info

  1. Insert中:使用uidgid以及特定 salt 的组合制作哈希码(如sha256Hex)。并将uidgid插入Member

  2. 来自Select的{​​{1}}:您有额外的难度。您应该选择具有正确哈希码的记录(来自Member)。

  3. 如果您有大而复杂的盐并且您的管理员无法访问盐(正如您在评论中所述),他/她找不到编解码器算法。因此,如果他/她在Member中添加了一些记录,则您的代码会忽略选择中添加的记录,因为Member不能为真。