这里讲的多实例化,是一种数据库设计技术,它允许插入相同唯一标识信息的多条记录。这听起来可能有点奇怪,因为通常我们认为唯一标识(比如学号、员工ID等)应该是独一无二的,不是吗?
但有时候有的数据有敏感信息,只能展示给安全级别高的用户,那么就需要插入多条记录,其中某条记录有附加的敏感信息。
说直白一点,就是为不同安全级别的用户创建不同的数据库记录。A看到的和B看到的不一样,尽管他们用的都是同一个学号来检索。
比如现在有一个学生数据表中包含了所有学生的高考去向信息,这些信息属于老师都能看到的信息。但是,某个学生被需要保密的学院录取了,校长不能让其他老师知道这个学生去向。如果简单将学生录取信息设置为不可见,那么其他老师就能推理出这个学生可能去保密学院了。
如果采用多实例化的方法,我们可以在表中插入两条记录,第一条属于只能校长级别能看到的秘密信息,反映了学生的实际录取信息。第二条信息其他老师也能看到,显示了学生的入学了一个普通学院。
总之,多实例化是一种数据库安全技术,它通过在数据库中创建多个数据实例(数据实例(Data Instance),通常指的是数据库中的一行数据。每一行数据代表了现实世界中的一个实体或者一条记录)来防止未授权用户通过推理(inference)来获取机密信息。在多实例化中,敏感数据被分散存储在不同的实例中,这样即使未授权用户能够访问某些数据,他们也无法通过这些数据推导出其他敏感信息,因为关键的数据点被隔离在不同的实例中。
练习几个题目:
题目1:什么样的数据库技术可防止未授权用户因看不到通常可访问的信息而推导出机密信息?
A. 推理
B. 操控
C. 多实例化
D. 聚合
答案:C. 多实例化
推理(Inference):推理攻击是一种数据库安全问题,其中攻击者可能通过分析数据库中的公开数据和它们之间的关系来推断出敏感信息。这种攻击方式不需要访问实际的机密数据,而是通过分析数据模式和关系来推导出可能的机密信息。比如,一个攻击者知道一个部门的平均薪水和某个员工的薪水高于平均值,他们可能会推断出该员工的确切薪水。
操控(Manipulation) 操控通常指的是对数据进行非法更改的行为。
聚合(Aggregation):在数据库中通常指的是对数据进行汇总或总结的操作,如计算总和、平均值、最大值等。
题目2:Bob正在开发一个应用软件,该软件有一个输入框,用户可在其中输入日期。他想确保用户提供的值是准确日期,以防出现安全问题。下面哪一项技术是Bob应采用的?
A. 多实例化
B. 输入验证
C. 污染
D. 筛选
正确答案是 B. 输入验证。
输入验证(Input Validation)是一种安全技术,用于确保用户输入的数据符合预期的格式和标准。
题目3:Richard认为,一个数据库用户滥用其特权进行查询,并结合大量记录中的数据来获取公司整体业务趋势的信息。该数据库用户利用的过程是什么?
A. 推理
B. 污染
C. 多实例化
D. 聚合
答案是 A. 推理。
A. 推理(Inference)是指数据库用户通过分析和组合他们可以访问的数据来推断出敏感信息的过程。在这种情况下,用户可能没有直接访问到公司整体业务趋势的详细信息,但是通过分析大量记录中的数据,他们可以推断出这些信息。
题目4:当一个较高分类级别的数据与一个较低分类的级别数据混合时,数据库存在以下哪类安全风险?
A. 聚合
B. 推理
C. 污染
D. 多实例化
答案是 B. 推理。
B. 推理(Inference)是指在数据库中,攻击者可能通过分析较低分类级别的数据来推断出较高分类级别的敏感信息。当高分类级别的数据与低分类级别的数据混合时,如果不当处理,可能会增加推理攻击的风险。
THE END
原文始发于微信公众号(透明魔方):大白话聊聊数据库安全技术——多实例化
评论