Academia.eduAcademia.edu

Integrating PMI services in CORBA applications

2003, Computer Standards & Interfaces

Application-level access control is an important requirement in many distributed environments. For instance, in new scenarios such as e-commerce, access to resources by previously unknown users is an essential problem to be solved. The integration of Privilege Management Infrastructure (PMI) services in the access control system represents a scalable way to solve this problem. Within the CORBA standards, the Resource Access Decision (RAD) facility is a mechanism used by security-aware applications to obtain authorization decisions and to manage access decision policies. This paper presents PMI-RAD, an approach to integrate the services of an external PMI into CORBA applications using the RAD facility. In particular, the integration of the external PMI in the access control system is based on the semantic description of the PMI services. Our RAD implementation requests and verifies attribute certificates from the PMI in a transparent way for CORBA objects.

J. Lopez, et al., “Integrating PMI Services in CORBA Applications”, Computer Standards & Interfaces, vol. 25, pp. 391-409, 2003. NICS Lab. Publications: https://www.nics.uma.es/publications Integrating PMI services in CORBA Applications Abstract Application-level access control is an important requirement in many distributed environments. For instance, in new scenarios such as e-commerce, access to resources by previously unknown users is an essential problem to be solved. The integration of Privilege Management Infrastructure (PMI) services in the access control system represents a scalable way to solve this problem. Within the CORBA standards, the Resource Access Decision (RAD) facility is a mechanism used by security-aware applications to obtain authorization decisions and to manage access decision policies. This paper presents PMI-RAD, an approach to integrate the services of an external PMI into CORBA applications using the RAD facility. In particular, the integration of the external PMI in the access control system is based on the semantic description of the PMI services. Our RAD implementation requests and verifies attribute certificates from the PMI in a transparent way for CORBA objects. Keywords: CORBA, Distributed systems security, Privilege Management Infrastructures, XML metadata. 1 Introduction Distributed applications are playing an increasingly important role motivated by the need of scalable and open environments that support the expansion of organizations computing boundaries. As applications move from corporate environments to the Internet, the lack of security and trustworthy mechanisms becomes evident. Security is a critical requirement in scenarios such as electronic commerce and collaborative work, especially if distributed object technology is used as a backbone. Some of the most relevant and interesting domains are middleware, web services and grid computing. The standardization of services and architectural abstractions provided by middleware systems has facilitated the composition of new systems based on the combination of functional components. CORBA is one of the most relevant examples [1]. The fact that middleware systems demand the abstraction1 of the applications from the underlying mechanisms further confirms the need to revise security services. Access control and use-control are, probably, the most important ones. New scenarios where distributed objects are emerging share common problems. One of the most relevant general problems is that resources are accessed by previously unknown users; thus, an external authorization mechanism is needed. Other related issues are the high degree of flexibility 1 It is necessary to realize that achieving a complete abstraction is not possible because some of the security mechanisms are designed to be used by security-aware applications. required because of the heterogeneous nature of the resources, the ability to change the access control parameters dynamically and transparently, and the establishment of access conditions in an automatic way based on information about the objects. Paradoxically, authorization in distributed systems often relies on centralized access control management, but centralized control has important disadvantages: (a) the control point represents a weak part against security attacks and fault tolerance, (b) does not facilitate the deployment of owner-retained-control mechanisms, (c) reduces system performance because it introduces a bottleneck for request handling and, (d) usually, enforces homogeneous access control schemes that do not fit naturally in heterogeneous user groups and organizations. Distributed access control is still an open problem because solutions proposed so far do not provide the flexibility and manageability that are required by distributed objects systems. In order to solve this problem we propose a solution that makes use of attribute certificates, a standardized type of independent data object that can contain user privileges. However, the use of attribute certificates and Privilege Management Infrastructures (PMIs) does not solve all the problems. Application-level access control is required in many distributed computing environments because some authorization decisions are based on application domain-specific factors. Fine-grained access control is also a common requirement. Approaches that embed authorization logic into the applications do not promote interoperability, introduce great administrative overhead on the security administrator and increase the chance of errors. Therefore, when considering security, scalability and interoperability requirements simultaneously, the most appropriate solution is to separate the certification of attributes from access control functionalities. In this way, the access control system will need the complement of an external component providing attribute certification functions. The full integration of an external access control facility, the Resource Access Decision (RAD) [2], and an infrastructure for the management of privileges, the PMI, represents a big step towards the solution of the general problem. Other security challenges must be addressed in distributed systems. For instance, malicious components, end-to-end service requirements, evolving security technologies and security policy administration. The first three challenges have received some attention and a variety of solutions. Conversely, the last one has not been sufficiently addressed. In fact, it is difficult to correctly manage security policies in large complex systems with many objects. In order to address this problem, we have made an extensive use of semantic information about resources to be accessed, and have defined an expressive access control language that allows the modularisation, parameterisation and dynamic allocation of policies. Furthermore, a set of tools has been developed to help the administrator in all those tasks related to the creation, management and semantic and contextual validation of policies. The semantic description of the external privilege infrastructure is an essential technique for its integration in the access control system, and metadata is the instrument used to convey this semantic information. There are ongoing standardization efforts in the field of metadata with the goal of promoting interoperability and efficiency. The Semantic Web Activity builds upon the earlier W3C Metadata Activity, including the definition of RDF [3] aimed to enable an XML based standardized and interoperable specification of semantics for resources. XML-Schema is the defacto standard for expressing shared vocabularies and defining the structure, content and semantics of XML documents. XML-Schema introduces a powerful type mechanism that allows specifying primitive data types, and also types of structures. Both technologies, RDF and XML-Schema, are used in PMI-RAD for the representation of semantics. Consequently, the approach presented in this paper, PMI-RAD, integrates the services of an external PMI into CORBA applications using the RAD facility. Our RAD implementation requests 2 and verifies attribute certificates from the PMI in a transparent way for CORBA objects. Additionally, our solution takes into account the enforceability of many access policies by many applications. An application access policy may control who can invoke the application, extending the object invocation access policy enforced by the Object Request Broker (ORB), and taking into account other items such as the value of the parameters or the data being accessed. PMI-RAD also addresses this problem while, at the same time, controlling access to finer-grained functions and data encapsulated within it. The paper is organized as follows. Section 2 presents the most important previous results related to our research. Section 3 overviews CORBA security, focusing on the CORBA Security Service and the RAD facility. In section 4, attribute certificates and PMIs are studied in detail. Section 5 describes our approach, the PMI-RAD. We explain the system operation and the role of semantic information and discuss the most relevant advantages of the solution. Finally, section 6 summarizes the conclusions and presents ongoing and future work. 2 Related work Some interesting research has been done in the area of access control services in CORBA. Karjoth has proposed a formal model of authorization, revealing some important deficiencies in the 1995 CORBA security standard [4]. A view-based model is presented in [5] for designing access policies. Additionally, the paper presents an alternative access control model for CORBA systems. Beznosov et al. [6] have addressed the problem of providing fine-grained application-level access control for security aware applications. The work originated the adoption of the RAD specification within the OMG standards. The difficulties of describing an appropriate notion of the security attributes “caller” and “target” in object-oriented middleware systems such as CORBA are discussed in [7]. This paper shows that a security service layer can not fully abstract the underlying security mechanisms without having implications on granularity and semantic mismatches. Regarding PMIs, several proposals have been introduced for access control to distributed heterogeneous resources from multiple sources. The Akenti Project [8] proposes an access control system designed to address issues raised when allowing restricted access to distributed resources controlled by multiple stakeholders. The requirement for the stakeholders to trust the rest of the servers in the network, the assumption of the existence of a supporting identity Public Key Infrastructure (PKI) and some security vulnerabilities related to the existence of positive and negative use-conditions are the main drawbacks of Akenti. The PERMIS Research Project [9] objective is to set up an integrated infrastructure to solve identification and authorization problems. PERMIS group has examined various policy languages concluding that XML is the most appropriate candidate for a policy specification language. Because the PERMIS system is based on the Role-Based Access Control (RBAC) model [10] it shares its limitations. Also the requirement of a supporting PKI is hard to fulfil and it is not necessary in many authorization scenarios. In the context of policy specification, several languages based on the XML standard have been developed for access control, digital rights management, authentication and authorization [11-15]. Many similarities and interesting features can be found among these languages. Nevertheless, they do not support relevant properties such as policy parameterisation and composition. Moreover, many features provided by those languages are not necessary in the scenarios we are addressing [16]. Two relevant proposals are the Author-X system [17] and the FASTER project [18], which describe two similar systems for access control to XML documents. Because both systems have been specifically developed for XML documents, they do not fit well in the CORBA environment. 3 However, they share some features with our solution, PMI-RAD. For instance, FASTER and our Semantic Policy Language (SPL) use XML-Schema [19], the W3C successor of Data Type Definitions (DTDs) [20]. Additionally, the scheme we have designed and developed uses a second XML metadata technology, RDF-Schema, the W3C standard for metadata interoperability [21]. This enables the dynamic allocation, composition and instantiation of SPL policies, based on metadata about the resources to be accessed. 3 Overview of CORBA Security Although CORBA significantly simplifies the implementation of complex distributed systems, the support of techniques for reliable, fault-tolerant, and secure software is limited in the state-of-the-art CORBA. The CORBA specifications include several independent security related components. In this section we review these components paying special attention to those ones related to our work. 3.1 CORBA Security Service The CORBA Security Services Specification (CORBASec) specifies a number of security functionality components [22]. It provides only a limited choice of coarse-grained mechanisms to specify access rights for components. The security service controls access to application objects not being aware of security, so security granularity is, in practice, limited to the object level. The security functionality defined by this specification comprises: ° Identification and authentication of principals, human users and objects that need to operate under their own rights, to verify they are who they claim to be. ° Authorization and infrastructure based access control - deciding whether a principal can access an object domain, individual object, or operation on an object, normally using the identity and/or privilege attributes of the principal (such as role, groups, security clearance, etc.). ° Security auditing to make users accountable for their security related actions. Auditing mechanisms should be able to identify the user correctly, even after a chain of calls through many objects. ° Security of communication between objects, which is often done over insecure lower communication layers. Establishing trust between the client and target may require mutual authentication. It also may require integrity protection and, optionally, confidentiality protection of messages transferred between objects. Non-repudiation provides irrefutable evidence of actions such as proof of origin of data to the recipient, or proof of receipt of data to the sender to protect against subsequent attempts to falsely deny the reception or sending of data. ° Some services are implemented by CORBA on the ORB layer, with the use of so-called interceptors, e.g. access control and audit. However, they rely strongly on the services provided by the underlying security technology, such as authentication and message protection. CORBASec acts to some extent like an API that calls underlying security mechanisms such as Kerberos v5 [23], and SESAME [24], instead of implementing all security functionality itself. Therefore, the functionality offered by CORBASec is always limited by the functionality offered by the underlying security mechanisms. Secure Sockets Layer (SSL) [25] is also widely used as a basic security mechanism for CORBA security, but it is not well integrated into the CORBA security architecture. The reason is that SSL works as a secure transport mechanism, that is, it creates a network connection as part of 4 the security context establishment. SSL has to be integrated as an alternative transport mechanism into the ORB. In this way, the security context is automatically set up when the ORB opens a new network connection. 3.2 Other CORBA Security Specifications The Authorization Token Acquisition Service (ATLAS) [26] is used by a Client Security Service (CSS) to acquire authorization tokens to be delivered to a Target Security Service (TSS) for security purposes. This specification defines the method by which a client locates an ATLAS, but only to make requests on a specific target. The location of ATLAS is explicitly declared out of the scope of the specification. The Security Domain Membership Management (SDMM) architecture defines interfaces that are used by different players for the interaction with SDMM mechanisms [27]. The architecture has two major objectives: (a) the first is to define standard mechanisms (interfaces) for obtaining information about the membership of a given object in groups, called security policy domains; and (b) the second is to define standard mechanisms for retrieving information about the state of objects. The Common Secure Interoperability Specification - version 2 (CSIv2) [28] defines the Security Attribute Service (SAS protocol) that enables authentication, delegation, and privilege data interoperability. This is achieved by acting as a higher-level protocol under which secure transports may be unified. The protocol provides client authentication, delegation, and privilege functionality that may be applied to overcome corresponding deficiencies in an underlying transport. Although the Naming Service [29] is not a CORBA security specification we include it in this section because the way to use it is very relevant for the implementation of any security solution. The Naming Service provides the principal mechanism through which most clients of an ORBbased system locate objects that they intend to use. The Uniform Resource Locator (URL) scheme is used to represent a CORBA object bound in a NamingContext. Basically, there are three different ways to describe a CORBA Object Reference in string form: IOR addresses, corbaloc addresses, and corbaname addresses. For our purposes, the second one is the most convenient. A corbaloc address has the format corbaloc:proto:hostname:port/objectID and represents a CORBA Object Reference as a URL. The optional proto part denotes the transport protocol to be used defaulting to Internet Inter-ORB Protocol (IIOP); the hostname and port parts define the IP host and the TCP port where a suitable IIOP message must be sent in order to contact the CORBA object. The objectID part identifies a specific CORBA object. The Resource Access Decision facility is a mechanism used to obtain authorization decisions and to manage access decision policies. It provides an enhanced functionality that is not provided by CORBASec. The practical result of not being able to use an infrastructure security service to express application specific policies is that each business application must contain its own implementation of an access control facility. This introduces severe problems for organizations that need to define access policies that are consistent across applications. Nowadays, these policies are often coded as part of the application, which makes impossible to administer and maintain auditable access policies. The OMG RAD addresses these problems providing a uniform way for application systems to enforce resource-oriented access control policies. The standardization of this service enables organizations to define and manage an Enterprise Security Policy for use by all their software components. The RAD service provides several functions, as the ability to use credentials supplied by diverse security mechanisms, and to integrate facilities delivered as a product by security providers. Additionally, it facilitates to consider multiple access control policies and to define how these policies are reconciled to govern access to the same resource. 5 4 Authorization using Attribute Certificates: Towards PMIs The ITU-T (International Telecommunications Union) X.509 recommendation [30] standardizes the concept of attribute certificate2, and defines a framework that provides the basis upon which a PMI can be built. As it is well known, a PKI supports encryption, integrity and non-repudiation services, and essentially focus on the management of identity certificates (a.k.a. public-key certificates). Precisely, the foundation of the PMI framework is the PKI framework defined by ITU [31]. In fact, attribute certificates have been designed to be used in conjunction with identity certificates, that is, PKI and PMI infrastructures are linked by information contained in the identity and attribute certificates. Although linked, both infrastructures can be autonomous, and managed independently, what provides a good advantage. Creation and maintenance of identities can be separated from PMI, as authorities that issue certificates in each of both infrastructures are not necessarily the same ones. In fact, the entire PKI may be existing and operational prior to the establishment of the PMI. One of the main advantages of an attribute certificate is that it can be used for various purposes. It may contain group membership, role, clearance, or any other form of authorization. A very essential feature is that the attribute certificate provides the means to transport authorization information in distributed applications. This is especially relevant because through attribute certificates, authorization information becomes “mobile”, which is highly convenient for CORBA. The mobility feature of attributes has been used in applications since the publication of the 1997 ITU-T X.509 recommendation. However, it has been used in a very inefficient way. That recommendation introduced an ill-defined concept of attribute certificate. For this reason, most of actual applications do not use specific attribute certificates to carry authorization information. On the contrary, attributes of entities are carried inside identity certificates. The subjectDirectoryAttributes extension field is used for this purpose. This field conveys any desired directory attribute values for the subject of the certificate, and is defined as follows: subjectDirectoryAttributes EXTENSION ::= { SYNTAX AttributesSyntax IDENTIFIED BY id-ce-subjectDirectoryAttributes } AttributesSyntax ::= SEQUENCE SIZE (1..MAX) OF Attribute This solution does not make entity attributes independent from identity, which can cause problems. Firstly, this is not convenient in the frequent situations where the authority issuing the identity certificate is not the authority for the assignment of privileges. Secondly, even in the situations where the authority is the same one, we must consider that life of identity certificates is relatively long when compared to the frequency of change of user privileges. Therefore, every time privileges change it would be necessary to revoke the identity certificate, and it is widely known that certificate revocation is a costly process. Moreover, many applications deal with authorization issues like delegation (conveyance of privilege from one entity that holds a privilege to another entity) or substitution (one user is temporarily substituted by another user, and this one holds the privileges of the first one for a certain period of time). Identity certificates do support neither delegation nor substitution. The ITU-T X.509 recommendation of year 2000 provides the solution to these problems. Attribute certificates are conveniently described, including an extensibility mechanism and a set of specific extensions. A new type of authority for the assignment of privileges is also defined, the Attribute Authority (AA), while a special type of Authority, the Source of Authority (SOA), is settled as the root of delegation chains. The recommendation defines a framework that provides a foundation upon which a Privilege Management Infrastructure is built to contain a multiplicity of AAs and 2 Although attribute certificates were introduced by ITU in its previous X.509 recommendation, the concept was originally ill-defined and its use has not been the appropriate one, as it is explained later. 6 final users. Revocation procedures are also considered by defining the concept of Attribute Certificate Revocation Lists (ACRLs), which are handled in the same way as for Certificate Revocation Lists (CRLs) published by Certification Authorities (CAs). The attribute and identity certificates of one user are bound as shown in Fig. 1. We can see that the field holder in the attribute certificate contains the serial number of the identity certificate. Version Number Serial Number Signature Algorithm Issuer Validity Period Holder Attributes Issuer Unique Id Extensions Version Number Serial Number Signature Algorithm Issuer Validity Period Subject Public Key Issuer Unique Id Subject Unique Id Extensions AA Signature CA Signature Fig. 1. Relation between attribute and identity certificate Although linked, both certificates are independently managed. The important meaning of this is that a PKI and PMI are separate infrastructures in the sense that either structure can work on its own, or to be more precise, they can be established and managed independently. Next subsection describes in more detail this possibility. 4.1 Independence of the Infrastructures The mutual independence of the two infrastructures is also valid when considering other ways to describe the holder of the attribute certificate. In spite of using the serial number of the identity certificate, or even additionally to it, it is possible to bind the attribute certificate to any object by using the hash value of that object. For instance, the hash value of the public key, or the hash value of the identity certificate itself. All possibilities for binding can be concluded from the ASN.1 [32] specification for the field holder shown in figure 2, where other related data structures are also specified. The content of this specification is essential for the solution that we have developed. We can see that one of the possible assignments to GeneralName is uniformResourceIdentifier, which precisely coincides with the use of corbaloc for the description of a CORBA object, as seen in previous section. The infrastructures are absolutely separated when considering the situation in which some other authentication method different from that one based on identity certificates is used. In these cases, a PKI is not even used. The discussion about the separation of functions between PKIs and PMIs is a very relevant issue. From the point of view of the theory, the separation is possible, as we have argued in previous paragraphs. From the point of view of real application scenarios separation is not only possible but, in our opinion, very convenient. We previously argued that in most cases the authority issuing the identity certificate is not the authority for assigning privileges. That is, the entity having the role of CA is not the same one as that having the role of AA. The main reason for this argument is that the identities have a global meaning in most certification schemes (although a few schemes do not support this idea, for instance, SPKI [33]). Thus, the CA does not necessarily belong to the organization where the entity belongs. The identity certificate can be issued by a CA managed by a governmental organization, a public organization, or even by a private company specialized in providing services and facilities related to certification of identities. 7 On the contrary, we believe that attributes have a non-global meaning. Moreover, because of the restricted scope of an attribute certificate, it is convenient that this certificate is issued by an authority that is more or less local to the scope of the user. This argument is even more valid if entity attributes are considered as confidential information. The certificate may contain some sensitive information and then attribute encryption may be needed, as proposed by PKIX [34]. Holder ::= SEQUENCE { baseCertificateID [0] IssuerSerial OPTIONAL, -- issuer and serial number of the identity certificate entityName [1] GeneralNames OPTIONAL, -- the name of the entity or role objectDigestInfo [2] ObjectDigestInfo OPTIONAL -- used to directly authenticate the holder, } GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName GeneralName ::= CHOICE { otherName [0] INSTANCE OF OTHER-NAME, rfc822Name [1] IA5String, dNSName [2] IA5String, x400Address [3] ORAddress, directoryName [4] Name, ediPartyName [5] EDIPartyName, uniformResourceIdentifier [6] IA5String, iPAddress [7] OCTET STRING, registeredID [8] OBJECT IDENTIFIER } ObjectDigestInfo ::= SEQUENCE { digestedObjectType ENUMERATED { publicKey (0), publicKeyCert (1), otherObjectTypes (2) }, otherObjectTypeID OBJECT IDENTIFIER OPTIONAL, digestAlgorithm AlgorithmIdentifier, objectDigest BIT STRING } Fig. 2. ASN.1 specification of Holder and related data structures 5 Description of the PMI-RAD Our PMI-RAD is aimed to the integration of PMI services for CORBA security-aware applications. Consequently, our solution has been focused on the RAD facility. PMI-RAD is an open solution that adheres to the functionality of the standard specifications. Therefore, the necessary modifications of the original RAD have been carefully designed in order to guarantee transparency and interoperability. Our proposal relies on the semantic description of the PMI, using XML metadata standards for the full integration of this service into the CORBA security components and the interoperation of the PMI with other systems. In fact, we have successfully applied this approach to a Digital Library access control scenario. Therefore, the semantic description represents a valuable tool for the interfacing of different distributed systems. This solution adds enhanced functionalities for security administrators and represents a flexible, scalable and interoperable approach for the integration of two independent distributed systems. 5.1 5.1.1 Overview of the PMI-RAD Analysis of the RAD specification The RAD facility reference model defines a framework in which a wide variety of access control policies may be supported [2]. However, not all access control schemes can be represented in the RAD model. Some of its limitations are concerned with the DecisionCombinator object, the SecuredResource representation, and the policy evaluation scheme. The DecisionCombinator object is used to combine the results produced by a series of PolicyEvaluator objects. The inclusion of the DecisionCombinator object and the one-to8 one cardinality of the relation between several PolicyEvaluator and Policies conflicts with the modular policy approach. That is, this design allows the combination of results but not the combination of different policies. On the other hand, both the definition of modular policies and their combination are important features that increase the flexibility and expressiveness of the access control specifications while reducing the complexity of management. The representation of the list of SecuredResource is simple, and represents a negative aspect of the RAD reference model. A SecuredResource is represented within the RAD by a ResourceName, a structure containing an AuthorityId for the namespace and a sequence of name/value pairs. This sequence is intended to provide different ways to identify the resource but not to state properties about it. This fact is especially important because the RAD facility is used by security-aware applications. In these applications, domain-specific factors and particular properties of objects accessed must be considered when taking an access decision. In order to make a final access decision, the model takes into consideration properties (SecAttributes) about the client object. In contrast, it is not straightforward to include properties about the target object. Therefore, in the reference model, a different policy must be defined for each target object. In practice, it is frequent that policies applicable to several objects are instances of a more general policy. For instance, consider this simple policy: “A client with security level l can have access to any object with security level equal or lower than l”. Given two objects a and b with different security levels la and lb we would need to specify two policies instead of the generic one: (i) Pa for object a stating “grant access to clients with security level grater or equal to la”, and (ii) Pb for object b stating “grant access to clients with security level grater or equal to lb”. The reason is that no information is provided about the properties of the target object (SecuredResource). Moreover, although dynamic properties are claimed to be supported by the model, they are intended to represent the client, not the SecuredResource. Finally, the policy evaluation scheme is based on a PolicyEvaluatorLocator that obtains object references to several PolicyEvaluators and the DecisionCombinator that are required for an access decision. Again, the PolicyEvaluatorLocator object does not consider any dynamic information about the target object. On the other hand, it is supposed to be able to find the set of required PolicyEvaluator on the basis of the target object ResourceName. As a consequence the location of the policy applicable to a given object is inflexible and static. Additionally, the specification does not address the association of policies to newly created objects. 5.1.2 Proposed approach Previous analysis reveals some drawbacks of the RAD specification that can be solved by introducing some modifications that are transparent to the rest of the CORBA system. These modifications are based on meta-models representing properties about the group of SecuredResource, the AttributeEvaluator external component (in our approach, the PMI) and the applicability of the policies to those resources. Policy modularisation, parameterisation and composition are also at the core of our proposal. Fig. 3 shows the structure of the PMI-RAD model. Essentially, this structure follows the RAD specification. In our scheme, the DynamicAttributeService is the PMIClient and the external AttributeEvaluator is the PMI. Our GlobalPolicyEvaluator component replaces three RAD components: PolicyEvaluator, PolicyEvaluatorLocator and DecisionCombinator. The SecuredResource representation is improved with the inclusion of metadata concerning the resource expressed in Secured Resource Representation (SRR). We also add semantic information in Policy Applicability Specifications ( PAS), used to relate policies to resources, and SOA Descriptions 9 (SOADs), which convey semantic information about the SOAs of the PMI. An external, but important component is the PolicyAssistant management tool. This takes into account information contained in the SOADs for the production and semantic validation of policies. We review now each component separately. P MI Client Target ADO PMI Node PMIClient Global P olicy Evaluator SOAD SOAD SOA SPL SP L cy PPoli olicy P olicy Assista nt ORB App lication Use Communication Creation Inheritance P AS PAS SecuredResource Re source Secured re presenta se ntation repre tion (metadata) eta data ) (m PMI-RAD Ma nagem en t Tools RAD Fig. 3. PMI-RAD access control model. The first of the components is the PMI. It is an essential component because it enables the separation of attribute certification and access control functionalities, which is widely accepted as the most scalable and flexible access control architecture. In CORBA systems, the integration of the standard external access control facility (the RAD) and a PMI represents a step towards the solution of the interoperability of different object sources with heterogeneous access control systems. It is important to note that the PMI component is intended to be common to other applications and external to this system. Metadata described about the PMI, represented as SOADs, is the key to achieve the necessary interoperability. Another component, the PMIClient, requests attribute certificates to the PMI and submits them to the GlobalPolicyEvaluator, replacing the original DynamicAttributeService. The access decision request from the client and the SOADs are used by this component to find the PMI entity to be contacted in order to obtain the corresponding attribute certificates. Usually, each SOA in a PMI issues certificates for a small number of semantically related attributes. In our scheme, another semantic description mechanism, the SOAD, establishes trust between the security administrators and the PMI. SOADs are RDF statements protected by digital signatures [35]. They convey semantic information about the certificates issued by each SOA to assist the security administrators in the creation and semantic validation of access control policies. They are also used by the GlobalPolicyEvaluator for policy evaluation. These descriptions state a series of facts about the environment of the system using metadata about the different attributes that are certified by the SOA, including names, descriptions and relations among attributes. This semantic information allows the detection of possible inconsistencies in our SPL policies. Although the RAD specification states that the policy administration components are out of its scope, we consider that the relevance of the PolicyAssistant component fully justifies its inclusion in our proposal. The main reason is that solutions that do not include automatic management tools are merely useful for scenarios and systems containing only a few objects, which is clearly not the goal of PMI-RAD. The PolicyAssistant uses the SOADs for the specification of policies and PAS. Additionally, the PolicyAssistant includes components for the automated 10 validation of policies at different levels, syntactically and semantically. Therefore, this component integrates all the tools to facilitate the administration of the access control system. PAS are used to relate policies to resources. Conceptually, the PAS could be interpreted as part of the PolicyEvaluatorLocator. PAS are XML-Schema based, providing an expressive way to relate policies to resources by including conditions about the semantics of the target resources. Policies are expressed using SPL, an XML-Schema based policy language designed to specify policies in a simple way, achieving a high level of expressiveness and an efficient evaluation. In order to facilitate the definition and management of policies, we have taken an approach based on the modular definition of policies that can be combined without ambiguity. Tools provided to support policy specification, composition and validation also serve this objective. The basic description about SecuredResources is not adequate to be used in the process of dynamic allocation of policies to resources. Our SRR is designed specifically for this purpose. Dynamic allocation is a very flexible and useful mechanism that solves the problem of associating policies to newly created objects. The use of dynamic policy allocation needs a rich set of metadata about the resources. This semantic meta-model is used to locate the right policy for each resource, based on its relevant properties. Finally, the GlobalPolicyEvaluator component incorporates the policy location and evaluation functions. This approach allows us to achieve more expressive ways of computing the access decision. Opposed to the simple combination of results, which is usually limited to either all (logical and) or any (logical or) operators, our approach enables the combination of policies. Some decisions cannot be expressed by a simple combination of results. The combination of policies represents a more general approach that helps reducing the complexity of administration while enabling more expressive and flexible policies to be considered in the access decision. 5.2 System operation In PMI-RAD, an access decision is requested by a client by invoking the access_allowed() method of the AccessDecision object (ADO) passing a ResourceName, Operation, and a list of SecAttribute. In the original RAD specification every SecAttribute represents an attribute of the principal, where identity is considered as an attribute. The SecAttribute definition is biased to the use of credentials. As a consequence, the use of attribute certificates within this structure is not straightforward. The main problem is that the structure is passed as a parameter of the access_allowed() method. The inclusion of the attribute certificates in the request would introduce efficiency and flexibility problems. An additional important issue is that attribute certificates are not only expected to be short-lived but to be revoked more frequently than identity certificates. For this reason, approaches that allow users to distribute their own certificates entail the use of ACRLs. Thus, the certificate validation procedure becomes more complicated and the overall system performance is reduced. Although this invocation scheme is not optimal, we have left it unmodified in order to be interoperable and transparent to existing RAD clients. In PMI-RAD the SecAttribute is used to convey the certification information but not the certificate. The identity is included as a corbaloc address. Our PMI follows the Cert’eM approach to avoid the need for ACRLs [36]. The ADO consults the PMI through a PMIClient to obtain an updated list of SecAttributes including dynamic attributes. The ADO also consults the GlobalPolicyEvaluator. This component uses the PAS to obtain the applicable Policies. Moreover, it instantiates and combines all the 11 applicable policies using several metadata sources. Finally, it produces a final access decision that is returned to the client. The activity diagram of the PMI-RAD is depicted in Fig. 4. ADO PMIClient GlobalPolicyEvaluator PMI AuthRequest Request Processing AttributeRequest AttributeRequest ObtainAttributes AttributeList RetrieveAttributes AnalyseMetadata AnalysePASs AnalyseSOADs AnalysePolicies InstantiatePolicies CombinePolicies EvaluatePolicy Fig. 4. Activity diagram of the PMI-RAD operation After receiving an access request the AccessDecisionObject requests the attribute certificates from the PMIClient and forwards the authorization request to the GlobalPolicyEvaluator. Using the SOADs to determine which node of the PMI must be contacted, the PMIClient forwards the attribute certificates request to the appropriate node. The GlobalPolicyEvaluator analyses the semantic metadata available for the target resource contained in the enhanced SRR along with other contextual metadata, finds the appropriate PAS and retrieves the necessary SOADs. Using this information, the GlobalPolicyEvaluator is able to find the applicable policies. All applicable policies are then analysed and instantiated using the metadata about the resource (SecuredResourceRepresentation) and the environment (SOAD). Finally, all policies are combined and evaluated and the access decision is returned to the ADO. 5.3 The role of the semantic information in PMI-RAD The semantic description of the external PMI is an essential tool for its integration in the RAD component. The semantic information is described in our proposal through XML metadata technologies such as XML-Schema, RDF and RDF-Schema. In our proposal, metadata are applied at different levels. On one hand, access control policies benefit from metadata about the PMI for its creation and semantic and contextual validation. On the other hand, resources have associated metadata that are used for the dynamic policy allocation and parameter instantiation. 5.3.1 PMI-RAD Languages Semantic Policy Language, SPL. PMI-RAD policies are expressed using SPL, an XML-Schema based policy definition language designed to specify policies in a simple way, enabling a high level of expressiveness and an efficient evaluation. SPL policies are modular and can be composed without ambiguity, which facilitates their definition and management. Tools provided to support the policy specification, composition and validation also serve this objective. The schema for SPL 12 policies, included in Appendix A, facilitates their creation, allowing automatic syntactic validation. SPL policies consist of a set of access_Rule elements. Each access_Rule defines a particular combination of attribute certificates required to gain access, associated with an optional set of actions (to be performed before access is granted). Examples of these actions are Notify_To, Payment and Online_Permission. A policy includes zero or more parameter declaration elements. References to a defined parameter can appear anywhere in the policy. The target object metadata and the PAS determine the instantiation of parameter references. Import elements can substitute some of the previous contents of the policy. Import elements allow the modular composition of policies based on the X-Path standard [37]. Section 5.4 includes an example of the high expressiveness of the SPL language. The XML descriptive tags make SPL policies understandable to administrators and XML-aware applications. Policy Applicability Specification, PAS. The PAS specification provides an expressive way to relate policies to resources. The XML-Schema for PAS documents is included in Appendix A. PAS documents have a root PAS element that includes zero or more parameter declaration elements. References to a defined parameter can appear anywhere in the PAS. Parameter references will be instantiated based on the target object metadata. A set of one or more policy elements declare the policy or policies to be applied to objects declared in the object element. More than one object element can appear in the same PAS. Optionally, operation elements can be used to define which operations of the target object are controlled by the declared policy. In case no operation element is included, the policy is applicable to all of the object operations. The applicability is expressed as conditions to be fulfilled by these objects. The instantiation element describes the mechanism to instantiate parameters in the policies. An instantiation element must exist for every parameter defined in the policies. Fig. 5 shows an example of applicability rules for SPL policies to objects indicating that the Right_Policy.xml is applicable to all objects of type ‘Register’ in the ‘Admin’ folder. Secured Resource Representation, SRR. The SRR is an enhanced version of the basic SecuredResources description of the original RAD. The SRR is a simple and powerful mechanism to describe properties about resources. Properties described in SRRs are used for the instantiation of policies and PAS, and to locate the applicable policies. The SRR schema is included in Appendix A. An example of an SRR is also included in Fig. 5. <?xml version="1.0" encoding="UTF-8"?> <spl:PAS xmlns:spl="http://www.lcc.uma.es/CORBA" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.lcc.uma.es/CORBA pasPMI_RAD.xsd"> <spl:policy>file:///c:/CORBA//Right_Policy.xml</spl:policy> <spl:object> http://www.uma.es/Admin/ </spl:object> <spl:operations> <spl:operation>update</spl:operation> </spl:operations> <spl:conditions> <spl:condition predicate="equals"> <spl:property_Name>object_Type</spl:property_Name> <spl:property_Value>Register</spl:property_Value> </spl:condition> </spl:conditions> <spl:instantation> <spl:formal_Parameter>Target</spl:formal_Parameter> <spl:actual_Parameter>subject_Code</spl:actual_Parameter> </spl:instantation> </spl:PAS> <?xml version="1.0" encoding="UTF-8"?> <spl:SRR xmlns:spl="http://www.lcc.uma.es/CORBA" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.lcc.uma.es/CORBA SRR_PMI_RAD.xsd" resource="http://www.uma.es/Admin/Register_DB201_0207.obj"> <spl:property predicate="equals"> <spl:property_Name>object_Type</spl:property_Name> <spl:property_Value>Register</spl:property_Value> </spl:property> <spl:property> <spl:property_Name>subject_Code</spl:property_Name> <spl:property_Value>DB201</spl:property_Value> </spl:property> <spl:property> <spl:property_Name>examination_Session</spl:property_Name> <spl:property_Value>200207</spl:property_Value> </spl:property> </spl:SRR> Fig. 5. PAS for Right_Policy.xml (left) and SRR for Register_DB201_0207.obj (right) Source Of Authorization Description, SOAD. These RDF documents express the different attributes certified by each SOA, including their names, descriptions and relations, enabling the detection of semantically 13 incomplete or incorrect policies. SOADs are digitally signed. The set of SOADs represents the semantic description of the PMI. Full integration of the PMI can be achieved transparently for the rest of the system thanks to this description. 5.3.2 Creation and Semantic and Contextual Validation of SPL Policies The creation and maintenance of access control policies is a difficult and error prone activity. The PolicyAssistant component is designed to help administrators to specify those policies and validate them to find syntactic and semantic errors. For this purpose, the PolicyAssistant provides the administrator with the information about the attributes that can be included in the policies, their sources and relation. The automated validation of policies is performed at different levels. SPL policies are validated syntactically using XML-Schema. Semantic validation is made possible by the use of our SemanticPolicyValidator, included in the PolicyAssistant component. This Java component has been developed using the DOM API [38]. It parses SPL policies validating them with respect to the semantic information available through the different metadata defined. An interesting feature of the PolicyAssistant is that, based on the SOADs, it allows policies to be validated in the context where they will be applied. 5.4 An Example To illustrate how our approach can achieve a level of expressiveness not offered by the actual RAD specification, we are going to use the context of an e-Learning scenario. In this example we will focus on the access to the Update operation of the official Registers of the different courses. In order to clarify our example we have included a partial class diagram of the e-Learning environment in Fig. 6. Clients (teachers and students) access CourseServers to perform various tasks. Clients are authenticated by their personal smart card. ClientSmartCard Authenticates ClientAccess Access Has Register LectureNotes 1 1 +GetRecord() +Serialize() +SetRecord() +Update() 1 1..* 1..* Results 1..* 1..* CourseServer Registered StudentRecord 1 TeacherRecord Fig. 6. Partial Class Diagram of an e-Learning system In the PMI-RAD the SRR of the target resource is used to instantiate the PAS and the SPL policies. Additionally, during the validation of policies SOADs are used to determine the possible conditions under which access is granted. Lets suppose that the administrator wants to grant authorization to update the official course registers to teachers and deny it to students. Without the semantic information provided by the SOADs, the administrator might state the policy shown in Fig. 7. The error is motivated by the assumption that teachers and students are disjoint sets. But, in some institutions, it is possible for teachers to be registered as students. In such case, the previous policy would grant access to their own marks to students who are also teachers. An RDF statement declaring that ‘teachers may also be registered as students, except in the subjects they teach’ must be part of the corresponding SOAD. Additionally, the SOAD should state that ‘there is only one teacher for each course’ (see Fig. 6). This semantic information allows the context validation component to automatically detect possible inconsistencies in SPL policies. 14 In this example, the policy should have been stated as Fig. 7 shows. Additionally, this policy includes a validity interval, after which it has to be revised. Also, the Public attribute has been set to false in order to avoid that the client receives information about the terms of the policy during its evaluation. The corresponding PAS, shown in Fig. 5, states that the subject_Code value in the target object SRR must be used to instantiate the Target parameter of the policy. In this case, the instantiated policy only grants access to the teacher responsible for the DB201 subject. SOADs are essential to check the soundness of policies. Additional attributes might be needed to make the access decision in case several teachers could be responsible for a subject. <?xml version="1.0" encoding="UTF-8"?> <spl:policy xmlns:spl="http://www.lcc.uma.es/CORBA" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.lcc.uma.es/CORBA PolicyTemplatePMI_RAD.xsd" policy_Description="GRANT access IF Position='Professor' "> <spl:access_Rules> <spl:access_Rule> <spl:attribute_Set> <spl:attribute> <spl:attribute_Name>Position</spl:attribute_Name> <spl:attribute_Value>Professor</spl:attribute_Value> <spl:SOA_ID>LCC_ADM</spl:SOA_ID> </spl:attribute> </spl:attribute_Set> </spl:access_Rule> </spl:access_Rules> </spl:policy> <?xml version="1.0" encoding="UTF-8"?> <spl:policy xmlns:spl="http://www.lcc.uma.es/CORBA" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.lcc.uma.es/CORBA PolicyTemplatePMI_RAD.xsd" policy_Description="GRANT access IF Position='Professor' "> <spl:access_Rules> <spl:access_Rule valid_From="2002-06-15T15:00:00" valid_Until="2002-09-30T24:00:00" Public="false"> <spl:attribute_Set> <spl:attribute predicate="equals"> <spl:attribute_Name>Position</spl:attribute_Name> <spl:attribute_Value>Professor</spl:attribute_Value> <spl:SOA_ID>LCC_ADM</spl:SOA_ID> </spl:attribute> <spl:attribute> <spl:attribute_Name>Teaches</spl:attribute_Name> <spl:attribute_Value>*Target</spl:attribute_Value> <spl:SOA_ID>LCC_ADM</spl:SOA_ID> </spl:attribute> </spl:attribute_Set> </spl:access_Rule> </spl:access_Rules> </spl:policy> Fig. 7. An incorrect policy (left) and the corresponding revised policy (right). 6 Discussion and Conclusions We have concluded that an appropriate authorization approach that considers security, scalability and interoperability requirements simultaneously must separate the certification of attributes from access control functionalities. In this way, the access control system needs the complement of an external component providing attribute certification functions. The last ITU-T X.509 recommendation standardizes the concept of attribute certificate, and defines a framework that provides the basis upon which an infrastructure for privilege management, the PMI, can be built. Our work is based on the original idea of providing PMI services for CORBA applications. However, in the initial phase of the project we have realized that the use of attribute certificates and PMIs still left some problems opened. Hence application-level access control is required in many CORBA scenarios because some authorization decisions are based on application domain-specific factors. Also, fine-grained access control is a common requirement. One of the most important contributions of this work is the full integration of the services of an external PMI in CORBA systems using the RAD facility. Our RAD implementation requests and verifies attribute certificates from the PMI in a transparent way for CORBA objects. This way of using the PMI makes the global system more scalable. Additionally, our solution takes into account the enforceability of many access policies by different applications. While addressing this problem, PMI-RAD controls access to finer-grained functions and data encapsulated within it. The higher expressiveness of SPL policies along with the additional semantic information allows us to enhance the functionality of the original RAD component. Our approach for the full integration of the PMI and the RAD facility is based on the semantic description of the PMI services. This approach can 15 easily be applied to other middleware systems. The core ideas are also valuable in other distributed systems such as Digital Libraries, Web Services or Grid Computing. New scenarios of CORBA applications need external authorization mechanisms because resources can be accessed by previously unknown users. Authorization in distributed systems often relies on centralized access control management, what introduces important disadvantages in terms of efficiency, manageability and security. Although distributed authorization is positioned as a better alternative, solutions proposed so far do not provide the flexibility and manageability required by distributed objects systems. Scalability is also a crucial requirement. PMI-RAD is prepared to operate in scenarios where the number of users, resources, attributes and policies are very large and where access by previously unregistered users must be supported. We have also addressed the problem of the administration of security policies, which is a difficult task in every large complex system with many objects. The extensive use of semantic information about resources to be accessed, and the definition of an expressive access control language are the basis of our solution. Furthermore, a set of tools has been developed to help the administrator in all those tasks related to the creation, management and semantic and contextual validation of policies. There is no doubt that the combination of a highly expressive language and the use of attribute certificates for access control enables the modular definition and dynamic allocation of policies to resources. On the other hand, the flexibility of modular, combinable and parameterised policies facilitates access control management. Within our approach administrators are able to manage the resources they control regardless of the resource location. In policy specification languages, the existence of positive and negative authorizations is usually justified because they facilitate the definition of simple policies and reduce the number of policies applicable to each object. On the other hand, they introduce ambiguities and require the definition of conflict resolution rules. Furthermore, the administration of the system becomes complex and difficult to understand, increasing the chance of producing incorrect policies. To facilitate the definition and management of policies, we have taken a different approach based on the modular definition of policies that can be composed without ambiguity. Additionally, the semantic integration of a PMI permits us to consider access control policies that are not expressible with traditional access control schemes. Regarding the ongoing and future work, after analysing the results of the metadata model that we have developed we have started to use the model for other parts of the system. At the same time, we are integrating other services into the PMI. That is, in this work we have basically used the PMI for access control purposes in the authorization scope. However, authorization is a broader concept that involves, for instance, delegation and substitution services. It is our intention to use our system in other scenarios, like those ones related to web services and smart card-based electronic commerce. References 1. 2. 3. 4. Object Management Group, The Common Object Request Broker: Architecture and Specification. 2002. Object Management Group, Resource Access Decision Facility Specification – Version 1.0. 2001. World Wide Web Consortium, Resource Description Framework (RDF). 1999. http://www.w3.org/RDF/ Karjoth, G., Authorization in CORBA Security, European Symposium on Research in Computer Security – ESORICS’98, LNCS 1485, Springer. 1998. 5. Brose,G., A View-Based Access Control Model for CORBA, Secure Internet Programming: Security Issues for Mobile and Distributed Objects, LNCS 1603, Springer. 1999. 6. Beznosov, K., Deng, Y., Blakley, B., Burt, C., Barkley, J., Resource Access Decision Service for CORBABased Distributed Systems, 15th Annual Computer Security Applications Conference. 1999. 16 7. Lang, U., Gollmann, D. Schreine, R., Verifiable Identifiers in Middleware Security, 17th Annual Computer Security Applications Conference. 2001. 8. Thompson, M., et al., Certificate-based Access Control for Widely Distributed Resources, Eighth USENIX Security Symposium. 1999. 9. Chadwick, D. W., An X.509 Role-based Privilege Management Infrastructure, Global Infosecurity. 2002. 10. Sandhu, R.S., E.J. Coyne, H.L. Feinstein and Youman, C.E., Role-Based Access Control Models, IEEE Computer. 29(2): pp. 38-47. 1996. 11. ContentGuard, Inc., eXtensible Rights Markup Language, XrML 2.0. 2001. http://www.xrml.org 12. Open Digital Rights Language Initiative, Open Digital Rights Language. 2001. http://odrl.net/ 13. Organization for the Advancement of Structured Information Standards, Security Assertion Markup Language. 2002. http://www.oasis-open.org/committees/security/ 14. Kudo, M., Hada, S., XML Document Security Based on Provisional Authorisation, 7th ACM Conference on Computer and Communications Security. 2000. 15. Organization for the Advancement of Structured Information Standards, eXtensible Access Control Markup Language. 2002. http://www.oasis-open.org/committees/xacml/ 16. Yagüe, M.I., Troya, J.M., On the Suitability of Existing Access Control and DRM Languages for Mobile Policies. University of Málaga. Department of Computer Science Tech. Rep. nb. LCC-ITI-2002-7. 2002. 17. Bertino, B., Castano, S., Ferrari, E., Securing XML Documents with Author-X, IEEE Internet Computing, 5 (3): 21-1. 2001. 18. Damiani, E., De Capitani di Vimercati, S., Paraboschi, S., Samarati, P., A Fine-Grained Access Control System for XML Documents, ACM Transactions on Information and Systems Security, vol. 5, n. 2, pp. 169-202. 2002. 19. World Wide Web Consortium, XML-Schema. 2001. http://www.w3.org/XML/Schema 20. World Wide Web Consortium, Guide to the W3C XML Specification ("XMLspec") DTD, Version 2.1. 1998. http://www.w3.org/XML/1998/06/xmlspec-report.htm 21. World Wide Web Consortium, RDF Vocabulary Description Language 1.0: RDF Schema. 2002. http://www.w3.org/TR/rdf-schema/ 22. Object Management Group, Security Service Specification - Version 1.8. 2002. 23. Kohl, J., Neuman, B., The Kerberos Network Authentication Service (V5), Internet RFC 1510. 1993. 24. McMahon, P., Sesame V2 Public Key and Authorization Extensions to Kerberos, Symposium on Network and Distributed Systems Security. 1995. 25. Netscape Communications, SSL 3.0 Specification. 1997. 26. Object Management Group, The Authorization Token Layer Acquisition Service Specification. 2001. 27. Object Management Group, Security Domain Membership Management Service. 2000. 28. Object Management Group, The Common Object Request Broker: Architecture and Specification, Chapter 26: Secure Interoperability. 2002. 29. Object Management Group, Naming Service Specification. 2001. 30. ITU-T Recommendation X.509, Information Technology – Open systems interconnection – The Directory: Public-key and attribute certificate frameworks. 2000. 31. ITU-T Recommendation X.509, Information Technology – Open systems interconnection – The Directory: Authentication Framework. 1997. 32. Kaliski, B., A Layman's Guide to a Subset of ASN.1, BER, and DER. 1993. 33. Ellison, C. et al., SPKI Certificate Theory, RFC 2693, IETF SPKI Working Group. 1999. 34. Farrell, S., Housley, R., An Internet Attribute Certificate Profile for Authorization, RFC 3281, IETF PKIX Working Group. 2002. 35. World Wide Web Consortium, XML-Signature Syntax and Processing. 2002. http://www.w3.org/TR/xmldsig-core/ 36. López, J., Maña, A., Ortega, J., Troya, J. M., Cert’eM: Certification System Based on Electronic Mail Service Structure, Secure Networking – CQRE’99, LNCS 1740, Springer. 1999. 37. World Wide Web Consortium, XML Path Language (XPath). 1999. http://www.w3.org/TR/xpath/ 38. World Wide Web Consortium, Document Object Model (DOM) Level 1 Specification. 1998. http://www.w3.org/TR/REC-DOM-Level-1/ 17 Appendix A. Schemas. PolicyTemplate.xsd <?xml version="1.0"?> <xsd:schema targetNamespace="http://www.lcc.uma.es/CORBA" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:spl="http://www.lcc.uma.es/CORBA" elementFormDefault="qualified"> <xsd:simpleType name="policy_ID_type"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[A-Z]{3}-[0-9]{3}"/> </xsd:restriction> </xsd:simpleType> <xsd:complexType name="Actions_Type"> <xsd:all> <xsd:element name="Notify_To" type="xsd:anyURI" minOccurs="0"/> <xsd:element name="Online_Permission_From" type="xsd:anyURI" minOccurs="0"/> <xsd:element name="Payment_Value" type="xsd:float" minOccurs="0"/> <xsd:element ref="spl:import" minOccurs="0"/> </xsd:all> </xsd:complexType> <xsd:simpleType name="predicate_Type"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="equals"/> <xsd:enumeration value="greaterOrEqual"/> <xsd:enumeration value="lessOrEqual"/> <xsd:enumeration value="greather"/> <xsd:enumeration value="less"/> </xsd:restriction> </xsd:simpleType> <xsd:element name="policy"> <xsd:complexType> <xsd:choice> <xsd:sequence> <xsd:element ref="spl:import" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="parameter" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="spl:access_Rules"/> </xsd:sequence> <xsd:element ref="spl:import" maxOccurs="unbounded"/> </xsd:choice> <xsd:attribute name="policy_Description" type="xsd:string" use="optional"/> <xsd:attribute name="policy_ID" type="spl:policy_ID_type" use="optional"/> </xsd:complexType> </xsd:element> <xsd:element name="access_Rules"> <xsd:complexType> <xsd:choice> <xsd:sequence> <xsd:element ref="spl:import" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="spl:access_Rule" maxOccurs="unbounded"/> </xsd:sequence> <xsd:element ref="spl:import" maxOccurs="unbounded"/> </xsd:choice> </xsd:complexType> </xsd:element> <xsd:element name="access_Rule"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> <xsd:sequence> <xsd:element ref="spl:import" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="spl:attribute_Set" maxOccurs="unbounded"/> </xsd:sequence> <xsd:element ref="spl:import" maxOccurs="unbounded"/> </xsd:choice> <xsd:attribute name="Name" type="xsd:ID" use="optional"/> <xsd:attribute name="Public" type="xsd:boolean" use="optional" default="true"/> <xsd:attribute name="valid_From" type="xsd:dateTime" use="optional"/> <xsd:attribute name="valid_Until" type="xsd:dateTime" use="optional"/> </xsd:complexType> </xsd:element> <xsd:element name="attribute_Set"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> <xsd:sequence> <xsd:element ref="spl:import" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="spl:attribute" maxOccurs="unbounded"/> <xsd:element ref="spl:import" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="action" type="spl:Actions_Type" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:element ref="spl:import" minOccurs="0" maxOccurs="unbounded"/> </xsd:choice> </xsd:complexType> </xsd:element> <xsd:element name="attribute"> <xsd:complexType> <xsd:sequence> <xsd:choice> <xsd:element name="attribute_Name"/> <xsd:element ref="spl:import"/> 18 </xsd:choice> <xsd:choice> <xsd:element name="attribute_Value"/> <xsd:element ref="spl:import"/> </xsd:choice> <xsd:choice> <xsd:element name="SOA_ID" type="xsd:string" nillable="false"/> <xsd:element ref="spl:import"/> </xsd:choice> </xsd:sequence> <xsd:attribute name="attributeID" type="xsd:ID" use="optional"/> <xsd:attribute name="attributeDescription" type="xsd:string" use="optional"/> <xsd:attribute name="predicate" type="spl:predicate_Type" use="optional" default="equals"/> <!-- Each (attribute_Name, attribute_Value) is certified by a signer - SOA_ID - --> </xsd:complexType> </xsd:element> <xsd:element name="attribute_Name"> <xsd:complexType> <xsd:choice> <xsd:sequence/> <xsd:sequence/> </xsd:choice> </xsd:complexType> </xsd:element> <xsd:element name="import"> <xsd:complexType> <xsd:attribute name="Url" type="xsd:string" use="required"/> <xsd:attribute name="XPath" type="xsd:string" use="required"/> </xsd:complexType> </xsd:element> </xsd:schema> SRRTemplate.xsd <?xml version="1.0" encoding="UTF-8"?> <xsd:schema targetNamespace="http://www.lcc.uma.es/CORBA" xmlns:spl="http://www.lcc.uma.es/CORBA" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:simpleType name="predicate_Type"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="equals"/> <xsd:enumeration value="greaterOrEqual"/> <xsd:enumeration value="lessOrEqual"/> <xsd:enumeration value="greather"/> <xsd:enumeration value="less"/> </xsd:restriction> </xsd:simpleType> <xsd:element name="SRR"> <xsd:complexType> <xsd:sequence> <xsd:element ref="spl:property" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="resource" type="xsd:anyURI" use="required"/> </xsd:complexType> </xsd:element> <xsd:element name="property"> <xsd:complexType> <xsd:sequence> <xsd:element name="property_Name" type="xsd:string"/> <xsd:element name="property_Value" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="predicate" type="spl:predicate_Type" use="optional" default="equals"/> </xsd:complexType> </xsd:element> </xsd:schema> 19 PASTemplate.xsd <?xml version="1.0" encoding="UTF-8"?> <!-- A PAS states that 'policy' is applicable to the 'operations' of 'object' fullfiling 'conditions' --> <!-- 'instantiation' defines the substitutions to be applied to the parameters appearing in 'policy' --> <xsd:schema targetNamespace="http://www.lcc.uma.es/CORBA" xmlns:spl="http://www.lcc.uma.es/CORBA" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:simpleType name="predicate_Type"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="equals"/> <xsd:enumeration value="greaterOrEqual"/> <xsd:enumeration value="lessOrEqual"/> <xsd:enumeration value="greather"/> <xsd:enumeration value="less"/> </xsd:restriction> </xsd:simpleType> <xsd:element name="parameter" type="xsd:string"/> <xsd:element name="policy" type="xsd:anyURI"/> <xsd:element name="object" type="xsd:anyURI"/> <xsd:element name="predicate" type="spl:predicate_Type"/> <xsd:element name="property_Name" type="xsd:string"/> <xsd:element name="property_Value" type="xsd:string"/> <xsd:element name="PAS"> <xsd:complexType> <xsd:sequence> <xsd:element ref="spl:parameter" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="spl:policy"/> <xsd:element ref="spl:object"/> <xsd:element ref="spl:operations" minOccurs="0"/> <xsd:element ref="spl:conditions" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="spl:instantation" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="actual_Parameter" type="xsd:string"/> <xsd:element name="operations"> <xsd:complexType> <xsd:sequence> <xsd:element name="operation" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="condition"> <xsd:complexType> <xsd:sequence> <xsd:element ref="spl:property_Name"/> <xsd:element ref="spl:property_Value"/> </xsd:sequence> <xsd:attribute name="predicate" type="spl:predicate_Type" use="optional" default="equals"/> </xsd:complexType> </xsd:element> <xsd:element name="conditions"> <xsd:complexType> <xsd:sequence> <xsd:element ref="spl:condition"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="formal_Parameter" type="xsd:string"/> <xsd:element name="instantation"> <xsd:complexType> <xsd:sequence> <xsd:element ref="spl:formal_Parameter"/> <xsd:element ref="spl:actual_Parameter"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> 20