CN118051921A - 本地多租户行表加密 - Google Patents
本地多租户行表加密 Download PDFInfo
- Publication number
- CN118051921A CN118051921A CN202310736189.XA CN202310736189A CN118051921A CN 118051921 A CN118051921 A CN 118051921A CN 202310736189 A CN202310736189 A CN 202310736189A CN 118051921 A CN118051921 A CN 118051921A
- Authority
- CN
- China
- Prior art keywords
- encrypted
- data
- decryption key
- persistent storage
- stored
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000002085 persistent effect Effects 0.000 claims abstract description 71
- 238000000034 method Methods 0.000 claims abstract description 24
- 238000012545 processing Methods 0.000 claims description 20
- 238000007726 management method Methods 0.000 description 20
- 230000008569 process Effects 0.000 description 14
- 230000002688 persistence Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 6
- 230000004044 response Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010367 cloning Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2101—Auditing as a secondary aspect
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本公开公开了系统和方法,包括基于数据页的报头确定与存储在易失性存储器中的行存储数据库表的数据页相关联的第一加密密钥,使用第一加密密钥加密数据页的主体,以及将包括报头和加密的主体的加密的数据页存储在持久存储系统中。
Description
技术领域
本申请涉及数据库系统。
背景技术
多租户(multi-tenancy)是一种软件架构模式,它有助于在不同的用户组之间共享计算资源。例如,单个多租户应用(例如,软件即服务(Software-as-a-Service,SaaS)应用)可以在单个软件实例内服务多个终端用户组(即,客户)。这样的软件实例使用的计算资源占用量比为每个客户提供一个软件实例所需的少得多。因此,多租户可以提供可观的成本优势。
多租户架构中每个客户的数据通常映射到底层数据层中相应的租户。这种映射允许数据层内数据的逻辑分离,并便于多租户应用对其进行访问。在一些多租户架构中,每个租户的数据由在相同计算系统(例如,机架式服务器)内执行的不同数据库实例管理。这些架构提供了极好的租户数据分离,但在某些场景下,要求每个租户有完整的数据库实例可能成本效率低下。例如,一个最小的数据库实例可能会消耗32Gb的内存,这可能比小租户所需的计算资源多得多。
其他多租户数据架构使用单个数据库实例来管理多个租户的数据。由于这样的架构中的数据在物理上不是分离的,因此多租户应用负责以租户感知的方式存储和管理数据。例如,数据库系统可以对所有租户使用单个实例的一个模式,其中每个租户的数据通过区分列进行分区。多租户应用使用区分列的值来识别属于特定租户的数据。在另一个示例中,多租户应用将专用的模式与每个租户相关联。在任一种情况下,数据库系统都不知道多个租户的存在,并且以与单租户应用访问它相同的方式运行。
数据库系统的数据卷和日志段可以持久化在磁盘上。该数据包括存储在数据库系统中的所有客户(即租户)数据以及不是特定于任何客户的数据和元数据,在存储到磁盘上之前,通常使用与数据库系统相关联的密钥(即数据加密密钥)对其进行加密。数据加密密钥由数据库系统的提供商生成,并且其相应的解密密钥存储在数据库本地。
期望有利于在租户级上提供这样的数据库实例级加密特征的系统。
附图说明
图1是根据一些实施例的提供本地多租户行表加密的数据库系统的框图。
图2A示出了根据一些实施例的包括租户识别报头部分的未加密的数据页。
图2B示出了根据一些实施例的包括密钥识别报头部分的加密的数据页。
图3A示出了根据一些实施例的包括密钥识别报头部分的未加密的重做(redo)日志条目。
图3B示出了根据一些实施例的包括密钥识别报头部分的加密的重做日志条目。
图4是根据一些实施例的加密和存储重做日志条目的过程的流程图。
图5是根据一些实施例的加密和存储数据页的过程的流程图。
图6A至图6C描绘了根据一些实施例的在数据库重启期间解密数据页、重做日志条目和撤消页的过程的流程图。
图7是根据一些实施例的提供本地多租户和租户级加密的数据库系统的框图。
图8是根据一些实施例的基于云的系统的框图。
具体实施方式
提供以下描述以使本领域的任何人能够制造和使用所描述的实施例。然而,各种修改对于本领域技术人员来说是显而易见的。
一般来说,所有未被主动处理的数据库系统数据(即“静止”数据)都被加密保存在持久储存器中,其中每个数据库租户的数据都用其自己的租户特定的密钥加密。由所有租户共享的数据和元数据(例如,数据库目录、用户、共享容器)可以使用数据库实例专用密钥在持久储存器中加密。
这样的加密可以防止数据泄露,并在第三方入侵的情况下提供防御。密钥可以由客户提供和控制(例如,撤销(undo)),以防止数据库提供商访问客户数据。在多租户场景下,数据库系统可能包括两个或更多客户的数据,特定客户撤销密钥只会导致该特定客户的数据不可访问。如果机密的客户数据变得公开并且数据泄漏的来源不能被识别,这样的客户控制可以减少数据库提供商的潜在责任。
实施例便于在持久储存器加密的数据之前使用租户特定加密密钥加密租户特定的数据和日志,以及在将解密的数据加载到易失性存储器之前使用租户特定的解密密钥解密持久存储的加密的租户特定的数据和日志。根据一些实施例,行存储数据库表的每个数据页的报头包括与行存储数据库表相关联的租户的标识符。在将数据页存储在持久储存器中之前,标识符用于确定加密密钥,加密密钥用于加密数据页的主体(而不是报头)。由未加密的报头和加密的主体组成的数据页然后被存储在持久储存器中。
相反,为了将数据页从持久储存器加载到存储器中,例如,在数据库重启时,读取存储的数据页的报头以确定相应的解密密钥。解密密钥用于解密数据页的主体。现在由报头和未加密的主体组成的数据页然后可以被加载到存储器中。
根据一些实施例,本地多租户数据库系统包括数据库级租户对象(例如,数据库目录对象),其便于在应用层上实现多租户架构。租户对象是分配给租户的数据和元数据制品(artifact)的逻辑集合。租户可被展示为一级数据库对象(即,具有独立于任何其他数据库实体的标识)。
分配给租户对象(即,特定租户)的特定实例的数据库制品可以包括但不限于一个或多个模式、表和分区的数据,以及定义租户的表、虚拟表、高速缓存、远程源、用于管理租户的数据库对象的资源使用的工作负载类和数据库用户的视图的元数据。有利的是,租户的生命周期可以与其被分配的数据库制品的生命周期分离。然而,在一些实施例中,从数据库实例中删除租户导致删除分配给它的制品,只要那些制品没有被分配给数据库实例的另一租户。
本地多租户数据库系统可以包括一个或多个数据库实例、所有租户的数据以及用于处理数据的引擎。单一系统还包括所有租户数据的单一持久性。通过允许多个独立的租户(更确切地说是客户)被托管在单个实例上并共享计算资源,将新租户部署到数据库实例的边际成本几乎为零。后者的代价是不同租户之间较低的物理隔离。此外,实施例允许按使用付费模型具有比提供单独的数据库实例所需的粒度更细的粒度。
根据一些实施例的数据库系统支持对租户级数据库操作的请求,否则这些操作将需要由应用来实现。这些操作可能包括租户创建、租户删除、租户移动、从备份恢复租户、租户克隆、租户调整大小和租户资源限制。在一些实施例中,共享的服务展示API(例如,经由REST),多租户应用调用API来使用例如相关联的租户id从数据库系统请求这些租户级操作。当前的数据库系统DDL可以被扩展以支持将数据库制品分配给租户。
图1是根据一些实施例的系统100的框图。系统100和本文描述的所有其他架构的所示元素可以使用公知的或变得公知的计算硬件和/或处理器可执行程序代码的任何合适的组合来实现。这样的组合可以包括一个或多个可编程处理器(微处理器、中央处理单元、微处理器核心、执行线程)、一个或多个非暂时性电子存储介质以及处理器可执行程序代码。在一些实施例中,系统100的两个或更多个元件由单个计算设备实现,和/或系统100的两个或更多个元件共址。系统100的一个或多个元件可以被实现为使用基于云的资源的云服务(例如,软件即服务、平台即服务),和/或根据需求、需要、价格和/或任何其他度量来弹性分配计算资源的其他系统。
根据一些实施例,数据库实例110提供本地多租户。数据库实例110可以在硬件和软件的任何合适的组合上被提供,包括一个或多个计算机服务器或虚拟机。在一些实施例中,数据库实例110包括在软件容器内执行的容器化应用。如本领域公知的,这样的容器可以由集群(例如,Kubernetes集群)的一个或多个节点来实现。
数据库实例110包括数据引擎111,用于处理存储在易失性(例如,随机存取)存储器112中的数据。存储器112包括数据113,数据113包括分配给数据库实例110的所有租户的表、模式和元数据。数据引擎111可以包括用于处理存储在数据113中的行存储表的行存储引擎和用于处理存储在数据113中的列存储表的列的列存储引擎。如本领域中公知的,行存储表的每一行的数据存储在存储器112的连续存储位置中,列存储表的列的数据存储在存储器112的连续存储位置中。
系统100的每个租户将被描述为对应于客户,其中客户可以是公司、部门、工作组或任何其他用户组。租户可以对应于给定客户的特定云资源/服务订阅。在这点上,客户可能与不止一个订阅相关联,因此可能与不止一个租户相关联。
数据113包括元数据中定义的租户对象的多个实例。每个租户实例是数据库制品的集合,其中分配给每个租户实例的制品存储在数据113中。例如,分配给租户实例的数据库制品可以包括一个或多个模式、表和分区。数据库制品还可以包括元数据,该元数据定义了租户的表、虚拟表、高速缓存、远程源、用于管理租户的数据库对象的资源使用的工作负载类以及数据库用户的视图。
行存储表的数据作为链接的逻辑页的集合存储在数据113中。根据一些实施例,每页的大小为16kB。如本领域中公知的,每个页包括报头和主体。报头包括页元数据,例如逻辑页码和指向前一页和下一逻辑页的指针。主体包括与页相关联的行存储表的实际数据。
多租户应用130可以包括SaaS应用,但是实施例不限于此。多租户应用130可以在一个或多个计算机服务器或虚拟机上被提供,并且可以包括在软件容器内执行的容器化应用。多租户应用130基于分别从客户130和140的用户135和145接收的输入向数据库实例110发出查询(例如,SQL、MDX)。
假设客户A 140与数据库实例110的第一租户相对应,而客户B 140与数据库实例110的第二租户相对应。在接收到来自客户A 140的用户145的输入时,多租户应用120可以向数据库实例110发送指示与第一租户的关联的查询。类似地,在接收到来自客户B 150的用户145的输入时,多租户应用120可以将查询以及该查询与第二租户相关联的指示一起发送给数据库实例110。
因此,多租户应用120能够确定与从其接收输入的用户相对应的租户。例如,每个用户可以使用租户特定的订阅登录到多租户应用120。多租户应用120因此将用户与用户已经登录的订阅的租户相关联。在另一个示例中,用户和多租户应用120之间的通信可以包括租户识别令牌。
多租户应用120也知道哪些租户被放置在哪些数据库实例上。在这点上,多租户应用120可以请求提供数据库实例并在所提供的数据库实例上创建租户。一旦接收到来自与给定租户相关联的用户的输入,多租户应用120就能够确定包括给定租户的数据库实例,并且相应的查询因此应该被定向到该数据库实例。
当从多租户应用120接收到查询时,数据库实例110使用数据引擎111和已经被分配给与该查询相关联的特定租户的制品(例如,行存储表)来处理查询。每次从应用接收的查询包括存储器112中的数据的事务,该事务被记录为存储在数据113内的日志段的日志条目。数据页的前事务版本被存储为撤消数据页,并且被事务改变的数据页被标记为“脏(dirty)”。如本领域中公知的,周期地,通过将数据113的脏数据页和相应的撤消数据页写入持久储存器120来创建保存点。
持久储存器120保存所有分配的租户的加密的数据。持久储存器120可以使用任何公知的或变得公知的持久数据存储系统来实现,包括但不限于分布式数据存储系统。持久储存器120包括数据卷122和日志卷124。
根据一些实施例,与行存储表相关联的每页的报头包括可用于确定加密密钥对的标识符。如本文所使用的,加密密钥对可以包括加密密钥及其相关联的解密密钥或者用于加密和解密的单个非对称密钥。加密密钥对可以存储在本地存储160的加密密钥165中。在保存点,并且对于存储在存储器112中的每个脏的和撤消的数据页,页管理组件114获取数据页的报头中的标识符,基于该标识符确定加密密钥165的加密密钥对,并且使用密钥对的加密密钥来加密的数据页的主体。页管理组件114然后将包括未加密的报头和加密的主体的数据页存储在持久储存器120的数据卷122中。
在某些情况下,要存储的数据页不与任何特定租户相关联,并且其报头的标识符指示该数据页未被分配。为了加密这样的数据页,页管理组件114确定与数据库实例110相关联而不是与任何特定租户相关联的加密密钥165的加密密钥对,并且在存储在数据卷122内之前,使用该密钥对的加密密钥来加密未分配的数据页的主体。因此,数据卷122包括分配给特定租户的行存储表的加密的数据页和撤消数据页,以及没有分配给数据库实例110的任何特定租户的行存储表的加密的数据页和撤消数据页。
与给定租户相关联的加密密钥对可在创建给定租户时生成并存储在存储160中。类似地,与数据库实例110相关联的加密密钥对可以在创建数据库实例110时生成。
记录器(Logger)组件115为每个提交的事务向日志卷124写入日志条目。这样的日志条目被称为重做日志条目,并且与一个行存储表上的事务相关联。重做日志条目可以包括报头信息,诸如事务的开始时间和事务是被提交还是被中止的指示符,并且还包括由事务产生的更新的表数据。
每个日志条目还可以包括标识符,该标识符可以用于确定加密密钥165的加密密钥对。每次记录器115将日志条目保存在日志卷124中时,记录器115获取日志条目的标识符,基于该标识符确定加密密钥165的加密密钥对,并使用密钥对的加密密钥来加密日志条目的更新的表格数据。记录器115然后在日志卷124内存储包括未加密的报头信息和加密的更新的表格数据的日志条目。
在数据库实例110重启时,页管理组件114从数据卷122读取最后的保存点的行存储表数据页,并将数据页加载到存储器112中。由于每个数据页的主体以加密的格式存储在数据卷122中,因此在将数据页加载到存储器112之前,有必要解密每个数据页的主体。因此,对于保存点的每个存储的数据页,页管理组件114使用数据页报头中的标识符来识别密钥165的解密密钥,并使用该解密密钥来解密数据页的主体。然后,报头和解密的主体被加载到存储器112中。
接下来,识别在最后的保存点存储在数据卷122中并与未提交的事务相关联的撤消数据页。页管理组件114使用每个撤消数据页的报头中的标识符来识别相应的解密密钥,并使用该解密密钥来解密撤消数据页的主体。解密的撤消数据页然后被提供给数据库实例110的回滚机制,以将未提交的事务回滚到由数据113内的解密的撤消数据页表示的状态。
记录器115在日志卷124中搜索与自最后的保存点以来提交的事务相关联的日志条目。对于每个识别的日志条目,记录器115使用日志条目报头信息的标识符来识别密钥165的解密密钥,并使用该解密密钥来解密日志条目的数据。然后,报头信息和解密的数据被提供给日志重放机制,以基于解密的数据更新数据113。
数据库实例110由此提供包括数据库实例110的所有租户的数据和元数据的单个数据服务器、用于处理数据的引擎、以及数据和元数据的单个持久性。在这的单个数据库实例上托管多个独立租户有助于以接近零的边际成本共享计算资源。
图2A是根据一些实施例的未加密的数据页200的概念性图示。数据页200可以存储在存储器112中,并且可以包括行存储表数据的数据页。如本领域中公知的,数据页200与逻辑页号相关联。数据页200可以包括如上所述的撤消数据页。数据页200包括报头210和主体220,主体220存储实际的表格数据,报头210存储与主体220的数据相关联的元数据。
报头210包括密钥识别报头部分212。报头部分212可以存储适于确定加密密钥对的任何信息,该加密密钥对应该用于加密和解密主体220的数据。信息可以包括租户的标识符(其又通过数据库实例110的元数据与加密密钥对相关联)、密钥对本身的标识符或者与密钥对具有一对一关系的另一实体的标识符。在一些实施例中,报头部分212存储八个字节的值。
在数据113内创建行存储表时,可以用与数据库实例110相关联的数据库特定的密钥对的标识符来填充密钥识别报头212。如果行存储表随后被分配给租户,则标识符的值被更新为租户的标识符(例如,为租户创建的密钥对的标识符)。在一些实施例中,行存储表在其创建时被分配给租户,在这种情况下,报头部分212最初填充有租户的标识符(或相关联的密钥对)。
图2B是根据一些实施例的加密的数据页230的概念性图示。加密的数据页230是图2A的页200的加密版本,并且表示与页200相同的逻辑页号。例如,为了将数据页200存储在持久储存器中,使用由报头部分212内的标识符识别的加密密钥来加密主体220,从而产生主体240。类似地,在将存储的数据页230加载到存储器中之前,使用由页230的报头部分212内的标识符识别的解密密钥来解密主体240,从而产生主体220。有利的是,包括密钥标识符的报头210从不加密,并且总是可以被读取,以便确定与数据页200和230相关联的密钥对。
图3A示出了根据一些实施例的未加密的重做日志条目300。如本领域中公知的,重做日志条目300可以包括在数据库实例110的操作期间存储在存储器112中的日志段。在这点上,所有数据改变都被记录在存储器112的重做日志缓冲区中的日志段中。
每个重做日志条目包括报头310和重做日志数据320,重做日志数据320描述了由事务引起的对数据库表的数据改变。每个报头310包括存储标识符(例如,数据库表被分配到的租户的标识符)的密钥识别报头部分312。标识符可用于识别加密密钥对,以用于加密和解密重做日志数据320。
提交数据库事务时,其相应的重做日志条目会保存到持久储存器中。一旦重做日志缓冲区达到某一大小,重做日志缓冲区的日志段也可被持久化,而不管事务是否已被提交。重做日志条目在存储到持久储存器之前被加密。
图3B是根据一些实施例的包括密钥识别报头部分的加密的重做日志条目330的概念性图示。加密的日志条目330包括图3A的日志条目300的加密的版本。
为了将日志条目300存储在持久储存器中,每个重做日志数据部分320使用由其相应的报头部分312内的标识符识别的加密密钥来加密,从而产生加密的重做日志数据340。在数据库重启时,在将存储的加密日志条目传递给数据库实例110的重放机制之前,使用由相应报头312内的标识符识别的解密密钥来解密加密的重做日志数据340,从而产生解密的数据320。同样,由于每个日志条目的报头310从未被加密,所以部分312总是可以被读取,以便确定用于给定重做日志条目的加密和解密的密钥对。
图4是根据一些实施例的加密和存储租户特定的日志条目的过程的流程图。过程400和本文提到的所有其他过程可以体现在能够由一个或多个处理单元(例如,处理器、处理器核、处理器线程)执行的程序代码中,并且从一个或多个非暂时性计算机可读介质(例如,硬盘驱动器、易失性或非易失性随机存取存储器、DVD-ROM、闪存驱动器和磁带)中读取,然后以压缩、未编译和/或加密的格式存储。在一些实施例中,可以使用硬连线电路来代替或结合用于实现根据一些实施例的过程的程序代码。因此,实施例不限于硬件和软件的任何特定组合。
最初,在S410,接收要持久化的重做日志条目。日志条目可以由诸如记录器115的数据库实例的记录器接收。记录器115还可以执行过程400的剩余步骤,但是实施例不限于此。日志条目可以对应于如上所述的提交事务,或者可以由于日志缓冲区的刷新而与日志缓冲区的其他日志条目一起被接收。
在S420,基于日志条目的报头为日志条目确定加密密钥。如上所述,每个重做日志条目可包括存储可用于确定加密密钥对的标识符的报头。标识符可以识别数据库租户,或者可以指示与日志条目相关联的数据库表没有被分配给任何数据库租户。在前一种情况下,在S420确定与数据库租户相关联的加密密钥。在后一种情况下,在S420确定与数据库实例相关联而不与任何特定租户相关联的加密密钥。
在S430,使用确定的加密密钥加密日志条目的数据。该数据包括与重做日志条目相关联的已提交的事务的数据。报头没有加密,因此报头内的标识符可以从持久储存器中读取,并在以后用于解密数据。在这点上,在S440,日志条目被保存在持久储存器中。保存的日志条目包括在S410接收的报头和在S430加密的数据。
图5是根据一些实施例的加密和存储行存储表的数据页的过程的流程图。在S510接收要持久化的数据页。在创建保存点的过程期间,页管理组件114可以接收数据页。在这点上,所接收的数据页可以包括自最后的保存点以来被改变的数据页或撤消数据页。
在S520,基于数据页的报头,确定用于数据页的加密密钥被确定。S520的确定可以包括访问报头的部分以定位存储在其中的标识符,并基于标识符确定加密密钥对。例如,标识符可以识别分配给与数据页相关联的行存储表的数据库租户。或者,标识符可以指示行存储表没有被分配给任何数据库租户。因此,基于标识符,在S520确定与数据库租户或数据库实例相关联的加密密钥。
在S530,使用确定的加密密钥,由行存储表数据组成的数据页的主体被加密。数据页的报头没有被加密,因此报头内的标识符可以从持久储存器中读取,并在需要时用于解密主体。在S540,包括报头和加密的主体的数据页被保存在持久储存器中。
图6A至图6C描绘了根据一些实施例的在数据库重启期间解密数据页、重做日志条目和撤消页的过程的流程图。在S602检测到数据库重启,并且作为响应,在S604确定最后的保存点的持久化页。在一些实施例中,在S604,页管理组件114从数据卷122确定最后的保存点的行存储表数据页。由于每个数据页的主体以加密的格式存储在数据卷122中,因此在将数据页加载到存储器112之前,有必要解密每个数据页的主体。
因此,在S606,确定的数据页之一的解密密钥被确定。如上所述,在S606,页管理组件114可以使用数据页的报头中的标识符来识别密钥165的解密密钥。在S608,使用确定的解密密钥来解密数据页的主体,以解密数据页的主体。接下来,在S610,包括报头和解密的主体的数据页被加载到存储器112中。
如果其它确定的数据页仍待解密并加载到存储器中,则流程从S612返回到S606。因此,流程在S606至S612之间循环,直到所有确定的数据页都已被解密并加载到存储器中。实施例不限于如上所述串行解密和加载每个数据页。例如,一批数据页(例如,使用相同解密密钥,数据页要被解密)可以在第一步中被解密,然后在下一步中被加载到存储器中。在所有确定的数据页已经被解密并加载到存储器中之后,流程进行到S614。
在S614,记录器115可以搜索日志卷124,以确定与自最后的保存点以来提交的事务相关联的重做日志条目。对于确定的日志条目,记录器115使用存储在日志条目报头信息内的标识符来确定密钥165的解密密钥。在S618,确定的解密密钥用于解密日志条目的数据。接下来,报头和解密的数据被提供给数据库实例110的重做日志重放机制,以基于解密的重做日志条目数据更新数据113。
如果在S614确定的其他重做日志条目仍待解密并加载到存储器中,则流程从S622返回到S616。因此,流程在S616到S622之间循环,直到所有确定的重做日志条目都已被解密并提供给日志播放器。实施例不限于串行解密和提供每个确定的重做日志条目,而是,重做日志条目可以被批处理。
一旦所有确定的重做日志条目已经被解密并被提供给日志播放器,在S624确定在最后的保存点存储在数据卷122中并与未提交的事务相关联的撤消数据页。在S626,页管理组件114可以使用确定的撤消数据页的报头中的标识符来识别相应的解密密钥。然后在S628,使用解密密钥解密撤消数据页的主体。接下来,在S630,包括报头和解密的主体的解密的撤消数据页被提供给数据库实例110的回滚机制,以将数据113中反映的未提交的事务回滚到由解密的撤消数据页表示的状态。
如果其它确定的撤消数据页仍待处理,则流程返回S626。因此,流程在S626到S632之间循环,直到所有确定的撤消数据页都已被解密并提供给回滚机制。同样,可以在S626、S628和/或S630批处理多个确定的撤消数据页。
图7是根据一些实施例的提供本地多租户和租户级加密的数据库系统的框图。数据库实例750将数据752存储在易失性存储器751内,如上文关于数据113和存储器112所述。为了清楚起见,图7中省略了数据库实例750的数据引擎。
数据库实例750的每个租户实例对应于各自的一个客户710。客户A 711包括关键用户712和商业用户713,客户N 717包括关键用户718和商业用户719。在一些示例中,关键用户712可以访问多租户应用720来请求提供数据库实例。该请求被转发给服务管理器730和云服务中介(broker)740。云服务中介740然后将数据库实例750供应为基于云的资源。
然后可以在数据库实例中创建租户对象实例。继续上述示例,关键用户712可以访问多租户应用720以请求在数据库实例750上创建租户。该请求被转发给服务管理器730、服务中介760和租户管理服务770。租户管理服务770然后指示数据库实例750基于数据752的元数据中定义的租户对象来创建租户A的实例。租户A的实例可以由数据库实例750和多租户应用720公知的租户ID来识别。
一些实施例可以使用部署基础设施来定义要分配给租户实例的数据库制品。部署基础结构可以提供使用容器来定义数据库对象(例如,作为设计时制品)的声明性方法。例如,服务中介760可以创建对应于数据库模式和附加元数据(例如,用户、角色、特权)的容器,然后可以将该容器分配给租户实例。这样的容器可以通过模式级访问权限相互隔离。应用720可以通过使用分配的每模式技术数据库用户来访问容器的数据库模式中的任何数据库对象。
在供应数据库实例750并创建租户A和N之后,多租户应用720可以例如接收来自客户A711的商业用户713的输入。作为响应,应用720经由租户管理服务770将任何结果查询以及租户A的标识符一起导向数据库实例750。因此,数据库实例750基于分配给租户实例A的制品来响应查询。在多租户应用720从客户N 717的商业用户719接收输入的情况下,任何结果查询被导向数据库实例750,并基于分配给租户实例N的制品来响应。
持久性754可以使用任何合适的存储系统来实现。持久性754的数据量755存储分配给租户的所有数据库对象的数据756和没有分配给特定租户的数据库对象的数据756。日志卷757存储对应于与所有数据库对象相关的已提交的事务的重做日志758。如上所述,数据756和重做日志758被加密。具体而言,与现有系统相比,租户特定的数据756和重做日志758使用特定于其相应的租户(例如,DEK A和DEK N)的数据加密密钥(DEK)加密,不特定于任何租户的数据756和重做日志758使用特定于数据库实例750(例如,DEK DB)的DEK加密。
根据一些实施例,DEK DB是在创建数据库实例750期间生成的公钥-私钥对,租户特定的密钥DEK A和DEK N分别是在创建租户A和N期间生成的公钥-私钥对。密钥对的公钥用于在持久性754存储之前加密数据752和重做日志,并且私钥用于解密存储的数据756和日志758。
在一些实施例中,密钥对的私钥(即解密密钥)以加密的形式存储在安全存储(Secure Store,SS)780的持久性785中。例如,数据库实例提供商790的密钥用户795向密钥管理系统792提供密钥加密密钥(KEK)DB,以存储在密钥库794中。在将其存储在安全存储持久性785中之前,KEK DB用于加密DEK DB的私钥。KEK DB还可以包括私有-公共密钥对,其中密钥库794存储KEK DB的私有密钥,而相应的公共密钥用于在将DEK DB的私有密钥存储在安全存储持久性785中之前对其进行加密。
因此,当数据库实例750希望解密租户未分配的数据页或重做日志时,数据库实例750从安全存储780请求DEK DB的私钥。作为响应,安全存储器780请求密钥管理系统792使用KEK DB的私钥来解密所存储的KEK DB的加密私钥。数据库实例750然后使用KEK DB的解密的私钥来解密期望的解密租户未分配的数据页或重做日志。
类似地,客户A711的密钥用户712向密钥管理系统792提供KEK A,以存储在密钥库794中。在将DEK A的私钥存储在安全存储持久性785中之前,KEK A用于加密该DEK A的私钥。KEK A可以包括私钥-公钥对,其中密钥库794存储KEK A的私钥,而相应的公钥用于在将DEK A的私钥存储在安全存储持久性784中之前对其进行加密。
数据库实例750可以从安全存储780请求DEK A的私钥,以便解密与租户A相关联的数据756的数据页或日志758的重做日志。在一个示例中,这样的数据页或重做日志的报头包括识别租户A的标识符,并且数据库实例750知道租户A与DEK A相关联。响应于该请求,安全存储器780请求密钥管理系统792使用KEK A的私钥来解密所存储的DEK A的加密的私钥。该请求可以被发布到特定于客户A711的密钥管理系统792的账户。数据库实例750然后使用DEK A的解密的私钥来解密数据756或日志758的日志的期望的数据。因此,如果客户A从密钥库794中撤销KEK A,密钥管理系统792无法解密存储的私钥DEK A,因此,数据库实例750无法解密特定于租户A的数据或重做日志
图8是根据一些实施例的基于云的数据库部署800的框图。用户设备810可以包括可由关键用户或商业用户操作来访问基于云的多租户应用的任何合适的计算系统。用户设备810可以存储和执行网络浏览器的程序代码,以访问与这样的多租户应用的登录页相关联的统一资源定位符(URL)。如本领域公知的,网络浏览器可以下载并执行多租户应用的客户端组件的程序代码。
根据一些实施例,应用服务器节点820、822和824可以托管多租户应用。数据库节点830、832和834可以托管多租户应用可访问的一个或多个数据库实例,并且提供如本文所述的本地多租户。数据库节点830、832和834可以使用租户特定的加密密钥来加密数据页和重做日志,并且将加密的数据页和重做日志存储在持久储存器中,并且可以使用如此处所述的租户特定的解密密钥来解密如此存储的数据页和重做日志。
部署800的每个节点可以包括单独的物理机器或虚拟机。这样到虚拟机可以由提供自助服务和即时供应、自动扩展、安全性、合规性和标识管理功能的云提供商来分配。
前述图表示用于描述根据一些实施例的过程的逻辑架构,并且实际实现可以包括以其他方式布置的更多或不同的组件。其他拓扑可以与其他实施例结合使用。此外,本文描述的每个组件或设备可以由经由任何数量的其他公共和/或私有网络通信的任何数量的设备来实现。两个或更多这样的计算设备可以彼此远离,并且可以经由任何公知方式的网络和/或专用连接彼此通信。每个组件或设备可以包括适合于提供这里描述的功能以及任何其他功能的任意数量的硬件和/或软件元件。例如,任何计算设备都可以包括执行程序代码的可编程处理器,使得计算设备如本文所述进行操作。
本文讨论的所有系统和过程可以用存储在一个或多个非暂时性计算机可读介质上的程序代码来实现。这样的介质可以包括例如DVD-ROM、闪存驱动器、磁带和固态随机存取存储器(RAM)或只读存储器(ROM)存储单元。因此,实施例不限于硬件和软件的任何特定组合。
本文描述为相互通信的元件能够直接或间接地通过任何数量的不同系统进行通信以传输数据,包括但不限于共享存储器通信、局域网、广域网、电话网络、蜂窝网络、光纤网络、卫星网络、红外网络、射频网络以及可以用于在设备之间传输信息的任何其他类型的网络。此外,系统之间的通信可以通过任何一种或多种公知或即将公知的传输协议进行,诸如异步传输模式(ATM)、互联网协议(IP)、超文本传输协议(HTTP)和无线应用协议(WAP)。
本文描述的实施例仅仅是为了说明的目的。本领域的技术人员将认识到,可以对上述实施例进行修改和变更来实施其他实施例。
Claims (20)
1.一种数据库系统,包括:
持久存储系统;
易失性存储器,存储行存储数据库表的多个数据页;和
处理单元,用于执行数据库实例的程序代码,以使数据库系统:
基于所述多个数据页中的一个数据页的报头,确定与所述多个数据页中的所述一个数据页相关联的第一加密密钥;
使用第一加密密钥加密所述多个数据页中的所述一个数据页的主体;和
将包括报头和加密的主体的数据页存储在持久存储系统中。
2.根据权利要求1所述的系统,其中,易失性存储器存储包括重做日志条目报头和重做日志条目数据的重做日志条目,并且其中处理单元执行数据库实例的程序代码,以使数据库系统:
基于重做日志条目的报头,确定与重做日志条目相关联的第二加密密钥;
使用第二加密密钥加密重做日志条目数据;和
将包括重做日志条目报头和加密的重做日志条目数据的重做日志条目页存储在持久存储系统中。
3.根据权利要求2所述的系统,其中,易失性存储器存储多个撤消数据页,并且其中处理单元执行数据库实例的程序代码,以使数据库系统:
基于所述多个撤消数据页中的一个撤消数据页的撤消页报头,确定与所述多个撤消数据页中的所述一个撤消数据页相关联的第三加密密钥;
使用第三加密密钥加密所述多个撤消数据页中的所述一个撤消数据页的撤消页主体;和
将包括撤消页报头和加密的撤消页主体的撤消数据页存储在持久存储系统中。
4.根据权利要求3所述的系统,其中,处理单元执行数据库实例的程序代码,以使数据库系统:
确定存储在持久存储系统中的数据页与最后的保存点相关联;
基于存储在持久存储系统中的数据页的报头来确定解密密钥;
使用解密密钥解密存储在持久存储系统中的数据页的加密的主体;
基于存储在持久存储系统中的重做日志条目的重做日志条目报头来确定第二解密密钥;
使用第二解密密钥解密存储在持久存储系统中的重做日志条目的加密的重做日志条目数据;
确定存储在持久存储系统中的撤消数据页与未提交的事务相关联;
基于存储在持久存储系统中的撤消数据页的报头来确定第三解密密钥;和
使用第三解密密钥解密存储在持久存储系统中的撤消数据页的加密的主体。
5.根据权利要求4所述的系统,其中,解密密钥、第二解密密钥和第三解密密钥彼此不同,并且其中,处理单元执行数据库实例的程序代码,以使数据库系统:
向密钥管理系统请求解密密钥、第二解密密钥和第三解密密钥的解密。
6.根据权利要求2所述的系统,其中,处理单元执行数据库实例的程序代码,以使数据库系统:
确定存储在持久存储系统中的数据页与最后的保存点相关联;
基于存储在持久存储系统中的数据页的报头来确定解密密钥;
使用解密密钥解密存储在持久存储系统中的数据页的加密的主体;
基于存储在持久存储系统中的重做日志条目的重做日志条目报头来确定第二解密密钥;和
使用第二解密密钥解密存储在持久存储系统中的重做日志条目的加密的重做日志条目数据。
7.根据权利要求6所述的系统,其中,解密密钥和第二解密密钥彼此不同,并且其中,处理单元执行数据库实例的程序代码,以使数据库系统:
向密钥管理系统请求解密密钥和第二解密密钥的解密。
8.一种方法,包括:
基于存储在易失性存储器中的行存储数据库表的数据页的报头,确定与数据页相关联的第一加密密钥;
使用第一加密密钥加密数据页的主体;和
将包括报头和加密的主体的加密的数据页存储在持久存储系统中。
9.根据权利要求8所述的方法,还包括:
基于存储在易失性存储器中的重做日志条目的报头,确定与重做日志条目相关联的第二加密密钥;
使用第二加密密钥加密重做日志条目数据;和
将包括重做日志条目报头和加密的重做日志条目数据的加密的重做日志条目页存储在持久存储系统中。
10.根据权利要求9所述的方法,还包括:
基于存储在易失性存储器中的撤消数据页的撤消页报头,确定与撤消数据页相关联的第三加密密钥;
使用第三加密密钥加密撤消数据页的撤消页主体;和
将包括撤消页报头和加密的撤消页主体的加密的撤消数据页存储在持久存储系统中。
11.根据权利要求10所述的方法,还包括:
确定存储在持久存储系统中的加密的数据页与最后的保存点相关联;
基于存储在持久存储系统中的加密的数据页的报头来确定解密密钥;
使用解密密钥解密存储在持久存储系统中的加密的数据页的加密的主体;
基于存储在持久存储系统中的加密的重做日志条目的重做日志条目报头来确定第二解密密钥;
使用第二解密密钥解密存储在持久存储系统中的加密的重做日志条目的加密的重做日志条目数据;
确定存储在持久存储系统中的加密的撤消数据页与未提交的事务相关联;
基于存储在持久存储系统中的加密的撤消数据页的报头来确定第三解密密钥;和
使用第三解密密钥解密存储在持久存储系统中的加密的撤消数据页的加密的主体。
12.根据权利要求11所述的方法,其中,解密密钥、第二解密密钥和第三解密密钥彼此不同,并且所述方法还包括:
向密钥管理系统请求解密密钥、第二解密密钥和第三解密密钥的解密。
13.根据权利要求9所述的方法,还包括:
确定存储在持久存储系统中的加密的数据页与最后的保存点相关联;
基于存储在持久存储系统中的加密的数据页的报头来确定解密密钥;
使用解密密钥解密存储在持久存储系统中的加密的数据页的加密的主体;
基于存储在持久存储系统中的加密的重做日志条目的重做日志条目报头来确定第二解密密钥;和
使用第二解密密钥解密存储在持久存储系统中的加密的重做日志条目的加密的重做日志条目数据。
14.根据权利要求13所述的方法,其中,解密密钥和第二解密密钥彼此不同,并且所述方法还包括:
向密钥管理系统请求解密密钥和第二解密密钥的解密。
15.一种存储程序代码的非暂时性计算机可读介质,所述程序代码能够由一个或多个处理单元执行以使计算系统:
基于存储在易失性存储器中的行存储数据库表的数据页的报头,确定与数据页相关联的第一加密密钥;
使用第一加密密钥加密数据页的主体;和
将包括报头和加密的主体的加密的数据页存储在持久存储系统中。
16.根据权利要求15所述的介质,所述程序代码能够由一个或多个处理单元执行以使计算系统:
基于存储在易失性存储器中的重做日志条目的报头,确定与重做日志条目相关联的第二加密密钥;
使用第二加密密钥加密重做日志条目数据;和
将包括重做日志条目报头和加密的重做日志条目数据的加密的重做日志条目页存储在持久存储系统中。
17.根据权利要求16所述的介质,所述程序代码能够由一个或多个处理单元执行以使计算系统:
基于存储在易失性存储器中的撤消数据页的撤消页报头,确定与撤消数据页相关联的第三加密密钥;
使用第三加密密钥加密撤消数据页的撤消页主体;和
将包括撤销页报头和加密的撤销页主体的加密的撤销数据页存储在持久存储系统中。
18.根据权利要求17所述的介质,所述程序代码能够由一个或多个处理单元执行以使计算系统:
确定存储在持久存储系统中的加密的数据页与最后的保存点相关联;
基于存储在持久存储系统中的加密的数据页的报头来确定解密密钥;
使用解密密钥解密存储在持久存储系统中的加密的数据页的加密的主体;
基于存储在持久存储系统中的加密的重做日志条目的重做日志条目报头来确定第二解密密钥;
使用第二解密密钥解密存储在持久存储系统中的加密的重做日志条目的加密的重做日志条目数据;
确定存储在持久存储系统中的加密的撤消数据页与未提交的事务相关联;
基于存储在持久存储系统中的加密的撤消数据页的报头来确定第三解密密钥;和
使用第三解密密钥解密存储在持久存储系统中的加密的撤消数据页的加密的主体。
19.根据权利要求18所述的介质,其中,解密密钥、第二解密密钥和第三解密密钥彼此不同,所述程序代码能够由一个或多个处理单元执行以使计算系统:
向密钥管理系统请求解密密钥、第二解密密钥和第三解密密钥的解密。
20.根据权利要求16所述的介质,所述程序代码能够由一个或多个处理单元执行以使计算系统:
确定存储在持久存储系统中的加密的数据页与最后的保存点相关联;
基于存储在持久存储系统中的加密的数据页的报头来确定解密密钥;
使用解密密钥解密存储在持久存储系统中的加密的数据页的加密的主体;
基于存储在持久存储系统中的加密的重做日志条目的重做日志条目报头来确定第二解密密钥;和
使用第二解密密钥解密存储在持久存储系统中的加密的重做日志条目的加密的重做日志条目数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/988,975 | 2022-11-17 | ||
US17/988,975 US20240169072A1 (en) | 2022-11-17 | 2022-11-17 | Native multi-tenant row table encryption |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118051921A true CN118051921A (zh) | 2024-05-17 |
Family
ID=86942715
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310736189.XA Pending CN118051921A (zh) | 2022-11-17 | 2023-06-20 | 本地多租户行表加密 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20240169072A1 (zh) |
EP (1) | EP4372578A1 (zh) |
JP (1) | JP2024073354A (zh) |
CN (1) | CN118051921A (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090214044A1 (en) * | 2008-02-21 | 2009-08-27 | Hitachi, Ltd. | Data archiving technique for encrypted data |
US10372935B1 (en) * | 2015-11-13 | 2019-08-06 | Google Llc | Selectively encrypting commit log entries |
CN105787057B (zh) * | 2016-02-29 | 2019-02-15 | 浪潮通用软件有限公司 | 一种异构系统间业务数据自动同步的实现方法 |
-
2022
- 2022-11-17 US US17/988,975 patent/US20240169072A1/en active Pending
-
2023
- 2023-06-20 CN CN202310736189.XA patent/CN118051921A/zh active Pending
- 2023-06-22 JP JP2023102652A patent/JP2024073354A/ja active Pending
- 2023-06-22 EP EP23180795.9A patent/EP4372578A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4372578A1 (en) | 2024-05-22 |
US20240169072A1 (en) | 2024-05-23 |
JP2024073354A (ja) | 2024-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6033805B2 (ja) | 分散リソース管理のためのバランスしたコンシステント・ハッシュ | |
US9720989B2 (en) | Dynamic partitioning techniques for data streams | |
US10776322B2 (en) | Transformation processing for objects between storage systems | |
US20150134626A1 (en) | Partition-based data stream processing framework | |
EP2988220B1 (en) | Computer system, computer-system management method, and program | |
US10057273B1 (en) | System and method for ensuring per tenant mutual exclusion of data and administrative entities with low latency and high scale | |
US10860604B1 (en) | Scalable tracking for database udpates according to a secondary index | |
EP3707614B1 (en) | Redistributing table data in database cluster | |
US11418331B1 (en) | Importing cryptographic keys into key vaults | |
CN110457307B (zh) | 元数据管理系统、用户集群创建方法、装置、设备和介质 | |
US10685019B2 (en) | Secure query interface | |
US11683161B2 (en) | Managing encryption keys under group-level encryption | |
US11880495B2 (en) | Processing log entries under group-level encryption | |
US11991272B2 (en) | Handling pre-existing containers under group-level encryption | |
CN118051921A (zh) | 本地多租户行表加密 | |
US20230409731A1 (en) | Native multi-tenant encryption for database system | |
EP4386573A1 (en) | Handling of database encryption key revocation | |
US20240281344A1 (en) | Tenant-level database recovery | |
EP4418123A1 (en) | Tenant-level database recovery | |
US20240146526A1 (en) | Management of tenant-specific encryption keys | |
US20190155790A1 (en) | Event-based synchronization in a file sharing environment | |
US20240356762A1 (en) | Database tenant-level move | |
US20230409730A1 (en) | Native multi-tenancy for database system | |
US20240362354A1 (en) | Native database tenant lifecycle management | |
CN117251872A (zh) | 用于数据库系统的本地多租户 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |