US20200410170A1 - Method and system for translating natural language policy to logical access control policy - Google Patents
Method and system for translating natural language policy to logical access control policy Download PDFInfo
- Publication number
- US20200410170A1 US20200410170A1 US16/788,579 US202016788579A US2020410170A1 US 20200410170 A1 US20200410170 A1 US 20200410170A1 US 202016788579 A US202016788579 A US 202016788579A US 2020410170 A1 US2020410170 A1 US 2020410170A1
- Authority
- US
- United States
- Prior art keywords
- policy
- natural language
- access control
- text
- logical access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 238000000034 method Methods 0.000 title claims description 33
- 238000003058 natural language processing Methods 0.000 claims abstract description 22
- 230000000877 morphologic effect Effects 0.000 claims description 4
- 230000011218 segmentation Effects 0.000 claims description 4
- 238000012545 processing Methods 0.000 description 15
- 230000015654 memory Effects 0.000 description 14
- 230000008569 process Effects 0.000 description 13
- 238000013519 translation Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 239000003607 modifier Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/40—Processing or translation of natural language
- G06F40/55—Rule-based translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/289—Phrasal analysis, e.g. finite state techniques or chunking
- G06F40/295—Named entity recognition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
Definitions
- natural language policy text is translated into logical access control policy code.
- a policy composer receives natural language policy text.
- An attribute dictionary communicably connected to the policy composer defines attributes and their logical access control policy equivalents.
- a natural language policy set communicably connected to the policy composer includes samples of natural language policy rules and their logical access control policy equivalents. The policy composer uses natural language processing, the attribute dictionary and the natural language policy set to translate the natural language policy text into logical access control code.
- the logical access control code are in eXtensible Attribute Markup Language (XACML) or Next Generation Access Control (NGAC) format.
- XACML eXtensible Attribute Markup Language
- NGAC Next Generation Access Control
- the attribute dictionary may be populated with attributes from the natural language policy set or populated by user input.
- One embodiment includes translating natural language policy text into logical access control policy code.
- Natural language policy text is provided to a policy composer.
- a natural language policy rule is generated from the natural language policy text.
- the natural language policy rule is then compared to sample natural language policy rules that are found in a natural language policy set. Attributes are identified in the natural language policy rule using an attribute dictionary.
- the sample natural language policy rule is then populated with the determined attributes. If the populated sample natural language policy rule is well-formed, The populated sample natural language policy rule is translated into logical access control code and the logical access control code is stored in a policy archive.
- FIG. 1 illustrates a natural language policy text translation system according to an embodiment
- FIG. 2 illustrates a process of identifying natural language policy rules in a natural language policy text in accordance with an embodiment
- FIG. 3 illustrates a process of translating a natural language policy rule into logical access control code
- FIG. 4 illustrates the functions of a policy composer according to an embodiment
- FIG. 5 illustrates a process of translating a natural language policy text into XACML according to an embodiment
- FIG. 6 illustrates a process of translating a natural language policy text into NGAC according to an embodiment
- FIG. 7 illustrates a user experience of generating logical access control code according to an embodiment.
- FIG. 8 illustrates a typical data center according to an embodiment
- FIG. 9 illustrates an example machine of a computer system according to an embodiment.
- Components, or modules, shown in diagrams are illustrative of embodiments of the invention. It shall also be understood that throughout this disclosure that components may be described as separate functional units, which may comprise sub-units, but those skilled in the art will recognize that various components, or portions thereof, may be divided into separate components or may be integrated together, including integrated within a single system or component. It should be noted that functions or operations discussed herein may be implemented as components. Components may be implemented in software, hardware, or a combination thereof.
- connections between components or systems within the figures are not intended to be limited to direct connections. Rather, data between these components may be modified, re-formatted, or otherwise changed by intermediary components. Also, additional or fewer connections may be used. It shall also be noted that the terms “coupled,” “connected,” or “communicatively coupled” shall be understood to include direct connections, indirect connections through one or more intermediary devices, and wireless connections.
- a service, function, or resource is not limited to a single service, function, or resource; usage of these terms may refer to a grouping of related services, functions, or resources, which may be distributed or aggregated.
- memory, database, information base, data store, tables, hardware, and the like may be used herein to refer to system component or components into which information may be entered or otherwise recorded.
- steps may optionally be performed; (2) steps may not be limited to the specific order set forth herein; (3) steps may be performed in different orders; and (4) steps may be done concurrently.
- a policy translation system 100 for translating natural language policy text into logical access control code is shown.
- Logical access control code format may be XACML, NGAC or any other suitable logical access control code format.
- a natural language policy text 102 is collected by the policy translation system 100 .
- the natural language policy text 102 may include a single sentence that defines a policy rule.
- the natural language policy text 120 may include several sentences, sentence fragments or, indeed, any text that defines one or more policy rules.
- the natural language policy text 102 is collected from a variety of different sources, such as from document files (e.g. word processor files), electronic mail, direct text input through a website, and other sources.
- the collected natural language policy text 102 may include natural language that is written in a variety of different ways. In one embodiment, each of the collected policy texts 102 may use different natural language to describe desired access control policies.
- the natural language policy text may be written in one or more natural languages.
- the natural language policy rules embedded in the natural language policy text may be written in different forms. For example, the natural language policy rule “Alice may read Bob's files,” is equivalent to the natural language policy rule “Bob's files may be read by Alice.” Similarly, the same rule may be expressed in English, Japanese, Chinese, Korean or any other natural language.
- the natural language policy text 102 is communicated to a policy composer 104 .
- the natural language policy text 102 may be communicated to the policy composer 104 directly, by manual input of text, uploaded as a file or any using other means of communicating text directly.
- the natural language policy text 102 may be communicated wirelessly to the policy composer 104 , through email, messaging or any other means of communicating text indirectly.
- natural language policy text 102 may include document files (e.g., word processor files, text-editing files, etc.), direct text input (e.g., via a form on a website), electronic mail, and other natural language policy sources.
- the natural language policy text 102 may include policies including text written by one or more individuals.
- the policy composer 104 uses an attribute dictionary 106 and natural language policy sets 108 to translate the natural language policy text 102 into logical access control policy code 110 .
- the attribute dictionary 106 is a database that associates words found in a natural language policy text 102 with attributes used in logical access control policy code 110 .
- the attribute dictionary 106 may be created by analyzing data found in the natural language policy sets 108 , natural language policy texts 102 or may be attribute data 112 input by the user, other users, organizations or other sources.
- the policy translation system 100 maintains an attribute dictionary 106 that is populated based on an analysis of the natural language policy text 102 .
- an uploaded natural language policy text 102 may include text in English associated with English NLP Set 1, text in Chinese associated with Chinese NLP Set 1, text in Japanese associated with Japanese NLP Set 1, and text in in German associated with German NLP Set 1.
- the attribute dictionary 106 may be populated based on associated words found in the aforementioned natural language policy sets 108 by the analysis done on the text sources. Text analysis performed by the policy composer 104 is used in conjunction with the natural language policy sets 108 to identify the logic used in logical access control policy code 112 .
- the attributes in the attribute dictionary 106 are used in conjunction with the logic determined by the policy composer 104 to create logical access control policy code 112 that can be logically implemented.
- the resulting logical access control policy code 112 is stored in the policies archive 114 , a repository for all created policies.
- the policy composer 104 uses one or more natural language policy sets 108 to translate natural language policy texts 102 into logical access policy code 112 .
- the natural language policy sets 108 may include natural language policy sets 108 specific to natural languages such as English, Japanese or any other natural language.
- access control policy translation system maintains a number of natural language policy sample sets each associated with a language, such as English NLP (natural language processing) Set 1, Chinese NLP Set 1, Japanese NLP Set 1, and German NLP Set 1,
- the natural language policy sets 108 may be specific to organizations, branches of organization, departments of organization or any other entity.
- the policy composer 104 analyzes the natural language policy text 102 and identifies appropriate natural language policy sets 108 for use in translation.
- a first natural language policy text 102 may includes natural language that checks if an employee resides in a certain branch of their organization may be associated with English Natural Language Policy Sample Set 1
- a second natural language policy text 102 that includes natural language that refers to an organizational branch as a department may be associated with English Natural Language Policy Sample Set 2
- a third natural language policy text 102 that is written in Japanese natural language may be associated with Japanese Natural Language Policy Sample Set 1, and so on.
- the policy composer 104 receives natural language policy text 102 and uses the attribute dictionary 106 and natural language policy sets 108 to identify possible access control rules (collectively referred to as rules) embedded in the natural language policy text 102
- a method 200 of identifying natural language policy rules is shown.
- the policy composer 104 identifies the natural language used in the natural language policy text in step 204 .
- the policy composer 104 identifies the type of policy in the natural language policy text 102 in step 206 .
- the policy composer identifies the appropriate natural language policy sets 108 in step 208 .
- the policy composer 104 identifies the possible attributes present in the natural language policy text 102 in step 210 .
- the policy composer 104 then identifies the possible natural language policy rules in the natural language policy text in step 212 .
- a method 300 of translating each of the natural language policy rules found in the natural language policy text 102 into logical access control code 112 Taking each identified natural language policy rule in step 302 , the policy composer 104 uses the natural language policy sets 108 and identifies possible natural language policy rule matches with natural language rule samples in the natural language rule sets 108 . The matched natural language policy rule is then populated with the identified attributes in step 306 . The method 300 then determines if the attribute populated natural language policy rule is a well-formed rule in step 308 . If the rule is not well formed, the process returns to step 304 and identifies another possible natural language policy rule match.
- the policy composer 104 If the rule is well formed, the policy composer 104 generates logical access control code corresponding to the attribute populated natural language policy rule in step 310 . The logic and attributes identified are then presented to the user to confirm that the proposed translation is what the user intended in step 312 . If the user is dissatisfied with the logical access control code, the method 300 returns to step 304 and makes another attempt to identify possible natural language policy rule matches. If they user is satisfied with the logical access control code, the logical access control code is exported to the policy archive 114 or deployed for use by the policy control system in step 314 .
- the policy samples 414 , 416 , 418 in the identified natural language policy sets 412 may be analyzed to identify various natural language policy text characteristics 404 , 406 , 408 and 410 associated with the natural language policy texts 402 .
- the natural language policy text 402 includes a variety of natural language policy characteristics, including entities characteristics 404 , syntax characteristics 406 , content classification characteristics 408 , and language characteristics 410 . It is noted that the above characteristics are non-limiting examples, and that any number of natural language policy sets 412 may be analyzed to obtain any number of the above or other text characteristics.
- text characteristics of a natural language policy sets 412 may be determined by performing natural language processing (NLP) and/or other processes on the policy samples 414 , 416 and 418 and then analyzing output of the NLP or other processes. Additionally, in one embodiment, the analysis of NLP or other processes may include determinations of logic (e.g., greater than or equal to, etc.), combining algorithms (e.g., deny unless permit, etc.), spelling errors, grammatical errors, and invalid input. Attributes of the text characteristics of the policy samples 414 , 416 and 418 in a respective natural language policy set 412 may be averaged so as to produce overall text characteristics for the policy type.
- NLP natural language processing
- the process 500 for identification and translation of natural language policy rules is shown.
- various natural language processing tasks are performed on the text, to include but not be limited to named entity recognition, part-of-speech tagging, lemmatization, and morphological segmentation in step 502 .
- the policy composer 104 then checks the natural language policy sets 108 for the presence of similar items discovered from its prior tasks in step 506 . These similar items are discovered based on the metadata per each item.
- step 502 the natural language processing tasks
- step 504 checking policy sample sets for similar items the policy composer 104 may discover a previously translated policy that used the same word or its singular form based on its characteristics, such as it being a named entity and a salience above a 0.50.
- the previously used word “employee” discovered in the policy sample set was assigned the XAMCL attribute category of “urn:oasis:names:tc:xacml:1.0:subject-category:access-subject,” AttributeId of “employee,” and DataType of “http://www.w3.org/2001/XMLSchema#string.”
- the similar items discovered in the Policy Sample Sets are associated with the items in the text in step 506 .
- the word “employee” is now assigned the metadata from the word “employee” that was used in a previous translated policy. So, it is now assigned the XACML attribute category of “urn:oasis:names:tc:xacm1:1.0:subject-category:access-subject,”AttributeId of “employee,” and DataType of “http://www.w3.org/2001/XMLSchema#string.”
- the logical conditions are compared to known logical conditions in the natural language policy sets 508 .
- the match with the strongest confidence score above a specific minimum confidence score is associated with the logical conditions in the text.
- This association between the logical conditions from the natural language policy sets 108 and the logical conditions in the text also associates specific XACML function(s).
- the policy composer After the logic is translated to XACML, the policy composer now seeks to put the rules into PolicySet and Policy nodes (components of a XACML policy structure) in step 510 . It may create PolicySet and/or Policy nodes based on multiple factors, such as proximity in the original provided natural language text and content classification from the prior text analysis. Once these PolicySet and Policy nodes are created, rules are appropriately placed in them.
- an XML file in XACML format is created which can be imported into any XACML compliant system in step 512 .
- the process 600 used by the policy composer 104 to identify rules in natural language policy text 102 and translate the rules into code compliant with the NGAC standard developed by National Institute of Standards and Technology (NIST).
- the policy composer 104 performs various natural language processing tasks on the text, to include but not be limited to named entity recognition, part-of-speech tagging, lemmatization, and morphological segmentation in step 602 . Subsequently, the policy composer 104 communicates with natural language policy sets 108 for presence of similar items discovered from its prior tasks in step 604 . These similar items are discovered based on the metadata per each item. The policy composer 104 associates items in the natural language policy text 102 with terms from the natural language policy sets 108 in step 606
- step 602 the natural language processing tasks
- step 604 checking natural language policy sets 108 for similar items—may discover a previously translated policy that used the same word or its singular form based on its characteristics, such as it being a named entity and a salience above a 0.50.
- the previously used word “employee” discovered in the natural language policy set 108 was assigned as a user attribute which entails “read access” on public information.
- This code effectively creates a user attribute in the NGAC access control graph, a representation of access control policy as a graph.
- code is only complete if it meets a syntactically correct code statement (e.g., meeting the required parameters).
- the policy composer 104 divides the natural language policy text 104 into code based on whether or not sufficient parameters are present to complete a statement in step 610 .
- the statements are converted from natural text to NGAC policy code by the policy composer 108 and the file is generated as a whole which may be then be used.
- the NGAC policy code output format may be in a file format such as Java.
- the user experience 700 is shown.
- the user may choose what the type of output policy may be, such as XACML or NGAC in step 702 .
- the user may choose the source of a natural language policy text 102 , such as uploading a text document (e.g. Microsoft Word document) into the application is shown in step 704 .
- the user may choose if he or she wishes to define any components beforehand, such as attributes, although this is not required in step 706 .
- the policy translation system described translates the natural language policy text 102 to the desired output, such as XACML, in step 708 .
- the user is displayed with a prompt in this embodiment in step 710 .
- This prompt shows the completed translation (e.g. XACML), a summary of the policy in natural language (e.g., what attributes are defined in XACML and what the rules do), and the ability to select components (e.g., a particular attribute or a rule).
- a selected component e.g. attribute or rule
- An additional option shown in the prompt is to scan for additional attributes.
- the policy may be exported or deployed in step 716 .
- Exporting may include downloading the file to an information system.
- Deployment may include committing the policy file to an access control system for immediate use.
- a representative data center 800 is shown. Users 802 connect using a communication network 804 to a gateway 806 .
- the gateway 806 communicates with a router 810 .
- the router 810 communicates with a server manager 812 and servers 814 .
- the server manager 812 communicates with the servers 814 .
- Each server 814 includes virtual machines 816 and a manager 818 .
- FIG. 9 illustrates an example machine of a computer system within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed.
- the machine may be connected (e.g., networked) to other machines in a LAN, an intranet, an extranet, and/or the Internet.
- the machine may operate in the capacity of a server or a client machine in client-server network environment, as a peer machine in a peer-to-peer (or distributed) network environment, or as a server or a client machine in a cloud computing infrastructure or environment.
- the machine may be a personal computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a server, a network router, a switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine.
- PC personal computer
- PDA Personal Digital Assistant
- STB set-top box
- STB set-top box
- a cellular telephone a web appliance
- server a server
- network router a network router
- switch or bridge any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine.
- machine shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
- the example computer system 900 includes a processing device 002 , a main memory 904 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), etc.), a static memory 906 (e.g., flash memory, static random access memory (SRAM), etc.), and a data storage device 918 , which communicate with each other via a bus 930 .
- main memory 904 e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), etc.
- DRAM dynamic random access memory
- SDRAM synchronous DRAM
- RDRAM Rambus DRAM
- static memory 906 e.g., flash memory, static random access memory (SRAM), etc.
- SRAM static random access memory
- Processing device 902 represents one or more general-purpose processing devices such as a microprocessor, a central processing unit, or the like. More particularly, the processing device may be complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or processor implementing other instruction sets, or processors implementing a combination of instruction sets. Processing device 1002 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. The processing device 1002 is configured to execute instructions 926 for performing the operations and steps discussed herein. In one embodiment, the computer system 900 may use a motherboard with PLX chip to optimize use of PCIe lanes of the motherboard.
- CISC complex instruction set computing
- RISC reduced instruction set computing
- VLIW very long instruction word
- processing device 1002 may also be one or more special-purpose processing devices such as an application specific integrated
- the computer system 900 may further include a network interface device 908 to communicate over the network 920 .
- the computer system 900 also may include a video display unit 910 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device 912 (e.g., a keyboard), a cursor control device 1014 (e.g., a mouse), a graphics processing unit 922 , a signal generation device 916 (e.g., a speaker), graphics processing unit 922 , video processing unit 928 , and audio processing unit 932 .
- a video display unit 910 e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)
- an alphanumeric input device 912 e.g., a keyboard
- a cursor control device 1014 e.g., a mouse
- graphics processing unit 922 e.g., a graphics processing unit 922
- the data storage device 918 may include a machine-readable storage medium 924 (also known as a computer-readable medium) on which is stored one or more sets of instructions or software 926 embodying any one or more of the methodologies or functions described herein.
- the instructions 926 may also reside, completely or at least partially, within the main memory 904 and/or within the processing device 902 during execution thereof by the computer system 900 , the main memory 904 and the processing device 902 also constituting machine-readable storage media.
- the instructions 926 include instructions to implement functionality corresponding to the components of a device to perform the disclosure herein.
- the machine-readable storage medium 924 is shown in an example implementation to be a single medium, the term “machine-readable storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions.
- the term “machine-readable storage medium” shall also be taken to include any medium that is capable of storing or encoding a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure.
- the term “machine-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical media and magnetic media.
- engine and “module”, as used herein, refer to logic embodied in hardware or firmware, or to a collection of software instructions, possibly having entry and exit points, written in a programming language, such as, for example, Java, Lua, C or C++.
- a software module may be compiled and linked into an executable program, installed in a dynamic link library, or may be written in an interpreted programming language such as, for example, BASIC, Perl, or Python. It will be appreciated that software modules may be callable from other modules or from themselves, and/or may be invoked in response to detected events or interrupts.
- Software modules configured for execution on computing devices may be provided on one or more computer readable media, such as a compact discs, digital video discs, flash drives, or any other tangible media.
- Such software code may be stored, partially or fully, on a memory device of the executing computing device.
- Software instructions may be embedded in firmware, such as an EPROM.
- hardware modules may be comprised of connected logic units, such as gates and flip-flops, and/or may be comprised of programmable units, such as programmable gate arrays or processors.
- the modules described herein are preferably implemented as software modules, but may be represented in hardware or firmware. Generally, the modules described herein refer to logical modules that may be combined with other modules or divided into sub-modules despite their physical organization or storage
- the present disclosure also relates to an apparatus for performing the operations herein.
- This apparatus may be specially constructed for the intended purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer.
- a computer program may be stored in a computer readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.
- the present disclosure may be provided as a computer program product, or software, that may include a machine-readable medium having stored thereon instructions, which may be used to program a computer system (or other electronic devices) to perform a process according to the present disclosure.
- a machine-readable medium includes any mechanism for storing information in a form readable by a machine (e.g., a computer).
- a machine-readable (e.g., computer-readable) medium includes a machine (e.g., a computer) readable storage medium such as a read only memory (“ROM”), random access memory (“RAM”), magnetic disk storage media, optical storage media, flash memory devices, etc.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Machine Translation (AREA)
Abstract
Description
- This application is a continuation of U.S. application Ser. No. 16/455,464, filed Jun. 27, 2019, which is hereby incorporated by reference in its entirety.
- Provided herein are methods and systems for translating natural language policy text into logical access control policy code.
- Requirements for stricter protection of data have led to technological advancements in the field of access control that allow us to externalize our access control policies from information systems. In many cases, the individuals who author the information security policies are not the individuals implementing the access control policies in these systems. Non-technical information security professionals write the access control policies in natural language in text processors that hands-on technical cyber security engineers must translate into code that a computer can understand. In other cases, a graphical user interface may be available for the implementation of information security policy. It would be desirable to find a way to automatically translate free-form natural language policy text into logical access control policy code.
- In an embodiment, natural language policy text is translated into logical access control policy code. A policy composer receives natural language policy text. An attribute dictionary communicably connected to the policy composer defines attributes and their logical access control policy equivalents. A natural language policy set communicably connected to the policy composer includes samples of natural language policy rules and their logical access control policy equivalents. The policy composer uses natural language processing, the attribute dictionary and the natural language policy set to translate the natural language policy text into logical access control code.
- In some embodiments, the logical access control code are in eXtensible Attribute Markup Language (XACML) or Next Generation Access Control (NGAC) format. The attribute dictionary may be populated with attributes from the natural language policy set or populated by user input.
- One embodiment includes translating natural language policy text into logical access control policy code. Natural language policy text is provided to a policy composer. Using natural language processing, a natural language policy rule is generated from the natural language policy text. The natural language policy rule is then compared to sample natural language policy rules that are found in a natural language policy set. Attributes are identified in the natural language policy rule using an attribute dictionary. The sample natural language policy rule is then populated with the determined attributes. If the populated sample natural language policy rule is well-formed, The populated sample natural language policy rule is translated into logical access control code and the logical access control code is stored in a policy archive.
- Further areas of applicability of the present disclosure will become apparent from the detailed description, the claims and the drawings. The detailed description and specific examples are intended for purposes of illustration only and are not intended to limit the scope of the disclosure.
- The present disclosure will become more fully understood from the detailed description and the accompanying drawings, wherein:
-
FIG. 1 illustrates a natural language policy text translation system according to an embodiment; -
FIG. 2 illustrates a process of identifying natural language policy rules in a natural language policy text in accordance with an embodiment; -
FIG. 3 illustrates a process of translating a natural language policy rule into logical access control code; -
FIG. 4 illustrates the functions of a policy composer according to an embodiment; -
FIG. 5 illustrates a process of translating a natural language policy text into XACML according to an embodiment; -
FIG. 6 illustrates a process of translating a natural language policy text into NGAC according to an embodiment; -
FIG. 7 illustrates a user experience of generating logical access control code according to an embodiment. -
FIG. 8 illustrates a typical data center according to an embodiment, -
FIG. 9 illustrates an example machine of a computer system according to an embodiment. - In the drawings, reference numbers may be reused to identify similar and/or identical elements.
- In the following description, for purposes of explanation, specific details are set forth in order to provide an understanding of the invention. It will be apparent, however, to one skilled in the art that the invention can be practiced without these details. Furthermore, one skilled in the art will recognize that embodiments of the present invention, described below, may be implemented in a variety of ways, such as a process, an apparatus, a system, a device, or a method on a tangible computer-readable medium.
- Components, or modules, shown in diagrams are illustrative of embodiments of the invention. It shall also be understood that throughout this disclosure that components may be described as separate functional units, which may comprise sub-units, but those skilled in the art will recognize that various components, or portions thereof, may be divided into separate components or may be integrated together, including integrated within a single system or component. It should be noted that functions or operations discussed herein may be implemented as components. Components may be implemented in software, hardware, or a combination thereof.
- Furthermore, connections between components or systems within the figures are not intended to be limited to direct connections. Rather, data between these components may be modified, re-formatted, or otherwise changed by intermediary components. Also, additional or fewer connections may be used. It shall also be noted that the terms “coupled,” “connected,” or “communicatively coupled” shall be understood to include direct connections, indirect connections through one or more intermediary devices, and wireless connections.
- Reference in the specification to “one embodiment,” “an embodiment,” “some embodiments,” or “embodiments” means that a particular feature, structure, characteristic, or function described in connection with the embodiment is included in at least one embodiment of the invention and may be included more than one embodiment. Also, the appearances of the above-noted phrases in various places in the specification are not necessarily all referring to the same embodiment or embodiments.
- The use of certain terms in various places in the specification is for illustration and should not be construed as limiting. A service, function, or resource is not limited to a single service, function, or resource; usage of these terms may refer to a grouping of related services, functions, or resources, which may be distributed or aggregated. Furthermore, the use of memory, database, information base, data store, tables, hardware, and the like may be used herein to refer to system component or components into which information may be entered or otherwise recorded.
- Furthermore, it shall be noted that unless otherwise noted: (1) steps may optionally be performed; (2) steps may not be limited to the specific order set forth herein; (3) steps may be performed in different orders; and (4) steps may be done concurrently.
- Techniques for natural language policy translation are described herein. In accordance with
FIG. 1 , apolicy translation system 100 for translating natural language policy text into logical access control code is shown. Logical access control code format may be XACML, NGAC or any other suitable logical access control code format. A naturallanguage policy text 102 is collected by thepolicy translation system 100. The naturallanguage policy text 102 may include a single sentence that defines a policy rule. The natural language policy text 120 may include several sentences, sentence fragments or, indeed, any text that defines one or more policy rules. In one embodiment, the naturallanguage policy text 102 is collected from a variety of different sources, such as from document files (e.g. word processor files), electronic mail, direct text input through a website, and other sources. - The collected natural
language policy text 102 may include natural language that is written in a variety of different ways. In one embodiment, each of the collectedpolicy texts 102 may use different natural language to describe desired access control policies. The natural language policy text may be written in one or more natural languages. The natural language policy rules embedded in the natural language policy text may be written in different forms. For example, the natural language policy rule “Alice may read Bob's files,” is equivalent to the natural language policy rule “Bob's files may be read by Alice.” Similarly, the same rule may be expressed in English, Japanese, Chinese, Korean or any other natural language. - The natural
language policy text 102 is communicated to apolicy composer 104. The naturallanguage policy text 102 may be communicated to thepolicy composer 104 directly, by manual input of text, uploaded as a file or any using other means of communicating text directly. The naturallanguage policy text 102 may be communicated wirelessly to thepolicy composer 104, through email, messaging or any other means of communicating text indirectly. In one embodiment, naturallanguage policy text 102 may include document files (e.g., word processor files, text-editing files, etc.), direct text input (e.g., via a form on a website), electronic mail, and other natural language policy sources. In one embodiment, the naturallanguage policy text 102 may include policies including text written by one or more individuals. - The
policy composer 104 uses anattribute dictionary 106 and natural language policy sets 108 to translate the naturallanguage policy text 102 into logical accesscontrol policy code 110. Theattribute dictionary 106 is a database that associates words found in a naturallanguage policy text 102 with attributes used in logical accesscontrol policy code 110. Theattribute dictionary 106 may be created by analyzing data found in the natural language policy sets 108, natural language policy texts 102 or may beattribute data 112 input by the user, other users, organizations or other sources. Thepolicy translation system 100 maintains anattribute dictionary 106 that is populated based on an analysis of the naturallanguage policy text 102. In one specific example, an uploaded naturallanguage policy text 102 may include text in English associated withEnglish NLP Set 1, text in Chinese associated withChinese NLP Set 1, text in Japanese associated withJapanese NLP Set 1, and text in in German associated withGerman NLP Set 1. Theattribute dictionary 106 may be populated based on associated words found in the aforementioned natural language policy sets 108 by the analysis done on the text sources. Text analysis performed by thepolicy composer 104 is used in conjunction with the natural language policy sets 108 to identify the logic used in logical accesscontrol policy code 112. The attributes in theattribute dictionary 106 are used in conjunction with the logic determined by thepolicy composer 104 to create logical accesscontrol policy code 112 that can be logically implemented. The resulting logical accesscontrol policy code 112 is stored in the policies archive 114, a repository for all created policies. - The
policy composer 104 uses one or more natural language policy sets 108 to translate natural language policy texts 102 into logicalaccess policy code 112. The natural language policy sets 108 may include natural language policy sets 108 specific to natural languages such as English, Japanese or any other natural language. In one embodiment, access control policy translation system maintains a number of natural language policy sample sets each associated with a language, such as English NLP (natural language processing)Set 1,Chinese NLP Set 1,Japanese NLP Set 1, andGerman NLP Set 1, - The natural language policy sets 108 may be specific to organizations, branches of organization, departments of organization or any other entity. The
policy composer 104 analyzes the naturallanguage policy text 102 and identifies appropriate natural language policy sets 108 for use in translation. For example, a first naturallanguage policy text 102 may includes natural language that checks if an employee resides in a certain branch of their organization may be associated with English Natural LanguagePolicy Sample Set 1, a second naturallanguage policy text 102 that includes natural language that refers to an organizational branch as a department may be associated with English Natural LanguagePolicy Sample Set 2, and a third naturallanguage policy text 102 that is written in Japanese natural language may be associated with Japanese Natural LanguagePolicy Sample Set 1, and so on. - The
policy composer 104 receives naturallanguage policy text 102 and uses theattribute dictionary 106 and natural language policy sets 108 to identify possible access control rules (collectively referred to as rules) embedded in the naturallanguage policy text 102 - With reference to
FIG. 2 , amethod 200 of identifying natural language policy rules is shown. Starting with a naturallanguage policy text 102 instep 202, thepolicy composer 104 identifies the natural language used in the natural language policy text instep 204. Thepolicy composer 104 identifies the type of policy in the naturallanguage policy text 102 instep 206. With the identified natural language and the policy type, the policy composer identifies the appropriate natural language policy sets 108 instep 208. By comparing the naturalpolicy language text 102, the appropriate natural language policy sets 108, and theattribute dictionary 106, thepolicy composer 104 identifies the possible attributes present in the naturallanguage policy text 102 instep 210. Thepolicy composer 104 then identifies the possible natural language policy rules in the natural language policy text instep 212. - With reference to
FIG. 3 , amethod 300 of translating each of the natural language policy rules found in the naturallanguage policy text 102 into logicalaccess control code 112. Taking each identified natural language policy rule instep 302, thepolicy composer 104 uses the natural language policy sets 108 and identifies possible natural language policy rule matches with natural language rule samples in the natural language rule sets 108. The matched natural language policy rule is then populated with the identified attributes instep 306. Themethod 300 then determines if the attribute populated natural language policy rule is a well-formed rule instep 308. If the rule is not well formed, the process returns to step 304 and identifies another possible natural language policy rule match. If the rule is well formed, thepolicy composer 104 generates logical access control code corresponding to the attribute populated natural language policy rule instep 310. The logic and attributes identified are then presented to the user to confirm that the proposed translation is what the user intended instep 312. If the user is dissatisfied with the logical access control code, themethod 300 returns to step 304 and makes another attempt to identify possible natural language policy rule matches. If they user is satisfied with the logical access control code, the logical access control code is exported to thepolicy archive 114 or deployed for use by the policy control system instep 314. - Referring to
FIG. 4 , a system for policy textcharacteristic analysis 400 will now be described in detail. Thepolicy samples policy text characteristics language policy text 402 includes a variety of natural language policy characteristics, includingentities characteristics 404,syntax characteristics 406,content classification characteristics 408, andlanguage characteristics 410. It is noted that the above characteristics are non-limiting examples, and that any number of natural language policy sets 412 may be analyzed to obtain any number of the above or other text characteristics. - In one embodiment, text characteristics of a natural language policy sets 412 may be determined by performing natural language processing (NLP) and/or other processes on the
policy samples policy samples - Referring to
FIG. 5 , theprocess 500 for identification and translation of natural language policy rules is shown. Once a naturallanguage policy text 102 is input into thepolicy composer 104, various natural language processing tasks are performed on the text, to include but not be limited to named entity recognition, part-of-speech tagging, lemmatization, and morphological segmentation instep 502. Thepolicy composer 104 then checks the natural language policy sets 108 for the presence of similar items discovered from its prior tasks instep 506. These similar items are discovered based on the metadata per each item. - For example, consider the sentence, “Employees can only access records in their own department.” The word, “employees,” may be recognized as a named entity in step 502 (the natural language processing tasks) and may have a salience score of 0.67 out 1.00. In
step 504—checking policy sample sets for similar items thepolicy composer 104 may discover a previously translated policy that used the same word or its singular form based on its characteristics, such as it being a named entity and a salience above a 0.50. In this example and in this embodiment, the previously used word “employee” discovered in the policy sample set was assigned the XAMCL attribute category of “urn:oasis:names:tc:xacml:1.0:subject-category:access-subject,” AttributeId of “employee,” and DataType of “http://www.w3.org/2001/XMLSchema#string.” - Subsequently, the similar items discovered in the Policy Sample Sets are associated with the items in the text in
step 506. Continuing the example above, the word “employee” is now assigned the metadata from the word “employee” that was used in a previous translated policy. So, it is now assigned the XACML attribute category of “urn:oasis:names:tc:xacm1:1.0:subject-category:access-subject,”AttributeId of “employee,” and DataType of “http://www.w3.org/2001/XMLSchema#string.” - After the associations are complete for items that are not the logical conditions to permit or deny access (e.g. subjects, resources, etc.), then the logical conditions are compared to known logical conditions in the natural language policy sets 508. The match with the strongest confidence score above a specific minimum confidence score is associated with the logical conditions in the text. This association between the logical conditions from the natural language policy sets 108 and the logical conditions in the text also associates specific XACML function(s).
- In this embodiment, consider our previously mentioned example. The words, “can only access,” would be translated to a “permit” effect. The words, “in their own department,” contains a possession modifier (“their”) and an adjectival modifier (“own”). These words will trigger the
policy composer 508 to create logic in XACML that compare the department of the employee to the department of the record he or she is accessing. - After the logic is translated to XACML, the policy composer now seeks to put the rules into PolicySet and Policy nodes (components of a XACML policy structure) in
step 510. It may create PolicySet and/or Policy nodes based on multiple factors, such as proximity in the original provided natural language text and content classification from the prior text analysis. Once these PolicySet and Policy nodes are created, rules are appropriately placed in them. - Subsequently, an XML file in XACML format is created which can be imported into any XACML compliant system in
step 512. - It should be appreciated that other items present in a typical XACML file are generated automatically or may be configured with user input.
- Referring to
FIG. 6 , theprocess 600 used by thepolicy composer 104 to identify rules in naturallanguage policy text 102 and translate the rules into code compliant with the NGAC standard developed by National Institute of Standards and Technology (NIST). - Once a natural language
policy text source 102 is input into the system, thepolicy composer 104 performs various natural language processing tasks on the text, to include but not be limited to named entity recognition, part-of-speech tagging, lemmatization, and morphological segmentation instep 602. Subsequently, thepolicy composer 104 communicates with natural language policy sets 108 for presence of similar items discovered from its prior tasks instep 604. These similar items are discovered based on the metadata per each item. Thepolicy composer 104 associates items in the naturallanguage policy text 102 with terms from the natural language policy sets 108 instep 606 - For example, consider the sentence used in the previous example, “Employees can only access records in their own department.” The word, “employees,” may be recognized as a named entity in step 602 (the natural language processing tasks) and may have a salience score of 0.77 out 1.00. In
step 604—checking natural language policy sets 108 for similar items—may discover a previously translated policy that used the same word or its singular form based on its characteristics, such as it being a named entity and a salience above a 0.50. In this example and in this embodiment, the previously used word “employee” discovered in the natural language policy set 108 was assigned as a user attribute which entails “read access” on public information. So, the discovered word “employees,” in this example, may be assigned with the code to create this employee user attribute, “long employeeID=graph.createNode(new Node(rand.nextLong( ) “Employee”, UA, null));” This code effectively creates a user attribute in the NGAC access control graph, a representation of access control policy as a graph. - Additionally, we know that this assigned employee user attribute also had an association with “read” access. The code for this, specifically, looks like this, “graph.associate(new Node(employeeID, UA), new Node(publicID, OA), r);” This code effectively allows users assigned the employee attribute to read public information. As this is associated with the employee attribute, it is now assigned to the newly discovered word “employees” too by the Policy Composer.
- This “publicID” that was discovered was a previously used object attribute. It was created with code that looked like this, “long publicID=graph.createNode(new Node(rand.nextLong( ), “Public Info”, OA, null));” Take note that one of the parameters says, “Public Info.” Based on its discovery, the
policy composer 104 will check for similar or related word(s) in the text, if one was not already discovered. When one is discovered it will be used in direct coordination with the employee attribute already described above. - Once all attributes have been discovered (e.g., the user and object attributes) and all associations that assigned that were previously used if relevant, the logic stated in the original natural
language policy text 102 will be translated into the assignments and associations used in NGAC instep 608. - The previously used example—the one referring to employees accessing their own records—is already complete, since there were prior policies with similar language. But let's assume there's content in the same input text that is unique. For example, let's assume no prior associations in the natural language policy sets 108 were found for the logic in the sentence, “Alice can read and write her SSN.” Let's begin with “read and write her SSN.” Object attributes were already created for SSN and read/write access. By creating the assignments and populating their parameters dynamically, we translate the natural language in the text to logical policy, “graph.assign(new Node(aliceSSNID, O), new Node(aliceID, OA)); graph.assign(new Node(aliceSSNID, O), new Node(aliceRWID, OA));” The association occurs for Alice as an individual, “graph.associate(new Node(aliceUAID, UA), new Node(aliceRWID, OA), rw);” As we have illustrated, there have been two paths to converting the text into logic: either by finding the logic through finding strongly related examples in the Policy Sample Sets or by using natural language processing with algorithms to populate it.
- As mentioned, code is only complete if it meets a syntactically correct code statement (e.g., meeting the required parameters). The
policy composer 104 divides the naturallanguage policy text 104 into code based on whether or not sufficient parameters are present to complete a statement instep 610. The statements are converted from natural text to NGAC policy code by thepolicy composer 108 and the file is generated as a whole which may be then be used. The NGAC policy code output format may be in a file format such as Java. - It should be appreciated that other items present in a typical NGAC policy are generated automatically or may be configured with user input. The embodiment described above illustrates how the disclosed invention may be used to translate natural language to various kinds of logical access control, as long as the components of entities (known as users in NGAC) requesting access to resources (known as objects in NGAC) exist in the text.
- With reference to
FIG. 7 , theuser experience 700 is shown. The user may choose what the type of output policy may be, such as XACML or NGAC instep 702. After doing so, the user may choose the source of a naturallanguage policy text 102, such as uploading a text document (e.g. Microsoft Word document) into the application is shown instep 704. After this, the user may choose if he or she wishes to define any components beforehand, such as attributes, although this is not required instep 706. After this, the policy translation system described translates the naturallanguage policy text 102 to the desired output, such as XACML, instep 708. After the translation is complete, the user is displayed with a prompt in this embodiment instep 710. This prompt shows the completed translation (e.g. XACML), a summary of the policy in natural language (e.g., what attributes are defined in XACML and what the rules do), and the ability to select components (e.g., a particular attribute or a rule). If the client decides to make changes instep 712, a selected component (e.g. attribute or rule) may be chosen to be altered or removed instep 718. An additional option shown in the prompt is to scan for additional attributes. Once the user has made their choices, the a new policy is generated instep 708. Once the new policy is generated, the prompt with the options described is shown again atstep 712. Once the user chooses not to change anything, the policy is generated in its desired format (e.g. XACML or NGAC) instep 714. - At this time, the policy may be exported or deployed in
step 716. Exporting may include downloading the file to an information system. Deployment may include committing the policy file to an access control system for immediate use. - In accordance with
FIG. 8 , arepresentative data center 800 is shown.Users 802 connect using acommunication network 804 to agateway 806. Thegateway 806 communicates with arouter 810. Therouter 810 communicates with aserver manager 812 andservers 814. Theserver manager 812 communicates with theservers 814. Eachserver 814 includesvirtual machines 816 and amanager 818. -
FIG. 9 illustrates an example machine of a computer system within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed. In alternative implementations, the machine may be connected (e.g., networked) to other machines in a LAN, an intranet, an extranet, and/or the Internet. The machine may operate in the capacity of a server or a client machine in client-server network environment, as a peer machine in a peer-to-peer (or distributed) network environment, or as a server or a client machine in a cloud computing infrastructure or environment. - The machine may be a personal computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a server, a network router, a switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
- The
example computer system 900 includes a processing device 002, a main memory 904 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), etc.), a static memory 906 (e.g., flash memory, static random access memory (SRAM), etc.), and adata storage device 918, which communicate with each other via abus 930. -
Processing device 902 represents one or more general-purpose processing devices such as a microprocessor, a central processing unit, or the like. More particularly, the processing device may be complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or processor implementing other instruction sets, or processors implementing a combination of instruction sets. Processing device 1002 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. The processing device 1002 is configured to executeinstructions 926 for performing the operations and steps discussed herein. In one embodiment, thecomputer system 900 may use a motherboard with PLX chip to optimize use of PCIe lanes of the motherboard. - The
computer system 900 may further include a network interface device 908 to communicate over thenetwork 920. Thecomputer system 900 also may include a video display unit 910 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device 912 (e.g., a keyboard), a cursor control device 1014 (e.g., a mouse), agraphics processing unit 922, a signal generation device 916 (e.g., a speaker),graphics processing unit 922,video processing unit 928, andaudio processing unit 932. - The
data storage device 918 may include a machine-readable storage medium 924 (also known as a computer-readable medium) on which is stored one or more sets of instructions orsoftware 926 embodying any one or more of the methodologies or functions described herein. Theinstructions 926 may also reside, completely or at least partially, within themain memory 904 and/or within theprocessing device 902 during execution thereof by thecomputer system 900, themain memory 904 and theprocessing device 902 also constituting machine-readable storage media. - In one implementation, the
instructions 926 include instructions to implement functionality corresponding to the components of a device to perform the disclosure herein. While the machine-readable storage medium 924 is shown in an example implementation to be a single medium, the term “machine-readable storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The term “machine-readable storage medium” shall also be taken to include any medium that is capable of storing or encoding a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure. The term “machine-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical media and magnetic media. - Some portions of the preceding detailed descriptions have been presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the ways used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
- In general, the terms “engine” and “module”, as used herein, refer to logic embodied in hardware or firmware, or to a collection of software instructions, possibly having entry and exit points, written in a programming language, such as, for example, Java, Lua, C or C++. A software module may be compiled and linked into an executable program, installed in a dynamic link library, or may be written in an interpreted programming language such as, for example, BASIC, Perl, or Python. It will be appreciated that software modules may be callable from other modules or from themselves, and/or may be invoked in response to detected events or interrupts. Software modules configured for execution on computing devices may be provided on one or more computer readable media, such as a compact discs, digital video discs, flash drives, or any other tangible media. Such software code may be stored, partially or fully, on a memory device of the executing computing device. Software instructions may be embedded in firmware, such as an EPROM. It will be further appreciated that hardware modules may be comprised of connected logic units, such as gates and flip-flops, and/or may be comprised of programmable units, such as programmable gate arrays or processors. The modules described herein are preferably implemented as software modules, but may be represented in hardware or firmware. Generally, the modules described herein refer to logical modules that may be combined with other modules or divided into sub-modules despite their physical organization or storage
- It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the above discussion, it is appreciated that throughout the description, discussions utilizing terms such as “identifying” or “determining” or “executing” or “performing” or “collecting” or “creating” or “sending” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage devices.
- The present disclosure also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the intended purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.
- Various general purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform the method. The structure for a variety of these systems will appear as set forth in the description above. In addition, the present disclosure is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the disclosure as described herein.
- The present disclosure may be provided as a computer program product, or software, that may include a machine-readable medium having stored thereon instructions, which may be used to program a computer system (or other electronic devices) to perform a process according to the present disclosure. A machine-readable medium includes any mechanism for storing information in a form readable by a machine (e.g., a computer). For example, a machine-readable (e.g., computer-readable) medium includes a machine (e.g., a computer) readable storage medium such as a read only memory (“ROM”), random access memory (“RAM”), magnetic disk storage media, optical storage media, flash memory devices, etc.
- The foregoing description is merely illustrative in nature and is in no way intended to limit the disclosure, its application, or uses. The broad teachings of the disclosure can be implemented in a variety of forms. Therefore, while this disclosure includes particular examples, the true scope of the disclosure should not be so limited since other modifications will become apparent upon a study of the drawings, the specification, and the following claims.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/788,579 US20200410170A1 (en) | 2019-06-27 | 2020-02-12 | Method and system for translating natural language policy to logical access control policy |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/455,464 US10606957B1 (en) | 2019-06-27 | 2019-06-27 | Method and system for translating natural language policy to logical access control policy |
US16/788,579 US20200410170A1 (en) | 2019-06-27 | 2020-02-12 | Method and system for translating natural language policy to logical access control policy |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/455,464 Continuation US10606957B1 (en) | 2019-06-27 | 2019-06-27 | Method and system for translating natural language policy to logical access control policy |
Publications (1)
Publication Number | Publication Date |
---|---|
US20200410170A1 true US20200410170A1 (en) | 2020-12-31 |
Family
ID=69951443
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/455,464 Active US10606957B1 (en) | 2019-06-27 | 2019-06-27 | Method and system for translating natural language policy to logical access control policy |
US16/788,579 Abandoned US20200410170A1 (en) | 2019-06-27 | 2020-02-12 | Method and system for translating natural language policy to logical access control policy |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/455,464 Active US10606957B1 (en) | 2019-06-27 | 2019-06-27 | Method and system for translating natural language policy to logical access control policy |
Country Status (1)
Country | Link |
---|---|
US (2) | US10606957B1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220156393A1 (en) * | 2020-11-19 | 2022-05-19 | Tetrate.io | Repeatable NGAC Policy Class Structure |
US20220321570A1 (en) * | 2021-04-06 | 2022-10-06 | International Business Machines Corporation | Shared content privilege modification |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11392766B2 (en) * | 2020-02-26 | 2022-07-19 | Cyberark Software Ltd. | Understanding and mediating among diversely structured operational policies |
US11263317B2 (en) | 2020-02-26 | 2022-03-01 | Cyberark Software Ltd. | Understanding and mediating among diversely structured operational policies |
US11763018B2 (en) * | 2021-02-22 | 2023-09-19 | Imperva, Inc. | System and method for policy control in databases |
JP2022179229A (en) * | 2021-05-21 | 2022-12-02 | 株式会社日立製作所 | Sentence data management method, and sentence data management system |
CN116032579A (en) * | 2022-12-19 | 2023-04-28 | 厦门市美亚柏科信息股份有限公司 | Access control system and method based on ABAC model |
CN116048478B (en) * | 2023-03-07 | 2023-05-30 | 智慧眼科技股份有限公司 | Dictionary escape method, device, equipment and computer readable storage medium |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030131001A1 (en) * | 2002-01-04 | 2003-07-10 | Masanobu Matsuo | System, method and computer program product for setting access rights to information in an information exchange framework |
US20090292930A1 (en) * | 2008-04-24 | 2009-11-26 | Marano Robert F | System, method and apparatus for assuring authenticity and permissible use of electronic documents |
US8532978B1 (en) * | 2008-10-31 | 2013-09-10 | Afrl/Rij | Natural language interface, compiler and de-compiler for security policies |
US20100318398A1 (en) * | 2009-06-15 | 2010-12-16 | Xerox Corporation | Natural language interface for collaborative event scheduling |
JP5930203B2 (en) * | 2012-12-11 | 2016-06-08 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | Method for controlling access to service, computer and computer program thereof |
US9940581B2 (en) * | 2013-11-20 | 2018-04-10 | International Business Machines Corporation | Ontology-aided business rule extraction using machine learning |
-
2019
- 2019-06-27 US US16/455,464 patent/US10606957B1/en active Active
-
2020
- 2020-02-12 US US16/788,579 patent/US20200410170A1/en not_active Abandoned
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220156393A1 (en) * | 2020-11-19 | 2022-05-19 | Tetrate.io | Repeatable NGAC Policy Class Structure |
US20220321570A1 (en) * | 2021-04-06 | 2022-10-06 | International Business Machines Corporation | Shared content privilege modification |
Also Published As
Publication number | Publication date |
---|---|
US10606957B1 (en) | 2020-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10606957B1 (en) | Method and system for translating natural language policy to logical access control policy | |
US10970486B2 (en) | Using unstructured input to update heterogeneous data stores | |
US10360307B2 (en) | Automated ontology building | |
US10303689B2 (en) | Answering natural language table queries through semantic table representation | |
JP7511081B2 (en) | SYSTEM AND METHOD FOR SOFTWARE VULNERABILITY TRIAGE - Patent application | |
US20120303661A1 (en) | Systems and methods for information extraction using contextual pattern discovery | |
US10409820B2 (en) | Semantic mapping of form fields | |
US10628525B2 (en) | Natural language processing of formatted documents | |
WO2019106507A1 (en) | Blockwise extraction of document metadata | |
US9940355B2 (en) | Providing answers to questions having both rankable and probabilistic components | |
CN110020358B (en) | Method and device for generating dynamic page | |
US10171311B2 (en) | Generating synthetic data | |
US11366843B2 (en) | Data classification | |
US11226832B2 (en) | Dynamic generation of user interfaces based on dialogue | |
US10216719B2 (en) | Relation extraction using QandA | |
US20220350958A1 (en) | Cross channel digital data parsing and generation system | |
US20220121665A1 (en) | Computerized Methods and Systems for Selecting a View of Query Results | |
US11893033B2 (en) | Automated analysis of unstructured computer text for generation of an enforcement action database using machine learning | |
US10922106B2 (en) | Systems and methods for providing globalization features in a service management application interface | |
US20200304466A1 (en) | Cognitive Analysis and Content Filtering | |
Handa | Multiple Virtual Personality and Knowledge graphs | |
CN116992831A (en) | Statement processing method and device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: RAIVANA, INC., VIRGINIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GOOD, MICHAEL;COFFINBERGER, BENJAMIN;REEL/FRAME:051804/0344 Effective date: 20190626 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
AS | Assignment |
Owner name: GOOD, MICHAEL, VIRGINIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:RAIVANA, INC.;REEL/FRAME:055640/0686 Effective date: 20210318 Owner name: COFFINBERGER, BENJAMIN, VIRGINIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:RAIVANA, INC.;REEL/FRAME:055640/0686 Effective date: 20210318 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |