可插拔数据库锁定配置文件的制作方法

文档序号:14650018发布日期:2018-06-08 21:35阅读:183来源:国知局
可插拔数据库锁定配置文件的制作方法

本发明涉及数据库系统,并且更具体地涉及基于操作源自的可插拔数据库来限制操作。



背景技术:

数据库整合涉及在多个数据库之间分配和共享硬件平台的计算机资源。例如,已经开发了其中在单个“容器数据库”中可以包含多个不同的“可插拔数据库”的技术。例如,在于2014年3月10日提交的美国专利申请No.14/202,091中描述了这种技术,该申请的全部内容被结合于此。

容器数据库由容器DBMS(“容器DBMS”)管理。容器数据库内的每个可插拔数据库均由其自己的单独数据库字典定义,并与容器数据库内的其它可插拔数据库在某种程度上隔离。

不幸的是,尽管容器DBMS可能意识到它所管理的可插拔数据库之间存在分离,但是容器DBMS外部的实体并不共享这种意识。例如,在容器DBMS与操作系统和网络之间的交互中,容器DBMS看起来可能是单个单一实体。因此,操作系统无法确定与由容器DBMS做出的对OS资源的任何给定请求有关的特定可插拔数据库。类似地,网络软件无法确定与容器DBMS和其它系统之间的任何给定网络通信有关的特定可插拔数据库。

此外,当可插拔数据库的本地用户执行影响公共共享用户模式或影响整个容器数据库的操作时,可能会出现安全问题。最后,目前还没有能力在每个可插拔数据库的基础上设置数据库选项。相反,容器数据库的数据库选项管理其中包含的所有可插拔数据库。

本节中描述的方法是可以实行的方法,但不一定是先前已被构思或实行的方法。因此,除非另外指出,否则不应当假定在本节中描述的任何方法仅仅凭其包括在本节中就有资格作为现有技术。

附图说明

在附图中:

图1A是描绘根据实施例的容器DBMS的图。

图1B是更详细地描绘根据实施例的图1A的容器数据库的图。

图2是图示根据实施例的用于针对关于查询的PDB范围限制执行运行时检查的步骤的流程图;以及

图3是可以在其上实现本文描述的技术的计算机系统的框图。

具体实施方式

在以下描述中,出于解释的目的,阐述了许多具体细节,以便提供对本发明的透彻理解。但是,很显然,本发明可以在没有这些具体细节的情况下进行实践。在其它情况下,众所周知的结构和设备以框图的形式示出,以避免不必要地模糊本发明。

数据库系统概述

本发明的实施例用在DBMS的上下文中。因此,对DBMS的描述是有用的。

DBMS管理一个或多个数据库。DBMS可以包括一个或多个数据库服务器。数据库包括存储在持久性存储器机制(诸如一组硬盘)上的数据库数据和数据库字典。数据库数据可以存储在一个或多个数据容器中。每个容器包含记录。每条记录内的数据被组织到一个或多个字段中。在关系DBMS中,数据容器被称为表,记录被称为行,并且字段被称为列。在面向对象的数据库中,数据容器被称为对象类,记录被称为对象,并且字段被称为属性。其它数据库体系架构可能使用其它术语。

用户通过向数据库服务器提交命令来与DBMS的数据库服务器交互,这些命令使数据库服务器对存储在数据库中的数据执行操作。用户可以是运行在与数据库服务器交互的客户端计算机上的一个或多个应用。多个用户在本文也可以被统称为用户。

数据库命令可以采用符合数据库语言的数据库语句的形式。用于表达数据库命令的数据库语言是结构化查询语言(SQL)。存在许多不同的SQL版本,一些版本是标准版本和一些是专有版本,并且存在各种扩展。数据定义语言(“DDL”)命令被发到数据库服务器以创建或配置数据库对象,诸如表、视图或复杂数据类型。SQL/XML是在操纵对象关系数据库中的XML数据时使用的SQL的公共扩展。

多节点数据库管理系统由共享对相同的一个或多个数据库的访问的互连节点组成。典型地,节点经由网络互连并且以不同的程度共享对共享存储装置的访问,例如,对一组盘驱动器和其上存储的数据块的共享访问。节点之间的不同程度的共享访问可以包括不共享、全部共享、节点对数据库分区的独占访问、或者其一些组合。多节点数据库系统中的节点可以是经由网络互连的一组计算机(例如,工作站、个人计算机)的形式。替代地,节点可以是网格的节点,其中网格由节点组成,这些节点采用与机架上的其它刀片服务器互连的刀片服务器的形式。

多节点数据库系统中的每个节点都托管数据库服务器。服务器(诸如数据库服务器)是集成的软件组件和计算资源分配的组合,计算资源诸如存储器、节点和用于在处理器上执行集成的软件组件的过程,软件和专用于代表一个或多个客户端执行特定的功能的计算资源的组合。

来自多节点数据库系统中的多个节点的资源可以被分配以运行特定数据库服务器的软件。软件和来自节点的资源分配的每种组合是在本文中被称为“服务器实例”或“实例”的服务器。数据库服务器可以包括多个数据库实例,其中一些或全部在独立的计算机上运行,包括单独的服务器刀片。

可插拔数据库锁定配置文件概述

由于无法在操作系统或网络级别区分各个可插拔数据库,因此不能依赖操作系统和网络软件来实施针对每个可插拔数据库的限制。因此,本文描述的技术用于允许容器DBMS在每个可插拔数据库的基础上对导致与操作系统和/或网络交互的操作施加限制。

具体而言,下文描述了用于实现可插拔数据库锁定配置文件(“锁定配置文件”)的技术。根据一个实施例,锁定配置文件驻留在容器数据库ROOT(根)中,并且只能在ROOT中创建和更改。在一个实现中,锁定配置文件指定一组否定(negative)特权来在可插拔数据库的基础上限制操作。

例如,在一个实施例中,给定可插拔数据库的锁定配置文件可以针对以下指定限制:

·身份在可插拔数据库之间共享的操作

o当数据库与OS资源(比如文件或进程)交互时,在OS级别。

o当数据库与其它系统通信时,在网络级别。

·影响容器数据库中公共用户的模式的可插拔数据库本地用户的操作。

·与数据库选项相关的操作。

·可能影响其它可插拔数据库,从而影响整个容器数据库的SQL语句级别的操作。

由于这些限制在知道不同的可插拔数据库的容器DBMS内实施,因此即使操作系统和网络仍然不知道与OS请求相关联的可插拔数据库和由容器DBMS进行的网络通信,针对每个可插拔数据库的安全措施也是可能的。

容器数据库管理系统

图1A描绘了其上可以实现实施例的示例DBMS 100。参考图1A,容器DBMS 100包括数据库服务器102和容器数据库104。容器数据库104又包含多个可插拔数据库。数据库服务器102管理容器数据库104和包含在容器数据库104中的可插拔数据库。

数据库服务器102表示管理容器数据库104的一个或多个计算机系统上的软件和资源的组合。数据库服务器和其上可以运行数据库服务器的计算机系统的示例在上面的数据库系统概述部分中进行了描述,但是本发明的实施例不限于此。虽然图1A仅描绘了特定数量的每个元素,但是实施例可以具有更多的图1A中所示的每个元素。

图1B描绘了根据本发明的实施例的容器数据库104的更详细视图。容器数据库104包含由数据库服务器102托管和管理的多个数据库。数据库包括可插拔数据库PDB 120、可插拔数据库PDB 130、可插拔数据库PDB 140和根数据库110。根数据库110是由数据库服务器120用于全局管理容器数据库104并存储定义可插拔数据库和/或定义可由多个可插拔数据库的用户访问的“公共数据库对象”的元数据的数据库。

每个可插拔数据库包括其自己的数据库字典和数据库对象。在图1B所示的系统中,可插拔数据库PDB 120包括数据库字典121和数据库对象126,可插拔数据库PDB 130包括数据库字典131和数据库对象136,并且可插拔数据库PDB 140包括数据库字典141和数据库对象146。类似于可插拔数据库,根数据库110包括数据库字典111。数据库字典111包含容器数据库104的定义管理容器数据库104和其中包含的可插拔数据库所需的各个方面的元数据,包括定义可插拔数据库PDB 120、可插拔数据库PDB 130和可插拔数据库PDB 140的元数据。

根数据库110还包括锁定配置文件150和配置文件到可插拔数据库映射152。如上所述,锁定配置文件150中的每个配置文件指定一组否定特权来限制在可插拔数据库级别的操作。配置文件到可插拔数据库映射152一般地表示指示哪些配置文件与哪个可插拔数据库对应的元数据。例如,如果配置文件X仅映射到可插拔数据库Y,则配置文件X中指定的限制仅限制代表可插拔数据库Y的用户启动的操作。

虽然配置文件150和映射152被图示为与根数据库110的字典121分开维护,但是在备选实施例中,配置文件150和映射152中的一个或两者可以被维护在数据库字典121内。

特定于用户的特权授权

数据库系统通常支持特定于用户的特权授权。例如,与典型数据库用户相比,数据库管理员可能被给予执行明显更大范围的操作的授权。这些特权通常被肯定地授予。即,赋予用户的授权指示用户可以做什么,而不是用户不能做什么。

向可插拔数据库的用户授予特权可以包括:

·容器数据库的管理员用户在容器数据库中创建可插拔数据库并为可插拔数据库创建管理员用户。

·可插拔数据库的管理员用户为可插拔数据库创建另一个用户并授予该另一个用户特定的特权。

·授予该另一个用户的特定特权可以允许该另一个用户向可插拔数据库的还有其他用户授予特权。

重要的是,这些特权是肯定地授予的,并且授权是在每个用户的基础上进行的。在一些情况下,肯定特权可以被授予“公众”,这意味着每个人都具有所讨论的特权。

如以上所提到的,当在多个可插拔数据库之间共享硬件时,可能会出现安全问题。例如,虽然可插拔数据库(例如,PDB 120)的用户修改该用户所属的可插拔数据库中的数据库对象(例如,对象126)可能是可以的,但是可能不希望允许相同用户修改在可插拔数据库之间共享的“公共数据库对象”(例如,根数据库110中的对象)。另一方面,可能希望PDB 130的所有用户修改这些公共数据库对象。因此,本文描述的技术涉及提供用于结合特定于用户的特权授权来使用的锁定配置文件。正下文将要解释的,锁定配置文件有效地从用户取走用户已经被授予的一些特权,其中被取走的特权是基于用户所属的可插拔数据库的。

PDB范围的特权限制

如以上所提到的,锁定配置文件建立了PDB范围的特权限制。具体而言,为了限制PDB 120的用户执行特定类型的操作,在根数据库110中创建锁定配置文件,并且将条目插入到锁定配置文件中以指示受限制的特定类型的操作。然后更新配置文件到可插拔数据库映射152以将锁定配置文件与PDB 120相关联。从这一点开始,每当PDB 120的用户请求数据库服务器102执行用户已被授予特权的操作时,数据库服务器102确定该用户属于可插拔数据库120、(基于映射152)确定映射到可插拔数据库120的一个或多个配置文件、并且然后确定所请求的操作是否将违反这些配置文件中指定的任何限制。如果该操作将违反这些配置文件中的任何限制,则操作被防止,并且数据库服务器102可以返回适当的错误消息。另一方面,如果该操作不会违反任何限制,则数据库服务器102执行该操作。

可以使用PDL配置文件进行保护的特征类型

如以上所提到的,当使用共享身份的个体是不同的并且可能具有不同的目标或忠诚度时,共享身份会引发安全问题。在容器DBMS内,共享身份可以:

·当数据库与OS资源(比如文件或进程)进行交互时,在OS级别共享,

·当数据库与其它系统通信并且网络身份是重要的时,在网络级别共享,或者

·在PDB使用比如数据库链接的特征访问或创建公共对象或跨容器边界进行通信时,在数据库内部共享。

使用这些身份的特征可以被划分为:

·网络访问特征,即,使用网络在PDB之外进行通信的操作

·系统访问特征,即,访问主机操作系统的操作

·文件访问特征,即,访问文件或目录的操作

·公共用户或对象访问,即,其中PDB中的本地用户可以通过公共模式中的公共用户或访问对象进行代理的操作

·管理特征,即,用于管理某些数据库选项(比如XDB、高级队列、上下文)的操作。

·连接特征,例如,锁定配置文件可以用于(a)阻止与PDB的公共用户连接,(b)以受限模式阻止与PDB的本地SYSOPER连接等。

这些仅仅是锁定配置文件可以用于保护的特征类型的示例。一些实施例可以使用锁定配置文件来保护落在以上列出的类别之外的特征。因此,锁定配置文件不限于保护任何特定的一组特征或任何特定类型的特征。

以上列出的许多这些特征都是多个操作所属的类别。根据一个实施例,锁定配置文件可以以各种粒度级别指定限制。例如,锁定配置文件可以限制整个特征,或者可以指示与该特征相关联的哪些特定操作受到限制。

创建和丢弃锁定配置文件

为了使用锁定配置文件对特定可插拔数据库的用户执行的操作施加限制,必须首先创建锁定配置文件。根据一个实施例,创建锁定配置文件的数据库命令的语法是:

·CREATE LOCKDOWN PROFILE<profile_name>;

响应于接收到这样的命令,锁定配置文件<profile_name>将由容器DBMS创建。

使用这样的命令的示例是:

·SQL>create lockdown profile p1;

根据一个实施例,丢弃锁定配置文件的数据库命令的语法是:

·DROP LOCKDOWN PROFILE<profile_name>;

响应于接收到这样的命令,指定的配置文件<profile_name>将被容器DBMS丢弃,配置文件与任何PDB之间的映射将被删除,并且新丢弃的PDB锁定配置文件被分配给的任何PDB将不再受在丢弃的配置文件中指定的限制的限制。

使用这样的命令的示例是:

·SQL>drop lockdown profile p1;

在一个实施例中,这些命令仅由容器DBMS 100为(a)连接到容器数据库(根数据库110)和(b)已被授予用于执行这些命令的特权的用户执行。

向PDL配置文件添加限制

在创建锁定配置文件之后,会向配置文件添加限制,以在可插拔数据库范围的基础上禁止某些操作。根据一个实施例,使用以下命令更改锁定配置文件以包括否定特权(规则):

对于指定基于语句的规则:

·SQL>Alter lockdown profile<profile_name>disable statement=(′Statement name′)clause=(′clause name′)

·option=(′option name′);

如何使用这种语法的示例是:

·alter lockdown profile p1 disable statement=(′ALTER SYSTEM′)clause=(′SET′)

·option=(′CURSOR_SHARING′);

对于指定特征规则:

·SQL>alter lockdown profile<profile_name>disable feature=(′feature name′);

如何使用这种语法的示例是:

·SQL>alter lockdown profile p1 disable feature=(′NETWORK_ACCESS′);

对于指定选项规则:

·SQL>alter lockdown profile<profile_name>disableoption=(′option name′);

如何使用这种语法的示例是:

·SQL>alter lockdown profile p1 disable option=

(′Database Queuing′);

创建配置文件到PDB映射

一旦锁定配置文件被创建,锁定配置文件就可以被映射到一个或多个可插拔数据库,以指示在锁定配置文件中指定的限制要被应用到那些一个或多个可插拔数据库的用户。根据一个实施例,锁定配置文件由容器数据库的管理员用户映射到特定的可插拔数据库。具体而言,在一个实施例中,容器数据库的管理员用户通过(a)连接到可插拔数据库,以及(b)将参数pdb_lockdown设置为期望的配置文件的名称来将锁定配置文件分配给可插拔数据库。

在备选实施例中,可以在不首先连接到锁定配置文件将被分配给的可插拔数据库的情况下建立配置文件到PDB映射。例如,在这样的备选实施例中,连接到容器数据库104的管理员用户可以在不首先连接到PDB 120的情况下将锁定配置文件映射到PDB 120。

在一个实施例中,创建配置文件到PDB映射的命令的语法是:

·SQL>alter system set pdb_lockdown=′<profile_name>′;

响应于接收到这样的命令,将配置文件到PDB映射存储在容器数据库中。例如,响应于由连接到PDB 120的容器数据库管理员用户发出该命令,将指定的配置文件映射到PDB 120的条目将被添加到存储在根数据库110中的配置文件到PDB映射152。如何使用这种语法的示例是:

·SQL>alter system set pdb_lockdown=′p1′;

在设置配置文件之后,所有规则都会生效,并且配置文件中列出的操作将在指定的可插拔数据库中受到限制(锁定)。应该注意的是,与锁定配置文件有关的所有命令的语法可能因实现而异。因此,本文描述的技术不限于任何特定的命令语法。

系统提供的PDL配置文件

根据一个实施例,数据库服务器102的开发人员可以为常见的PDB情景提供锁定配置文件。这些系统提供的锁定配置文件可以用来代替一个或多个用户创建的锁定配置文件或结合一个或多个用户创建的锁定配置文件使用。在包括系统提供的锁定配置文件的实施例中,当数据库服务器102最初被安装时,系统提供的锁定配置文件可以被包括在配置文件150中。但是,配置文件到PDB映射152将不会最初把这些系统提供的锁定配置文件映射到任何PDB。

一旦PDB被创建,PDB和系统提供的锁定配置文件之间的映射就可以以与上面相对于用户创建的锁定配置文件描述的相同方式创建。根据一个实施例,操作、选项和特征可以以与用户创建的锁定配置文件相同的方式从系统提供的锁定配置文件添加或去除。但是,在一个实施例中,对于系统提供的锁定配置文件,只有客户添加的操作才可以被客户去除,即,由数据库开发人员在这些配置文件中施加的限制不能被解除。

强制执行锁定配置文件中指定的限制

根据一个实施例,数据库服务器102在数据库服务器102执行由与PDB相关联的用户发出的查询中指定的操作之前进行两次检查。具体而言,数据库服务器102进行编译时检查以确定提交查询的用户是否已被授予执行查询中指定的操作所需的特权。如果提交查询的用户不拥有执行查询中指定的操作所需的特权,则数据库服务器102生成错误。否则,数据库服务器102编译该查询。

在编译该查询之后并且在执行该查询之前,数据库服务器102执行运行时检查,以检查在查询中指定的操作是否将违反在适用的锁定配置文件中指定的限制。如果查询中指定的操作将违反在适用的锁定配置文件中指定的限制,则数据库服务器102生成错误。否则,数据库服务器102编译该查询。

根据一个实施例,运行时检查包括:

·确定查询中指定的操作是否是可能在锁定配置文件中被限制的操作类型

·如果是,则检查配置文件到PDB映射152以确定提交查询的用户的PDB是否被映射到任何锁定配置文件。

·如果是,则将识别用户的PDB映射到的锁定配置文件150中指定的限制的限制识别信息加载到易失性存储器中。

·数据库服务器然后基于限制识别信息来确定查询中指定的操作是否受到限制。

·如果查询中指定的操作受到限制,则生成错误消息。否则,数据库服务器102执行查询以执行操作。

高效地确定SQL命令类型是否受到限制

可以采用各种增强来加速基于限制识别信息来确定操作是否受到限制的过程。例如,假定锁定配置文件限制使用特定类型的SQL命令。大多数数据库系统都支持相对少量类型的SQL命令。因此,在锁定配置文件中指定的SQL命令限制可以由受限命令位图来表示,其中每个位位置与不同类型的SQL命令对应,并且每个位的值指示该位对应的SQL命令类型是否受到限制。

受限命令位图可以直接存储在锁定配置文件150内。但是,在一个实施例中,锁定配置文件150以人类可读的文本格式指定受限SQL命令。在这样的实施例中,将限制识别信息加载到易失性存储器中涉及读取受限SQL命令的文本指示并且基于文本指示生成受限命令位图。

在采用受限命令位图的实施例中,确定PDB用户请求的SQL命令是否受限的过程仅包括读取受限命令位图内与用户的查询中指定的SQL命令的类型对应的位置处的值。在PDB映射到多个锁定配置文件的情况下,各种配置文件的受限命令位图可以被“或”在一起以创建复合受限命令位图,其中限制确定是根据复合受限命令位图中相关位置处的位的值的。

高效地确定特征是否受到限制

锁定配置文件可以用于限制PDB的使用使用某些特征。可能受到限制的特征可能不与SQL语句的类型对应。例如,受到限制的特征可能是PL/SQL过程、某些视图、某些参数等。与受限SQL命令类型类似,这些受到限制的特征可以按照人类可读文本在锁定配置文件中表示。在这样的实施例中,数据库服务器102可以在查询运行时执行串比较以确定查询指定的特征是否与配置文件限制的特征匹配。但是,响应于每个查询来执行这种串比较是相对低效的。

在备选实施例中,不是在查询运行时执行这种串比较,而是将限制识别信息加载到易失性存储器中涉及在易失性存储器中构建散列表。具体而言,每个受限特征的文本表示可以被馈送到散列函数以生成散列值。这样产生的散列值然后被用作索引来定位散列表中的条目。由散列值指示的条目被更新以指示散列到这些条目的特征受到限制。

一旦散列表被构建和填充,散列表就可以用于通过以下方式快速确定传入查询是否引用受限制的特征:

·将散列函数应用于传入查询中指定的特征以生成散列值

·在散列表中定位与散列值对应的条目

·基于条目的内容确定传入查询中指定的特征是否受到限制

特征的默认设置

除了指定PDB的用户不能使用的特征之外或取而代之,锁定配置文件可以指定特征的默认值。例如,锁定配置文件可以指示某种类型的SQL命令必须始终包含特定的参数值。当这样的限制出现在锁定配置文件中时,数据库服务器102首先检查传入查询是否利用了已经指定默认设置的任何特征。如果这样的特征正在被使用,则数据库服务器102检查以查看查询是否指定了该特征的默认设置。如果不是,则拒绝该查询的执行并生成错误消息。

OS用户限制

在许多数据库系统中,数据库命令可能导致数据库服务器调用DBMS系统外部的脚本或例程。这种调用是通过操作系统进行的。但是,除了调用源自的操作系统用户的身份之外,操作系统几乎不知道调用的来源。因此,当由PDB 120的用户发出的命令导致数据库服务器102调用DBMS 100外部的脚本时,操作系统仅知道数据库服务器102用来调用脚本的OS用户ID(user-id)。

根据一个实施例,锁定配置文件可以用于在OS级别指示与由数据库服务器102做出的外部调用相关联的PDB。具体而言,与每个PDB 120、130和140相关联的锁定配置文件可以指定不同的OS用户ID。例如,与PDB 120、130和140相关联的锁定配置文件可以分别指定USER1、USER2和USER3。当数据库服务器102响应于由PDB 120的用户发出的命令而调用任何外部例程时,数据库服务器102作为OS USER1调用该例程。类似地,当数据库服务器102响应于由PDB 130的用户发出的命令而调用任何外部例程时,数据库服务器102作为OS USER2调用该例程。

由于管理员用户知道代表PDB 120的用户做出的外部调用将与OS USER1相关联,因此管理员用户可以在每个OS用户的基础上建立OS限制。由于每个OS用户与PDB对应,因此这些OS限制将在PDB范围的基础上施加。

路径限制

在许多数据库系统中,数据库命令可能导致数据库服务器在DBMS外部创建文件。根据一个实施例,锁定配置文件可以用于限制用户能够在哪里创建这样的文件。具体而言,在一个实施例中,与PDB相关联的锁定配置文件可以指定路径前缀,诸如/home/user/pdb1/。如果在任何PDB的锁定配置文件中指定了这样的前缀,则数据库服务器102防止由PDB的用户发出的命令在文件系统内除了目录/home/user/pdb1/以及从其下传的目录之外的任何地方创建文件。这样的限制可以通过使数据库服务器102将/home/user/pdb1/预先添加到在来自PDB的用户的命令中指定的每条路径,或者通过当这些命令包括不符合这样的限制的路径时引发错误来实施。

公共对象限制

锁定配置文件可以用于对“公共对象”施加限制。公共对象是在容器DBMS中的PDB之间共享的对象。存在两种类型的公共对象:元数据共享对象和数据共享对象。在元数据共享对象中,只有对象的元数据在PDB之间共享。用于填充元数据共享对象的实际数据是特定于PDB的。例如,元数据共享表T1的定义可以在PDB 120、130和140之间共享。但是,由PDB 120的用户插入到表T1中的数据仅对PDB 120的用户可见。类似地,由PDB 130的用户插入到表T1中的数据仅对PDB 130的用户可见。

数据共享对象是其中对象的元数据和数据两者都在PDB之间共享的对象。例如,数据共享表T2的定义可以在PDB 120、130和140之间共享。包含在表T2中的所有数据对所有PDB 120、130和140的用户都是可见的。

由于公共对象在PDB之间共享,因此对公共对象的访问涉及附加的安全问题。因此,根据一个实施例,在锁定配置文件中指定的限制可以被标记为特定于公共对象的。标记为特定于公共对象的限制仅由数据库服务器102针对涉及公共对象的操作实施。没有标记为特定于公共对象的限制被强制执行,而不考虑该操作是否涉及公共对象。

例如,假定锁定配置文件具有指定当针对公共对象发出命令Y时必须使用参数X的限制。在这些情况下,数据库服务器将允许针对特定于PDB的对象发出命令Y,而不管参数X是否被使用。但是,如果针对公共对象使用了命令Y,则如果参数X不存在,那么数据库服务器102将防止该命令的执行。

在一个实施例中,锁定配置文件可以在逐个限制的基础上指定每个限制施加到的对象的类型。例如,限制可以施加到所有对象、仅仅元数据共享对象、仅仅数据共享对象、仅仅公共对象等。锁定配置文件还可以指定所有操作都限制在某类对象、或者某些对象上。例如,锁定配置文件可以指定没有操作可以引用数据共享对象,或者没有操作可以引用特定的数据共享对象。

网络访问限制

响应于用户查询,数据库服务器102可以调用提供网络访问的例程(例如,PL/SQL包)。在PDB范围的基础上,可以通过向与给定PDB相关联的锁定配置文件添加网络访问限制来防止网络访问。网络访问限制可以限制对所有这些例程的访问、或者仅例程中的一些的访问。例如,网络访问限制可以防止调用用于TCP消息传送的例程,但不会防止调用用于HTTP消息传送的例程。因此,与PDB 120相关联的锁定配置文件可以防止所有网络访问,与PDB 130相关联的锁定配置文件可以防止使用HTTP的网络访问,并且与PDB 140相关联的锁定配置文件可能根本没有任何网络访问限制。

特定于用户的豁免

根据一个实施例,锁定配置文件可以识别从锁定配置文件中包含的一些或全部限制中豁免的特定用户。因此,如果容器数据库104的管理员用户确信PDB 120的用户X不是安全风险,则管理员用户可以在与PDB 120相关联的锁定配置文件中存储用户X从锁定配置文件中包含的一些或全部限制中豁免的指示。特定于用户的豁免的范围可以是全局性的(即,用户X可以做他/她的特权允许的任何事情)或特定于限制的(例如,用户X从禁止特征Y的限制中豁免)。

高速缓存限制

虽然有可能在每次对与映射到锁定配置文件的PDB相关联的用户执行查询时为锁定配置文件生成限制指示信息,但这样做可能是低效的。特别地,当限制指示信息包括基于锁定配置文件中的文本信息生成的结构(诸如散列表和/或位图)时,必须重新生成每个适用查询的结构所遭受的性能惩罚可能超过使用这样的结构所获得的性能益处。

根据一个实施例,为了减少创建这种访问结构的每个查询开销,用于锁定配置文件的限制指示信息在其为之生成的查询完成之后被保留在易失性存储器中。这种限制指示信息可以保持在易失性存储器中被高速缓存,直到或者(a)存储器需要用于某种其它目的,或者(b)对应的锁定配置文件被更新。

在高速缓存锁定配置文件的限制指示信息的实施例中,当对锁定配置文件进行任何改变时,高速缓存的锁定配置文件的限制指示信息变得陈旧。陈旧的限制指示信息不能被使用,因为限制的去除和/或添加应该被数据库服务器立即执行。因此,在一个实施例中,对锁定配置文件的任何改变会导致数据库服务器将该锁定配置文件的高速缓存的限制指示信息标记为无效。响应于与映射到锁定配置文件的PDB相关联的用户发出的查询,数据库服务器确定用于锁定配置文件的高速缓存的限制指示信息是否无效。如果不是,则使用高速缓存的限制指示信息来确定查询中指定的操作是否受到限制。如果高速缓存的限制指示信息无效,则基于更新后的锁定配置文件重建锁定配置文件的限制指示信息。

在备选实施例中,不是在限制变为陈旧时将它们标记为无效,而是对锁定配置文件的改变被立即传播至高速缓存的限制指示信息。通过响应于锁定配置文件改变来立即且动态更新高速缓存的限制指示信息,高速缓存的限制指示信息从不陈旧。

查询处理示例

参考图2,图2是根据一个实施例的指示执行运行时检查所涉及的步骤的流程图。如以上所提到的,在编译时检查已确认发出查询的用户具有执行查询所需的操作所需的特权之后,执行运行时检查。为了解释的目的,将假定所讨论的查询是从与PDB 120相关联的用户接收的。

在步骤200处,数据库服务器102确定查询中指定的操作是否是可能在锁定配置文件中被限制的操作类型。如果不是,则控制传递到步骤212。否则,控制传递到步骤202。

在步骤202处,数据库服务器102检查配置文件到PDB映射152以确定提交查询的用户的PDB是否被映射到任何锁定配置文件。如果否,则控制传递到步骤212。否则,控制传递到步骤204。

在步骤204处,数据库服务器102确定用户的PDB的限制指示信息是否已经驻留在高速缓存中。如果是,则控制传递到步骤206,否则,控制传递到步骤208。在步骤206处,数据库服务器102确定高速缓存的限制指示信息是否有效。如果是,则控制传递到步骤210。否则,控制传递到步骤208。

在步骤208处,数据库服务器102将识别在用户的PDB映射到的锁定配置文件150中指定的限制的限制识别信息加载到易失性存储器中。如以上所提到的,加载限制识别信息可能涉及生成一个或多个受限命令位图和/或生成一个或多个受限特征散列表。然后控制传递到步骤210。

在步骤210处,数据库服务器102基于限制识别信息来确定查询中指定的任何操作/特征是否被限制。如以上所提到的,这个步骤可能涉及考虑特定于用户的豁免、公共对象限制、所需的参数值、由操作创建的任何文件的路径等。如果查询中指定的操作/特征中没有一个被限制,则控制传递到步骤212,在那里执行查询。否则,控制传递到步骤214,在步骤214中生成错误消息而不执行查询。

硬件概述

根据一个实施例,本文所描述的技术由一个或多个专用计算设备实现。专用计算设备可以是硬连线的以执行所述技术,或者可以包括诸如被永久性地编程以执行所述技术的一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)的数字电子设备,或者可以包括编程为按照固件、存储器、其它存储装置或者其组合中的程序指令执行所述技术的一个或多个通用硬件处理器。这种专用计算设备还可以合并定制的硬连线逻辑、ASIC或FPGA与定制的编程来实现所述技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、联网设备或者结合硬连线和/或程序逻辑来实现所述技术的任何其它设备。

例如,图3是图示本发明的实施例可以在其上实现的计算机系统300的框图。计算机系统300包括总线302或者用于传送信息的其它通信机制,以及与总线302耦合用于处理信息的硬件处理器304。硬件处理器304可以是例如通用微处理器。

计算机系统300还包括耦合到总线302用于存储信息和要由处理器304执行的指令的主存储器306,诸如随机存取存储器(RAM)或其它动态存储设备。主存储器306还可以用于在要由处理器304执行的指令执行期间存储临时变量或其它中间信息。这种指令当被存储在处理器304可访问的非瞬态存储介质中时使计算机系统300变成为被定制以执行指令中所规定的操作的专用机器。

计算机系统300还包括只读存储器(ROM)308或者耦合到总线302的其它静态存储设备,用于为处理器304存储静态信息和指令。提供了存储设备310,诸如磁盘、光盘或固态驱动器,该存储设备310耦合到总线302以用于存储信息和指令。

计算机系统300可以经总线302耦合到诸如阴极射线管(CRT)的显示器312,用于向计算机用户显示信息。输入设备314(包括字母数字和其它键)耦合到总线302,以用于向处理器304传送信息和命令选择。另一种类型的用户输入设备是诸如鼠标、轨迹球或者游标方向键的游标控制316,用于向处理器304传送方向信息和命令选择并且用于控制显示器312上的游标运动。这种输入设备通常具有在两个轴(第一个轴(例如,x)和第二个轴(例如,y))中的两个自由度,以允许设备在平面内指定位置。

计算机系统300可以利用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实现本文所述的技术,这些与计算机系统相结合使计算机系统300或者把计算机系统300编程为专用机器。根据本发明的一种实施例,本文的技术由计算机系统300响应于处理器304执行包含在主存储器306中的一条或多条指令的一个或多个序列而执行。这种指令可以从另一存储介质(诸如存储设备310)读到主存储器306中。包含在主存储器306中的指令序列的执行使处理器304执行本文所述的过程步骤。在备选实施例中,硬连线的电路系统可以代替软件指令或者与其结合使用。

如在本文所使用的,术语“存储介质”是指存储使机器以特定方式操作的数据和/或指令的任何非瞬态介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘、磁盘或固体驱动器,诸如存储设备310。易失性介质包括动态存储器,诸如主存储器306。存储介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带、或者任何其它磁性数据存储介质、CD-ROM、任何其它光学数据存储介质、任何具有孔模式的物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其它存储器芯片或盒式磁带。

存储介质与传输介质截然不同但是可以与其结合使用。传输介质参与在存储介质之间传送信息。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线302的配线。传输介质还可以采取声波或光波的形式,诸如在无线电波和红外线数据通信中产生的那些。

各种形式的介质可以参与把一条或多条指令的一个或多个序列携带到处理器304供执行。例如,指令最初可以承载在远端计算机的磁盘或固态驱动器上。远端计算机可以把指令加载到其动态存储器中并且利用调制解调器经电话线发送指令。位于计算机系统300本地的调制解调器可以在电话线上接收数据,并且使用红外线发送器把数据转换成红外线信号。红外线检测器可以接收在红外线信号中携带的数据,并且适当的电路系统可以把数据放在总线302上。总线302把数据携带到主存储器306,处理器304从该主存储器306检索并执行指令。由主存储器306接收的指令可以可选地在被处理器304执行之前或之后存储在存储设备310上。

计算机系统300还包括耦合到总线302的通信接口318。通信接口318提供与连接到局域网322的网络链接320的双向数据通信耦合。例如,通信接口318可以是综合业务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器,或者提供与对应类型的电话线的数据通信连接的调制解调器。作为另一个示例,通信接口318可以是提供与兼容的局域网(LAN)的数据通信连接的LAN卡。也可以实现无线链路。在任何此类实现中,通信接口318都发送和接收携带表示各种类型信息的数字信号流的电信号、电磁信号或光信号。

网络链接320通常通过一个或多个网络提供与其它数据设备的数据通信。例如。网络链接320可以通过局域网322提供与主计算机324或者与由互联网服务提供商(ISP)326操作的数据设备的连接。ISP 326又通过现在通常称为“互联网”328的全球分组数据通信网络提供数据通信服务。局域网322和互联网328都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及在网络链接320上并通过通信接口318的信号是传输介质的示例形式,其中信号把数字数据带到计算机系统300或者携带来自计算机系统300的数字数据。

计算机系统300可以通过(一个或多个)网络、网络链接320和通信接口318发送消息和接收数据,包括程序代码在内。在互联网示例中,服务器330可以通过互联网328、ISP 326、局域网322和通信接口318发送对应于程序的所请求代码。

接收到的代码可以在其被接收到时由处理器304执行,和/或存储在存储设备310或其它非易失性存储装置中用于以后执行。

在前面的说明书中,本发明的实施例已经参考众多的具体细节进行了描述,这些细节可以从一种实现到另一种实现不同。因此,说明书和附图被认为是说明性的而不是限制性的。本发明的范围的唯一且排他指示,以及申请人所预期的作为本发明的范围的内容,是从本申请产生的权利要求集合的书面和等效范围,以这种权利要求产生的具体形式,包括任何后续的校正。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1