CN113508383A - 数据库对象上以容器为中心的访问控制 - Google Patents

数据库对象上以容器为中心的访问控制 Download PDF

Info

Publication number
CN113508383A
CN113508383A CN202080007708.3A CN202080007708A CN113508383A CN 113508383 A CN113508383 A CN 113508383A CN 202080007708 A CN202080007708 A CN 202080007708A CN 113508383 A CN113508383 A CN 113508383A
Authority
CN
China
Prior art keywords
database
privileges
user account
request
database object
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.)
Granted
Application number
CN202080007708.3A
Other languages
English (en)
Other versions
CN113508383B (zh
Inventor
阿尔廷·阿瓦尼斯
哈立德·扎曼·比琼
彼得·波维内克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Snowflake Inc
Original Assignee
Snowflake Computing Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Snowflake Computing Inc filed Critical Snowflake Computing Inc
Publication of CN113508383A publication Critical patent/CN113508383A/zh
Application granted granted Critical
Publication of CN113508383B publication Critical patent/CN113508383B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Bioethics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

使用以容器为中心的受管访问,管理员可以为未来将在由管理员管理的容器中创建的每个对象定义未来授权集合。当用户创建数据库对象时,系统会检查未来的授权,以确定是否有任何授权适用于用户、数据库对象或其组合。在允许用户修改数据库对象之前,任何适用的未来授权都将应用于该数据库对象。因此,管理员甚至可以在创建数据库对象之前控制与数据库对象相关联的特权,同时限制单个对象所有者管理其拥有的对象的特权。

Description

数据库对象上以容器为中心的访问控制
优先权要求
本申请要求2020年1月17日提交的美国申请序列号16/745,922的优先权,其全部内容通过引用结合于此。
技术领域
本公开总体上涉及管理数据库的专用机器,以及与用于管理数据库中对象的访问控制的其他专用机器相比,这种专用机器得到改进的技术。
背景
数据可以上传到数据库,对数据库数据的访问可以由数据库管理员管理。最近,由于可以轻松创建新的数据库实例来存储数据,云数据库服务越来越受欢迎。虽然新的云数据库服务允许轻松创建数据库,但云数据库服务在数据隐私方面带来了新的问题。例如,随着数据量的增加,很难以既安全又可扩展的方式为特定个人创建对给定数据库中特定数据的访问权。
附图简述
各种附图仅示出了本公开的示例性实施例,不应被视为限制其范围。
图1示出了根据一些示例实施例的示例计算环境,其中基于网络的数据仓库系统可以对数据库对象实施以容器为中心的受管访问控制。
图2示出了根据一些示例实施例的用于在数据库对象上实现以容器为中心的受管访问控制的示例数据库架构。
图3是示出根据一些示例实施例的使用对数据库对象的以容器为中心的受管访问控制的数据库中的角色和模式(schema)对象之间的交互的框图。
图4是根据一些示例实施例的用于在数据库对象上实现以容器为中心的受管访问控制的方法的流程图。
图5是根据一些示例实施例的用于在数据库对象上实现以容器为中心的受管访问控制的方法的流程图。
图6是根据一些示例实施例的用于在数据库对象上实现以容器为中心的受管访问控制的方法的流程图。
图7是根据一些示例实施例的用于在数据库对象上实现以容器为中心的受管访问控制的方法的流程图。
图8示出根据本公开一些实施例的以计算机系统形式的机器的示意图表示,用于使机器执行本文所讨论方法中的任何一个或更多个的指令集合可以在该计算机系统内执行。
详细描述
以下描述包括体现本公开的说明性实施例的系统、方法、技术、指令序列和计算机程序产品。在以下描述中,出于解释的目的,阐述了许多具体细节,以便提供对本发明主题的各种实施例的理解。然而,对于本领域技术人员来说,很明显,本发明主题的实施例可以在没有这些具体细节的情况下实施。通常,众所周知的指令实例、协议、结构和技术不一定详细示出。
授权继承允许容器级别的授权规范应用于未来创建的数据库对象。如这里所使用的,容器保存数据库对象。示例容器包括数据库和模式。这减少了在容器中创建每个对象后执行一组授权语句所产生的操作开销。对于同类对象(即,容器中的具有相同授权集合的对象),对同类对象的访问策略审查可以非常有效,因为对同类对象的未来授权的审查可以代替对每个同类对象的授权的审查来执行。
使用以容器为中心的受管访问,管理员可以定义特权(privileges)集合,该特权集合将应用于未来创建的数据库对象。每一个这样的特权都可以被称为“未来授权(futuregrant)”。当用户创建数据库对象时,系统会检查未来的授权,以确定是否有任何授权适用于用户、数据库对象或其组合。在允许用户修改数据库对象之前,任何适用的未来授权都将应用于该数据库对象。因此,管理员甚至可以在创建数据库对象之前控制与数据库对象相关联的特权。如此处所使用的,术语“数据库对象”是指数据库中用于存储或引用数据的任何对象。示例数据库对象包括表、视图、函数、集群、序列和索引。
在没有以容器为中心的受管访问的情况下,创建数据库对象的用户是数据库对象的所有者,并且在创建时对数据库对象拥有完全控制权。因此,用户可以修改数据库对象、将数据库对象的所有权转移给另一个用户、拒绝其他用户对数据库对象的访问、删除数据库对象或其任何合适的组合。因此,管理员可以控制哪些用户能够创建数据库对象,但不能控制用户一旦创建数据库对象就能对其做什么。例如,这可能导致具有创建特权的用户创建数据库对象,并将创建的对象转移到没有创建特权的账户,至少部分绕过预期的控制。使用以容器为中心的受管访问,甚至提供了对尚未创建的数据库对象的控制。
在传统数据库中,对数据库对象的访问由自主访问控制(DAC)来介导,在这种控制中,单个对象所有者决定谁可以访问该对象。相比之下,在以容器为中心的受管访问控制(CcMAC)中,容器的所有者(例如,数据库或模式的管理员)决定谁可以访问容器中的哪些对象。因此,通过CcMAC,组织可以为多租户云数据仓库实现访问控制机制,其中可以为每个租户创建容器(例如,数据库或模式),使得容器的所有者角色将充当租户的安全管理员,并负责确定哪些用户可以对哪些对象执行哪些操作。在CcMAC中,单个对象所有者只负责对象的操作方面(例如,填充数据、创建视图或其任何合适的组合)。
图1示出了根据一些示例实施例的示例计算环境100,其中基于网络的数据仓库系统110可以对数据库对象实施以容器为中心的受管访问控制。为了避免用不必要的细节模糊本发明主题,图中省略了与传达对本发明主题的理解不密切相关的各种功能组件。然而,本领域技术人员将容易认识到,各种附加功能组件可以被包括作为计算环境100的一部分,以促进本文没有具体描述的附加功能。
如图所示,计算环境100包括基于网络的数据仓库系统110和计算设备160A、160B和160C,它们都通过网络170连接。数据仓库系统110包括中央服务器130和数据库120A、120B和120C。数据仓库系统110是基于网络的系统,用于以集成方式存储和访问数据(例如,内部存储数据、访问外部远程数据),并报告和分析集成数据。数据仓库系统110可以在包括多个计算机器的云计算平台上实现,这些计算机器向基于网络的数据仓库系统110提供按需计算机系统资源,例如数据存储和计算能力。
计算设备160A-160C各自包括一个或更多个执行远程软件组件150A或150B的计算机器,以向基于网络的数据仓库系统110的用户140A、140B和140C提供功能。为了方便起见,计算设备160A-160C可以笼统地称为设备160,或者统称为设备160。类似地,远程软件组件150A-150B可以具体称为web客户端150A和应用(app)客户端150B;总体上作为远程软件组件150;或者统称为远程软件组件150。web客户端150A在web浏览器中操作。应用客户端150B是独立的应用。
每个远程软件组件150包括一组机器可读指令(例如,代码),当由计算设备160执行时,使得计算设备160提供某些功能。远程软件组件150可以对输入数据进行操作,并基于处理、分析或以其他方式转换输入数据来生成结果数据。作为示例,远程软件组件150可以是由管理员用来定义未来授权的应用、由用户用来创建服从未来授权的数据库对象的应用、或者它们的任何合适的组合。
中央服务器130使管理用户能够管理对基于网络的数据仓库系统110提供的资源和服务的访问。管理用户可以创建和管理用户、角色和组;使用特权允许或拒绝访问资源和服务;并定义适用于以后创建的数据库对象的未来授权。中央服务器130可以存储共享数据,该共享数据安全地管理不同用户之间对基于网络的数据仓库系统110的存储资源的共享访问。
中央服务器130还耦合到数据库120A-120C,数据库120A-120C与基于网络的数据仓库系统110存储的全部数据相关联。数据库120A-120C存储数据,该数据涉及与基于网络的数据仓库系统110及其用户相关联的各种功能和方面。例如,每个数据库120A-120C可以存储基于网络的数据仓库系统110的不同租户的数据,包括用于未来授权的数据。租户是共享数据访问权限的一组用户,因此没有明确授权,任何租户都不能访问另一个租户的数据。
在一些示例实施例中,数据库120A-120C中的每一个都存储在云计算平台中。例如,每个数据库120A-120C可以存储在公共云基础设施或私有云基础设施中的数据存储设备上。数据存储设备可以包括硬盘驱动(HDD)、固态驱动(SSD)、存储集群、亚马孙(Amazon)S3存储系统或任何其它数据存储技术。另外,数据存储设备可以包括分布式文件系统(例如Hadoop分布式文件系统(HDFS))、对象储存系统等等。
虽然被示为使用单个中央服务器130,但是基于网络的数据仓库系统110可以包括多个计算节点(例如,虚拟仓库)。计算节点上的一组进程执行查询计划来执行数据库查询。这里使用的术语“数据库查询”指的是所有的数据库命令,而不仅仅是那些试图检索数据的命令。因此,管理员创建未来授权的命令和用户创建数据库对象的命令都是“数据库查询”。
在一些示例实施例中,基于网络的数据仓库系统110的元件之间的通信链路通过一个或更多个数据通信网络来实现。这些数据通信网络可以利用任何通信协议和任何类型的通信介质。在一些示例实施例中,数据通信网络是彼此耦合的两个或更多个数据通信网络(或子网络)的组合。这些通信链路可以使用任何类型的通信介质和任何通信协议来实现。
在各种示例实施例中,网络170的一个或更多个部分可以是自组织网络(ad hocnetwork)、内联网、外联网、虚拟专用网络(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、无线WAN(WWAN)、城域网(MAN)、互联网、互联网的一部分、公共交换电话网络(PSTN)的一部分、普通老式电话服务(POTS)网络、蜂窝电话网络、无线网络、
Figure BDA0003141665200000051
网络、另一种类型的网络、或两种或更多种这样的网络的组合。例如,网络170或网络170的一部分可以包括无线或蜂窝网络,并且网络170、设备160和中央服务器130之间的耦合可以是码分多址(CDMA)连接、全球移动通信系统(GSM)连接或另一种类型的蜂窝或无线耦合。在该示例中,耦合可以实现多种类型的数据传输技术中的任何一种,如单载波无线电传输技术(1xRTT)、演进数据优化(EVDO)技术、通用分组无线电服务(GPRS)技术、增强型数据速率GSM演进(EDGE)技术、包括3G、第四代无线(4G)网络、通用移动电信系统(UMTS)、高速分组接入(HSPA)、微波接入全球互操作性(WiMAX)、长期演进(LTE)标准的第三代合作伙伴计划(3GPP)、由各种标准设置组织定义的其他技术、其他长程协议、或其他数据传输技术。
在一些示例实施例中,存储数据库120A-120C的数据存储设备从与基于网络的数据仓库系统110相关联的计算资源解耦。因此,可以在基于网络的数据仓库系统110中创建和终止新的虚拟仓库,并且可以以独立的方式在基于网络的数据仓库系统110中创建和终止附加的数据存储设备。该架构支持基于变化的数据存储和检索需求以及访问基于网络的数据仓库系统110的用户和系统的变化需求,对基于网络的数据仓库系统110的动态变化。动态变化的支持允许基于网络的数据仓库系统110响应于变化的需求而快速扩展。计算资源与数据存储设备的分离支持大量数据的存储,而无需相应的大量计算资源。类似地,资源的这种分离支持在特定时间使用的计算资源的显著增加,而无需相应增加可用数据存储资源。此外,资源的解耦使不同的账户能够处理创建额外的计算资源,以处理由其他用户共享的数据,而不会影响其他用户的系统。例如,数据提供者可以具有三个计算资源,并且与数据消费者共享数据,并且数据消费者可以生成新的计算资源来对共享数据执行查询,其中新的计算资源由数据消费者管理,并且不影响数据提供者的计算资源或者与数据提供者的计算资源交互。
中央服务器130、数据库120A-120C和计算设备160A-160C在图1中显示为单独的组件。然而,中央服务器130、数据库120A-120C和计算设备160A-160C中的每一个可以被实现为由API连接并访问信息(例如,令牌、登录数据)的分布式系统(例如,分布在多个地理位置的多个系统/平台上)。此外,中央服务器130、数据库120A-120C和计算设备160A-160C中的每一个都可以根据接收到的请求的变化和基于网络的数据仓库系统110的需求的变化而扩大或缩小(彼此独立)。因此,在所描述的实施例中,基于网络的数据仓库系统110是动态的,并且支持频繁变化以满足当前的数据处理需求。
图2示出了根据一些示例实施例的用于在数据库对象上实现以容器为中心的受管访问控制的示例数据库架构200。数据库架构200包括未来授权表210、用户表240和授权表270。未来授权表210包含行230A、230B和230C,每一行包含格式220的数据。用户表240包含行260A、260B、260C和260D,每一行包含格式250的数据。授权表270包含行290A、290B、290C、290D和290E,每一行包含格式280的数据。
在一些示例实施例中,基于网络的数据仓库系统110实现基于角色的访问控制,以治理对客户账户中的对象的访问。基于角色的访问控制包括两种机制:角色和授权。在一个实施例中,角色是分配给用户的最终用户账户(例如,提供者账户、消费者账户)中的特殊对象。角色和数据库对象之间的授权定义了角色对这些对象的特权。例如,在执行命令“显示数据库”时,对数据库具有使用授权的角色可以“查看”该数据库;对表具有选择授权的角色可以从该表读取但不能写入该表。对表具有修改授权的角色可以向其写入。
未来授权表210的行230A-230C中的每一行标识未来授权所应用到的模式、对象类型和创建角色;未来授权授予的特权;授予特权的角色;以及未来授权是否活动。因此,行230A指示ROLE1在模式S中创建的未来表将使用ROLE4的INSERT特权来创建。行230B指示未来授权是不活动的。如果行230B的未来授权是活动的,它将导致由所有角色在模式S中创建的未来视图以ROLE5的SELECT特权创建,保证具有ROLE5角色的用户将有权通过所有未来视图访问数据。
未来授权表210的行230C规定由模式S中的任何角色创建的所有表都是不可转移的。由于这是一个否定的授权,它取消了数据库对象的创建者的默认特权,并且没有账户或角色可以给予肯定的特权,因此特权角色是NULL或N/A(不适用)。防止数据库对象所有权的转移可能是一种有用的安全措施,因为它确保数据库对象的所有者始终是数据库对象的创建者。此外,防止数据库对象所有权的转移可以确保数据库对象的所有权不会转移给具有不同角色的用户,该不同角色具有更大的特权,并且可以修改或删除通过被管授权创建的数据库对象的特权。
用户表240的行260A-260D中的每一行都标识用户账户的角色、租户和模式。因此,行260A示出了用户Kara,租户BUSINESS1的账户,在模式S中具有角色ROLE1。行260B示出了用户Lara,也是租户BUSINESS1的账户,在模式S中具有角色ROLE2;行260C示出了用户Marlon,租户BUSINESS2的账户,在模式T中具有角色ROLE1;行260D示出了用户Mera,租户BUSINESS2的另一个账户,在模式T中具有角色ROLE3。
在行290A-290E的每一行中,授权表270标识现有对象的特权。因此,行290A指示模式S中的角色ROLE1具有针对数据库对象TABLE1(表)的INSERT特权。行290B指示模式S中的角色ROLE2具有针对数据库对象VIEW1(视图)的SELECT特权;行290C指示模式S中的角色ADMIN具有针对模式S的管理授权特权;行290D指示ROLE1具有针对模式S的创建对象特权;且行290E指示角色ROLE3具有针对数据库对象FUNCTION1(模式T中的一个函数)的EXECUTE特权。授权表270中的行可以响应于对从管理员(由ADMIN表示)或数据库对象所有者(由OWNER表示)接收的现有数据库对象进行操作的命令而创建。可选地,在创建数据库对象时(由M/A指示),响应于基于未来授权表210中的数据的数据库对象的创建,可以创建授权表270中的一行或更多行。授权的源由授权表270的源列指示。
使用基于角色的访问控制,可以将使用权从一个角色授予另一个角色。具有对另一角色的使用授权的角色“继承”该另一角色的所有访问特权。例如,模式S中的角色ROLE4可以拥有角色ROLE1的使用授权。因此,具有激活角色ROLE4的用户将对TABLE1具有INSERT特权,因为ROLE1在行290A中被授予该特权。
数据库架构200示出了与存储在数据库120A、120B和120C中的数据库对象的控制相关的数据。每个数据库120A-120C包括一个或更多个模式(例如,模式S或模式T)。模式是一组数据库对象,例如存储数据的表(例如TABLE1和TABLE2)、提供对存储在一个或更多个表中的数据的访问的视图(例如VIEW1)、提供对存储在一个或更多个表中的数据的访问或修改的函数(例如FUNCTION1)以及共享。
在表中,数据是结构化为列和行集合的关系数据库数据,其中表可以包括对其他表的引用(例如,键、索引或共享列,如消费者名称)。例如,用户表240包括三列(用户名、角色和模式),每个用户有一行,授权表270包括五列(模式、源、特权、对象和角色),其中角色/模式对用于引用特定的角色/模式作为主键。例如,可以从用户表240和授权表270创建连接操作或视图,以显示特定用户的特权(例如,通过创建连接角色上的表和模式列的视图或新表,并向用户表240的用户列提供授权表270的特权和对象列)。虽然这里作为示例讨论了关系数据库结构,但是应当理解,在一些示例实施例中,由基于网络的数据仓库系统110管理的数据可以是结构化为非关系数据库格式(例如,非SQL、Hadoop、Spark帧或其他)的数据。
如这里所使用的,视图是显示来自一个或更多个表的数据的数据库对象(例如,显示来自一个或更多个表的每一个的某些列)。视图允许访问查询的结果,就像视图本身是一个表一样。虽然视图可用于排除或隐藏列以“屏蔽”数据,但使用视图隐藏数据会创建另一个必须管理的对象,并且如果在给定的网络环境中有许多项目需要屏蔽,则必须管理大量视图,这将产生大量开销和管理复杂性。此外,使用视图进行屏蔽来隐藏数据与哪些角色看到视图是不可知的(例如,用户工程师看到的视图与分析师用户看到的视图相同)。此外,视图仅创建数据对象视图,不执行数据转换样式的操作(例如,用#替换名称的前三个字符)。此外,共享视图会危及网络安全,因为视图的接收方可能能够访问用于创建视图的基础数据(例如,访问从中提取列以创建给定视图的完整表)。
如这里所使用的,共享是基于网络的数据仓库系统110定制的对象,其可以用于以高效和安全的方式在基于网络的数据仓库系统110的用户之间共享数据。共享对象包括用于共享给定数据库的所有信息。每个共享包括授予对包含要共享的对象的数据库和模式的访问权限的特权,授予对特定对象(例如,表和安全视图)的访问权限的特权,以及与之共享数据库及其对象的消费者账户。在给定数据库(例如,由第一客户账户的用户140A)创建之后,共享对象可以经由基于网络的数据仓库系统110被其他用户(例如,由第二客户账户的用户140C)访问和/或操纵。例如,用户140A的账户可以创建一个或更多个数据库实例,然后将数据加载到数据库120A中,创建视图和/或共享对象,并且进一步创建消费者账户(例如,读者账户),该消费者账户可以经由基于网络的数据仓库系统110访问数据库对象,并且不需要在账户之间传输数据;相反,共享数据是在原始存储设备上直接访问的。例如,用户140C的账户可以使用浏览器登录以访问页面,生成只读数据库(例如,“consumerDatabase”),并在数据库中填充共享数据(例如,“view3”)用于分析,而不必从存储数据库120A的共享数据的存储设备复制数据。
图3是示出根据一些示例实施例,使用对数据库对象的以容器为中心的受管访问控制,在数据库310中的角色320和330与模式对象340、350和360之间的交互的框图300。
具有管理授权特权的角色320的用户创建一个或更多个未来授权340。例如,可以将行添加到未来授权表210中。随后,具有创建对象特权的角色330的用户创建模式对象350(例如,表)。在创建模式对象350期间,未来授权340被实例化为实际授权360(例如,授权表270中的行),其应用于模式对象350。
只要用户账户激活了具有管理授权特权的角色,用户账户就可以在模式中创建或删除未来的授权。创建未来授权的命令示例如下:
grant all on future tables in schema s to role r with grant option;
此命令将模式中所有未来表的所有权限授予角色r。带有“with grant option”的子句指示未来授权一旦创建就被启用(例如,未来授权表210的添加行中的活动列被设置为TRUE)。可以使用如下示例命令删除未来的授权:
revoke all on future tables in schema s from role r;
此命令撤销未来表上的未来授权,但对现有授权没有影响,即使这些授权是由于现在撤销的未来授权而创建的。
在一些示例实施例中,使用数据持久对象(“DPO”)来实现未来授权,例如FutureGrantDPO的。举例来说,下面提供了DPO的定义。
Figure BDA0003141665200000111
Figure BDA0003141665200000121
Figure BDA0003141665200000131
在上面的结构中,PRIMARY_SLICE和CHANGELOG_SLICE是系统级切片,BY_GRANTEE_SLICE是为被授予受管访问权限的每个账户创建的单独切片。在每个切片中,键元素定义了用于存储或检索值的唯一键组合。因此,在PRIMARY_SLICE中,securableAccountId、securableType、securableId、targetSecurableType、targetSecurablePriv和granteeRoleId的六个值的组合唯一地定义了granteeAccountId、grantOption、createdBy和createdOn的四个值。不同的切片访问相同的基础数据。
在每个切片中,securableAccountId是未来授权适用的账户或角色的标识符;securableType表示未来的授权是适用于单个模式还是整个数据库;securableId是被保护的特定模式或数据库的标识符;targetSecurableType表示未来授权适用的数据库对象的类型(例如,表、函数、视图或其任何合适的组合);targetSecurablePriv表示被授予的特权(如SELECT);granteeAccountId标识被授予特权的账户或角色;并且grantOption是布尔值,如果未来授权是活动的,则为TRUE,如果未来授权是非活动的,则为FALSE。
此外,createdBy表示创建未来授权的账户;createdOn表示创建未来授权的日期和时间;modifiedOn表示修改未来授权的日期和时间;deletedOn指示删除未来授权的日期和时间;jobId表示修改或删除未来授权的作业的标识符。
图4是根据一些示例实施例的用于在数据库对象上实现以容器为中心的受管访问控制的方法400的流程图。方法400包括操作410、420、430和440。作为示例而非限制,方法400被描述为由图1的数据仓库系统110和图8的计算机系统800执行。
在操作410中,中央服务器130访问来自用户账户的在数据库中创建数据库对象的第一请求。作为示例,web客户端150A经由网络170将来自与用户140A相关联的用户账户(用户账户“KARA”)的请求发送到中央服务器130,该请求是在数据库120A中创建表格(表格“TABLE1”)的请求。该请求可以由数据库模块870通过通信接口835接收。
在操作420中,中央服务器130响应于第一请求,访问与用户账户相关联的特权集合。在这个例子中,访问控制模块860访问未来授权表210,以通过在模式和角色/创建者角色列上将用户表240与未来授权表210连接来确定与用户账户“KARA”的角色相关联的特权集合。KARA的角色是模式S上的ROLE1,未来授权表210规定使用该角色创建的数据库对象具有ROLE4的INSERT特权。
中央服务器130创建具有该特权集合的数据库对象(操作430)。在该示例中,表TABLE1由数据库模块870在数据库120A中创建。KARA拥有该表,并且行290A被添加到授权表270,指示角色ROLE4对TABLE1具有INSERT特权。
在操作440中,中央服务器130基于该特权集合,拒绝来自用户账户的修改数据库对象的第二请求。例如,KARA账户请求移除ROLE4对TABLE1的INSERT特权,但是由于行290A指示特权的源是“M/A”或受管访问,KARA移除该特权的请求被拒绝。在一些示例实施例中,接受来自KARA的修改数据库对象的其他请求,这些请求不修改由受管访问产生的授权。
图5是根据一些示例实施例的用于在数据库对象上实现以容器为中心的受管访问控制的方法500的流程图。方法500包括操作510和方法400的操作410-430。作为示例而非限制,方法500被描述为由图1的数据仓库系统110和图8的计算机系统800执行。
在操作510中,中央服务器130访问来自第二用户的定义与用户账户相关联的特权集合(稍后在操作420中访问)的第三请求。例如,用户140C可以使用在授权表270的行290C中标识的具有ADMIN角色的账户来发送创建未来授权表210的行230A的命令。如行290C中所示,ADMIN角色具有对模式S的管理授权特权。因此,访问控制模块860允许账户从未来授权表210中创建、修改和删除属于模式S的行。稍后,当用户KARA创建模式S中的类型表的数据库对象,匹配存储在行230A中的未来授权中指定的标准时,特权角色ROLE4被授予特权INSERT,导致行290A。缺少模式S的管理访问特权的账户被阻止创建、修改或删除未来授权表210中的属于模式S的行。
在一些示例实施例中,第三请求包括用户账户的标识符、角色的标识符、数据库对象的类型、特权集合或其任何合适的组合。在一些示例实施例中,用户账户的标识符、角色的标识符和数据库对象的类型中的一个或更多个可以是匹配多个账户、角色或数据库类型的通配符或模式。因此,第三请求可以定义应用于由特定用户创建的所有数据库对象、由特定角色创建的所有数据库对象、由任何用户创建的特定类型的数据库对象、由特定角色创建的特定类型的数据库对象、或者账户、角色和数据库对象类型的任何其他组合的特权。
管理授权特权可以是特定于模式的,如行290C所示,显示ADMIN账户在模式S上具有管理授权特权,但在其他模式(例如模式T)上没有。或者,管理授权特权可以应用于数据库(例如,数据库120A)或基于网络的数据仓库系统110中的多个模式。拒绝来自用户账户的一种命令,该命令定义该账户(例如,通过与该账户相关联的角色)不具有管理授权特权的模式或数据库上的特权集合。
因此,由ADMIN账户管理的账户创建的数据库对象在数据库的第一模式(模式S)中;ADMIN账户与在数据库的第一模式中定义数据库对象的特权的第一特权相关联(每行290C);并且ADMIN账户不与在数据库的第二模式(模式T)中定义数据库对象的特权的第二特权相关联(因为授权表270的行290C或任何其他行都没有向ADMIN账户授予这样的特权)。
图6是根据一些示例实施例的用于在数据库对象上实现以容器为中心的受管访问控制的方法600的流程图。方法600包括方法400的操作410-430和操作610。作为示例而非限制,方法600被描述为由图1的数据仓库系统110和图8的计算机系统800执行。
在操作430中创建具有特权集合的数据库对象之后,在操作610中,中央服务器130基于特权集合允许第三用户账户访问数据库对象。例如,基于在操作420中将对由KARA创建的表的INSERT特权授予ROLE4,具有ROLE4的账户被允许将数据插入该表。
虽然被描述为各自利用操作410-430的单独方法,但是方法400-600可以被组合以包括操作440、510和610中的两个或更多个。通常,拥有创建数据库对象特权的用户可以控制与创建的对象相关联的特权。这种传统的方法是有问题的,至少因为一些角色(例如,管理人员使用的角色)应该有权访问所有数据,但不应该拥有数据库本身的管理员特权。
为了解决前述问题,基于网络的数据仓库系统110使用不可由(缺少受管访问特权的)对象所有者修改的未来授权来使得由用户账户创建的数据库对象用指定的特权授权来创建。未来授权表210可以指定创建者角色以及具有不同角色的用户如何与由这些角色创建的数据库对象进行交互。这样,基于网络的数据仓库系统110的用户可以自动遵守租户的数据访问策略。
图7是根据一些示例实施例的用于在数据库对象上实现以容器为中心的受管访问控制的方法的流程图。方法700包括操作710、720、730和740。作为示例而非限制,方法700被描述为由图1的数据仓库系统110和图8的计算机系统800执行。
在操作710中,中央服务器130访问克隆数据库的请求。克隆数据库会为存储在数据库中的所有数据制作一个附加副本,允许独立修改原始数据库和数据库的克隆。在一些示例实施例中,中央服务器130基于与做出请求的账户的角色相关联的特权来允许或拒绝克隆数据库的请求。
在操作720中,中央服务器130确定该请求是否是用于无受管访问的克隆。如果请求是创建数据库的克隆,其中该克隆不具有以容器为中心的受管访问,则方法700继续操作740。然而,如果请求是创建数据库的克隆,其中该克隆确实具有以容器为中心的受管访问,则方法700继续操作730。
在操作730中,中央服务器130克隆数据库,维持由受管访问产生的授权。例如,授权表270中的任何行,包括那些以容器为中心的管理访问作为源的行,都被复制用于克隆。同样,未来授权表210中的属于克隆数据库的任何行都被复制用于克隆。
或者,在操作740中,中央服务器130克隆数据库,放弃由以容器为中心的受管访问产生的授权。例如,对于克隆,仅复制授权表270中具有不同于以容器为中心的受管访问的源的行,而对于克隆,不复制未来授权表210中的行。
其他数据库操作也与以容器为中心的受管访问产生的授权交互。在各种示例实施例中:将数据库对象从一个模式重命名到另一个模式将授权从第一模式复制到第二模式;在两个模式之间克隆数据会复制数据,但不会复制授权;“clone with copy grant”命令克隆数据并复制授权。
图8示出根据本公开一些实施例的以计算机系统800的形式机器的示意图表示,用于使机器执行本文所讨论方法中的任何一个或更多个的指令集合可以在该计算机系统内执行。在各种实施例中不需要使用所有组件。例如,客户端(例如,设备160A-160C)、服务器(例如,中央服务器130)、自治系统和基于云的网络资源(例如,数据库120A-120C)可以各自使用不同的组件集,或者在服务器的情况下,例如,使用更大的存储设备。
计算机系统800包括处理器805、计算机存储介质810、可移动存储装置815和不可移动存储装置820,所有这些都通过总线840连接。尽管示例计算设备被图示和描述为计算机系统800,但是在不同的实施例中,计算设备可以是不同的形式。例如,计算系统800可以替代地是智能手机、平板电脑、智能手表或包括与关于图8示出和描述的元件相同或相似的元件的另一计算设备。智能手机、平板电脑和智能手表等设备统称为“移动设备”。此外,尽管各种数据存储元件被示为计算机800的一部分,但是存储装置也可以或替代地包括可通过网络(例如互联网)访问的基于云的存储装置或基于服务器的存储装置。
处理器805可以是中央处理单元(CPU)、精简指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、射频集成电路(RFIC)、另一处理器或其任何合适的组合。术语“处理器”旨在包括多核处理器,多核处理器可以包括可以同时执行指令的两个或更多个独立处理器(有时称为“核”)。尽管图8示出了单个处理器805,但是计算机系统800可以包括具有单核的单个处理器、具有多核的单个处理器(例如,多核处理器)、具有单核的多个处理器、具有多核的多个处理器或者它们的任意组合。
计算机存储介质810包括易失性存储器845和非易失性存储器850。易失性存储器845或非易失性存储器850存储程序855。计算机800可以包括或有权访问包括诸如易失性存储器845、非易失性存储器850、可移动存储装置815和不可移动存储装置820的各种计算机可读介质的计算环境。计算机存储装置包括随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)和电可擦除可编程只读存储器(EEPROM)、闪存或其他存储技术、光盘只读存储器(CD ROM)、数字多功能盘(DVD)或其他光盘存储装置、盒式磁带、磁带、磁盘存储装置或其他磁存储设备,或能够存储体现这里描述的任何一种或更多种方法或功能的计算机可读指令的任何其他介质。在由计算机系统800执行期间,指令也可以全部或部分地驻留在处理器805内(例如,在处理器的高速缓冲存储器内)。
计算机系统800包括或可以访问包括输入接口825、输出接口830和通信接口835的计算环境。输出接口830连接到或包括显示设备,例如触摸屏,其也可以用作输入设备。输入接口825连接到或包括触摸屏、触摸板、鼠标、键盘、照相机、一个或更多个设备专用按钮、集成在计算机系统800内或通过有线或无线数据连接耦合到计算机系统800的一个或更多个传感器以及其他输入设备中的一个或更多个。计算机系统800可以使用通信接口835连接到一个或更多个远程计算机,例如数据库服务器,在网络化环境中操作。远程计算机可以包括个人计算机(PC)、服务器、路由器、网络PC、对等设备或其他公共网络节点等。通信接口835可以连接到局域网(LAN)、广域网(WAN)、蜂窝网络、WiFi网络、蓝牙网络或其他网络。
存储在计算机存储介质上的计算机指令(例如,存储在计算机存储介质810中的程序855)可由计算机系统800的处理器805执行。如这里所使用的,术语“机器存储介质”、“设备存储介质”和“计算机存储介质”(统称为“机器存储介质”)表示相同的东西,并且可以互换使用。这些术语指的是存储可执行指令和/或数据的单个或更多个存储设备和/或介质(例如,集中式或分布式键值储存器和/或相关联的高速缓存和服务器),以及包括多个存储装置或设备的基于云的存储系统或存储网络。相应地,这些术语应当被认为包括但不限于包括处理器805内部或外部的存储器的固态存储器以及光和磁介质。机器存储介质、计算机存储介质和/或设备存储介质的具体示例包括非易失性存储器,非易失性存储器包括例如半导体存储器设备,诸如可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、现场可编程门阵列(FPGA)和闪存设备;磁盘,如内部硬盘和可移除磁盘;磁光盘;以及CD-ROM和DVD-ROM光盘。术语“机器存储介质”、“计算机存储介质”和“设备存储介质”具体排除了载波、调制数据信号和其他这样的介质(其中的至少一些包含在下面讨论的术语“信号介质”中)。
术语“信号介质”或“传输介质”应包括任何形式的调制数据信号、载波等。术语“调制数据信号”意指这样的信号:其具有以对信号中的信息进行编码的这样的方式设置或更改的其特性中的一个或更多个特性。
术语“机器可读介质”、“计算机可读介质”和“设备可读介质”意思相同,并且在本公开中可以互换使用。这些术语被定义为包括机器存储介质和信号介质。因此,这些术语包括存储设备/介质和载波/调制数据信号。
程序855还可以使用传输介质经由通信接口835并利用多种众所周知的传输协议中的任何一种(例如HTTP)在网络170上传输或接收。网络170的例子包括局域网(LAN)、广域网(WAN)、互联网、移动电话网络、普通老式电话服务(POTS)网络和无线数据网络(例如,WiFi、LTE和WiMAX网络)。术语“传输介质”应被理解为包括能够存储、编码或承载由计算机系统800执行的指令的任何无形介质,并且包括数字或模拟通信信号或其他无形介质,以便于这种软件的通信。
程序855被示为包括访问控制模块860、角色模块865和数据库模块870。这里描述的任何一个或更多个模块可以使用硬件(例如,机器的处理器、专用集成电路(ASIC)、FPGA或其任何合适的组合)来实现。此外,这些模块中的任何两个或更多个可以被组合成单个模块,并且这里针对单个模块描述的功能可以在多个模块中被细分。此外,根据各种示例实施例,这里描述为在单个机器、数据库或设备内实现的模块可以分布在多个机器、数据库或设备上。
中央服务器130的访问控制模块860控制对数据库120A-120C中的数据的访问。例如,设备160A和160C可以与单个租户标识符相关联,并且向基于网络的数据仓库系统110提供数据,用于存储在一个或更多个数据库120A-120C中。访问控制模块860允许与租户相关联的用户账户访问存储的数据,并防止其他用户账户(例如,与不同租户相关联的用户140C的账户)访问数据。虽然在一些示例实施例中,租户对应于客户端设备,但是更常见的是,多个客户端设备被分配给单个租户标识符。
角色模块865确定哪个角色对应于账户以及该角色具有什么特权。基于角色的特权,中央服务器130允许或阻止访问、修改、创建或删除一个或更多个数据库120A-120C中的数据。
数据库模块870与数据库120A-120C通信。例如,响应于来自设备160A的对存储在数据库120A中的数据的SELECT查询,数据库模块870向数据库120A请求数据,接收所请求的数据,并经由通信接口835和网络170向设备160A提供数据。
在替代实施例中,计算机系统800作为独立设备操作,或者可以耦合(例如,联网)到其他机器。在网络化部署中,计算机系统800可以以服务器-客户端网络环境中的服务器机器或客户端机器的身份运行,或者作为对等(或分布式)网络环境中的对等机器运行。计算机系统800可以包括但不限于服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本、智能电话、移动设备、网络路由器、网络交换机、网桥或能够顺序地或以其他方式执行程序855的指令的任何机器,所述指令指定了要由计算机系统800采取的动作。此外,虽然仅示出了单个计算机系统800,但是术语“机器”也应被理解为包括单独或共同执行指令以执行这里讨论的任何一种或更多种方法的计算机系统800的集合。
输入接口825和输出接口830包括接收输入、提供输出、产生输出、传输信息、交换信息、捕获测量结果等组件。特定计算机系统800中包括的特定输入/输出(“I/O”)组件将取决于计算机系统的类型。例如,诸如移动电话的便携式设备将可能包括触摸输入设备或其他这样的输入机制,而无头服务器机器可能不包括这样的触摸输入设备。应当理解,I/O组件可以包括图8中未示出的许多其他组件。输入接口825可以与视觉组件(例如,诸如等离子体显示面板(PDP)、发光二极管(LED)显示器、液晶显示器(LCD)、投影仪或阴极射线管(CRT))的显示器、声学组件(例如,扬声器)、其他信号发生器等对接。输入接口825可以对接字母数字输入组件(例如,键盘、被配置成接收字母数字输入的触摸屏、光电键盘或其他字母数字输入组件)、基于点的输入组件(例如,鼠标、触控板、轨迹球、操纵杆、运动传感器或另一指向仪器)、触觉输入组件(例如,物理按钮、提供触摸或触摸手势的位置和/或力的触摸屏或其他触觉输入组件)、音频输入组件(例如,麦克风)等。
本文所述的示例方法的各种操作可以至少部分地由(例如,通过软件)临时配置或永久地配置为执行相关操作的一个或更多个处理器来执行。类似地,本文描述的方法可以至少部分地是处理器实现的。例如,方法400、500、600和700的至少一些操作可以由一个或更多个处理器来执行。某些操作的执行可以分布在一个或更多个处理器中,不仅驻留在单个机器内,而且部署在多个机器上。在一些示例实施例中,一个或更多个处理器可以位于单个位置(例如,在家庭环境、办公室环境或服务器场内)中,而在其他实施例中,处理器可以分布在多个位置上。
尽管参考具体的示例实施例描述了本公开的实施例,但显然地,在不背离本发明主题的更广泛范围的情况下,可以对这些实施例做出各种修改和变化。相应地,说明书和附图被认为是说明性的而不是限制性的。形成其一部分的附图通过说明方式并且不以限制方式显示了其中可以实施主题的具体实施例。所示出的实施例以充分细节描述,以便使本领域那些技术人员能够实施本文披露的教导。可以使用其他实施例和从其中衍生的实施例,使得可以作出结构性或逻辑性替换和变化而不偏离本公开的范围。因此不以限制性意义理解这一详细说明,并且各种实施例的范围仅由所附权利要求连同授权的此类权利要求的完整范围的等同物限定。
发明主题的此类实施例可以在本文中单独地和/或共同地由术语“发明”提到,该术语仅出于便利目的并且不意在自愿将本申请的范围限于任何单一发明或发明构思,如果实际上披露的多于一种的话。因此,虽然已经在此说明和描述了特定实施例,但是应当理解,可以用经计算以实现相同目的的任何布置替换用于所示的具体实施例。本公开旨在覆盖各种实施例的任何和所有修改或变型。在阅读以上描述后,本领域的技术人员将明白以上实施例的组合以及本文未具体描述的其他实施例。
在本文档中,术语“一个(a)”或“一个(an)”,如专利文档中常见的那样,用于包括一个或多于一个,与“至少一个”或“一个或更多个”的任何其他实例或用法无关。。在本文档中,术语“或”用于指非排他性的或,因此“A或B”包括“A但不包括B”、“B但不包括A”和“A和B”,除非另有说明。在所附权利要求中,术语“包括(including)”和“其中(inwhich)”被用作相应术语“包含(comprising)”和“其中(wherein)”的纯英语等效词。此外,在所附权利要求中,术语“包括”和“包含”是开放式的;也就是说,包括除了权利要求中这样的术语之后列出的那些元素之外的元素的系统、设备、物品或过程仍然被认为落入该权利要求的范围内。
以下编号的示例是实施例:
示例1:一种系统,包括:
一个或更多个处理器;和
存储器,其存储指令,当由一个或更多个处理器执行时,该指令使得该一个或更多个处理器执行操作,操作包括:
访问来自用户账户的在数据库中创建数据库对象的第一请求;
响应于第一请求,访问与用户账户相关联的特权集合;
创建具有特权集合的数据库对象;和
基于特权集合,拒绝来自用户账户的修改数据库对象的第二请求。
示例2:示例1的系统,其中操作还包括:
在访问第一请求之前,访问来自第二用户账户的定义与用户账户相关联的特权集合的第三请求。
示例3:示例2的系统,其中第三请求包括用户账户的标识符、数据库对象的类型和特权集合。
示例4:示例2或示例3的系统,其中:
数据库对象在数据库的第一模式中;
第二用户账户与第一特权相关联,该第一特权定义对在数据库的第一模式中的数据库对象的特权;和
第二用户账户不与第二特权相关联,该第二特权定义对在数据库的第二模式中的数据库对象的特权。
示例5:示例1至4中任一示例的系统,其中,与用户账户相关联的特权集合包括与和用户账户相关联的角色相关联的特权集合。
示例6:示例1至5中任一示例的系统,其中特权集合包括第二用户账户对数据库对象的访问权限。
示例7:示例1至6中任一示例的系统,其中特权集合禁止从用户账户转移对数据库对象的所有权。
示例8:示例1至7中任一示例的系统,还包括:
访问克隆包括数据库对象的第一数据库模式的请求;和
响应于该请求,创建第二数据库模式,该第二数据库模式包括数据库对象的没有特权集合的副本。
示例9:示例1至8中任一示例的系统,还包括:
访问克隆包括数据库对象的第一数据库模式的请求;和
响应于该请求,创建第二数据库模式,该第二数据库模式包括数据库对象的具有特权集合的副本。
示例10:一种方法,包括:
由数据库服务器访问来自用户账户的在数据库中创建数据库对象的第一请求;
响应于第一请求,由数据库服务器访问与用户账户相关联的特权集合;
创建具有特权集合的数据库对象;和
基于特权集合,拒绝来自用户账户的修改数据库对象的第二请求。
示例11:示例10的方法,还包括:
在访问第一请求之前,访问来自第二用户账户的定义与用户账户相关联的特权集合的第三请求。。
示例12:示例11的方法,其中第三请求包括用户账户的标识符、数据库对象的类型和特权集合。
示例13:示例11或示例12的方法,其中:
数据库对象在数据库的第一模式中;
第二用户账户与第一特权相关联,该第一特权定义对在数据库的第一模式中的数据库对象的特权;和
第二用户账户不与第二特权相关联,该第二特权定义对在数据库的第二模式中的数据库对象的特权。
示例14:示例10至13中任一示例的方法,其中与用户账户相关联的特权集合包括与和用户账户相关联的角色相关联的特权集合。
示例15:示例10至14中任一示例的方法,其中特权集合包括第二用户账户对数据库对象的访问权限。
示例16:示例10至15中任一示例的方法,其中特权集合禁止从用户账户转移对数据库对象的所有权。
示例17:示例10至16中任一示例的方法,还包括:
访问克隆包括数据库对象的第一数据库模式的请求;和
响应于该请求,创建第二数据库模式,该第二数据库模式包括数据库对象的没有特权集合的副本。
示例18:示例10至17中任一示例的方法,还包括:
访问克隆包括数据库对象的第一数据库模式的请求;和
响应于该请求,创建第二数据库模式,该第二数据库模式包括数据库对象的具有特权集合的副本。
示例19:一种存储指令的机器可读存储设备,当该指令被一个或更多个处理器执行时,使得该一个或更多个处理器执行操作,操作包括:
访问来自用户账户的在数据库中创建数据库对象的第一请求;
响应于该第一请求,访问与用户账户相关联的特权集合;
创建具有特权集合的数据库对象;和
基于特权集合,拒绝来自用户账户的修改数据库对象的第二请求。
示例20:示例19的存储设备,其中操作还包括:
在访问第一请求之前,访问来自第二用户账户的定义与用户账户相关联的特权集合的第三请求。
示例21:示例19的存储设备,其中第三请求包括用户账户的标识符、数据库对象的类型和特权集合。
示例22:示例20或示例21的存储设备,其中:
数据库对象在数据库的第一模式中;
第二用户账户与第一特权相关联,该第一特权定义对在数据库的第一模式中的数据库对象的特权;和
第二用户账户不与第二特权相关联,该第二特权定义对在数据库的第二模式中的数据库对象的特权。
示例23:示例19至22中任一示例的存储设备,其中与用户账户相关联的特权集合包括与和用户账户相关联的角色相关联的特权集合。
示例24:示例19至23中任一示例的系统,其中特权集合包括第二用户账户对数据库对象的访问权限。
示例25:示例19至24中任一示例的系统,其中特权集合禁止从用户账户转移对数据库对象的所有权。
示例26:示例19至25中任一示例的系统,还包括:
访问克隆包括数据库对象的第一数据库模式的请求;和
响应于该请求,创建第二数据库模式,该第二数据库模式包括数据库对象的没有特权集合的副本。
示例27:示例19至26中任一示例的系统,还包括:
访问克隆包括数据库对象的第一数据库模式的请求;和
响应于该请求,创建第二数据库模式,该第二数据库模式包括数据库对象的具有特权集合的副本。

Claims (27)

1.一种系统,包括:
一个或更多个处理器;和
存储器,其存储指令,当由所述一个或更多个处理器执行时,所述指令使得所述一个或更多个处理器执行操作,所述操作包括:
访问来自用户账户的在数据库中创建数据库对象的第一请求;
响应于所述第一请求,访问与所述用户账户相关联的特权集合;
创建具有所述特权集合的所述数据库对象;和
基于所述特权集合,拒绝来自所述用户账户的修改所述数据库对象的第二请求。
2.根据权利要求1所述的系统,其中所述操作还包括:
在访问所述第一请求之前,访问来自第二用户账户的定义与所述用户账户相关联的所述特权集合的第三请求。
3.根据权利要求2所述的系统,其中所述第三请求包括所述用户账户的标识符、所述数据库对象的类型和所述特权集合。
4.根据权利要求2所述的系统,其中:
所述数据库对象在所述数据库的第一模式中;
所述第二用户账户与第一特权相关联,所述第一特权定义对在所述数据库的所述第一模式中的数据库对象的特权;和
所述第二用户账户不与第二特权相关联,所述第二特权定义对在所述数据库的第二模式中的数据库对象的特权。
5.根据权利要求1所述的系统,其中与所述用户账户相关联的所述特权集合包括与和所述用户账户相关联的角色相关联的特权集合。
6.根据权利要求1所述的系统,其中所述特权集合包括第二用户账户对数据库对象的访问权限。
7.根据权利要求1所述的系统,其中所述特权集合禁止从所述用户账户转移对所述数据库对象的所有权。
8.根据权利要求1所述的系统,其中所述操作还包括:
访问克隆包括所述数据库对象的第一数据库模式的请求;和
响应于所述请求,创建第二数据库模式,所述第二数据库模式包括所述数据库对象的没有所述特权集合的副本。
9.根据权利要求1所述的系统,其中所述操作还包括:
访问克隆包括所述数据库对象的第一数据库模式的请求;和
响应于所述请求,创建第二数据库模式,所述第二数据库模式包括所述数据库对象的具有所述特权集合的副本。
10.一种方法,包括:
由包括一个或更多个处理器的中央服务器访问来自用户账户的在数据库中创建数据库对象的第一请求;
响应于所述第一请求,由所述中央服务器访问与所述用户账户相关联的特权集合;
创建具有所述特权集合的所述数据库对象;和
基于所述特权集合,拒绝来自所述用户账户的修改所述数据库对象的第二请求。
11.根据权利要求10所述的方法,还包括:
在访问所述第一请求之前,访问来自第二用户账户的定义与所述用户账户相关联的所述特权集合的第三请求。
12.根据权利要求11所述的方法,其中所述第三请求包括所述用户账户的标识符、所述数据库对象的类型和所述特权集合。
13.根据权利要求11所述的方法,其中:
所述数据库对象在所述数据库的第一模式中;
所述第二用户账户与第一特权相关联,所述第一特权定义对在所述数据库的所述第一模式中的数据库对象的特权;和
所述第二用户账户不与第二特权相关联,所述第二特权定义对在所述数据库的第二模式中的数据库对象的特权。
14.根据权利要求10所述的方法,其中与所述用户账户相关联的所述特权集合包括与和所述用户账户相关联的角色相关联的特权集合。
15.根据权利要求10所述的方法,其中所述特权集合包括第二用户账户对数据库对象的访问权限。
16.根据权利要求10所述的方法,其中所述特权集合禁止从所述用户账户转移对所述数据库对象的所有权。
17.根据权利要求10所述的方法,还包括:
访问克隆包括所述数据库对象的第一数据库模式的请求;和
响应于所述请求,创建第二数据库模式,所述第二数据库模式包括所述数据库对象的没有所述特权集合的副本。
18.根据权利要求10所述的方法,还包括:
访问克隆包括所述数据库对象的第一数据库模式的请求;和
响应于所述请求,创建第二数据库模式,所述第二数据库模式包括所述数据库对象的具有所述特权集合的副本。
19.一种存储指令的机器可读存储设备,当所述指令被一个或更多个处理器执行时,使得所述一个或更多个处理器执行操作,所述操作包括:
访问来自用户账户的在数据库中创建数据库对象的第一请求;
响应于所述第一请求,访问与所述用户账户相关联的特权集合;
创建具有所述特权集合的所述数据库对象;和
基于所述特权集合,拒绝来自所述用户账户的修改所述数据库对象的第二请求。
20.根据权利要求19所述的存储设备,其中所述操作还包括:
在访问所述第一请求之前,访问来自第二用户账户的定义与所述用户账户相关联的所述特权集合的第三请求。
21.根据权利要求20所述的存储设备,其中所述第三请求包括所述用户账户的标识符、所述数据库对象的类型和所述特权集合。
22.根据权利要求19所述的存储设备,其中:
所述数据库对象在所述数据库的第一模式中;
所述第二用户账户与第一特权相关联,所述第一特权定义对在所述数据库的所述第一模式中的数据库对象的特权;和
所述第二用户账户不与第二特权相关联,所述第二特权定义对在所述数据库的第二模式中的数据库对象的特权。
23.根据权利要求19所述的存储设备,其中与所述用户账户相关联的所述特权集合包括与和所述用户账户相关联的角色相关联的特权集合。
24.根据权利要求19所述的存储设备,其中所述特权集合包括第二用户账户对数据库对象的访问权限。
25.根据权利要求19所述的存储设备,其中所述特权集合禁止从所述用户账户转移对所述数据库对象的所有权。
26.根据权利要求19所述的存储设备,其中所述操作还包括:
访问克隆包括所述数据库对象的第一数据库模式的请求;和
响应于所述请求,创建第二数据库模式,所述第二数据库模式包括所述数据库对象的没有所述特权集合的副本。
27.根据权利要求19所述的存储设备,其中所述操作还包括:
访问克隆包括所述数据库对象的第一数据库模式的请求;和
响应于所述请求,创建第二数据库模式,所述第二数据库模式包括所述数据库对象的具有所述特权集合的副本。
CN202080007708.3A 2020-01-17 2020-07-30 数据库对象上以容器为中心的访问控制 Active CN113508383B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/745,922 US11372995B2 (en) 2020-01-17 2020-01-17 Container-centric access control on database objects
US16/745,922 2020-01-17
PCT/US2020/070339 WO2021146057A1 (en) 2020-01-17 2020-07-30 Container-centric access control on database objects

Publications (2)

Publication Number Publication Date
CN113508383A true CN113508383A (zh) 2021-10-15
CN113508383B CN113508383B (zh) 2024-05-24

Family

ID=76857115

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080007708.3A Active CN113508383B (zh) 2020-01-17 2020-07-30 数据库对象上以容器为中心的访问控制

Country Status (4)

Country Link
US (4) US11372995B2 (zh)
EP (1) EP4091086A4 (zh)
CN (1) CN113508383B (zh)
WO (1) WO2021146057A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11544399B2 (en) 2020-01-17 2023-01-03 Snowflake Inc. Container-centric access control on database objects
US11934543B1 (en) 2022-11-17 2024-03-19 Snowflake Inc. Transient object references

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11520909B1 (en) * 2020-03-04 2022-12-06 Wells Fargo Bank, N.A. Role-based object identifier schema
US11748374B2 (en) * 2021-11-30 2023-09-05 Snowflake Inc. Replication group objects configuration in a network-based database system
CN114329563A (zh) * 2021-12-30 2022-04-12 北京人大金仓信息技术股份有限公司 数据库的处理方法、装置、设备及介质
US11595202B1 (en) * 2022-02-09 2023-02-28 My Job Matcher, Inc. Apparatus and methods for mapping user-associated data to an identifier
US20240037238A1 (en) * 2022-07-28 2024-02-01 Dell Products L.P. Enabling flexible policies for bios settings access with role-based authentication

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060137019A1 (en) * 2004-12-15 2006-06-22 International Business Machines Corporation Techniques for managing access to physical data via a data abstraction model
CN104781809A (zh) * 2012-09-28 2015-07-15 甲骨文国际公司 容器数据库
CN104866513A (zh) * 2014-02-26 2015-08-26 国际商业机器公司 用于跨租户数据访问的系统和方法
CN108475271A (zh) * 2015-10-23 2018-08-31 甲骨文国际公司 容器数据库的应用容器
US20180357444A1 (en) * 2016-02-19 2018-12-13 Huawei Technologies Co.,Ltd. System, method, and device for unified access control on federated database
CN110192189A (zh) * 2017-01-10 2019-08-30 斯诺弗雷克公司 多租户数据库系统中的数据共享

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5572673A (en) * 1993-12-01 1996-11-05 Sybase, Inc. Secure multi-level system for executing stored procedures
FR2732486B1 (fr) * 1995-03-31 1997-05-09 Solaic Sa Procede pour fiabiliser une demande d'acces au programme de gestion d'une application d'une carte a memoire, et carte a memoire pour la mise en oeuvre de ce procede
US5778350A (en) * 1995-11-30 1998-07-07 Electronic Data Systems Corporation Data collection, processing, and reporting system
US6038563A (en) * 1997-10-31 2000-03-14 Sun Microsystems, Inc. System and method for restricting database access to managed object information using a permissions table that specifies access rights corresponding to user access rights to the managed objects
US6158010A (en) * 1998-10-28 2000-12-05 Crosslogix, Inc. System and method for maintaining security in a distributed computer network
JP3183343B2 (ja) 1999-02-26 2001-07-09 日本電気株式会社 データ通信方法、端末装置、中継装置、データ通信システム及びその記録媒体
US7010580B1 (en) * 1999-10-08 2006-03-07 Agile Software Corp. Method and apparatus for exchanging data in a platform independent manner
US7797276B1 (en) * 2000-10-02 2010-09-14 Guang Yang Integrated database data editing system
US7440962B1 (en) * 2001-02-28 2008-10-21 Oracle International Corporation Method and system for management of access information
US7051039B1 (en) * 2001-09-28 2006-05-23 Oracle International Corporation Mechanism for uniform access control in a database system
US7467414B2 (en) * 2003-03-17 2008-12-16 Intel Corporation Entitlement security and control for information system entitlement
US7831570B2 (en) * 2004-12-30 2010-11-09 Oracle International Corporation Mandatory access control label security
US8761153B2 (en) * 2005-06-21 2014-06-24 Michael D. Metcalf Remote configuration of a voice over internet protocol telephone for smart dial tone
US9754119B1 (en) * 2006-03-07 2017-09-05 Emc Corporation Containerized security for managed content
US8239954B2 (en) * 2007-05-07 2012-08-07 Microsoft Corporation Access control based on program properties
US8842529B2 (en) * 2010-04-02 2014-09-23 Cortina Systems, Inc. Network transport system with hybrid dynamic bandwidth allocation mechanism and method of operation thereof
US8812439B2 (en) * 2011-03-22 2014-08-19 Oracle International Corporation Folder structure and authorization mirroring from enterprise resource planning systems to document management systems
US20120330925A1 (en) * 2011-06-23 2012-12-27 Microsoft Corporation Optimizing fine grained access control using authorization indexes
US9378389B2 (en) 2011-09-09 2016-06-28 Microsoft Technology Licensing, Llc Shared item account selection
US9870384B2 (en) * 2012-03-30 2018-01-16 International Business Machines Corporation Database system transaction management
US9141635B2 (en) * 2012-09-28 2015-09-22 Oracle International Corporation Transparently upgrading derived database objects
US20170200122A1 (en) * 2014-01-10 2017-07-13 Kuhoo G. Edson Information organization, management, and processing system and methods
US9420017B2 (en) * 2014-01-10 2016-08-16 Kuhoo Edson Information organization, management, and processing system and methods
US20160012465A1 (en) * 2014-02-08 2016-01-14 Jeffrey A. Sharp System and method for distributing, receiving, and using funds or credits and apparatus thereof
US9720923B2 (en) * 2014-12-31 2017-08-01 Bank Of America Corporation System for providing user privilege information associated with secured data
US10277601B1 (en) * 2015-05-11 2019-04-30 Google Llc System and method for recursive propagating application access control
US10187391B2 (en) * 2016-05-06 2019-01-22 Sap Se Data access by external users
US10009348B2 (en) * 2016-05-11 2018-06-26 International Business Machines Corporation Hybrid database access control in external-to-database security systems
US10303894B2 (en) * 2016-08-31 2019-05-28 Oracle International Corporation Fine-grained access control for data manipulation language (DML) operations on relational data
US10956051B2 (en) * 2016-10-31 2021-03-23 Oracle International Corporation Data-packed storage containers for streamlined access and migration
US20180285559A1 (en) 2017-03-28 2018-10-04 Rodrigo Branco Stack pivot detection systems and methods
US10713378B2 (en) 2017-12-19 2020-07-14 Dropbox, Inc. Techniques for eventually consistent inheritance propagation for nested content item namespaces
US10430605B1 (en) * 2018-11-29 2019-10-01 LeapYear Technologies, Inc. Differentially private database permissions system
EP3996288A1 (en) * 2019-04-11 2022-05-11 Nexite Ltd. Wireless dual-mode identification tag
US11372995B2 (en) 2020-01-17 2022-06-28 Snowflake Inc. Container-centric access control on database objects

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060137019A1 (en) * 2004-12-15 2006-06-22 International Business Machines Corporation Techniques for managing access to physical data via a data abstraction model
CN104781809A (zh) * 2012-09-28 2015-07-15 甲骨文国际公司 容器数据库
CN104866513A (zh) * 2014-02-26 2015-08-26 国际商业机器公司 用于跨租户数据访问的系统和方法
CN108475271A (zh) * 2015-10-23 2018-08-31 甲骨文国际公司 容器数据库的应用容器
US20180357444A1 (en) * 2016-02-19 2018-12-13 Huawei Technologies Co.,Ltd. System, method, and device for unified access control on federated database
CN110192189A (zh) * 2017-01-10 2019-08-30 斯诺弗雷克公司 多租户数据库系统中的数据共享

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11544399B2 (en) 2020-01-17 2023-01-03 Snowflake Inc. Container-centric access control on database objects
US11841969B2 (en) 2020-01-17 2023-12-12 Snowflake Inc. Container-centric access control on database objects
US11934543B1 (en) 2022-11-17 2024-03-19 Snowflake Inc. Transient object references

Also Published As

Publication number Publication date
US11372995B2 (en) 2022-06-28
US20230089449A1 (en) 2023-03-23
US11841969B2 (en) 2023-12-12
US20240061948A1 (en) 2024-02-22
EP4091086A1 (en) 2022-11-23
WO2021146057A1 (en) 2021-07-22
US20210224409A1 (en) 2021-07-22
US11544399B2 (en) 2023-01-03
EP4091086A4 (en) 2024-02-28
US20220229925A1 (en) 2022-07-21
CN113508383B (zh) 2024-05-24

Similar Documents

Publication Publication Date Title
CN113508383B (zh) 数据库对象上以容器为中心的访问控制
CN113261000B (zh) 动态共享数据对象屏蔽
US20180373757A1 (en) Column based data access controls
US10999279B1 (en) Credential-less database system integrations
CN113474764B (zh) 共享数据库对象上的流
CN108092945B (zh) 访问权限的确定方法和装置、终端
US11436363B1 (en) Secure document sharing in a database system
US11620395B1 (en) Replication of account security configurations
US12020128B2 (en) Multi-party machine learning using a database cleanroom
US20220374532A1 (en) Managed metastorage
You et al. [Retracted] Research and Design of Docker Technology Based Authority Management System
US20230409724A1 (en) Secure shared data application access
US11880491B2 (en) Tag-based application of masking policy
US20230082040A1 (en) Stored procedures in a database system
US11750661B1 (en) First class database object web application
US20230401329A1 (en) Sharing of unstructured data in stages
Shetty et al. Policy-based access control scheme for securing hadoop ecosystem
Li et al. Research and Design of Docker Technology Based Authority Management System
US11929986B1 (en) Two-way data sharing between private and public clouds
Ma et al. Study on access control for cloud storage security
US12111940B1 (en) Authorizing access to operating system resources using security policies managed by service external to the operating system
US20240362351A1 (en) Network intrusion event response and protection
WO2022250878A1 (en) Centralized access control for cloud relational database management system resources

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
CB02 Change of applicant information
CB02 Change of applicant information

Country or region after: U.S.A.

Address after: Montana

Applicant after: Snowflake Co.

Address before: Montana

Applicant before: SNOWFLAKE COMPUTING Inc.

Country or region before: U.S.A.

GR01 Patent grant
GR01 Patent grant