For purposes of enhancing the retrieval and storage of large volumes of data, the data may be organized in a database. One type of database is a relational database in which data is stored in tables. In the relational database, a given table defines a relation among the data stored in the table; and relations may also exist among tables of the relational database. Another type of database is a graph database, which is based on a graph structure having nodes, properties and edges. The nodes represent entities, and the properties are pertinent information that relate to the nodes and the edges. The edges are the lines that connect nodes; and a given edge represents a relationship between connected nodes.
A database management system (DBMS) may employ access controls, to regulate permissions (read and write permissions, for example) for users as well as control the parts the user may access. For example, access controls may allow a given user to view individual tables of the database as well as present custom database views for the user. Referring to
For the example computer system 100 of
In accordance with some implementations, a user 102 may, via the client 104, access the database proxy system 110 via a Remote Procedure Call (RPC). In this manner, the client 104 may contain a set of machine executable instructions, or software, that forms an agent, when executed by the client 104, for purposes of serving as a local representative of remote procedure machine executable instructions of the remote procedure call. The agent 105 serves as a representative of the remote procedure and communicates a message across the network fabric 106 to initiate the RPC in the database proxy system 110. The database proxy system 110, as a result of the RPC, authenticates the user 102 and subsequently reveals to the user 102 (via communication over the network fabric 106) a list of available query resources (query resources that include one or multiple query objects and may include methods, query connects, available database operators, and so forth) that are available to the user 102 based on the user's access classification.
As an example, the query resources may include one or more database query objects that may be used by the user 102 for purposes of accessing one or multiple of the databases 120. In this manner, the database proxy system 110 may, in accordance with example of implementations, define a query template, having parameters that are passed to the proxy 110 by the user 102 for purposes of performing the query. In response to receiving these parameters, the database proxy system 110 may then execute one or multiple database operations (submit queries, execute joins, and so forth) for purposes of performing the query initiated by the user 102. These underlying operations to the database 120, in turn, are hidden or isolated, from the user 102; and moreover, the corresponding results from the database 120 may be filtered or otherwise processed before the results are returned to the user 102 via the RPC protocol.
Likewise, the database proxy system 110 may define one or multiple handler templates corresponding to generic database operations that may be initiated by the user 102, without exposing the underlying database requests/operations that are performed with the database 120 for purposes of performing the underlying functions. The database proxy system 110 may also filter or otherwise process the resulting data returned from the database 120 before communicating the results to the user 102.
Thus, the database proxy system 110 allows administrators to grant compartmentalized access to one or multiple databases 120 without additional licenses or special tools, which are created by database vendors. As depicted in
In this manner, in accordance with example implementations, an authorization engine 206 of the database proxy system 110 may, based on the identified user, associate the user with a particular user group 212 (example user groups 212-1 and 212-2, being depicted in
A given user group 212 may be associated with one or multiple query resource sets 216 (example query resource sets 216-1, 216-2, and 216-3, being depicted as examples in
In accordance with example implementations, in response to validating the credentials that are supplied by the user 102, the authentication engine 204 returns a session identification (ID) to the user 102 (via the RPC interface 200 and network fabric 106). In this manner, the user 102 may access the query resources of the resource sets 216-2 and 216-3 via further RPC calls using the session ID, which is supplied by the authentication engine 204.
As illustrated by data flowpath 300, a query engine 228 of the database proxy system 110 validates the parameter(s) supplied by the user 102 with the RPC call and, via the appropriate database interface 230 of the database proxy system 110, the query engine 228 executes the corresponding database operations (indicated by data flowpath 304) with the database 120. In this manner, the query engine 228 may execute one or multiple queries and may employ the use of one or multiple database operations to restrict the data being accessed to selected tables, rows, partial rows, and so forth, depending the compartmentalized access that has been set up in association with the selected query resource template being accessed by the user 102.
As depicted by data flowpath 306, the resulting data received from the database 120 may then be communicated to the user via the RPC interface 200 and the network fabric 106. It is noted that, in accordance with example implementations, the database proxy system 110 may further filter and/or modify the result data before communicating the data to the user 102. In accordance with further example implementations, the database proxy system 110 may not modify the resulting data from the database. Thus, many variations are contemplated, which are within the scope of the appended claims.
In accordance with some implementations, the database proxy system 110 may employ measures to detect malicious intent by a user or a configured compromised account. For example, a handler function of the query resource set 216-3 may be a “Set_Admin_User” function, which should not be authorized for the user 102 or any other user in user group 212-2. However, the presence of the function creates a “honey pot” for purposes of alerting personnel to a possible compromised account or a malicious intent by the user 102. Referring to
To summarize, a technique 600 that is detected in
Referring to
In accordance with example implementations, the machine executable instructions 760 may include instructions 762 that, when executed by the CPU(s) 706 to form an operating system; instructions 764 that, when executed by the CPU(s) 706 cause the CPU(s) 706 to form one or more device drives; instructions 766 that, when executed by the CPU(s) 706 cause the CPU(s) to form the authentication engine 204; instructions 768 that, when executed by the CPU(s) 706 cause the CPU(s) 706 to form the authorization engine 208; instructions 770 that, when executed by the CPU(s) 706 cause the CPU(s) 706 to form the query engine 228; instructions 772 that, when executed by the CPU(s) 706 cause the CPU(s) 706 to form the handler query engine 224; instructions 774 that, when executed by the CPU(s) 706 cause the CPU(s) 706 to form the handler engine 220; instructions 776 that, when executed by the CPU(s) 706 cause the CPU(s) 706 to form one or multiple database interfaces 230; the CPU(s) 706 may execute instructions to form the RPC interface engine 200; and so forth.
In accordance with further example implementations, one or multiple of the engines 204, 208, 224, 228, 220, and one or multiple database interfaces 230, and the RPC interface 200 may be constructed as a hardware component that is formed from dedicated hardware components (one or more integrated circuits that contain logic that is configured to conform query processing, handler processing, and so forth). Thus, the components of the database proxy system 110, which are described herein, may take on one of many different forms and may be based partially or wholly on processor-executed software and/or dedicated hardware, depending on the particular implementation.
Other implementations are contemplated, which are within the scope of the appended claims. For example, in accordance with further example implementations, one or more components of the database proxy system 110 may be contained in a “sandbox.” In this manner, a “sandbox” refers to one or more security mechanisms that isolate in this manner, one or more components, such as the query resource sets 216, from each other and from other components. Such isolation may be used to prevent users from gaining unauthorized access to query resources, for example. As an example, a given sandbox may be formed from a relatively tightly controlled set of resources for the component to be executed, forming a sandbox that isolates the components to a given memory or disk space. As another example, a sandbox may be formed from a virtual machine. Thus, many variations are contemplated, which are within the scope of the appended claims.
While the present techniques have been described with respect to a number of embodiments, it will be appreciated that numerous modifications and variations may be applicable therefrom. It is intended that the appended claims cover all such modifications and variations as fall within the scope of the present techniques.
This application is a continuation of International Application No. PCT/US2015/043053, with an International Filing Date of Jul. 31, 2015, which is incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
Parent | PCT/US2015/043053 | Jul 2015 | US |
Child | 15870335 | US |