代码之家  ›  专栏  ›  技术社区  ›  Kumar Roshan Mehta

组的数据库架构

  •  2
  • Kumar Roshan Mehta  · 技术社区  · 7 年前

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

    用户:uid(pk)、name、password(不用担心密码)

    组:gid(pk)、名称、所有者uid

    成员:uid(fk)、gid(fk)(一个用户可以属于多个组)

    现在,我不信任我的数据库管理员,希望加密/保护特定列,以便db admin无法向任何gid添加任何现有uid。如何修改scema以及应该加密哪个列。

    我有一个加密密钥,它被认为是安全的,我想利用sql查询,因此无法完成对表的加密并存储为blob。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Gholamali Irani    7 年前

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

    向添加额外列 Member 喜欢 key_info .

    1. 在里面 Insert :使用以下组合生成哈希代码(如sha256Hex) uid gid 和特定 . 并插入 uid gid公司 进入 成员 .

    2. 在里面 Select s来自 成员 :您有一个额外的 困难 . 您应该选择记录(从 成员 )具有正确哈希代码的。

    如果您有一个庞大而复杂的salt,而您的管理员无法访问该salt(如您在评论中所述),则他/她无法找到编解码器算法。所以如果他/她在 成员 ,您的代码将忽略选择中添加的记录,因为 key\u信息 不可能是真的。