Systems and methods for securing an entity-relationship system
Summary by NHIP
Entity-Relationship Database Security
The method secures data in an entity-relationship database by storing access rules within the system model. It permits entity creation only after a "create-check" process grants permission while using a separate "non-create-check" process for reading, modifying, or deleting entities, with rules including a filter defining a subset of entities.
Claim Score by NHIP
Abstract
A computer implemented method of securing information stored in an entity relationship database system comprising at least one entity relationship database, the information stored in the entity relationship database system being stored according to an entity relationship model, the method comprising the steps of: specifying access rules limiting access to the entity relationship database system; storing the access rules in the entity relationship database system according to the entity relationship model; permitting an accessor to create an entity in the entity relationship database system if a “create-check” process dependent upon at least one of the one or more stored access rules grants permission; and permitting the accessor to read or modify or delete an entity stored in the entity relationship database system if a “non-create-check” process dependent upon at least one of the one or more stored access rules grants permission.

Term
11.2 yearsleft in the term
Expires 5 December 2037, including 307 days of term adjustment.
- Priority
- Filed
- Granted
- Today
- Expires
16 claims: 3 independent, 13 dependent
- 1Broadest claimClaim Score 36, narrow(NHIP)A computer implemented method of securing information stored in an entity-relationship database system comprising at least one entity-relationship database, the information stored in the entity-relationship database system being stored according to an entity-relationship model, the method comprising the steps of:specifying one or more access rules limiting access to the entity relationship entity-relationship database system;storing the one or more access rules in the entity-relationship entity relationship database system according to the entity-relationship entity relationship model;permitting an accessor to create an entity in the entity-relationship database system if a “create-check” process dependent upon at least one of the one or more stored access rules grants permission;and denying the accessor permission to create the entity in the entity-relationship database system if the “create-check” process does not grant permission;permitting the accessor to read or modify or delete an entity stored in the entity-relationship database system if a “non-create-check” process dependent upon at least one of the one or more stored access rules grants permission;and denying the accessor permission to read or modify or delete an entity stored in the entity-relationship database system if the “non-create” check process does not grant permission;wherein the one or more access rules further comprise a filter defining a subset of entities of the specified type of entity for which the one or more access rules can grant permission.
- 14A system for securing information stored in an entity-relationship entity relationship database system comprising at least one entity-relationship entity relationship database, the information stored in the entity-relationship entity relationship database system being stored according to an entity-relationship entity relationship model, the system comprising:one or more processors for executing respective software programs stored in respective memory devices in order to perform a method comprising the steps of:specifying one or more access rules limiting access to the entity-relationship entity relationship database system;storing the one or more access rules in the entity-relationship entity relationship database system according to the entity-relationship entity relationship model;permitting an accessor to create an entity in the entity-relationship database system if a “create-check” process dependent upon at least one of the one or more stored access rules grants permission;and denying the accessor permission to create the entity in the entity-relationship database system if the “create-check” process does not grant permission;permitting the accessor to read or modify or delete an entity stored in the entity-relationship database system if a “non-create-check” process dependent upon at least one of the one or more stored access rules grants permission;and denying the accessor permission to read or modify or delete an entity stored in the entity-relationship database system if the “non-create” check process does not grant permission;wherein the one or more access rules further comprise a filter defining a subset of entities of the specified type of entity for which the one or more access rules can grant permission.
- 15One or more computer readable non-transitory tangible storage media storing respective software programs for directing respective processors to secure information stored in an entity-relationship entity relationship database system comprising at least one entity-relationship entity relationship database, the information stored in the entity-relationship entity relationship database system being stored according to an entity-relationship entity relationship model, the software programs comprising:computer executable code for specifying one or more access rules limiting access to the entity-relationship entity relationship database system;computer executable code for storing the one or more access rules in the entity-relationship entity relationship database system according to the entity-relationship entity relationship model;computer executable code for permitting an accessor to create an entity in the entity-relationship database system if a “create-check” process dependent upon at least one of the one or more stored access rules grants permission;and for denying the accessor permission to create the entity in the entity-relationship database system if the “create-check” process does not grant permission;computer executable code for permitting the accessor to read or modify or delete an entity stored in the entity-relationship database system if a “non-create-check” process dependent upon at least one of the one or more stored access rules grants permission;and for denying the accessor permission to read or modify or delete an entity stored in the entity-relationship database system if the “non-create” check process does not grant permission;wherein the one or more access rules further comprise a filter defining a subset of entities of the specified type of entity for which the one or more access rules can grant permission.
Independent claims3
185 paragraphs in 9 sections, as filed
CROSS-REFERENCE TO RELATED APPLICATIONS
This patent application is a national phase filing under section 371 of PCT/AU2017/000032, filed Feb. 1, 2017, which claims the priority of Australian patent application 2016900465, filed Feb. 11, 2016, each of which is incorporated herein by reference in its entirety.
TECHNICAL FIELD
The present invention relates generally to securing information stored in databases, and in particular, to doing so with respect to data housed in entity-relationship databases. The present invention also relates to a method and apparatus for securing information stored in databases, and to a computer program product including a computer readable medium having recorded thereon a computer program for securing information stored in databases.
BACKGROUND
Access Control
Traditional access control systems; including Role-Based Access Control (RBAC), Mandatory Access Control (MAC) and Discretionary Access Control (DAC); are designed to solve specific problems. For example, MAC was designed to handle military-style operations where information is categories to individual projects or operations and has a classification level. Users can only see information if they are involved in that operation and have sufficient clearance. While this may be appropriate for specific cases like the military example above, it is not suitable for different and potentially unrealized systems.
Some existing access control systems place what may be regarded as too much control in the hands of users. For example, DAC gives the “owner” of the secured entity (e.g. file), usually the creator, ultimate control over who can access the file. This may be satisfactory for a single user system but rarely meets the compliance or confidentially requirements of a larger organization.
Existing access control systems also typically maintain a separate configuration file that must be kept up-to-date. For example, if a person moves to a new position in a company, in addition to HR and finance system changes, separate security configuration changes are often required.
Existing access control systems are often inflexible, being designed so that checks are fast or are easily audited rather than serving business needs. For example, in a Customer Relationship Management (CRM) package, implementing a simple business rule like “a sales person can modify his/her own customers and see others in his/her region” can be difficult if not impossible to implement.
Customers and application vendors are also increasingly asking for access control that is easy for non-technical people to use and can easily and quickly adapt to change. Existing access control systems are usually written for security experts, using their own terminology or requiring specialist training. This is exacerbated as increasingly complex systems are modelled in an entity-relationship system, with corresponding increase in the number of entity types and relationships. More complex objects are often represented as a number of interrelated entities. For example, instead of being a single entity, a report may represent its columns, filters, grouping and row ordering as separate entities.
In current systems, access is usually defined with respect to the type of entity, and accordingly the amount of access control configuration increases with the number of types. Related entities, such as the different entities in a report in the example above, often have similar security configuration. This duplication increases the chance of conflicts, and leads to a higher chance of misconfiguration and also makes audit and verification harder. The complexity of current security configuration hampers changes to the entity-relationship structure, since security needs to be reconfigured on each change, and can expose unnecessary complexity to less technical users.
SUMMARY
Embodiments of the present invention may substantially overcome, or at least ameliorate, one or more disadvantages of existing arrangements.
Disclosed are arrangements, referred to as Entity-relationship Access Rule (ERAR) arrangements (or alternately as ReadiNow Intelligent Engines (RIE) arrangements) in this specification, which seek to address the above problems by embedding security in the form of “Access Rules” within the entity-relationship database system being secured, wherein the access rules themselves are also in the form of entities and associated relationships according to the entity-relationship model (described hereinafter in more detail in APPENDIX 1).
According to a first aspect of the present disclosure, there is provided a computer implemented method of securing information stored in an entity-relationship database system comprising at least one entity-relationship database, the information stored in the entity-relationship database system being stored according to an entity-relationship model, the method comprising the steps of: specifying one or more access rules limiting access to the entity-relationship database system; storing the one or more access rules in the entity-relationship database system according to the entity-relationship model; permitting an accessor to create an entity in the entity-relationship database system if a “create-check” process dependent upon at least one of the one or more stored access rules grants permission; and permitting the accessor to read or modify or delete an entity stored in the entity-relationship database system if a “non-create-check” process dependent upon at least one of the one or more stored access rules grants permission.
According to another aspect of the present disclosure, there is provided a system for securing information stored in an entity-relationship database system comprising at least one entity-relationship database, the information stored in the entity-relationship database system being stored according to an entity-relationship model, the system comprising: one or more processors for executing respective software programs stored in respective memory devices in order to perform a method comprising the steps of: specifying one or more access rules limiting access to the entity-relationship database system; storing the one or more access rules in the entity relationship database system according to the entity relationship model; permitting an accessor to create an entity in the entity relationship database system if a “create-check” process dependent upon at least one of the one or more stored access rules grants permission; and permitting the accessor to read or modify or delete an entity stored in the entity relationship database system if a “non-create-check” process dependent upon at least one of the one or more stored access rules grants permission.
According to another aspect of the present disclosure, there is provided one or more computer readable non-transitory tangible storage media storing respective software programs for directing respective processors to secure information stored in an entity relationship database system comprising at least one entity relationship database, the information stored in the entity relationship database system being stored according to an entity relationship model, the software programs comprising: computer executable code for specifying one or more access rules limiting access to the entity relationship database system; computer executable code for storing the one or more access rules in the entity relationship database system according to the entity relationship model; computer executable code for permitting an accessor to create an entity in the entity relationship database system if a “create-check” process dependent upon at least one of the one or more stored access rules grants permission; and computer executable code for permitting the accessor to read or modify or delete an entity stored in the entity relationship database system if a “non-create-check” process dependent upon at least one of the one or more stored access rules grants permission.
Other aspects are also disclosed.
BRIEF DESCRIPTION OF THE DRAWINGS
At least one embodiment of the present invention will now be described with reference to the drawings and appendices, in which:
<figref idref="DRAWINGS">FIG. 1A</figref> is a schematic diagram illustrating the physical infrastructure of a cloud platform;
<figref idref="DRAWINGS">FIG. 1B</figref> is a block diagram of the front-end server <b>104</b> of the cloud platform in <figref idref="DRAWINGS">FIG. 1A</figref>;
<figref idref="DRAWINGS">FIG. 1C</figref> is a block diagram of the database <b>108</b> in <figref idref="DRAWINGS">FIG. 1A</figref>;
<figref idref="DRAWINGS">FIGS. 2A and 2B</figref> form a schematic block diagram of a general purpose computer system upon which ERAR arrangements described can be practiced;
<figref idref="DRAWINGS">FIGS. 3A and 3B</figref> collectively form a schematic block diagram representation of an electronic device upon which described ERAR arrangements can be practiced;
<figref idref="DRAWINGS">FIG. 4</figref> depicts an access rule schema comprising entities and relationships;
<figref idref="DRAWINGS">FIG. 5</figref> depicts entities and relationships in a school example;
<figref idref="DRAWINGS">FIG. 6</figref> depicts a “create check” model and process;
<figref idref="DRAWINGS">FIG. 7</figref> is a flowchart depicting the create check process of <figref idref="DRAWINGS">FIG. 6</figref>;
<figref idref="DRAWINGS">FIG. 8</figref> depicts a “non-create check” model and process;
<figref idref="DRAWINGS">FIG. 9</figref> is a flowchart depicting the non-create check process <figref idref="DRAWINGS">FIG. 8</figref>;
<figref idref="DRAWINGS">FIG. 10</figref> depicts entities and relationships in a report example;
<figref idref="DRAWINGS">FIG. 11</figref> depicts entities inside and outside a security group;
<figref idref="DRAWINGS">FIG. 12</figref> depicts an example of a transitive security check;
<figref idref="DRAWINGS">FIG. 13</figref> is a flow chart depicting an entity group access check;
<figref idref="DRAWINGS">FIG. 14</figref> is a flow chart depicting how a user can access an entity-relationship system according to the ERAR arrangements;
<figref idref="DRAWINGS">FIG. 15</figref> is a flow chart depicting how an Administrator creates an access rule; and
<figref idref="DRAWINGS">FIG. 16</figref> depicts inheritance of properties in a hierarchy of entities.
Appendix 1 provides detail about Entity-Relationship Models; and
Appendix 2 provides detail about Reports.
DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS
Where reference is made in any one or more of the accompanying drawings to steps and/or features, which have the same reference numerals, those steps and/or features have for the purposes of this description the same function(s) or operation(s), unless the contrary intention appears.
It is to be noted that the discussions contained in the “Background” section and that above relating to prior art arrangements relate to discussions of documents or devices which may form public knowledge through their respective publication and/or use. Such discussion should not be interpreted as a representation by the present inventor(s) or the patent applicant that such documents or devices in any way form part of the common general knowledge in the art.
This specification makes extensive reference to “Entity-Relationship (ER) models” (see Appendix 1 for further details), “Reports” (see Appendix 2 for further details).
The herein-described cloud platform provides a web-based service that enables users to solve their own business problems by creating their own web or desktop software applications largely without the need for computer programming or other technical knowledge. Further, web or desktop software applications created using the system may be customized using the system. The platform is not limited to cloud systems.
The cloud platform also relieves the user from the burden of important, but distracting, activities such as backup, security (the subject of this specification), scalability, and so on by providing these services within the platform itself.
Applications
Software applications can be built by users themselves, or they can be chosen from a suite of pre-written applications provided by the ERAR arrangements, which are then customized by the user. It will be understood that the cloud platform is not limited to particular software applications, and the software applications may be as varied as imagination permits. For example, the software applications may be directed towards customer relationship management, business continuity management, expense tracking, and so on.
The ERAR software applications provided by the RIE Technology include various software modules that logically make up a software experience, such as dashboards, data entry forms, reports, charts and other visualizations, as well as interactivity such as running workflows, triggering business processes, importing and exporting data, template document generation, email notifications, and so on.
Entity Relationship Database
At the heart of the cloud platform is a purpose built entity-relationship database. All data is modelled as entities. For example, employees, projects, clients, contracts, and risks, are all entities. Each entity can have a group of flat field data attached to it, such as names, dates, amounts.
Any entity can be related to any other entity. For example, employees can be related to projects, which can be related to clients and contracts. The user may configure their own new types of relationships between distinct applications to build an interconnected web of data. Data stored in a database in this manner is referred to as being stored according to an entity-relationship model in this specification. These relationships can then be traversed when presenting reports, running workflows, and by other application features. The relationships are also traversed when practicing the ERAR arrangements.
Cloud Platform Construction
The design of the cloud platform is considered at the following levels: <ul id="ul0001" list-style="none"><li id="ul0001-0001" num="0000"><ul id="ul0002" list-style="none"><li id="ul0002-0001" num="0046">1. The physical infrastructure and the software processes that run on the infrastructure;</li><li id="ul0002-0002" num="0047">2. The functional software services;</li><li id="ul0002-0003" num="0048">3. Multi-tenancy and application hosting;</li><li id="ul0002-0004" num="0049">4. The logical structure of the entity-relationship database; and</li><li id="ul0002-0005" num="0050">5. Client-side code (This is software, such as an “app” installed on a device or downloaded to the device, such as a webpage, that communicates with the cloud platform remotely, such as via web services. The end user interacts with the cloud platform through the client-side code).</li></ul></li></ul>
Software Services Infrastructure
<figref idref="DRAWINGS">FIG. 1A</figref> is a schematic diagram illustrating the physical infrastructure <b>100</b> of a cloud platform <b>102</b> upon which the disclosed ERAR arrangements can be practiced. The cloud platform <b>102</b> is arranged in an N-tier architecture including a plurality of front end web servers <b>104</b>, a cache server <b>106</b>, and a database server <b>108</b>. The cloud platform <b>102</b> can receive web requests from users no using a user device such as their smartphone in, for example, by an application delivery controller (ACD) <b>112</b> that routes requests to the front-end web server <b>104</b>.
The database server <b>108</b> may be an SQL server that houses data, and the cache server no may store calculated results for fast access. The majority of the platform software resides on the front-end web servers <b>104</b>.
<figref idref="DRAWINGS">FIG. 1B</figref> is a block diagram of the front-end server <b>104</b> depicting a number of internal software modules <b>140</b> and external software module <b>130</b>, all of which are depicted as a single ERAR application <b>233</b> executing on the ERAR server <b>201</b> (see <figref idref="DRAWINGS">FIG. 2A</figref>). The external software modules <b>130</b> are modules exposed by the front-end servers <b>104</b> to support client-side (web browser) code, whereas the internal software modules <b>140</b> are configured to support various internal features.
The External software modules <b>130</b> may include an application management module <b>162</b> that enables the installation/removal/management of software applications, an expression editing module <b>163</b> that allows syntax checking for calculations that a user can enter when editing reports, and a connector module <b>164</b> that allows the cloud platform <b>102</b> to interoperate with other online systems by exposing a data communication API. A console module <b>165</b> for loading user interface elements such as navigation links and sections, and an entity information service <b>166</b> for reading and writing entity-relationship data for communication between the client-code no and the front-end web <b>104</b> may also be provided.
The external modules <b>130</b> may also include a report export module <b>167</b> that provides a tabular report to be converted into a CSV (comma separated variables) or Excel file, a CSV/Excel import module <b>168</b> that allows tabular data to be imported into the database <b>108</b> as entities, a file and image management module <b>169</b> that supports tracking and download of documents, files, and images for storing in the ER model, and a file upload module <b>170</b> that uploads files by breaking the files into multiple chunks, reassembling the chunks on the server <b>104</b>, and storing the files in the database <b>108</b>. The ER database <b>108</b> can be implemented as a single database, or alternately as a number of databases referred to as an ER database system. Other external modules may include a login module <b>171</b> for handling user login, authentication, lockout policy, password policy, encryption, etc., and a long running tasks module <b>172</b> for tracing a process that could potentially take a long time, such as importing a very large data set.
The external modules <b>130</b> further include a reports module <b>173</b> that allows database queries to be graphically constructed, a document templates module <b>174</b> that allows macro-style Word templates to drive automated document generation, a security module <b>175</b> (described hereinafter in more detail with reference to <figref idref="DRAWINGS">FIGS. 2A, 2B</figref>-<figref idref="DRAWINGS">FIG. 16</figref>) that allows access rules to be created and configured to control access to entities, a workflow module <b>176</b> that allows users to design business processes as flow charts, which can then be triggered when certain events are detected (such as if the user presses a certain button).
An edit form module <b>177</b> allows developers to build data entry forms, and present those forms to end users and an actions module <b>178</b> allows application developers to control the activities performed on entities, for example through a right-click context menu. The activities may include editing/deleting a resource, starting a workflow, or generating a document.
The external modules <b>140</b> include an event handler module <b>179</b> for logging and diagnostics and performing internal code activities when the changes are detected. The internal modules <b>140</b> include an entity module <b>180</b>, which represents the ER database, and a form layout module <b>181</b> for generating default edit forms from database schema objects. An entity request parsing module <b>182</b> is provided for accepting a request from the entity information service module and converting the text into an object structure for processing. Also included are an expression evaluation module <b>183</b> for performing the actual calculation process for calculations that have been entered into workflows or reports, an inter-process communications module <b>184</b> for allowing the front-end web servers <b>104</b> to communicate with each other (primarily to notify each other of data changes), and a report evaluation module <b>185</b> for converting reports into SQL database server queries, and formatting the results.
The internal modules <b>140</b> may further include an application and tenant management module <b>186</b> that supports application management, a monitoring module <b>187</b> that collects system diagnostics information, and a scheduling module <b>188</b> for scheduling activities (such as running a workflow) to occur at certain times. An access control module <b>189</b> may also be provided to implement and enforce internal security rules. Other internal modules <b>130</b> may include an audit log module <b>190</b> to detect and record security sensitive events, a workflow module <b>191</b> to implement the actual execution of a workflow, a strongly typed entities module <b>192</b> that allows an entity schema to be defined in XML and generates source code to allow programmers to program against those entities, and a cache infrastructure module <b>193</b> for caching internal server data, such as entity information, report results and so on.
In many cases, the software modules <b>130</b> and <b>140</b> may be interconnected with each other and may depend on each other. Moreover, although <figref idref="DRAWINGS">FIG. 1B</figref> clearly distinguishes between internal and external modules, that boundary may sometimes be fuzzy.
The database server <b>108</b> hosts multiple clients (tenants), each of whom can use the ERAR arrangements to secure information stored according to an entity-relationship model. Each storage area for each tenant can have different versions of different applications installed. Separate from the tenants, an application library hosts every available version of every available application. User data is also stored within the storage area associated with each tenant. <figref idref="DRAWINGS">FIG. 1C</figref> depicts a block diagram of an exemplary database server <b>108</b>, including storage areas <b>150</b>, <b>152</b>, and <b>154</b> for three tenants and an application library <b>160</b>.
A single set of database tables holds all entity-relationship data for all tenants.
All user data is represented as entities and relationships, as described above. Additionally, all application components are stored in the entity-relationship database. For example, a report may have columns and filters and formatting rules. These are all stored as entities, and a report is connected to its columns, its filters, data source, and so on with relationships.
Moreover, the schema (or metadata) about the application is also stored using entities and relationships. The types of entities that are possible, the fields that they may possess, the relationship types that are defined, and rules for validating input are all stored using entities and relationships.
This unique structure according to the disclosed ERAR arrangements means that all software modules developed to power the cloud platform <b>102</b> equally enrich the user's web-based applications, and vice versa. A system that operates or interacts with application data (e.g. form layout, reports) can also be used to interact with customer data and vice versa. For example, a security system, such as that described in the ERAR arrangements, can apply to both application data and customer data. A data import mechanism can import customer data along with forms, reports or anything that an application developer needs.
As described previously, the above systems run on the cloud platform <b>102</b>. Additionally, a body of code (a software client) is sent to and runs on the user's web browser <b>333</b> (see <figref idref="DRAWINGS">FIG. 3A</figref>). This code is configured to provide a user interface for the dynamically generated applications. For application developers, this code can also support application building.
According to one ERAR arrangements, the software client is structured as a single page application (SPA), whereby all code is loaded up front, and communication only goes back to the cloud platform <b>102</b> to fetch or modify data.
<figref idref="DRAWINGS">FIGS. 2A and 2B</figref> depict a general-purpose computer system <b>200</b>, upon which the various arrangements described can be practiced. For example, the computer system may form one or more of the servers <b>104</b> shown in <figref idref="DRAWINGS">FIG. 1A</figref>. As a further example, the computer system may be a personal PC or desktop computer operated by a user of the system.
As seen in <figref idref="DRAWINGS">FIG. 2A</figref>, the computer system <b>200</b> includes: a computer module <b>201</b>; input devices such as a keyboard <b>202</b>, a mouse pointer device <b>203</b>, a scanner <b>226</b>, a camera <b>227</b>, and a microphone <b>280</b>; and output devices including a printer <b>215</b>, a display device <b>214</b> and loudspeakers <b>217</b>. An external Modulator-Demodulator (Modem) transceiver device <b>216</b> may be used by the computer module <b>201</b> for communicating to and from a communications network <b>220</b> via a connection <b>221</b>. The communications network <b>220</b> may be a wide-area network (WAN), such as the Internet, a cellular telecommunications network, or a private WAN. Where the connection <b>221</b> is a telephone line, the modem <b>216</b> may be a traditional “dial-up” modem. Alternatively, where the connection <b>221</b> is a high capacity (e.g., cable) connection, the modem <b>216</b> may be a broadband modem. A wireless modem may also be used for wireless connection to the communications network <b>220</b>.
The computer module <b>201</b> typically includes at least one processor unit <b>205</b>, and a memory unit <b>206</b>. For example, the memory unit <b>206</b> may have semiconductor random access memory (RAM) and semiconductor read only memory (ROM). The computer module <b>201</b> also includes an number of input/output (I/O) interfaces including: an audio-video interface <b>207</b> that couples to the video display <b>214</b>, loudspeakers <b>217</b> and microphone <b>280</b>; an I/O interface <b>213</b> that couples to the keyboard <b>202</b>, mouse <b>203</b>, scanner <b>226</b>, camera <b>227</b> and optionally a joystick or other human interface device (not illustrated); and an interface <b>208</b> for the external modem <b>216</b> and printer <b>215</b>. In some implementations, the modem <b>216</b> may be incorporated within the computer module <b>201</b>, for example within the interface <b>208</b>. The computer module <b>201</b> also has a local network interface <b>211</b>, which permits coupling of the computer system <b>200</b> via a connection <b>223</b> to a local-area communications network <b>222</b>, known as a Local Area Network (LAN). As illustrated in <figref idref="DRAWINGS">FIG. 2A</figref>, the local communications network <b>222</b> may also couple to the wide network <b>220</b> via a connection <b>224</b>, which would typically include a so-called “firewall” device or device of similar functionality. The local network interface <b>211</b> may comprise an Ethernet circuit card, a Bluetooth® wireless arrangement or an IEEE 802.11 wireless arrangement; however, numerous other types of interfaces may be practiced for the interface <b>211</b>.
The I/O interfaces <b>208</b> and <b>213</b> may afford either or both of serial and parallel connectivity, the former typically being implemented according to the Universal Serial Bus (USB) standards and having corresponding USB connectors (not illustrated). Storage devices <b>209</b> are provided and typically include a hard disk drive (HDD) <b>210</b>. Other storage devices such as a floppy disk drive and a magnetic tape drive (not illustrated) may also be used. An optical disk drive <b>212</b> is typically provided to act as a non-volatile source of data. Portable memory devices, such optical disks (e.g., CD-ROM, DVD, Blu ray Disc™), USB-RAM, portable, external hard drives, and floppy disks, for example, may be used as appropriate sources of data to the system <b>200</b>.
The components <b>205</b> to <b>213</b> of the computer module <b>201</b> typically communicate via an interconnected bus <b>204</b> and in a manner that results in a conventional mode of operation of the computer system <b>200</b> known to those in the relevant art. For example, the processor <b>205</b> is coupled to the system bus <b>204</b> using a connection <b>218</b>. Likewise, the memory <b>206</b> and optical disk drive <b>212</b> are coupled to the system bus <b>204</b> by connections <b>219</b>. Examples of computers on which the described arrangements can be practiced include IBM-PC's and compatibles, Sun Sparcstations, Apple Mac™ or like computer systems.
The method of securing an entity-relationship system may be implemented using the computer system <b>200</b> wherein the processes of <figref idref="DRAWINGS">FIGS. 4-16</figref>, to be described, may be implemented as one or more software application programs <b>233</b> executable within the computer system <b>200</b>. In particular, the steps of the method of securing an entity-relationship system are effected by instructions <b>231</b> (see <figref idref="DRAWINGS">FIG. 2B</figref>) in the software <b>233</b> that are carried out within the computer system <b>200</b>. The software instructions <b>231</b> may be formed as one or more code modules, each for performing one or more particular tasks. The software may also be divided into two separate parts, in which a first part and the corresponding code modules performs the securing an entity-relationship system methods and a second part and the corresponding code modules manage a user interface between the first part and the user.
The software may be stored in a computer readable medium, including the storage devices described below, for example. The software is loaded into the computer system <b>200</b> from the computer readable medium, and then executed by the computer system <b>200</b>. A computer readable medium having such software or computer program recorded on the computer readable medium is a computer program product. The use of the computer program product in the computer system <b>200</b> preferably effects an advantageous apparatus for securing an entity-relationship system.
The software <b>233</b> is typically stored in the HDD <b>210</b> or the memory <b>206</b>. The software is loaded into the computer system <b>200</b> from a computer readable medium, and executed by the computer system <b>200</b>. Thus, for example, the software <b>233</b> may be stored on an optically readable disk storage medium (e.g., CD-ROM) <b>225</b> that is read by the optical disk drive <b>212</b>. A computer readable medium having such software or computer program recorded on it is a computer program product. The use of the computer program product in the computer system <b>200</b> preferably effects an apparatus for securing an entity-relationship system.
In some instances, the application programs <b>233</b> may be supplied to the user encoded on one or more CD-ROMs <b>225</b> and read via the corresponding drive <b>212</b>, or alternatively may be read by the user from the networks <b>220</b> or <b>222</b>. Still further, the software can also be loaded into the computer system <b>200</b> from other computer readable media. Computer readable storage media refers to any non-transitory tangible storage medium that provides recorded instructions and/or data to the computer system <b>200</b> for execution and/or processing. Examples of such storage media include floppy disks, magnetic tape, CD-ROM, DVD, Blu-Ray™ Disc, a hard disk drive, a ROM or integrated circuit, USB memory, a magneto-optical disk, or a computer readable card such as a PCMCIA card and the like, whether or not such devices are internal or external of the computer module <b>201</b>. Examples of transitory or non-tangible computer readable transmission media that may also participate in the provision of software, application programs, instructions and/or data to the computer module <b>201</b> include radio or infra-red transmission channels as well as a network connection to another computer or networked device, and the Internet or Intranets including e-mail transmissions and information recorded on Websites and the like.
The second part of the application programs <b>233</b> and the corresponding code modules mentioned above may be executed to implement one or more graphical user interfaces (GUIs) to be rendered or otherwise represented upon the display <b>214</b>. Through manipulation of typically the keyboard <b>202</b> and the mouse <b>203</b>, a user of the computer system <b>200</b> and the application may manipulate the interface in a functionally adaptable manner to provide controlling commands and/or input to the applications associated with the GUI(s). Other forms of functionally adaptable user interfaces may also be implemented, such as an audio interface utilizing speech prompts output via the loudspeakers <b>217</b> and user voice commands input via the microphone <b>280</b>.
<figref idref="DRAWINGS">FIG. 2B</figref> is a detailed schematic block diagram of the processor <b>205</b> and a “memory” <b>234</b>. The memory <b>234</b> represents a logical aggregation of all the memory modules (including the HDD <b>209</b> and semiconductor memory <b>206</b>) that can be accessed by the computer module <b>201</b> in <figref idref="DRAWINGS">FIG. 2A</figref>.
When the computer module <b>201</b> is initially powered up, a power-on self-test (POST) program <b>250</b> executes. The POST program <b>250</b> is typically stored in a ROM <b>249</b> of the semiconductor memory <b>206</b> of <figref idref="DRAWINGS">FIG. 2A</figref>. A hardware device such as the ROM <b>249</b> storing software is sometimes referred to as firmware. The POST program <b>250</b> examines hardware within the computer module <b>201</b> to ensure proper functioning and typically checks the processor <b>205</b>, the memory <b>234</b> (<b>209</b>, <b>206</b>), and a basic input-output systems software (BIOS) module <b>251</b>, also typically stored in the ROM <b>249</b>, for correct operation. Once the POST program <b>250</b> has run successfully, the BIOS <b>251</b> activates the hard disk drive <b>210</b> of <figref idref="DRAWINGS">FIG. 2A</figref>. Activation of the hard disk drive <b>210</b> causes a bootstrap loader program <b>252</b> that is resident on the hard disk drive <b>210</b> to execute via the processor <b>205</b>. This loads an operating system <b>253</b> into the RAM memory <b>206</b>, upon which the operating system <b>253</b> commences operation. The operating system <b>253</b> is a system level application, executable by the processor <b>205</b>, to fulfil various high level functions, including processor management, memory management, device management, storage management, software application interface, and generic user interface.
The operating system <b>253</b> manages the memory <b>234</b> (<b>209</b>, <b>206</b>) to ensure that each process or application running on the computer module <b>201</b> has sufficient memory in which to execute without colliding with memory allocated to another process. Furthermore, the different types of memory available in the system <b>200</b> of <figref idref="DRAWINGS">FIG. 2A</figref> must be used properly so that each process can run effectively. Accordingly, the aggregated memory <b>234</b> is not intended to illustrate how particular segments of memory are allocated (unless otherwise stated), but rather to provide a general view of the memory accessible by the computer system <b>200</b> and how such is used.
As shown in <figref idref="DRAWINGS">FIG. 2B</figref>, the processor <b>205</b> includes a number of functional modules including a control unit <b>239</b>, an arithmetic logic unit (ALU) <b>240</b>, and a local or internal memory <b>248</b>, sometimes called a cache memory. The cache memory <b>248</b> typically includes a number of storage registers <b>244</b>-<b>246</b> in a register section. One or more internal busses <b>241</b> functionally interconnect these functional modules. The processor <b>205</b> typically also has one or more interfaces <b>242</b> for communicating with external devices via the system bus <b>204</b>, using a connection <b>218</b>. The memory <b>234</b> is coupled to the bus <b>204</b> using a connection <b>219</b>.
The application program <b>233</b> includes a sequence of instructions <b>231</b> that may include conditional branch and loop instructions. The program <b>233</b> may also include data <b>232</b> which is used in execution of the program <b>233</b>. The instructions <b>231</b> and the data <b>232</b> are stored in memory locations <b>228</b>, <b>229</b>, <b>230</b> and <b>235</b>, <b>236</b>, <b>237</b>, respectively. Depending upon the relative size of the instructions <b>231</b> and the memory locations <b>228</b>-<b>230</b>, a particular instruction may be stored in a single memory location as depicted by the instruction shown in the memory location <b>230</b>. Alternately, an instruction may be segmented into a number of parts each of which is stored in a separate memory location, as depicted by the instruction segments shown in the memory locations <b>228</b> and <b>229</b>.
In general, the processor <b>205</b> is given a set of instructions which are executed therein. The processor <b>205</b> waits for a subsequent input, to which the processor <b>205</b> reacts to by executing another set of instructions. Each input may be provided from one or more of a number of sources, including data generated by one or more of the input devices <b>202</b>, <b>203</b>, data received from an external source across one of the networks <b>220</b>, <b>202</b>, data retrieved from one of the storage devices <b>206</b>, <b>209</b> or data retrieved from a storage medium <b>225</b> inserted into the corresponding reader <b>212</b>, all depicted in <figref idref="DRAWINGS">FIG. 2A</figref>. The execution of a set of the instructions may in some cases result in output of data. Execution may also involve storing data or variables to the memory <b>234</b>.
The disclosed securing of an entity-relationship system arrangements use input variables <b>254</b>, which are stored in the memory <b>234</b> in corresponding memory locations <b>255</b>, <b>256</b>, <b>257</b>. The described arrangements produce output variables <b>261</b>, which are stored in the memory <b>234</b> in corresponding memory locations <b>262</b>, <b>263</b>, <b>264</b>. Intermediate variables <b>258</b> may be stored in memory locations <b>259</b>, <b>260</b>, <b>266</b> and <b>267</b>.
Referring to the processor <b>205</b> of <figref idref="DRAWINGS">FIG. 2B</figref>, the registers <b>244</b>, <b>245</b>, <b>246</b>, the arithmetic logic unit (ALU) <b>240</b>, and the control unit <b>239</b> work together to perform sequences of micro-operations needed to perform “fetch, decode, and execute” cycles for every instruction in the instruction set making up the program <b>233</b>. Each fetch, decode, and execute cycle comprises:
a fetch operation, which fetches or reads an instruction <b>231</b> from a memory location <b>228</b>, <b>229</b>, <b>230</b>;
a decode operation in which the control unit <b>239</b> determines which instruction has been fetched; and
an execute operation in which the control unit <b>239</b> and/or the ALU <b>240</b> execute the instruction.
Thereafter, a further fetch, decode, and execute cycle for the next instruction may be executed. Similarly, a store cycle may be performed by which the control unit <b>239</b> stores or writes a value to a memory location <b>232</b>.
Each step or sub-process in the processes of <figref idref="DRAWINGS">FIGS. 4-16</figref> is associated with one or more segments of the program <b>233</b> and is performed by the register section <b>244</b>, <b>245</b>, <b>247</b>, the ALU <b>240</b>, and the control unit <b>239</b> in the processor <b>205</b> working together to perform the fetch, decode, and execute cycles for every instruction in the instruction set for the noted segments of the program <b>233</b>.
The method of securing an entity-relationship system may alternatively be implemented in dedicated hardware such as one or more integrated circuits performing the functions or sub functions of securing an entity-relationship system. Such dedicated hardware may include graphic processors, digital signal processors, or one or more microprocessors and associated memories.
<figref idref="DRAWINGS">FIGS. 3A and 3B</figref> collectively form a schematic block diagram of a general purpose electronic device <b>301</b> including embedded components, upon which the securing an entity-relationship system methods to be described are desirably practiced. The electronic device <b>301</b> may be, for example, a mobile phone or smartphone <b>111</b>, a portable media player or a digital camera, in which processing resources are limited. Nevertheless, the methods to be described may also be performed on higher-level devices such as desktop computers, server computers, and other such devices with significantly larger processing resources.
As seen in <figref idref="DRAWINGS">FIG. 3A</figref>, the electronic device <b>301</b> comprises an embedded controller <b>302</b>. Accordingly, the electronic device <b>301</b> may be referred to as an “embedded device.” In the present example, the controller <b>302</b> has a processing unit (or processor) <b>305</b> which is bi-directionally coupled to an internal storage module <b>309</b>. The storage module <b>309</b> may be formed from non-volatile semiconductor read only memory (ROM) <b>360</b> and semiconductor random access memory (RAM) <b>370</b>, as seen in <figref idref="DRAWINGS">FIG. 3B</figref>. The RAM <b>370</b> may be volatile, non-volatile or a combination of volatile and non-volatile memory.
The electronic device <b>301</b> includes a display controller <b>307</b>, which is connected to a video display <b>314</b>, such as a liquid crystal display (LCD) panel or the like. The display controller <b>307</b> is configured for displaying graphical images on the video display <b>314</b> in accordance with instructions received from the embedded controller <b>302</b>, to which the display controller <b>307</b> is connected.
The electronic device <b>301</b> also includes user input devices <b>313</b> which are typically formed by keys, a keypad or like controls. In some implementations, the user input devices <b>313</b> may include a touch sensitive panel physically associated with the display <b>314</b> to collectively form a touch-screen. Such a touch-screen may thus operate as one form of graphical user interface (GUI) as opposed to a prompt or menu driven GUI typically used with keypad-display combinations. Other forms of user input devices may also be used, such as a microphone (not illustrated) for voice commands or a joystick/thumb wheel (not illustrated) for ease of navigation about menus.
As seen in <figref idref="DRAWINGS">FIG. 3A</figref>, the electronic device <b>301</b> also comprises a portable memory interface <b>306</b>, which is coupled to the processor <b>305</b> via a connection <b>319</b>. The portable memory interface <b>306</b> allows a complementary portable memory device <b>325</b> to be coupled to the electronic device <b>301</b> to act as a source or destination of data or to supplement the internal storage module <b>309</b>. Examples of such interfaces permit coupling with portable memory devices such as Universal Serial Bus (USB) memory devices, Secure Digital (SD) cards, Personal Computer Memory Card International Association (PCMIA) cards, optical disks and magnetic disks.
The electronic device <b>301</b> also has a communications interface <b>308</b> to permit coupling of the device <b>301</b> to a computer or communications network <b>320</b> via a connection <b>321</b>. The connection <b>321</b> may be wired or wireless. For example, the connection <b>321</b> may be radio frequency or optical. An example of a wired connection includes Ethernet. Further, an example of wireless connection includes Bluetooth™ type local interconnection, Wi-Fi (including protocols based on the standards of the IEEE 802.11 family), Infrared Data Association (IrDa) and the like.
Typically, the electronic device <b>301</b> is configured to perform some special function. The embedded controller <b>302</b>, possibly in conjunction with further special function components <b>310</b>, is provided to perform that special function. For example, where the device <b>301</b> is a tablet or smartphone in, the component <b>310</b> may represent a specialized application for performing the ERAR methods described herein. The special function component <b>310</b> is connected to the embedded controller <b>302</b>. As another example, the device <b>301</b> may be a mobile telephone handset. In this instance, the components <b>310</b> may represent those components required for communications in a cellular telephone environment. Where the device <b>301</b> is a portable device, the special function components <b>310</b> may represent a number of encoders and decoders of a type including Joint Photographic Experts Group (JPEG), (Moving Picture Experts Group) MPEG, MPEG-1 Audio Layer 3 (MP3), and the like.
The ERAR methods described hereinafter may be implemented using the embedded controller <b>302</b>, where the processes of <figref idref="DRAWINGS">FIGS. 4-16</figref> may be implemented as one or more software application programs <b>333</b> (which can be implemented as a web browser executable within the embedded controller <b>302</b>. The electronic device <b>301</b> of <figref idref="DRAWINGS">FIG. 3A</figref> implements the described methods. In particular, with reference to <figref idref="DRAWINGS">FIG. 3B</figref>, the steps of the described methods are effected by instructions in the software <b>333</b> that are carried out within the controller <b>302</b>. The software instructions may be formed as one or more code modules, each for performing one or more particular tasks. The software may also be divided into two separate parts, in which a first part and the corresponding code modules performs the described methods and a second part and the corresponding code modules manage a user interface between the first part and the user.
The software <b>333</b> of the embedded controller <b>302</b> is typically stored in the non-volatile ROM <b>360</b> of the internal storage module <b>309</b>. The software <b>333</b> stored in the ROM <b>360</b> can be updated when required from a computer readable medium. The software <b>333</b> can be loaded into and executed by the processor <b>305</b>. In some instances, the processor <b>305</b> may execute software instructions that are located in RAM <b>370</b>. Software instructions may be loaded into the RAM <b>370</b> by the processor <b>305</b> initiating a copy of one or more code modules from ROM <b>360</b> into RAM <b>370</b>. Alternatively, the software instructions of one or more code modules may be pre-installed in a non-volatile region of RAM <b>370</b> by a manufacturer. After one or more code modules have been located in RAM <b>370</b>, the processor <b>305</b> may execute software instructions of the one or more code modules.
The application program <b>333</b> is typically pre-installed and stored in the ROM <b>360</b> by a manufacturer, prior to distribution of the electronic device <b>301</b>. However, in some instances, the application programs <b>333</b> may be supplied to the user encoded on one or more CD-ROM (not shown) and read via the portable memory interface <b>306</b> of <figref idref="DRAWINGS">FIG. 3A</figref> prior to storage in the internal storage module <b>309</b> or in the portable memory <b>325</b>. In another alternative, the software application program <b>333</b> may be read by the processor <b>305</b> from the network <b>320</b>, or loaded into the controller <b>302</b> or the portable storage medium <b>325</b> from other computer readable media. Computer readable storage media refers to any non-transitory tangible storage medium that participates in providing instructions and/or data to the controller <b>302</b> for execution and/or processing. Examples of such storage media include floppy disks, magnetic tape, CD-ROM, a hard disk drive, a ROM or integrated circuit, USB memory, a magneto-optical disk, flash memory, or a computer readable card such as a PCMCIA card and the like, whether or not such devices are internal or external of the device <b>301</b>. Examples of transitory or non-tangible computer readable transmission media that may also participate in the provision of software, application programs, instructions and/or data to the device <b>301</b> include radio or infra-red transmission channels as well as a network connection to another computer or networked device, and the Internet or Intranets including e-mail transmissions and information recorded on Websites and the like. A computer readable medium having such software or computer program recorded on it is a computer program product.
The second part of the application programs <b>333</b> and the corresponding code modules mentioned above may be executed to implement one or more graphical user interfaces (GUIs) to be rendered or otherwise represented upon the display <b>314</b> of <figref idref="DRAWINGS">FIG. 3A</figref>. Through manipulation of the user input device <b>313</b> (e.g., the keypad), a user of the device <b>301</b> and the application programs <b>333</b> may manipulate the interface in a functionally adaptable manner to provide controlling commands and/or input to the applications associated with the GUI(s). Other forms of functionally adaptable user interfaces may also be implemented, such as an audio interface utilizing speech prompts output via loudspeakers (not illustrated) and user voice commands input via the microphone (not illustrated).
<figref idref="DRAWINGS">FIG. 3B</figref> illustrates in detail the embedded controller <b>302</b> having the processor <b>305</b> for executing the application programs <b>333</b> and the internal storage <b>309</b>. The internal storage <b>309</b> comprises read only memory (ROM) <b>360</b> and random access memory (RAM) <b>370</b>. The processor <b>305</b> is able to execute the application programs <b>333</b> stored in one or both of the connected memories <b>360</b> and <b>370</b>. When the electronic device <b>301</b> is initially powered up, a system program resident in the ROM <b>360</b> is executed. The application program <b>333</b> permanently stored in the ROM <b>360</b> is sometimes referred to as “firmware”. Execution of the firmware by the processor <b>305</b> may fulfil various functions, including processor management, memory management, device management, storage management and user interface.
The processor <b>305</b> typically includes a number of functional modules including a control unit (CU) <b>351</b>, an arithmetic logic unit (ALU) <b>352</b>, a digital signal processor (DSP) <b>353</b> and a local or internal memory comprising a set of registers <b>354</b> which typically contain atomic data elements <b>356</b>, <b>357</b>, along with internal buffer or cache memory <b>355</b>. One or more internal buses <b>359</b> interconnect these functional modules. The processor <b>305</b> typically also has one or more interfaces <b>358</b> for communicating with external devices via system bus <b>381</b>, using a connection <b>361</b>.
The application program <b>333</b> includes a sequence of instructions <b>362</b> through <b>363</b> that may include conditional branch and loop instructions. The program <b>333</b> may also include data, which is used in execution of the program <b>333</b>. This data may be stored as part of the instruction or in a separate location <b>364</b> within the ROM <b>360</b> or RAM <b>370</b>.
In general, the processor <b>305</b> is given a set of instructions, which are executed therein. This set of instructions may be organized into blocks, which perform specific tasks or handle specific events that occur in the electronic device <b>301</b>. Typically, the application program <b>333</b> waits for events and subsequently executes the block of code associated with that event. Events may be triggered in response to input from a user, via the user input devices <b>313</b> of <figref idref="DRAWINGS">FIG. 3A</figref>, as detected by the processor <b>305</b>. Events may also be triggered in response to other sensors and interfaces in the electronic device <b>301</b>.
The execution of a set of the instructions may require numeric variables to be read and modified. Such numeric variables are stored in the RAM <b>370</b>. The disclosed method uses input variables <b>371</b> that are stored in known locations <b>372</b>, <b>373</b> in the memory <b>370</b>. The input variables <b>371</b> are processed to produce output variables <b>377</b> that are stored in known locations <b>378</b>, <b>379</b> in the memory <b>370</b>. Intermediate variables <b>374</b> may be stored in additional memory locations in locations <b>375</b>, <b>376</b> of the memory <b>370</b>. Alternatively, some intermediate variables may only exist in the registers <b>354</b> of the processor <b>305</b>.
The execution of a sequence of instructions is achieved in the processor <b>305</b> by repeated application of a fetch-execute cycle. The control unit <b>351</b> of the processor <b>305</b> maintains a register called the program counter, which contains the address in ROM <b>360</b> or RAM <b>370</b> of the next instruction to be executed. At the start of the fetch execute cycle, the contents of the memory address indexed by the program counter is loaded into the control unit <b>351</b>. The instruction thus loaded controls the subsequent operation of the processor <b>305</b>, causing for example, data to be loaded from ROM memory <b>360</b> into processor registers <b>354</b>, the contents of a register to be arithmetically combined with the contents of another register, the contents of a register to be written to the location stored in another register and so on. At the end of the fetch execute cycle the program counter is updated to point to the next instruction in the system program code. Depending on the instruction just executed this may involve incrementing the address contained in the program counter or loading the program counter with a new address in order to achieve a branch operation.
Each step or sub-process in the processes of the ERAR methods described below is associated with one or more segments of the application program <b>333</b>, and is performed by repeated execution of a fetch-execute cycle in the processor <b>305</b> or similar programmatic operation of other independent processor blocks in the electronic device <b>301</b>.
Access Control
The inventors have realized that security is part of the business rules and business processes that characterize a business, and should not be regarded as being something separate. Security should thus be expressed in terms of information already stored within the model or system and should preferably be couched in terms that non-technical users can understand.
Accordingly, the ERAR arrangements embeds security in the form of “Access Rules” within the entity-relationship database system being secured, wherein the access rules themselves are also in the form of entities and associated relationships according to the entity-relationship model (described hereinafter in more detail in APPENDIX 1).
There are two aspects to securing entity-relationship data according to the disclosed ERAR arrangements, namely (i) defining access by specifying one or more access rules (described hereinafter in more detail with reference to <figref idref="DRAWINGS">FIG. 15</figref>), and (ii) limiting access by performing appropriate access checks when a user attempts to access the entity-relationship data (described hereinafter in more detail with reference to <figref idref="DRAWINGS">FIG. 14</figref>).
Specification of Access Rules
All data in the disclosed ERAR arrangements is modelled in the form of entities and associated relationships as depicted, for example, in the entity-relationship model in <figref idref="DRAWINGS">FIG. 5</figref>. For example, students, classes, teachers, and schools, as well as employees, projects, clients, contracts, and risks, are all entities. Each entity can have a group of flat field data attached to it, such as names, dates, amounts.
Each user in the disclosed ERAR system is represented by a “User Account” entity. Users can be grouped into roles, represented by “User Role” entities, and roles can be nested. Special roles may exist, such as “Everyone” that includes all users in the system automatically.
“Inheritance”, described hereinafter in more detail with reference to <figref idref="DRAWINGS">FIG. 16</figref>, enables attributes to be shared between entities such that a subclass of entities inherits attributes from its parent class of entities.
<figref idref="DRAWINGS">FIG. 16</figref> depicts inheritance of properties in a hierarchy of entities. It is noted that empty arrows always point from the derived/child/sub type to the base/parent/super type. A person entity <b>2101</b> has properties as depicted, i.e., BirthDate, FirstName, LastName and PersonID. A contact entity <b>2104</b> has all the aforementioned properties of the person entity <b>2101</b> (i.e. the contact entity <b>2104</b> inherits the properties of the person entity <b>2101</b>, as depicted by the empty arrow head <b>2106</b>) and has additional properties EmailAddress and Phone. An employee entity <b>2102</b> inherits the properties of the person entity <b>2101</b>, and has additional properties HireDate, JobTitle and Salary. “Employee” entities are of type “Person”. All employees are people but not vice versa. For example, in <figref idref="DRAWINGS">FIG. 4</figref>, “User Account” entities and “User Role” entities both inherit from “Subject”. All user accounts are subjects but not vice versa. In <figref idref="DRAWINGS">FIG. 16</figref>, “Employee” entities are of type “Person”.
By default, users cannot see, modify, create or delete any entities unless granted access by an “Access Rule”. An administrator can define Access Rules such as <b>500</b> that grant or allow access to entities. That is to say, the system is additive. Each new access rule provides additional access. Access rules do not revoke access provided by other access rules.
<figref idref="DRAWINGS">FIG. 14</figref> is a flow chart depicting an example of a process <b>1900</b> showing how a user can access an entity-relationship system according to the ERAR arrangements. The process <b>1900</b>, performed by one or both of the processors <b>205</b> and <b>305</b> respectively executing the ERAR software applications <b>233</b> and <b>333</b> commences with a start step <b>1901</b> at the user device <b>111</b> after which a decision step <b>1902</b> determines if a user no wishes to access the secured database system <b>108</b> (the user no would typically indicate a desire to access the database via keystrokes to a keypad <b>313</b> of his smartphone). If this is not the case, the process <b>1900</b> follows a NO arrow back to the step <b>1902</b> until such time that the user wishes to access the secured database. If however the user no does wish to access the secured database system <b>108</b>, then the process <b>1900</b> follows a YES arrow to a step <b>1903</b>, in which the ERAR system determines if the user wishes to create or modify an entity in the database <b>108</b>. The user no would typically indicate a desire to create or modify an entity in the database via keystrokes to a keypad <b>313</b> of his smartphone. If a create access is required, then the process <b>1900</b> follows a “create” arrow to a step <b>1904</b> which performs the “create check” process as depicted in <figref idref="DRAWINGS">FIGS. 6, 7</figref>. If a “non-create” access is required, then the process <b>1900</b> follows a “non-create” arrow to a step <b>1905</b> which performs the “non-create check” process as depicted in <figref idref="DRAWINGS">FIGS. 8, 9</figref>. The process <b>1900</b> is directed from the steps <b>1904</b>, <b>1905</b> to a step <b>1906</b> in which the ERAR system determines if the aforementioned checks are OK. If this is the case, the process <b>1900</b> is directed to a step <b>1907</b> in which the ERAR system provides the user with permission to access the database <b>108</b>. If however the check at the step <b>1906</b> is not OK, then the process <b>1900</b> is directed to a step <b>1908</b> in which the ERAR system denies the user permission to access the database <b>108</b>. From the steps <b>1907</b>, <b>1908</b> the process <b>1900</b> is directed to a STOP step <b>1909</b>.
<figref idref="DRAWINGS">FIG. 15</figref> is a flow chart of a process <b>2000</b> depicting how an access rule is specified. Following a start step <b>2001</b>, an Administrator or an Application Builder receives, in a step <b>2002</b>, business requirements relating to security of the relevant data (described hereinafter in more detail with reference to an example depicted in <figref idref="DRAWINGS">FIG. 5</figref>). Thereafter, in a step <b>2003</b> the administrator creates access rules (such as <b>500</b> which is described hereinafter in more detail with reference to an example depicted in <figref idref="DRAWINGS">FIG. 4</figref>) and stores the access rules in the ER database system <b>108</b> according to the entity-relationship model. The process <b>2000</b> is then directed to an End step <b>2004</b>.
<figref idref="DRAWINGS">FIG. 4</figref> is an example of an Entity-Relationship (ER) diagram schema, and depicts entities and relationships in an example of the access rule <b>500</b>. It is noted, for example, that “User Account” entities and “User Role” entities are both types of “Subject”. All user accounts are subjects but not vice versa. The boxes such as <b>501</b> show entities. Arrows such as <b>502</b> show relationships. Arrows with empty triangles such as <b>503</b> show inheritance as described with reference to <figref idref="DRAWINGS">FIG. 16</figref>. The access rule <b>500</b> has the following parts: <ul id="ul0003" list-style="none"><li id="ul0003-0001" num="0000"><ul id="ul0004" list-style="none"><li id="ul0004-0001" num="0121">1. A subject <b>501</b> (such as a user, a group of users/role, device, program or anything that can interact with the entity-relationship system) to which the rule <b>500</b> applies</li><li id="ul0004-0002" num="0122">2. The subject <b>501</b> may be a user account <b>521</b> or a user role <b>511</b>, although other types may be added, such as a service or device;</li><li id="ul0004-0003" num="0123">3. A user can be in a role <b>511</b>;</li><li id="ul0004-0004" num="0124">4. Roles can be nested by relating to other included roles (as depicted by a reference numeral <b>522</b>);</li><li id="ul0004-0005" num="0125">5. A relationship <b>502</b> linking the subject <b>501</b> to the access rule entity <b>505</b>;</li><li id="ul0004-0006" num="0126">6. A relationship <b>513</b> linking the access rule entity <b>505</b> to the securable entity <b>506</b> it secures;</li><li id="ul0004-0007" num="0127">7. Securable entities may be either type entities <b>509</b> or field entities <b>510</b>, although other entities may be added, such as relationships;</li><li id="ul0004-0008" num="0128">8. A relationship <b>515</b> linking the access rule entity <b>505</b> to one or more permission entities <b>507</b>.</li><li id="ul0004-0009" num="0129">9. The permissions <b>507</b> or operations which the rule <b>500</b> allows (these permissions or operations can be one or more of “read” (i.e. see), “modify”, “delete” or “create”);</li><li id="ul0004-0010" num="0130">10. A relationship <b>521</b> linking the Access Rule entity <b>505</b> to a Report <b>508</b>;</li><li id="ul0004-0011" num="0131">11. The report <b>508</b> whose filter defines a subset of entities to which the rule <b>500</b> grants access (this is ignored for create access, because users can either create an entity of the given type or not).</li></ul></li></ul>
The report <b>508</b> (described hereinafter in more detail in Appendix A), is capable of returning a list of entities of a particular type that match some filtering condition. The filtering may be based conditions or calculated that make use of the field data on the entities themselves, or related entities. The reports may also filter entities based on their relationships to the current accessor.
Thus, for example, as described hereinafter in more detail with reference to <figref idref="DRAWINGS">FIG. 5</figref>, an access rule such as allow students to see details of students in their class would have the following: <ul id="ul0005" list-style="none"><li id="ul0005-0001" num="0000"><ul id="ul0006" list-style="none"><li id="ul0006-0001" num="0134">1. Subject <b>501</b>: The user or a role the user is in (The subject is the user or role that has access, not what access is being granted to. This can be thought of as subject (Subject)-verb (Permission)-object (Securable entity), as is the case in an English sentence.);</li><li id="ul0006-0002" num="0135">2. Entity type <b>509</b>: Student;</li><li id="ul0006-0003" num="0136">3. Permissions <b>507</b>: Read; and</li><li id="ul0006-0004" num="0137">4. Report <b>508</b>: A report that lists all students whose class contains the viewing student. That is to say, all students that are in the same class as the viewing student.</li></ul></li></ul>
<figref idref="DRAWINGS">FIG. 5</figref> depicts entities and relationships in a school example <b>600</b>. The example contains a “Student” entity type <b>601</b>, a “Class” entity type <b>602</b>, a “Teacher” entity type <b>603</b> and a “School” entity type <b>604</b>. Students can have a relationship to Classes, representing the students enrolled in the class. Teachers can have a relationship to the Class, representing subjects they teach. Schools can have a relationship to the class, indicating that school provides or runs that class. Entity-relationship schema diagrams as depicted in <figref idref="DRAWINGS">FIG. 5</figref> do not show single entities or single instances of relations. Rather, they show entity sets (i.e. all entities of the same entity type) and relationship sets (i.e. all relationships of the same relationship type). Thus, a particular student is an entity. However the collection of all students (<b>601</b>) in the collection of all classes (<b>602</b>) is an entity set. The “In” relationship between a particular student and her class is a single relationship. However the set <b>605</b> of all such student-class relationships in a database is a relationship set. ER schema diagrams depict entity types and relationship types. For example, Student <b>601</b> refers the student type. This means students (entities of type Student <b>601</b>) can be enrolled in (<b>605</b>) a class (<b>602</b>). There may be student instances that are not in a class or classes without students. Cardinality also comes into play. A class may have multiple students and a student may have multiple classes.
As foreshadowed above, an access rules like “Allow students to see (read) details of students in their class” would be configured as follows: <ul id="ul0007" list-style="none"><li id="ul0007-0001" num="0000"><ul id="ul0008" list-style="none"><li id="ul0008-0001" num="0140">1. A subject <b>501</b>, specifically a role containing all students. The user and role entities are shared between different access rules.</li><li id="ul0008-0002" num="0141">2. A relationship <b>502</b> between the above role and an access rule entity <b>505</b>.</li><li id="ul0008-0003" num="0142">3. A relationship <b>513</b> from the access rule <b>505</b> to a securable entity, specifically the Student entity type <b>509</b>.</li><li id="ul0008-0004" num="0143">4. A relationship <b>515</b> from the access rule <b>505</b> to the permissions <b>507</b> applicable to the access rule, specifically read. Permission entities are shared between different access rules.</li><li id="ul0008-0005" num="0144">5. A relationship <b>521</b> from the access rule <b>505</b> to a report <b>508</b>, which lists all students whose class contains the viewing student.</li></ul></li></ul>
It is possible to create access rules like “Allow teachers to see (read) and modify details of students in their school”. The access rule would be configured as follows: <ul id="ul0009" list-style="none"><li id="ul0009-0001" num="0000"><ul id="ul0010" list-style="none"><li id="ul0010-0001" num="0146">1. A subject <b>501</b>, specifically a role containing all teachers. The user and role entities are shared between different access rules.</li><li id="ul0010-0002" num="0147">2. A relationship <b>502</b> between the above role and an access rule entity <b>505</b>.</li><li id="ul0010-0003" num="0148">3. A relationship <b>513</b> from the access rule <b>505</b> to a securable entity, specifically the Student entity type <b>509</b>.</li><li id="ul0010-0004" num="0149">4. A relationship <b>515</b> from the access rule <b>505</b> to the permissions <b>507</b> applicable to the access rule, specifically read and modify. Permission entities are shared between different access rules.</li><li id="ul0010-0005" num="0150">5. A relationship <b>521</b> from the access rule <b>505</b> to a report <b>508</b>, lists all students in classes that are run by the school that runs classes where the class's teacher is the viewing teacher.</li></ul></li></ul>
While the second example may sound complicated, it is quite common in more complex examples. It also allows a single access rule to control access by every teacher and avoid configuring access for each teacher individually. It means changing the entities or relationships, such as changing the classes a teacher teaches, transparently and automatically adjusts access. The report filter allows a path to be described between the resource being accessed and the subject that is requesting access. If that path is fulfilled by actual relationship instances, then access is granted.
The required access rule(s) for each entity-relationship model operation are set out in the following Table 1:
<tables id="TABLE-US-00001" num="00001"><table frame="none" colsep="0" rowsep="0" pgwide="1"><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="77pt" align="left" /><colspec colname="2" colwidth="252pt" align="left" /><thead><row><entry namest="1" nameend="2" rowsep="1">TABLE 1</entry></row><row><entry namest="1" nameend="2" align="center" rowsep="1" /></row><row><entry>Operation</entry><entry>Required Access Rule(s)</entry></row><row><entry namest="1" nameend="2" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry>Create Entity Type</entry><entry>A user has an access rule granting create access to the “entity</entry></row><row><entry /><entry>type” entity type. The “entity type” entity type is a special type,</entry></row><row><entry /><entry>effectively the type of a type.</entry></row><row><entry /><entry>For example, to create a new types, the user needs the</entry></row><row><entry /><entry>following access rule to have been created:</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="98pt" align="left" /><colspec colname="4" colwidth="126pt" align="left" /><tbody valign="top"><row><entry /><entry>1.</entry><entry>Subject 501:</entry><entry>The user or a role the user is in;</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="224pt" align="left" /><tbody valign="top"><row><entry /><entry>2.</entry><entry>Entity type 509: entity type;</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="98pt" align="left" /><colspec colname="4" colwidth="126pt" align="left" /><tbody valign="top"><row><entry /><entry>3.</entry><entry>Permissions 507:</entry><entry>create; and</entry></row><row><entry /><entry>4.</entry><entry>Report 508:</entry><entry>(Ignored for create operations)</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="77pt" align="left" /><colspec colname="2" colwidth="252pt" align="left" /><tbody valign="top"><row><entry>Create Field</entry><entry>A user has an access rule granting modify access to the “entity</entry></row><row><entry /><entry>type” type and that entity type needs to be returned in the</entry></row><row><entry /><entry>access rule's report.</entry></row><row><entry /><entry>For example, to add the “Age” field to student 601, the user</entry></row><row><entry /><entry>needs the following access rule to have been created:</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="98pt" align="left" /><colspec colname="4" colwidth="126pt" align="left" /><tbody valign="top"><row><entry /><entry>1.</entry><entry>Subject 501:</entry><entry>The user or a role the user is in;</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="224pt" align="left" /><tbody valign="top"><row><entry /><entry>2.</entry><entry>Entity type 509: student type;</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="98pt" align="left" /><colspec colname="4" colwidth="126pt" align="left" /><tbody valign="top"><row><entry /><entry>3.</entry><entry>Permissions 507:</entry><entry>modify; and</entry></row><row><entry /><entry>1.</entry><entry>Report 508:</entry><entry>A report that lists the types the</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="105pt" align="left" /><colspec colname="2" colwidth="224pt" align="left" /><tbody valign="top"><row><entry /><entry>subject can modify, including the student type.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="77pt" align="left" /><colspec colname="2" colwidth="252pt" align="left" /><tbody valign="top"><row><entry>Create Relationship</entry><entry>A user has an access rule granting create access to the</entry></row><row><entry>Type</entry><entry>“relationship” entity type. Like “entity type”, “relationship” is a</entry></row><row><entry /><entry>special type, effectively the type of a relationship.</entry></row><row><entry /><entry>For example, to create a relationship between a student 601 and</entry></row><row><entry /><entry>their school 604, the user needs the following access rule to</entry></row><row><entry /><entry>have been created:</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="98pt" align="left" /><colspec colname="4" colwidth="126pt" align="left" /><tbody valign="top"><row><entry /><entry>1.</entry><entry>Subject 501:</entry><entry>The user or a role the user is in;</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="224pt" align="left" /><tbody valign="top"><row><entry /><entry>2.</entry><entry>Entity type 509: relationship type;</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="98pt" align="left" /><colspec colname="4" colwidth="126pt" align="left" /><tbody valign="top"><row><entry /><entry>3.</entry><entry>Permissions 507:</entry><entry>create; and</entry></row><row><entry /><entry>4.</entry><entry>Report 508:</entry><entry>(Ignored for create operations)</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="77pt" align="left" /><colspec colname="2" colwidth="252pt" align="left" /><tbody valign="top"><row><entry>Create Entity</entry><entry>A user has an access rule granting create access to the entity</entry></row><row><entry /><entry>type of the entity being created.</entry></row><row><entry /><entry>For example, to create a student 601, the user needs the</entry></row><row><entry /><entry>following access rule to have been created:</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="98pt" align="left" /><colspec colname="4" colwidth="126pt" align="left" /><tbody valign="top"><row><entry /><entry>1.</entry><entry>Subject 501:</entry><entry>The user or a role the user is in;</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="224pt" align="left" /><tbody valign="top"><row><entry /><entry>2.</entry><entry>Entity type 509: student type 601;</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="98pt" align="left" /><colspec colname="4" colwidth="126pt" align="left" /><tbody valign="top"><row><entry /><entry>3.</entry><entry>Permissions 507:</entry><entry>create; and</entry></row><row><entry /><entry>4.</entry><entry>Report 508:</entry><entry>(Ignored for create operations)</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="77pt" align="left" /><colspec colname="2" colwidth="252pt" align="left" /><tbody valign="top"><row><entry>Delete Entity</entry><entry>A user has an access rule granting delete access to the entity</entry></row><row><entry /><entry>type of the entity being deleted and that entity is returned in the</entry></row><row><entry /><entry>access rule's report.</entry></row><row><entry /><entry>For example, to delete a student 601, the user needs the</entry></row><row><entry /><entry>following access rule to have been created:</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="98pt" align="left" /><colspec colname="4" colwidth="126pt" align="left" /><tbody valign="top"><row><entry /><entry>1.</entry><entry>Subject 501:</entry><entry>The user or a role the user is in;</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="224pt" align="left" /><tbody valign="top"><row><entry /><entry>2.</entry><entry>Entity type 509: student type 601;</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="98pt" align="left" /><colspec colname="4" colwidth="126pt" align="left" /><tbody valign="top"><row><entry /><entry>3.</entry><entry>Permissions 507:</entry><entry>delete; and</entry></row><row><entry /><entry>4.</entry><entry>Report 508:</entry><entry>A report that lists the students</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="105pt" align="left" /><colspec colname="2" colwidth="224pt" align="left" /><tbody valign="top"><row><entry /><entry>the subject can delete.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="77pt" align="left" /><colspec colname="2" colwidth="252pt" align="left" /><tbody valign="top"><row><entry>Set Entity Field</entry><entry>A user has an access rule granting modify access to the entity</entry></row><row><entry /><entry>the field is on and that entity is returned in the access rule's</entry></row><row><entry /><entry>report.</entry></row><row><entry /><entry>For example, to rename a student 601, the user needs the</entry></row><row><entry /><entry>following access rule to have been created:</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="98pt" align="left" /><colspec colname="4" colwidth="126pt" align="left" /><tbody valign="top"><row><entry /><entry>1.</entry><entry>Subject 501:</entry><entry>The user or a role the user is in;</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="224pt" align="left" /><tbody valign="top"><row><entry /><entry>2.</entry><entry>Entity type 509: student type 601;</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="98pt" align="left" /><colspec colname="4" colwidth="126pt" align="left" /><tbody valign="top"><row><entry /><entry>3.</entry><entry>Permissions 507:</entry><entry>modify; and</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="77pt" align="left" /><colspec colname="2" colwidth="112pt" align="left" /><colspec colname="3" colwidth="140pt" align="left" /><tbody valign="top"><row><entry /><entry>Report 508:</entry><entry>A report that lists the students the</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="77pt" align="left" /><colspec colname="2" colwidth="252pt" align="left" /><tbody valign="top"><row><entry /><entry>subject can rename.</entry></row><row><entry>Get Entity Field</entry><entry>A user has an access rule granting read access to the entity the</entry></row><row><entry /><entry>field is on and that entity is returned in the access rule's report.</entry></row><row><entry /><entry>For example, to see the name of a student 601, the user needs</entry></row><row><entry /><entry>the following access rule to have been created:</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="98pt" align="left" /><colspec colname="4" colwidth="126pt" align="left" /><tbody valign="top"><row><entry /><entry>1.</entry><entry>Subject 501:</entry><entry>The user or a role the user is in;</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="224pt" align="left" /><tbody valign="top"><row><entry /><entry>2.</entry><entry>Entity type 509: student type 601;</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="98pt" align="left" /><colspec colname="4" colwidth="126pt" align="left" /><tbody valign="top"><row><entry /><entry>3.</entry><entry>Permissions 507:</entry><entry>read; and</entry></row><row><entry /><entry>4.</entry><entry>Report 508:</entry><entry>A report that lists the students</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="105pt" align="left" /><colspec colname="2" colwidth="224pt" align="left" /><tbody valign="top"><row><entry /><entry>the subject can see.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="77pt" align="left" /><colspec colname="2" colwidth="252pt" align="left" /><tbody valign="top"><row><entry>Create Relationship </entry><entry>Either:</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="224pt" align="left" /><tbody valign="top"><row><entry /><entry>1.</entry><entry>A user has an access rule granting modify access to the</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="77pt" align="left" /><colspec colname="2" colwidth="28pt" align="left" /><colspec colname="3" colwidth="224pt" align="left" /><tbody valign="top"><row><entry /><entry /><entry>source entity and that entity is returned in the access</entry></row><row><entry /><entry /><entry>rule's report AND A user has an access rule granting</entry></row><row><entry /><entry /><entry>read access to the destination entity and that entity is</entry></row><row><entry /><entry /><entry>returned in the access rule's report. These can be two</entry></row><row><entry /><entry /><entry>different access rules.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="224pt" align="left" /><tbody valign="top"><row><entry /><entry>2.</entry><entry>(as the above point but with the source and destination</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="105pt" align="left" /><colspec colname="2" colwidth="224pt" align="left" /><tbody valign="top"><row><entry /><entry>entities swapped)</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="77pt" align="left" /><colspec colname="2" colwidth="252pt" align="left" /><tbody valign="top"><row><entry /><entry>For example, to enroll students 601 to their classes 602, the</entry></row><row><entry /><entry>use needs the following access rules to have been created.</entry></row><row><entry /><entry>First access rule:</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="98pt" align="left" /><colspec colname="4" colwidth="126pt" align="left" /><tbody valign="top"><row><entry /><entry>1.</entry><entry>Subject 501:</entry><entry>The user or a role the user is in;</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="224pt" align="left" /><tbody valign="top"><row><entry /><entry>2.</entry><entry>Entity type 509: student type 601;</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="98pt" align="left" /><colspec colname="4" colwidth="126pt" align="left" /><tbody valign="top"><row><entry /><entry>3.</entry><entry>Permissions 507:</entry><entry>modify; and</entry></row><row><entry /><entry>4.</entry><entry>Report 508:</entry><entry>A report that lists the students</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="105pt" align="left" /><colspec colname="2" colwidth="224pt" align="left" /><tbody valign="top"><row><entry /><entry>the subject can enroll to classes.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="77pt" align="left" /><colspec colname="2" colwidth="252pt" align="left" /><tbody valign="top"><row><entry /><entry>Second access rule:</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="98pt" align="left" /><colspec colname="4" colwidth="126pt" align="left" /><tbody valign="top"><row><entry /><entry>1.</entry><entry>Subject 501:</entry><entry>The user or a role the user is in;</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="224pt" align="left" /><tbody valign="top"><row><entry /><entry>2.</entry><entry>Entity type 509: class type 602;</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="98pt" align="left" /><colspec colname="4" colwidth="126pt" align="left" /><tbody valign="top"><row><entry /><entry>3.</entry><entry>Permissions 507:</entry><entry>read; and</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="105pt" align="left" /><colspec colname="2" colwidth="98pt" align="left" /><colspec colname="3" colwidth="126pt" align="left" /><tbody valign="top"><row><entry /><entry>Report 508:</entry><entry>A report that lists the classes</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="91pt" align="left" /><colspec colname="2" colwidth="14pt" align="left" /><colspec colname="3" colwidth="224pt" align="left" /><tbody valign="top"><row><entry /><entry>4.</entry><entry>the subject can enroll students in.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="77pt" align="left" /><colspec colname="2" colwidth="252pt" align="left" /><tbody valign="top"><row><entry /><entry>Alternatively, the modify and read permissions can be swapped</entry></row><row><entry /><entry>bettween the two access rules.</entry></row><row><entry>Delete Relationship</entry><entry>(As for CreateRelationship)</entry></row><row><entry namest="1" nameend="2" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
A user can also perform these operations if they are a member of a user role that the appropriate access rules apply to. Indeed, this will be the most common case. Accordingly, the subject of an access rule can be either a user account or a user role. If a user account is in a user role, it means that user gains all the access rules that apply to that role. Roles can also be nested.
As described in relation to <figref idref="DRAWINGS">FIG. 16</figref>, access rules follow the entity type inheritance hierarchy. For example, if the entity “Sales Person” inherits from “Employee”, any access rule that applies to “Employee” also applies to “Sales Person”.
Entities can be related to each other in a “one-to-many” or “many-to-many” manner. This is referred to as the cardinality of a given entity in relation to another. Numbers such as <b>504</b> above the start and end of each relationship show cardinality. Cardinality is associated with a specific relationship, not just between two entities. There may be multiple relationships between the same entities, each with different cardinality. Cardinality is an optional feature in the ERAR arrangements.
Examples of cardinality are depicted in the following Table 2:
<tables id="TABLE-US-00002" num="00002"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="35pt" align="left" /><colspec colname="2" colwidth="35pt" align="left" /><colspec colname="3" colwidth="70pt" align="left" /><colspec colname="4" colwidth="77pt" align="left" /><thead><row><entry namest="1" nameend="4" rowsep="1">TABLE 2</entry></row><row><entry namest="1" nameend="4" align="center" rowsep="1" /></row><row><entry>left</entry><entry>right</entry><entry /><entry>example</entry></row><row><entry namest="1" nameend="4" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry>1</entry><entry>1</entry><entry>one-to-one</entry><entry>person <-> weight</entry></row><row><entry>0 . . . 1</entry><entry>1</entry><entry>optional on one </entry><entry>date of death <-> person</entry></row><row><entry /><entry /><entry>side one-to-one</entry><entry /></row><row><entry>0 . . . * </entry><entry>0 . . . *</entry><entry>optional on both </entry><entry>person <-> book</entry></row><row><entry>or *</entry><entry>or *</entry><entry>sides many-to-many</entry><entry /></row><row><entry>1</entry><entry>1 . . .</entry><entry>one-to-many</entry><entry>Birth Place <-> person</entry></row><row><entry namest="1" nameend="4" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
Where: the first row in Table 2 means that a specific person is associated with a specific weight. The second row means that a specific person may or may not have a date of death. The third row means that each of many specific people may own each of a plurality of books. The fourth row means that a specific birth place can be associated with many people, whereas each person is associated with only one birth place. Note that permutations and combinations are also allowed. For example, a relationship may exist with the left cardinality value being 0 and the right being 0 . . . 1.
Cardinality is referred to as a variation (see [0136] below). The diagram in <figref idref="DRAWINGS">FIG. 4</figref> includes a variation, showing fields as securable (see “Variations” below).
Creation, deletion and modification of access rules may be logged or audited, as configured by the user or hardcoded in the system. Logging or auditing may also be restricted to access rules affecting certain entities, entity types, fields or relationships, again either as configured by the user or hardcoded in the system.
Variations: <ul id="ul0011" list-style="none"><li id="ul0011-0001" num="0000"><ul id="ul0012" list-style="none"><li id="ul0012-0001" num="0163">1. Non-report rules: A report is one option for determining the entities to which a rule grants access. However, anything that can filter the set of entities is suitable. One alternative is an access rule that directly describes a relationship path [600] between the entities and the subject that must be followed, rather than relying on the report describing this.</li><li id="ul0012-0002" num="0164">2. Field level security: Fields can be included as something to secure. If an access rule is specified that targets a field instead of an entity type, this replaces access rules that apply to the entity type by virtue of inheritance. This may prevent users from modifying or seeing sensitive fields, such as a person's social security number or an employee's salary, even when the user can otherwise see or modify the entity, by only granting modification permission to certain fields. Alternately, access rules may target that entity type directly.</li><li id="ul0012-0003" num="0165">3. Relationship level security: Relationships can be included as something to secure, similar to field level security. If an access rule is specified that targets a relationship instead of an entity type, this replaces specification of an access for each entity with specification of an access rule for the relationships. This either prevents users from modifying or seeing sensitive relationships or allows users to modify relationships when they can only read (see) the source and destination entities.</li><li id="ul0012-0004" num="0166">4. The required access rules for each operation in Table 1 may vary. For example as follows: <ul id="ul0013" list-style="none"><li id="ul0013-0001" num="0167">a. An implementation may be simplified to say that some or all entity types, fields and relationships can only be created by a user that is a member of the special role, e.g. “Administrators”.</li><li id="ul0013-0002" num="0168">b. Certain entity types, entities, fields or relationships may be hardcoded or otherwise configured to be read-only. Access rules that allow modification of these entity types either cannot be created or do nothing.</li><li id="ul0013-0003" num="0169">c. Certain entity types, entities, fields or relationships may be hardcoded or otherwise configured to be not deletable. Access rules that allow deletion of these either cannot be created or do nothing.</li><li id="ul0013-0004" num="0170">d. Certain operations may only be available to users that have authenticated in a certain way. For example, changes to certain entity types may require two-factor authentication. For example, normal day-to-day use of a product embodying the ERAR arrangements may just require a user name and password to identify and authenticate the user. However, administrative functions (e.g. editing access rules) may require a second factor, such as the use of a one-time-password generator. The ERAR arrangements may prevent operations and/or operations on certain entities when certain levels of authentication are required.</li></ul></li><li id="ul0012-0005" num="0171">5. Additional operations or permissions. For example, a “Workflow” entity may have a separate “Run” permission.</li><li id="ul0012-0006" num="0172">6. Using the report for create permission checks. For example, a user may be able to create student entities if they teach a class. This may be achieved by searching for the subject in the report, rather than searching for the entity being secured.</li><li id="ul0012-0007" num="0173">7. Access rules may be stored using a different structure. The present ERAR arrangements above talks about the best way of storing access rules in an entity-relationship model. However, other methods of storing access rules can be used. For example, the permissions may be listed as fields on the “Access Rule” entity instead of relationships to separate entities. User accounts and roles may have separate relationships to the access rule and not through the inherited “Subject” entity. Entity types and other securable entities have separate relationships to the access rule entity instead of via the inherited “Securable Entity” entity type. Access rules may be conceivably stored in another way altogether rather than an entity relationship model.</li><li id="ul0012-0008" num="0174">8. Separate access rules may be specified for denying access either in addition to allow access rules (usually with deny taking precedence) or instead of (granting users access to all entities except for those specifically denied).</li></ul></li></ul>
Checks
Access control checks fall into two main categories: <ul id="ul0014" list-style="none"><li id="ul0014-0001" num="0000"><ul id="ul0015" list-style="none"><li id="ul0015-0001" num="0176">1. Create checks: Checks on create permission. These associate a user and an entity type only. This includes the CreateEntityType and CreateEntity operations. Creates are unique because they do not apply to a specific entity instance.</li><li id="ul0015-0002" num="0177">2. Non-Create checks: Checks on read, modify or delete permission. These associate a user, an entity type and a filter (which may be implemented as a report) that lists the entities applies to any operation other than CreateEntityType and CreateEntity.</li></ul></li></ul>
The results of a check may be cached to improve performance.
Entities may be accessed in bulk, meaning the checks can be performed in bulk. This may lead to efficiencies, such as determining the set of applicable access rules once for each type of entity being checked and/or running reports once.
These checks may be logged or audited, as configured by the user or hardcoded in the system. A subset of these checks may be logged or audited, again as configured by the user or hardcoded in the system.
Create Check
An accessor is allowed to create an entity, called a “create check”, if all the following are true for one or more access rules: <ul id="ul0016" list-style="none"><li id="ul0016-0001" num="0000"><ul id="ul0017" list-style="none"><li id="ul0017-0001" num="0182">1. The access rule applies to the type of the entity being created or one of its ancestor types (i.e. types that it inherits, types that the inherited types inherit and so on),</li><li id="ul0017-0002" num="0183">2. The access rule has the “create” “Permission” entity and</li><li id="ul0017-0003" num="0184">3. The access rule has a subject of either the user (i.e. the accessor) or a “User Role” the user is in.</li></ul></li></ul>
<figref idref="DRAWINGS">FIG. 6</figref> depicts one implementation of the “create check” model and process, which operates as follows (in relation to the example which allows students to see details of students in their class): <ul id="ul0018" list-style="none"><li id="ul0018-0001" num="0000"><ul id="ul0019" list-style="none"><li id="ul0019-0001" num="0186">1. Determine (<b>701</b>) the type (<b>706</b>) of the entity being created and all ancestor types (<b>709</b>) (i.e. types that it inherits, types that the inherited types inherit and so on). Take the example where a user (i.e. an accessor) wants to create a “Student” entity as shown in <figref idref="DRAWINGS">FIG. 5</figref>. The “Student” entity type <b>601</b> inherits from a “Person” type <b>606</b>.</li><li id="ul0019-0002" num="0187">2. Traverse (<b>702</b>) the “Control Access” relationship (<b>707</b>) from each of the entity types (<b>708</b>) to locate Access Rules (<b>710</b>) that apply to that entity type. Continuing the above example, the system would start at the “Student” and “Person” entity types and follow the relationship to applicable “Access Rule” entities.</li><li id="ul0019-0003" num="0188">3. Identify (<b>703</b>) the “Access Rule” entities (<b>710</b>) that have a “Permission Access” relationship (<b>712</b>) to the “create” “Permission” entity (<b>711</b>) only. Continuing the above example, the system would find any “Access Rule” entities that were related to the “Create” permission.</li><li id="ul0019-0004" num="0189">4. Traverse (<b>704</b>) the “Allow Access” relationship (<b>713</b>) to “Subject” entities (<b>714</b>). Continuing the above example, the system would follow the relationship from applicable “Access Rule” entities with a related “Create” permission to applicable “Subject” entities.</li><li id="ul0019-0005" num="0190">5. If the user (i.e. the accessor) is one of the Subjects (<b>714</b>) or in a “User Role” that is one of the subjects, grant (<b>705</b>) the user access. Otherwise, deny the user access. Finishing the above example, the user is granted access if the “Access Rule” entities are related to either the user's “User Account” entity (<b>715</b>) or a “User Role” (<b>716</b>) the user (i.e. accessor) is recursively (<b>717</b>) a member of.</li></ul></li></ul>
<figref idref="DRAWINGS">FIG. 7</figref> is a flowchart showing an example of a process <b>800</b> associated with <figref idref="DRAWINGS">FIG. 6</figref> and operates as follows. The process steps depicted in <figref idref="DRAWINGS">FIG. 7</figref> are performed by one or both of the processors <b>205</b> and <b>305</b> respectively executing the ERAR software applications <b>233</b> and <b>333</b>. The process <b>800</b> commences with a start step <b>801</b>. Thereafter a step <b>802</b> determines an Entity Type of the entity desired to be created by an accessor. A following step <b>803</b> determines for each Access Rule Entity being considered if the Access Rule entity has a Permission Access relationship to a Create Permission entity. If this is not the case, the process <b>800</b> follows a NO arrow to a deny step <b>806</b> which denies the accessor permission to create the entity for the current access rule. If however the step <b>803</b> determines that the Access Rule entity has a Permission Access relationship to a Create Permission entity then the process <b>800</b> follows a YES arrow to a step <b>804</b> which determines if the accessor is a Subject entity having an Allow Access relationship with the identified Access Rule entity. If this is not the case, the process <b>800</b> follows a NO arrow to the deny step <b>806</b> which denies the accessor permission to create the entity for the current access rule. If however the step <b>804</b> determines that the accessor is a Subject entity having an Allow Access relationship with the identified Access Rule entity, then the process <b>800</b> follows a YES arrow to a step <b>805</b> which permitting the accessor to create the entity in the entity relationship database system. When multiple access rules are under consideration, an allow <b>805</b> according to one or more of the rules will allow creation of instances of the Entity Type, irrespective of whether other rules have evaluated to deny <b>806</b>.
However, any implementation that achieves the requirements outlined in [0135] is valid. For example, the “create check” process may be performed in the reverse direction (from the subject to type instead of type to subject) if it is easier to implement or more efficient. In addition, access rules only need to be checked until one grants the user access. The rest can be ignored. Take the example of a teacher accessing a student. There may be two access rules in place, one that grants a teacher read and modify access to students in their class and another that grants a teacher read access to students in their school. If a teacher attempts to see details of a student in her class, the system would determine that two access rules need to be checked. After checking the first one, which grants the teacher access, there is no need to check the second one.
Non-Create (Read, Modify or Delete) Check
An accessor is allowed to read, modify or delete an entity, called a “non-create check”, if all the following are true for one or more access rules: <ul id="ul0020" list-style="none"><li id="ul0020-0001" num="0000"><ul id="ul0021" list-style="none"><li id="ul0021-0001" num="0194">1. The access rule applies to the type of the entity being created or one of its ancestor types (i.e. types that it inherits, types that the inherited types inherit and so on),</li><li id="ul0021-0002" num="0195">2. The access rule has the “read”, “modify” and/or “delete” “Permission” entity corresponding to the requested access,</li><li id="ul0021-0003" num="0196">3. The access rule has a report that, when run, returns the entity in its results and</li><li id="ul0021-0004" num="0197">4. The access rule has a subject of either the user (i.e. the accessor) or a “User Role” the user is in.</li></ul></li></ul>
<figref idref="DRAWINGS">FIG. 8</figref> depicts one implementation of the “non-create check” model and process. The process operates as follows (in relation to the example which allows students to see details of students in their class): <ul id="ul0022" list-style="none"><li id="ul0022-0001" num="0000"><ul id="ul0023" list-style="none"><li id="ul0023-0001" num="0199">1. Determine (<b>901</b>) the type of the entity being accessed (i.e. read, written, deleted) and all ancestor types (types that it inherits, types that the inherited types inherit and so on). Take the example where a user wants to see (read) a “Student” entity as shown in <figref idref="DRAWINGS">FIG. 5</figref>. The “Student” entity type inherits from a “Person” type.</li><li id="ul0023-0002" num="0200">2. Traverse (<b>902</b>) the “Control Access” relationship from each of the types to the “Access Rule” entity. Continuing the above example, the system would start at the “Student” and “Person” entity types and follow the relationship to “Access Rule” entities.</li><li id="ul0023-0003" num="0201">3. Identify (<b>903</b>) the “Access Rule” entities that have a “Permission Access” relationship to the required “Permission” entities (either “read”, “modify” and/or “delete”) only. Continuing the above example, the system would find any “Access Rule” entities that were related to the “Read” permission.</li><li id="ul0023-0004" num="0202">4. For each of these, traverse (<b>904</b>) the “Auth to Report” relationship and run each report. Take the access rules whose reports returned the entity(ies) being checked. Continuing the above example, the system would run the related reports. If they returned the target Student, it would continue.</li><li id="ul0023-0005" num="0203">5. Traverse (<b>905</b>) the “Allow Access” relationship from the “Access Rule” entity to the “Subject” entity. Continuing the above example, the system would follow the relationship from “Access Rule” entities with a related “Read” permission to the “Subject” entity.</li><li id="ul0023-0006" num="0204">6. If the user is the “Subject” or in a “Role” that is the subject, grant (<b>906</b>) the user access. Otherwise, deny the user access. Finishing the above example, the user is granted access if the “Access Rule” entities are related to either the user's “User Account” entity or a “User Role” the user is recursively a member of.</li></ul></li></ul>
<figref idref="DRAWINGS">FIG. 9</figref> is a flowchart showing an example of a process <b>1000</b> associated with <figref idref="DRAWINGS">FIG. 8</figref> and operates as follows. The process steps depicted in <figref idref="DRAWINGS">FIG. 9</figref> are performed by one or both of the processors <b>205</b> and <b>305</b> respectively executing the ERAR software applications <b>233</b> and <b>333</b>. The process <b>1000</b> commences with a start step <b>1001</b>. Thereafter a step <b>1002</b> determines an Entity Type of the entity desired to be read, written to, or deleted by an accessor. A following step <b>1003</b> determines for each Access Rule Entity being considered if the Access Rule entity has a Permission Access relationship to a Read Permission or a Write Permission or a Delete Permission entity. If this is not the case, the process <b>1000</b> follows a NO arrow to a deny step <b>1007</b> which denies the accessor permission to read, write to or delete the entity by the current access rule. If however the step <b>1003</b> determines that the Access Rule entity has a Permission Access relationship to a Read Permission or a Write Permission or a Delete Permission entity then the process <b>1000</b> follows a YES arrow to a step <b>1004</b> which determines if the Access Rule Entity includes the entity to be accessed after applying a Filter entity (such as a Report) to the Access Rule entity. If this is not the case, the process <b>1000</b> follows a NO arrow to the deny step <b>1007</b> which denies the accessor permission to read, write to or delete the entity in question by the current access rule. If however the step <b>1004</b> determines that the Access Rule Entity includes the entity to be accessed after applying a Filter entity (such as a Report) to the Access Rule entity, then the process <b>800</b> follows a YES arrow to a step <b>1005</b> which determines if the accessor is a Subject entity having an Allow Access relationship with the determined Access Rule entity. If this is not the case, the process <b>1000</b> follows a NO arrow to the deny step <b>1007</b> which denies the accessor permission to read, write to or delete the entity in question by the current access rule. If however the step <b>1005</b> determines that the accessor is a Subject entity having an Allow Access relationship with the determined Access Rule entity, then the process <b>1000</b> follows a YES arrow to a step <b>1006</b> which permits the accessor to Read or Modify or Delete the entity to be accessed. When multiple access rules are under consideration, an allow <b>1006</b> according to one or more rules will allow the accessor to Read or Modify or Delete the entity being accessed, irrespective of whether other rules have evaluated to deny <b>1007</b>.
Like the “create check”, this may be performed in the reverse direction or out of order if the results are the same, it is easier to implement or more efficient. For example, running reports is generally computationally expensive and so may be the last step performed. Reports only need to be run until one access rule grants the user access, too.
Entity Grouping
Specification
To summarize, if the ERAR arrangements grant access for a particular permission to a particular entity, then that permission may also be implicitly conferred to a group of other entities that are directly or indirectly related to the initial entity. This group is defined through marking certain types of relationships between entities as “security significant”.
<figref idref="DRAWINGS">FIG. 10</figref> depicts entities and relationships in a report example. For example, a report, which may be represented as an entity, may represent its columns and filters as separate entities (as shown below). By marking the “report to column” relationship type and the “report to filter” relationship type as security significant, access to the report, its columns and its filters can be controlled through access to the report. An administrator only needs to secure the report to secure the columns and filters, too.
<figref idref="DRAWINGS">FIG. 11</figref> depicts entities inside and outside a security group. The conferring of permission does not extend to entities outside this group. For example, a dashboard may include this report but, if the relationship between the report and the dashboard is not marked as security sensitive, the access to the report does not affect access to the dashboard (as shown in <figref idref="DRAWINGS">FIG. 11</figref>).
<figref idref="DRAWINGS">FIG. 12</figref> depicts an example of a transitive security check. For example, if a report has columns, a column has a formatting rule and both the “report to column” and “column to formatting rule” relationships are marked as security sensitive, access to formatting rules can be controlled through access to the report (as shown in <figref idref="DRAWINGS">FIG. 12</figref>).
<figref idref="DRAWINGS">FIG. 12</figref> also illustrates that there may be more than one entity that can cause permissions to be conferred to another entity. In this example, an access rule may grant a permission to the report, which then confers permission to the column, which then confers permission to the formatting rule. Alternatively, an access rule may directly grant access directly to the column, which would confer permission to the Formatting Rule. Therefore, any given entity may have a group of entities to which it confers permissions, as well as a group of entities that confers permissions to it.
The security sensitive setting on a relationship may be hardcoded in the system, set by an administrator, a user customizing the system, an end user or programmatically (e.g. via an API). Entity-relationship systems may restrict who, when or under what conditions the security sensitive setting may be viewed or changed, such as for efficiency, ease of implementation or security reasons. The configuration change may occur through the product user interface, an API, a configuration file or some other interaction.
Variations: <ul id="ul0024" list-style="none"><li id="ul0024-0001" num="0000"><ul id="ul0025" list-style="none"><li id="ul0025-0001" num="0214">1. There may be different permissions involved with access. For example, an entity-relationship system may define separate read, modify and delete permissions. This security sensitive flag may share all access (e.g. granting read and modify access on a report may also grant read and modify access to the report columns and filters) or separate flags may be used for each access type. If deny permissions are used, these may follow the same or different precedence (e.g. denies overriding allows or vice versa).</li><li id="ul0025-0002" num="0215">2. The security sensitive flag may be directional. For example, if a relationship goes from a report to its columns, there could be a “Secures ‘To’ type” flag that grants the user access to the ‘to’ or destination type if the user has access to the source or from type. A “Secures ‘From’ Type” flag would grant access in the opposite direction. Both flags could be set on the same relationship to ensure identical access to entities on both sides of the relationship.</li><li id="ul0025-0003" num="0216">3. Security can be defined on the relationship type, meaning all relationships of that type exhibit the same behavior, or individually on the relationship instance, meaning the conferring of permissions can be turned on or off for some relationships of the same relationship type and not others.</li><li id="ul0025-0004" num="0217">4. Security can be defined on the group instead of an entity in that group. This is useful if there is no clear entity to be the “primary” or “root” entity for the group and access absolute instead of granted conditionally on fields, relationships or other aspects of that entity or its type.</li><li id="ul0025-0005" num="0218">5. Individual entities may have more or less permissive access than other entities in the same group. For example, a user might have read but not modify access to all entities in a report but a non-administrator user may not be able to access administrator only reports. This is common in entity-relationship systems that use multiple methods of access control and some mechanisms take precedence over others.</li><li id="ul0025-0006" num="0219">6. The relationship used to group entities may be introduced specifically for that purpose and not already exist in the entity-relationship model or system.</li><li id="ul0025-0007" num="0220">7. The set of security sensitive relationships may be hard coded within the system; or it may be configured by the security administrator using the product. The set of entity types over which the system operates may be fixed, or it may be customizable.</li></ul></li></ul>
Checks
<figref idref="DRAWINGS">FIG. 13</figref> is a flow chart depicting an entity group access check. The process operates as follows: <ul id="ul0026" list-style="none"><li id="ul0026-0001" num="0000"><ul id="ul0027" list-style="none"><li id="ul0027-0001" num="0222">1. When access is requested to an entity, called the “target entity”, access to that entity is checked (such as by the above mechanism and/or different mechanisms).</li><li id="ul0027-0002" num="0223">2. If the user does not have access and access is not explicitly denied, the ERAR arrangements recursively walks any security sensitive relationships to find all the other entities in the group that would directly or indirectly confer access to the entity being checked.</li><li id="ul0027-0003" num="0224">3. The ERAR arrangements checks whether the user has the requested access to the entities in the group. If the user has the requested level of access to any of these entities, access is granted to the target entity.</li></ul></li></ul>
Entities may be accessed in bulk, meaning the checks can be performed in bulk. This may lead to efficiencies, such as determining the membership of the group once and reusing that for access to each requested entity.
Entities may be accessed by a user, such as through a UI, or by a device, e.g. via an API. Or by another process, such as an automated workflow, that is acting on a user's behalf.
These checks may be logged or audited, as configured by the user or hardcoded in the system. A subset of these checks may be logged or audited, again as configured by the user or hardcoded in the system. The message may include details of what relationships were included in each check and what entities were checked.
The security sensitive setting on a relationship may be cached for efficiency. The results of the check or access to individual entities may also be cached for efficiency. More detail is included on this below.
Variations: <ul id="ul0028" list-style="none"><li id="ul0028-0001" num="0000"><ul id="ul0029" list-style="none"><li id="ul0029-0001" num="0230">1. Access may be checked on entities related by security sensitive relationships before the initial entity (i.e. steps 2 and 3 above may be performed before step 1). This may also be for speeding up checks if the access control system has cached that the user already has the requested level of access to the target entity.</li></ul></li></ul>
INDUSTRIAL APPLICABILITY
The arrangements described are applicable to the computer and data processing industries and particularly for the Data security industry.
The foregoing describes only some embodiments of the present invention, and modifications and/or changes can be made thereto without departing from the scope and spirit of the invention, the embodiments being illustrative and not restrictive.
In the context of this specification, the word “comprising” means “including principally but not necessarily solely” or “having” or “including”, and not “consisting only of”. Variations of the word “comprising”, such as “comprise” and “comprises” have correspondingly varied meanings.
APPENDIX 1
Entity-Relationship Model
This ERAR arrangements uses an “entity-relationship” (ER) model or system to represent business objects and access rules. An entity represents a physical or abstract object like a person, company, computer, car or cost center. An entity has fields, like a person's name, a car's vehicle identification number (VIN) or a cost center's code. Entities may have relationships between them. For example, a person may own a computer, a car may be manufactured by a company or a cost center may be within a department. An example of an ER model is depicted in <figref idref="DRAWINGS">FIG. 5</figref>.
Entity relationship (ER) models often model metadata as entities and relationships. For example, every entity in the system has a type. These are represented as type entities in the system, such as <b>601</b>, <b>602</b>, <b>603</b> and <b>604</b> on <figref idref="DRAWINGS">FIG. 5</figref>. When types inherit other types, this is represented by a special relationship, such as <b>504</b> on <figref idref="DRAWINGS">FIG. 4</figref>.
The following operations or actions are a typical minimum set available on an entity-relationship model or system: <ul id="ul0030" list-style="none"><li id="ul0030-0001" num="0000"><ul id="ul0031" list-style="none"><li id="ul0031-0001" num="0237">1. Create Entity Type. This takes a unique name and an optional list of entity types to inherit from. When an entity type inherits from another type, any fields or relationships associated with the other type also apply to the inheriting type. This operation returns an entity type ID. If an entity of that name already exists or this creates a cycle in the inheritance hierarchy, an error occurs.</li><li id="ul0031-0002" num="0238">2. Create Field. This takes an entity type ID, field name and a field type (e.g. number, currency, string, date). If a field of that name already exists on that entity type or the entity type does not exist, an error occurs.</li><li id="ul0031-0003" num="0239">3. Create Relationship Type. This takes a unique name and two entity type IDs and returns a unique relationship type ID. One entity type ID is the source or originating entity type and the second is the destination entity type. An error occurs if either the source or destination entity type ID does not exist or a relationship of that name already exists. A relationship can be created where the source entity type and destination entity type are the same type.</li><li id="ul0031-0004" num="0240">4. Create Entity. This takes an entity type ID as an argument and returns a unique identifier of the newly created entity. An error occurs if that entity type does not exist.</li><li id="ul0031-0005" num="0241">5. Delete Entity. This takes an entity ID and deletes that entity along with any fields and relationships involving it. An error occurs if that entity does not exist.</li><li id="ul0031-0006" num="0242">6. Set Entity Field. This takes an entity ID, a field ID and a field value. The previous value of that field for that entity is overwritten. An error occurs if that entity does not exist, the field does not exist, the field is not associated with that type or the value is not valid for that field type (e.g. putting a date into a number field).</li><li id="ul0031-0007" num="0243">7. Get Entity Field. This takes an entity ID, a field ID and returns the field value. An error occurs if that entity does not exist, the field does not exist or the field is not associated with that type.</li><li id="ul0031-0008" num="0244">8. Create Relationship: This takes a source entity ID, a destination entity ID, a unique name and a relationship type ID and returns a unique relationship ID. An error occurs if the source entity, destination entity or relationship do not exist.</li><li id="ul0031-0009" num="0245">9. Delete Relationship: This takes a relationship ID and deletes that relationship. An error occurs if the relationship does not exist.</li></ul></li></ul>
Common variations and improvements include: <ul id="ul0032" list-style="none"><li id="ul0032-0001" num="0000"><ul id="ul0033" list-style="none"><li id="ul0033-0001" num="0247">1. Adding additional operations, such as deleting a field or entity type.</li><li id="ul0033-0002" num="0248">2. Representing entity types and relationships as entities. This allows them to have fields and relationships.</li><li id="ul0033-0003" num="0249">3. Adding additional metadata to relationships, such as enforcing cardinality.</li><li id="ul0033-0004" num="0250">4. Adding more field types or field validation (e.g. phone number, social security number).</li><li id="ul0033-0005" num="0251">5. Bulk versions, i.e. ones that operate on multiple entities/entity types/fields/relationships.</li><li id="ul0033-0006" num="0252">6. Relationships may internally be represented as special fields containing the ID of the associated entity.</li></ul></li></ul>
These operations may be via any form, including web services, COM/CORBA objects, dynamically linked libraries, statically linked libraries or outside of a computer system.
The method of storage may be within a traditional SQL or relational database, a graph database, XML or outside of a computer system.
Relationships may also be virtual. For example, if an employee has a department and a department has a company, the transitive relationship of employee to company could be expressed as a single relationship even though it is composed of multiple relationships for efficiency or simplification.
APPENDIX 2
Reports
This ERAR arrangements relies on the ability for users to easily create customizable tabular data, usually referred to as a “report”. For the purpose of this ERAR arrangements, the critical piece is the ability for a non-technical user to easily view and customize a filter for the results (in this specification, a “report” is one example of how a “filter” can be implemented). Specifically, the filter can: <ul id="ul0034" list-style="none"><li id="ul0034-0001" num="0000"><ul id="ul0035" list-style="none"><li id="ul0035-0001" num="0257">1. Apply a comparison operation to a field. For example, a teacher may create a report showing his/her students that passed a test (by comparing their test result with 50%), those that play cricket (by selecting the “cricket” choice from a list of sport choices) or those with surnames whose first letter is in the latter half of the alphabet (by selecting those with a surname that starts with the letters L through Z inclusive).</li><li id="ul0035-0002" num="0258">2. Apply a comparison operation to a field on a related entity. For example, the school principal may create a report showing which students failed a test for a specific teacher (by following the relationship from student to teacher and selecting the teacher from a list of teachers). The operation may span multiple relationships transitively. Relationships may be followed in either direction. Relationships may be followed recursively where it makes sense to do so.</li><li id="ul0035-0003" num="0259">3. Comparison operations may be particular to the type of field. For example, if the entity is a person, one option is to check whether the person is the person running or viewing the report. This means a report could be created that shows the results of students in my class then shared with each teacher knowing that each teacher will automatically only see the results of students in their class.</li><li id="ul0035-0004" num="0260">4. The filtering process may follow multiple heterogeneous relationships in order to perform the comparison. For example, a report may return a list of assignments. The filter may follow a relationship from each test result to a student. Then a second relationship to the teacher. Then finally compare the teacher to the current user. In this way, the report shows assignments that are applicable to the teacher's students.</li><li id="ul0035-0005" num="0261">5. The filtering process may follow relationships recursively in order to perform the comparison. For example, a report may show employees. The ‘employee's manager’ relationship may be followed recursively, and then the manager compared to the current user. In this way, for any given manager, the report will show the employees that directly or indirectly report to them.</li><li id="ul0035-0006" num="0262">6. Apply the intersection of any of the above operations, e.g. students that passed a test and that play cricket.</li><li id="ul0035-0007" num="0263">7. Apply the union of any of the above operations, e.g. students that passed a test or play cricket.</li><li id="ul0035-0008" num="0264">8. Combinations of the previous two points, e.g. (students that passed a test or play cricket) and that are in my class. This usually involves some form of precedence, traditionally specified through parentheses.</li><li id="ul0035-0009" num="0265">9. All of the above acting on calculations or formulae involving fields. For example, a teacher may create a report showing students that got over 50% in a report. The data may contain a field showing the score out of 30. The report may calculate the percentage and reference that in its comparison.</li></ul></li></ul>
All of the above acting on arguments or parameters to the report. For example, a teacher may create a report showing the marks of each student by class. The class is a parameter the teacher selects before running the report and the report filter only includes students in that class.
Reports capable of performing the various operations described in this appendix are non-novel and readily created using a variety of technologies, including Microsoft SQL Server.
Contents9
22 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19 Sheet 20 Sheet 21 Sheet 22
Every citation, both waysCites: the store holds 6 of 7
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US11281700B2 | Cited by | United States of America | Search report |
| US8190673B2 | Cites | United States of America | Applicant |
| US8429723B2 | Cites | United States of America | Search report |
| US8433717B2 | Cites | United States of America | Search report |
| US8973106B2 | Cites | United States of America | Search report |
| WO9940525A2 | Cites | World Intellectual Property Organization (WIPO) | Applicant |
| WO1999040525A2 | Cites | World Intellectual Property Organization (WIPO) | Applicant |
5 members in 3 offices
Priority claims7
| Document | Office | Kind | Date |
|---|---|---|---|
| 2016900465 | Australia | A | |
| 2016900465 | Australia | – | |
| 2017000032 | Australia | W | |
| 2016900465 | – | – | – |
| AU20160900465 | – | – | – |
| PCTAU2017000032 | – | – | – |
| WO2017AU00032 | – | – | – |
Members5
| Document | Office | Kind | |
|---|---|---|---|
| WO2017136867A1 | World Intellectual Property Organization (WIPO) | A1 | |
| AU2017217235A1 | Australia | A1 | |
| US2019042782A1 | United States of America | A1 | |
| US10936740B2This record | United States of America | B2 | |
| AU2017217235B2 | Australia | B2 |
37 transactions on the USPTO file
Allowed after 1 non-final rejection.
- Non-final rejections
- 1
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | |
|---|---|
| Electronic Review | |
| Email Notification | |
| Mail Notice of AllowanceAllowed | |
| Notice of Allowance Data Verification CompletedAllowed | |
| Reasons for Allowance | |
| Date Forwarded to Examiner | |
| Response after Non-Final Action | |
| Electronic Review | |
| Email Notification | |
| Mail Non-Final RejectionNon-final rejection | |
| Non-Final RejectionNon-final rejection | |
| Information Disclosure Statement considered | |
| Case Docketed to Examiner in GAU | |
| Case Docketed to Examiner in GAU | |
| Email Notification | |
| Application ready for PDX access by participating foreign offices | |
| PG-Pub Issue Notification | |
| Case Docketed to Examiner in GAU | |
| Application Is Now Complete | |
| Application Dispatched from OIPE | |
| Email Notification | |
| Email Notification | |
| Notice of DO/EO Acceptance Mailed | |
| Filing Receipt | |
| Sent to Classification Contractor | |
| FITF set to YES - revise initial setting | |
| Applicant Has Filed a Verified Statement of Small Entity Status in Compliance with 37 CFR 1.27 | |
| Cleared by OIPE CSR | |
| Information Disclosure Statement (IDS) Filed | |
| Request for Foreign Priority (Priority Papers May Be Included) | |
| 371 Completion Date | |
| Patent Term Adjustment - Ready for Examination | |
| PTO/SB/69-Authorize EPO Access to Search Results | |
| Applicants have given acceptable permission for participating foreign | |
| Information Disclosure Statement (IDS) Filed | |
| Entity status set to undiscounted (initial default setting or status change) | |
| Initial Exam Team nn |
6 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| Information on status: patent application and granting procedure in generalRESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINERSTPP | STPP | |
| Information on status: patent application and granting procedure in generalDOCKETED NEW CASE - READY FOR EXAMINATIONSTPP | STPP | |
| Fee payment procedureENTITY STATUS SET TO SMALL (ORIGINAL EVENT CODE: SMAL); ENTITY STATUS OF PATENT OWNER: SMALL ENTITYFEPP | FEPP | |
| AssignmentAS | AS | |
| Fee payment procedureENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITYFEPP | FEPP |
Numbers
- Publication
- 10936740
- Publication, DOCDB
- 10936740
- Publication, EPODOC
- US10936740
- Application
- 16074717
- Application, DOCDB
- 201716074717
- Application, EPODOC
- US201716074717
Titles
- English
- Systems and methods for securing an entity-relationship system
Patent term adjustment
- A delay
- +314 daysthe office missed an examination deadline
- Applicant delay
- −7 days
- Net adjustment
- 307 days
Classification
- CPC, 3
- G06F21/6218
- G06F16/284
- G06F2221/2141
- IPC, 2
- G06F21 62
- G06F16 28
- USPC, 1
- 726004000