Policy Analysis and Verification by Graph Transformation Tools

Similar documents
Detecting Structural Refactoring Conflicts Using Critical Pair Analysis

A Policy Deployment Model for the Ponder Language

The GROOVE Simulator: A Tool for State Space Generation

AGG: A Graph Transformation Environment for Modeling and Validation of Software

The Ponder Policy Specification Language

On the online unit clustering problem

Engineering Drawings Recognition Using a Case-based Approach

A Formal Resolution Strategy for Operation-Based Conflicts in Model Versioning Using Graph Modifications

A Type Graph Model for Java Programs

Detecting and Resolving Model Inconsistencies Using Transformation Dependency Analysis

Revision of Inconsistent Orthographic Views

Access Control in Rich Domain Model Web Applications

A Visual Editor for Reconfigurable Object Nets based on the ECLIPSE Graphical Editor Framework

Parallel Rewriting of Graphs through the. Pullback Approach. Michel Bauderon 1. Laboratoire Bordelais de Recherche en Informatique

Joint Entity Resolution

CS Efficient Network Management. Class 14 *

Harvard School of Engineering and Applied Sciences CS 152: Programming Languages

Reuse Contracts As Component Interface. Descriptions. Koen De Hondt, Carine Lucas, and Patrick Steyaert. Programming Technology Lab

A Reduction of Conway s Thrackle Conjecture

Secure Role-Based Workflow Models

Large-Scale Key-Value Stores Eventual Consistency Marco Serafini

REENGINEERING SYSTEM

Rough Set Approaches to Rule Induction from Incomplete Data

Exploiting Visual Languages Generation and UML Meta Modeling to Construct Meta-CASE Workbenches

The Markov Reformulation Theorem

Formal Languages and Compilers Lecture V: Parse Trees and Ambiguous Gr

PoliSeer: A Tool for Managing Complex Security Policies

XI International PhD Workshop OWD 2009, October Fuzzy Sets as Metasets

Auto Finding and Resolving Distributed Firewall Policy

A Graph-Based Formalism for Controlling Access to a Digital Library Ontology

The Encoding Complexity of Network Coding

Map-based Access to Multiple Educational On-Line Resources from Mobile Wireless Devices

Intersection of sets *

Algebraic Properties of CSP Model Operators? Y.C. Law and J.H.M. Lee. The Chinese University of Hong Kong.

Detecting and Resolving Conflicts of Mutual-Exclusion and Binding Constraints in a Business Process Context

Introduction to AGG and EMF Tiger by Modeling a Conference Scheduling System

Efficient Rectilinear Steiner Tree Construction with Rectangular Obstacles

On-Line Error Detecting Constant Delay Adder

STRUCTURED ENTITY QUERYING OVER UNSTRUCTURED TEXT JIAHUI JIANG THESIS

Programming Languages Third Edition

The packing problem: A divide and conquer algorithm on cellular automata

An Adaptive Policy Based Framework for Network Services Management

Statechart Modeling with Fujaba

Note that in this definition, n + m denotes the syntactic expression with three symbols n, +, and m, not to the number that is the sum of n and m.

Unrestricted Nogood Recording in CSP search

Handout 9: Imperative Programs and State

On Algebraic Expressions of Generalized Fibonacci Graphs

LESSON 1: INTRODUCTION TO COUNTING

A Framework for Enforcing Constrained RBAC Policies

Introduction to Operations Research Prof. G. Srinivasan Department of Management Studies Indian Institute of Technology, Madras

User Interface Modelling Based on the Graph Transformations of Conceptual Data Model

Modeling the Real World for Data Mining: Granular Computing Approach

Program Partitioning - A Framework for Combining Static and Dynamic Analysis

Visual programming language for modular algorithms

On the Reduction of Dublin Core Metadata Application Profiles to Description Logics and OWL

Applied Databases. Sebastian Maneth. Lecture 5 ER Model, Normal Forms. University of Edinburgh - January 30 th, 2017

SQL. History. From Wikipedia, the free encyclopedia.

Optimizing Segment Based Document Protection

Avro Specification

Automatic Generation of Graph Models for Model Checking

arxiv:cs/ v1 [cs.ds] 20 Feb 2003

Towards measuring anonymity

Research on the Static Analysis Method of the Localization Embedded Platform Software Code Zhijie Gaoa, Ling Lu, Wen Jiao

Line Crossing Minimization on Metro Maps

Unifying LL and LR syntax analysis of extended free grammars

Issues on Decentralized Consistency Checking of Multi-lateral Collaborations

4 Operations On Data 4.1. Foundations of Computer Science Cengage Learning

RETRACTED ARTICLE. Web-Based Data Mining in System Design and Implementation. Open Access. Jianhu Gong 1* and Jianzhi Gong 2

Efficient Computation of Canonical Form for Boolean Matching in Large Libraries

Static analysis and testing of executable DSL specification

Role-Evolution in Role-based Access Control System Suganthy. A * Department of Banking Technology Pondicherry University, Puducherry, India

3.7 Denotational Semantics

A Contribution to User Interface Modelling Based on Graph Transformations Approach

Improving Adaptive Hypermedia by Adding Semantics

Binary Decision Diagrams

Semantics via Syntax. f (4) = if define f (x) =2 x + 55.

(Refer Slide Time 6:48)

Parameterized Reductions

2386 IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 52, NO. 6, JUNE 2006

COMP 410 Lecture 1. Kyle Dewey

Maintaining coherence between models with distributed rules: from theory to Eclipse

Bloom filters and their applications

Structure of Abstract Syntax trees for Colored Nets in PNML

A Commit Scheduler for XML Databases

Control-Flow-Graph-Based Aspect Mining

Enhanced Entity- Relationship Models (EER)

Policy Storage for Role-Based Access Control Systems

File Processing Approaches

4.2 Virtual Circuit and Datagram Networks

A more efficient algorithm for perfect sorting by reversals

Multiway Blockwise In-place Merging

Introduction to Relational Databases. Introduction to Relational Databases cont: Introduction to Relational Databases cont: Relational Data structure

A note on Baker s algorithm

Liveness and Fairness Properties in Multi-Agent Systems

DATABASE SCHEMA DESIGN ENTITY-RELATIONSHIP MODEL. CS121: Relational Databases Fall 2017 Lecture 14

Johns Hopkins Math Tournament Proof Round: Point Set Topology

Forschungsberichte der Fakultät IV Elektrotechnik und Informatik

Dealing with Failures During Failure Recovery of Distributed Systems

DISCRETE-event dynamic systems (DEDS) are dynamic

Multi Domain Logic and its Applications to SAT

Transcription:

GraBaTs 04 Preliminary Version Policy Analysis and Verification by Graph Transformation Tools Yujie Zhao and Francesco Parisi-Presicce George Mason University - USA Abstract Policies are used to control the behavior of large-scale systems. After policies are designed and before policies are implemented, it should be possible to analyze the policies and verify that they behave as expected. Graph transformations provide a good method to carry out the analysis and verification because of the intuitive representation of policies and the mature theory. Here, we show how graph transformations can simulate PONDER policies and use the graph tools AGG and GROOVE to do the static and dynamic analysis. 1 Introduction Policies are a useful management tool to control large-scale systems, like distributed systems, by defining the behavior of every object in a system (what an object can and cannot do) and by defining the relations between objects (how they can interact with other objects in the system). One interesting problem of policy-based management is how to verify and analyze the policies designed for a system. After policies are designed and before they are implemented, it should be possible to know that a policy is appropriate for a system, to simulate the policy in a virtual environment to see that it produces the expected results, and to determine that there are no conflicts between components of the policy. With a method to test and analyze policies before they are implemented, possible hidden problems existing in the design phase can be found and corrected in time. We propose a policy verification and analysis method by graph transformations, which provide an intuitive way to represent abstract policies in an easy to understand style. Typed attributed graphs are used, and rules are partial morphisms between two graphs representing the left and the right end sides. Boolean expressions using the node or edge attributes can be added to the related node or edge on the left side of a rule as application conditions of the rule. A rule may also include negative application conditions. This is a preliminary version. The final version will be published in Electronic Notes in Theoretical Computer Science URL: www.elsevier.nl/locate/entcs

We use PONDER policies [2,1] as the policy prototype and graph tools AGG [9,10] andgroove[8,11] as the verification and analysis tools. At first, we show that PONDER policies can be transformed into a set of graph rules, and then use a policy example to illustrate how to verify and analyze it with AGG and GROOVE. The rest of this paper is organized as follows: section 2 overviews the PONDER policies. Section 3 contains the representation of PONDER policies by graph rules and section 4 shows what kind of verification and analysis of policies is possible using the graph tools AGG and GROOVE. 2 PONDER Policies PONDER is an objected oriented programming language for the control of distributed systems. Users can define a generic class for a special policy whose subject and target are not specified at the time of definition, and then users can pass the subject and target as parameters to use this policy. Here, we are interested more in the basic policy types of PONDER than in its programming language features. PONDER has two main categories of policies: Access control policies and Obligation policies. Access control policies confine the access to target objects by subjects in distributed systems. Access control policies have four sub-type policies: authorization, information filtering, delegation, and refrain policies. Of these four types, authorization policies are the core policies and the other three types are considered auxiliary ones. Obligation policies define the behavior of the managers of a system when an event happens. PONDER also has constraint policies (meta policies) that can be used to specify the behavior in case of conflicts between two policies. Here we only describe one of the four sub-type of access control policies, namely authorization policies. Authorization policies are enforced at the target side. When a subject wants to access a target object, the subject needs to check the authorization policies at the target side to see whether or not it has the access rights. Authorization policies can be positive (actions that the subject can perform on the target) or negative (actions that the subject is forbidden to perform on the target). In the syntax of the authorization policies, auth+ andauth indicate positive and negative authorization policies, respectively. The domain path, corresponding to either the subject or the target, is described by a domainscopeexpression. Thetype is optional and it further constrains the subject and target: only the specified type of subject or target in a specified range can be selected. An actionlist contains the actions that a subject can perform on a target object. A whenclause may be present to describe under what conditions an authorization applies. Here are two examples of authorization policies, a positive one P+ and a negative one P-. Inst auth+ switchpolicyops { subject /NetworkAdmin; 2

target <PolicyT> /Nregion/switches; action load(), remove(), enable(), disable();} inst auth /negativeauth/testrouters { subject /testengineers/trainee; action performance-test(); target <routert> /routers; } By P+, the subjects under the domain /NetworkAdmin are allowed to perform the actions load(), remove(), enable(), disable() on the PolicyT type targets under the domain /Nregion/switches. By P-, the subjects under the domain /testengineers/trainee are forbidden to perform the action performancetest() on the routert type targets under the domain /routers, and /negativeauth gives the path (where P- is stored). 3 Graph Representation of PONDER Policies This section describes the representation of the basic policy type of PONDER by graph rules; composite policies can also be represented in a similar way. 3.1 Domain Hierarchy Domains are used to group entities managed by the policies and are organized in a hierarchy, represented by a graph, with nodes for every domain and edges representing the subdomain relation (between domains) or the membership of an object to a domain. Fig. 1 is an example of a domain representation by graph, with five domains A to E and one node a. In the example, domain A has sub-domain B and C, and both domain path DomainA/DomainB/DomainD and DomainA/DomainC/DomainD can locate the node a. Fig. 1. Domain 3.2 Set operation The set operations of union, intersection and difference are used by PONDER to represent domainscopeexpressions in a policy. With the above graph representation of domains, the operations can be represented as in Fig. 2. The 3

Fig. 2. Set Operations first figure shows the union operation, with one graph for every component. If a node satisfies one of the graphs, the node satisfies the union. The + symbol means that there exists at least one edge in the path from a domain to a node. The second figure shows the intersection operation, where a node satisfies the intersection operation if it satisfies the whole graph. The third figure shows the difference operation, with the solid edge representing the positive constraint, and the dashed edge the negative constraint (e.g., absence of a path from Domain B to node a). 3.3 Positive and Negative Policies PONDER includes positive and negative policies. In order to distinguish them, a special edge attribute type is defined, with values 1 and 0 to represent a positive and a negative policy, respectively. The attribute type here has no relations with the general notion of node types or edge types. The graph tool GROOVE does not support attributes, so different edge names must be used to distinguish these two kinds of policies. 3.4 Graph Representation of Authorization Policies Fig. 3 describes a generic graph rule obtained by transforming an action of an authorization policy. An authorization policy may correspond to several graph rules depending on the number of actions it contains. Each action corresponds to the edge in the right hand side of a rule with edge name the action name and with attribute type equal to 0 or 1; the subject and the target of the action are the nodes at the two ends of the edge. This is only an abstract transformation, and the actual representation may be more complicated depending on the meaning of the action, e.g., in an actual scenario, an action may include 4 operations and every operation may need an edge corresponding to it. An authorization policy may include a whenclause constraint, represented by a boolean expression based on the attributes of the subject node in a rule. For example, for the whenclause constraint testing sequence = in progress, an attribute testing-sequence is created for the subject node and a boolean expression if (testing sequence = in progress) is added to the subject node. Only when the boolean expression is satisfied, the rule can be applied. Some attributes of the whenclause constraint may refer to global information, e.g. time, and an independent node can be set up for this kind of global attribute, 4

Fig. 3. Graph rule representation of authorization action allowing several rules to share this independent node as a constraint. If the subject or target in a PONDER policy is a domain path, all the members belonging to this domain path can be the subject or target of this policy. Sometimes, a type is provided by a policy to specialize the subject or target type, in which case a general node with a special node type can be used to represent the subject or target. Fig. 4. Graph rule for a positive authorization action In the graph rule in Fig. 4 corresponding to the load action of the positive authorization policy P+, the Subject node is without type, so it can represent any node in the domain NetworkAdmin, while the target node has node type policyt, so that only nodes in the domain Nregion/switches are affected by this rule. The dashed line on the left hand side is a negative application condition forbidding the presence of an edge between subject and target. The graph rule in Fig. 5 corresponds to the performancetest action of the negative authorization policy P-. The other types of policies can be similarly represented by graph rules. 5

Fig. 5. Graph rule for a negative authorization action 4 Tool Simulations First we describe a simplified version of the problem in [5], then find a conflict using the graph tools AGG [9,10] and GROOVE[8,11]. 4.1 Problem Description Fig. 6 is a scenario graph with six employee nodes and one file node, where higher level employee nodes manage the lower employee nodes. The worktype attribute distinguishes the employee nodes; the employee node with worktype = 7 is the only one managed by two nodes. Fig. 6. Problem description We set up four rules according to the policies in [5]. Onerulegivesthe employee node with worktype = 3 the access right to the file node, and a second rule lets all the employee nodes managed by this node have the access right to the file node. A third rule forbids the employee node with worktype =2 from accessing the file node, and a fourth one forbids all the employee nodes managed by this node. So, the employee node with worktype = 6 can access the file node, while the employee node with worktype = 4 cannot. But there is a conflict at the employee node with worktype = 7 which is both permitted and forbidden access to the file node. This kind of conflict can be found by AGG and GROOVE. 6

4.2 AGG Simulation AGG can be used to detect conflicts either statically or dynamically. AGG defines three types of conflicts [10] that it can find during static checking: 1. One rule application deletes a subgraph needed for the match of another rule application. 2. One rule application generates a subgraph prohibited by a negative application condition of another rule application. 3. One rule application changes the attributes needed for the match of another rule application. The presence of these conflicts in a set of rules does not affect the application of the rules because AGG applies them in order and repeatedly tries every rule until none can be applied. So if a conflict makes one rule not applicable, AGG just skips it and tries the next one during its execution. Fig. 7. AGG first rule Fig. 7 describes the first rule which permits the employee node to access the file node by the edge attribute type = 1, and this rule is further constrained by an inside boolean condition if(x = 3), so only the employee node with worktype = 3 satisfies this rule. The leftmost cell in Fig. 7 is the negative application condition of this rule, the middle cell is the left side, and the rightmost cell is the right side. Fig. 8. AGG second rule Fig. 8 describes the second rule which permits an employee node to access 7

the file node if its manager has the access right. The left two cells (one for each value of the attribute type) are negative application conditions which forbid the application of this rule if an access edge is already present. The third and the fourth rule are exactly the same as the first and the second rule, respectively, except for the values of the type attribute (type = 1 is replaced by type = 0 and viceversa) and the boolean condition (if(x = 3) replaced by if(x = 2)). The second and the fourth rule together describe the second type of conflict defined by AGG (the second rule gives the employee node with worktype = 7 the access right, but the fourth rule forbids the employee node with worktype = 7 to access the file node), and AGG can find this conflict statically by critical pair analysis. Fig. 9. AGG fifth rule AGG can also find conflicts dynamically, but we need to modify the second and the fourth rule and add an extra rule. Both the second and the fourth rule now need only one negative application to avoid the addition of an existing edge. Fig. 9 is the new fifth rule, which adds an error edge to an employee node if this employee node is both permitted and forbidden access to the same file.fig.10 is the result of the execution, with the error edge indicating the conflict. Fig. 10. AGG execution 8

4.3 GROOVE Simulation Zhao and Parisi-Presicce GROOVE is simpler than AGG because nodes and edges cannot have attributes, and it does not provide critical pair analysis (so GROOVE cannot statically check for conflicts). In order to show the type of an edge, an edge name access represents the fact that an employee has the access right, and an edge name no access represents the absence of the access right. In Fig. 11, the first rule permits the employee node with worktype =3to access the file node. One characteristic of GROOVE is that it can represent the left side, the right side and all negative application conditions of a rule by one single graph. In order to do this, GROOVE sets up four kinds of nodes and edges: the fat dashed edge represents a negative application condition (absent edge for this rule to be applied), the solid fat edge is a newly added edge. Thus,the rule in Fig.11 adds an edge with name access between the employee3 andfile nodes, if there is no such edge already present. In Fig. 12, the second rule allows a node to access the file node if this node s manager has the access right. The third and fourth rule are the same as the first and second rule, respectively, except for replacing access with no access, and employee3 with employee2. In Fig. 13, the fifth rule finds the conflict in a graph. The solid thin edge with no access, access represents two edges, one labelled no access and one access (this is just GROOVE s style). If there are edges no access and access between a node and a file node, then the rule removes the no access and access edges and adds an error edge. The final result is exactly the same as in AGG. Fig. 11. First rule Fig. 12. Second rule Fig. 13. Fifth rule 4.4 Comparison of AGG and GROOVE AGG and GROOVE are both good graph tools. They implement graph transformations including negative application conditions, left hand side and right hand side of a rule although using different styles: AGG separates each negative application condition, left hand side and right hand side of a rule into independent graphs while GROOVE combines all of the components together in one graph. After a set of rules is defined, both AGG and GROOVE can apply them on an instance graph and produce the expected result correctly. But the execution order of the set of rules is different: AGG uses the given order of 9

the rules and applies one rule as many times as possible before applying the next one, and then cycles through the list until no rule can be applied. So AGG always obtains one result after execution. GROOVE uses a directed graph to record the transformation process. The given instance graph is the starting node of this graph, and if one rule is applicable, it generates a directed edge and a node which represents a new graph transformed from the instance graph. This method is applied to all the nodes of the directed graph until no rule can be applied. So GROOVE returns the set of all possible transformation results, unlike the one deterministic result produced by AGG. AGG permits every node and edge to have its own attributes and permits boolean expressions to be set up on these attributes. This function gives AGG more representation ability than GROOVE. As we describe in the transformation from policies to rules, attributes are necessary. Another advantage of AGG is that it has a critical pair analysis function that can compare every pair of rules statically to find the conflicts between them. This function is useful to do static conflict check. When the number of rules is large, it is easy to generate conflicts between rules during the rules design, but finding the conflicts in many rules is not easy, so the critical pair analysis function provides a good checking solution. GROOVE does not have this function, and it depends on users to find conflicts. 5 Concluding Remarks We show how to verify and analyze policies by graph, by giving examples that use PONDER policies as policy prototype and AGG and GROOVE as analysis tools. Both AGG and GROOVE can detect and remove conflicts during execution if there is some rule designed for this purpose. In addition, AGG can use critical pair analysis to find conflicts statically. After this kind of simulation and checking, we can find potential problems in policies and realize whether the policies reflect the design purpose for a real system. Proponents of PONDER also believe that conflict detection is necessary and they built a tool for static conflict detection [5]. This method is not generic: at first the designers must realize that there may exist some kind of conflict, and then can build a tool (meta policy) to deal with it. By applying graph transformations, all the conflicts could be found automatically. For the use illustrated in this paper, AGG and GROOVE could be further developed in (at least) two directions. First, both tools could add more features to allow the use of established graph transformation results (for example, GROOVE could detect sequential independence of rules to avoid redundant derivations [7]). Second, both tools could add more programming features. For example, PONDER can pass policies as parameters to another policy to implement policy embedment, and AGG and GROOVE indeed could include this sort of features. 10

References [1] N. Damianou, N. Dulay, E. Lupu, M Sloman, Ponder: A Language for Specifying Security and Management Policies for Distributed Systems. Imperial College Research Report DoC 2001, Oct. 2000. [2] N. Damianou, N. Dulay, E. Lupu and M. Sloman, The Ponder Policy Specification Language, in: Policy Workshop 2001, Bristol, U.K., Springer- Verlag, Lecture Notes in Comp. Sci. 1995, Springer, 2001. [3] M.Koch, L. V. Mancini, F. Parisi-Presicce, On the specification and evolution of access control policies, in Proc. SACMAT 2001, ACM Press, pp. 121-130 [4] M. Koch, F. Parisi-Presicce, Describing Policies with Graph Constraints and Rules, in Proc. ICGT 2002, Lecture Notes in Comp. Sci. 2505, Springer 2002, pp. 223-238 [5] E. Lupu and M. Sloman, Conflicts in Policy-Based Distributed Systems Management, IEEE Trans. on Soft. Eng., Special Issue on Inconsistency Management, 25(6):852-869, Nov./Dec. 1999. [6] L. Lymberopoulos, E. Lupu and M. Sloman, Using CIM to Realize Policy Validation within the Ponder Framework. DMTF Global Management Conference, San-Jose, California, June 2003. [7] D. Moldovan and F. Parisi-Presicce, Parallelism Analysis in Rule-Based Systems using Graph Grammars, Proc. 3rd Intern. Workshop on Graph Grammars, Lecture Notes in Comp. Sci. 291, Springer 1987, pp.427-439 [8] A. Rensink, The GROOVE simulator: A tool for State Space Generation, in Proc. AGTIVE 2003, Lecture Notes in Comp. Sci. 3062, Springer 2004, pp. 479-485 [9] G.Taentzer,AGG: A Tool Environment for Algebraic Graph Transformation, in Proc. AGTIVE 1999, Lecture Notes in Comp. Sci. 1779, Springer 200, pp. 481-490 [10] AGG homepage: http://tfs.cs.tu-berlin.de/agg/ [11] GROOVE homepage: http://wwwhome.cs.utwente.nl/ groove/0-1-7/index 11