mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-21 03:10:25 +08:00
3420 lines
140 KiB
Plaintext
3420 lines
140 KiB
Plaintext
|
||
|
||
|
||
|
||
|
||
|
||
Network Working Group J. Strassner
|
||
Request for Comments: 3703 Intelliden Corporation
|
||
Category: Standards Track B. Moore
|
||
IBM Corporation
|
||
R. Moats
|
||
Lemur Networks, Inc.
|
||
E. Ellesson
|
||
February 2004
|
||
|
||
|
||
Policy Core Lightweight Directory Access Protocol (LDAP) Schema
|
||
|
||
Status of this Memo
|
||
|
||
This document specifies an Internet standards track protocol for the
|
||
Internet community, and requests discussion and suggestions for
|
||
improvements. Please refer to the current edition of the "Internet
|
||
Official Protocol Standards" (STD 1) for the standardization state
|
||
and status of this protocol. Distribution of this memo is unlimited.
|
||
|
||
Copyright Notice
|
||
|
||
Copyright (C) The Internet Society (2004). All Rights Reserved.
|
||
|
||
Abstract
|
||
|
||
This document defines a mapping of the Policy Core Information Model
|
||
to a form that can be implemented in a directory that uses
|
||
Lightweight Directory Access Protocol (LDAP) as its access protocol.
|
||
This model defines two hierarchies of object classes: structural
|
||
classes representing information for representing and controlling
|
||
policy data as specified in RFC 3060, and relationship classes that
|
||
indicate how instances of the structural classes are related to each
|
||
other. Classes are also added to the LDAP schema to improve the
|
||
performance of a client's interactions with an LDAP server when the
|
||
client is retrieving large amounts of policy-related information.
|
||
These classes exist only to optimize LDAP retrievals: there are no
|
||
classes in the information model that correspond to them.
|
||
|
||
Table of Contents
|
||
|
||
1. Introduction ................................................. 2
|
||
2. The Policy Core Information Model ............................ 4
|
||
3. Inheritance Hierarchy for the PCLS ........................... 5
|
||
4. General Discussion of Mapping the Information Model to LDAP .. 6
|
||
4.1. Summary of Class and Association Mappings .............. 7
|
||
4.2. Usage of DIT Content and Structure Rules and Name Forms. 9
|
||
4.3. Naming Attributes in the PCLS .......................... 10
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 1]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
4.4. Rule-Specific and Reusable Conditions and Actions ...... 11
|
||
4.5. Location and Retrieval of Policy Objects in the
|
||
Directory .............................................. 16
|
||
4.5.1. Aliases and Other DIT-Optimization Techniques .. 19
|
||
5. Class Definitions ............................................ 19
|
||
5.1. The Abstract Class "pcimPolicy" ........................ 21
|
||
5.2. The Three Policy Group Classes ......................... 22
|
||
5.3. The Three Policy Rule Classes .......................... 23
|
||
5.4. The Class pcimRuleConditionAssociation ................. 30
|
||
5.5. The Class pcimRuleValidityAssociation .................. 32
|
||
5.6. The Class pcimRuleActionAssociation .................... 34
|
||
5.7. The Auxiliary Class pcimConditionAuxClass .............. 36
|
||
5.8. The Auxiliary Class pcimTPCAuxClass .................... 36
|
||
5.9. The Auxiliary Class pcimConditionVendorAuxClass ........ 40
|
||
5.10. The Auxiliary Class pcimActionAuxClass ................. 41
|
||
5.11. The Auxiliary Class pcimActionVendorAuxClass ........... 42
|
||
5.12. The Class pcimPolicyInstance ........................... 43
|
||
5.13. The Auxiliary Class pcimElementAuxClass ................ 44
|
||
5.14. The Three Policy Repository Classes .................... 45
|
||
5.15. The Auxiliary Class pcimSubtreesPtrAuxClass ............ 46
|
||
5.16. The Auxiliary Class pcimGroupContainmentAuxClass ....... 48
|
||
5.17. The Auxiliary Class pcimRuleContainmentAuxClass ........ 49
|
||
6. Extending the Classes Defined in This Document ............... 50
|
||
6.1. Subclassing pcimConditionAuxClass and pcimActionAuxClass 50
|
||
6.2. Using the Vendor Policy Attributes ..................... 50
|
||
6.3. Using Time Validity Periods ............................ 51
|
||
7. Security Considerations ...................................... 51
|
||
8. IANA Considerations .......................................... 53
|
||
8.1. Object Identifiers ..................................... 53
|
||
8.2. Object Identifier Descriptors .......................... 53
|
||
9. Acknowledgments .............................................. 56
|
||
10. Appendix: Constructing the Value of orderedCIMKeys .......... 57
|
||
11. References ................................................... 58
|
||
11.1. Normative References ................................... 58
|
||
11.2. Informative References ................................. 59
|
||
12. Authors' Addresses ........................................... 60
|
||
13. Full Copyright Statement ..................................... 61
|
||
|
||
1. Introduction
|
||
|
||
This document takes as its starting point the object-oriented
|
||
information model for representing information for representing and
|
||
controlling policy data as specified in [1]. Lightweight Directory
|
||
Access Protocol (LDAP) [2] implementers, please note that the use of
|
||
the term "policy" in this document does not refer to the use of the
|
||
term "policy" as defined in X.501 [4]. Rather, the use of the term
|
||
"policy" throughout this document is defined as follows:
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 2]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
Policy is defined as a set of rules to administer, manage, and
|
||
control access to network resources.
|
||
|
||
This work is currently under joint development in the IETF's Policy
|
||
Framework working group and in the Policy working group of the
|
||
Distributed Management Task Force (DMTF). This model defines two
|
||
hierarchies of object classes: structural classes representing policy
|
||
information and control of policies, and relationship classes that
|
||
indicate how instances of the structural classes are related to each
|
||
other. In general, both of these class hierarchies will need to be
|
||
mapped to a particular data store.
|
||
|
||
This document defines the mapping of these information model classes
|
||
to a directory that uses LDAP as its access protocol. Two types of
|
||
mappings are involved:
|
||
|
||
- For the structural classes in the information model, the
|
||
mapping is basically one-for-one: information model classes map
|
||
to LDAP classes, information model properties map to LDAP
|
||
attributes.
|
||
|
||
- For the relationship classes in the information model,
|
||
different mappings are possible. In this document, the Policy
|
||
Core Information Model's (PCIM's) relationship classes and
|
||
their properties are mapped in three ways: to LDAP auxiliary
|
||
classes, to attributes representing distinguished name (DN)
|
||
references, and to superior-subordinate relationships in the
|
||
Directory Information Tree (DIT).
|
||
|
||
Implementations that use an LDAP directory as their policy repository
|
||
and want to implement policy information according to RFC 3060 [1]
|
||
SHALL use the LDAP schema defined in this document, or a schema that
|
||
subclasses from the schema defined in this document. The use of the
|
||
information model defined in reference [1] as the starting point
|
||
enables the inheritance and the relationship class hierarchies to be
|
||
extensible, such that other types of policy repositories, such as
|
||
relational databases, can also use this information.
|
||
|
||
This document fits into the overall framework for representing,
|
||
deploying, and managing policies being developed by the Policy
|
||
Framework Working Group.
|
||
|
||
The LDAP schema described in this document uses the prefix "pcim" to
|
||
identify its classes and attributes. It consists of ten very general
|
||
classes: pcimPolicy (an abstract class), three policy group classes
|
||
(pcimGroup, pcimGroupAuxClass, and pcimGroupInstance), three policy
|
||
rule classes (pcimRule, pcimRuleAuxClass, and pcimRuleInstance), and
|
||
three special auxiliary classes (pcimConditionAuxClass,
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 3]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
pcimTPCAuxClass, and pcimActionAuxClass). (Note that the
|
||
PolicyTimePeriodCondition auxiliary class defined in [1] would
|
||
normally have been named pcimTimePeriodConditionAuxClass, but this
|
||
name is too long for some directories. Therefore, we have
|
||
abbreviated this name to be pcimTPCAuxClass).
|
||
|
||
The mapping for the PCIM classes pcimGroup and pcimRule is designed
|
||
to be as flexible as possible. Three classes are defined for these
|
||
two PCIM classes. First, an abstract superclass is defined that
|
||
contains all required properties of each PCIM class. Then, both an
|
||
auxiliary class as well as a structural class are derived from the
|
||
abstract superclass. This provides maximum flexibility for the
|
||
developer.
|
||
|
||
The schema also contains two less general classes:
|
||
pcimConditionVendorAuxClass and pcimActionVendorAuxClass. To achieve
|
||
the mapping of the information model's relationships, the schema also
|
||
contains two auxiliary classes: pcimGroupContainmentAuxClass and
|
||
pcimRuleContainmentAuxClass. Capturing the distinction between
|
||
rule-specific and reusable policy conditions and policy actions
|
||
introduces seven other classes: pcimRuleConditionAssociation,
|
||
pcimRuleValidityAssociation, pcimRuleActionAssociation,
|
||
pcimPolicyInstance, and three policy repository classes
|
||
(pcimRepository, pcimRepositoryAuxClass, and pcimRepositoryInstance).
|
||
Finally, the schema includes two classes (pcimSubtreesPtrAuxClass and
|
||
pcimElementAuxClass) for optimizing LDAP retrievals. In all, the
|
||
schema contains 23 classes.
|
||
|
||
Within the context of this document, the term "PCLS" (Policy Core
|
||
LDAP Schema) is used to refer to the LDAP class definitions that this
|
||
document contains. The term "PCIM" refers to classes defined in [1].
|
||
|
||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
|
||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
|
||
document are to be interpreted as described in RFC 2119 [10].
|
||
|
||
2. The Policy Core Information Model
|
||
|
||
This document contains an LDAP schema representing the classes
|
||
defined in the companion document "Policy Core Information
|
||
Model -- Version 1 Specification" [1]. Other documents may
|
||
subsequently be produced, with mappings of this same PCIM to other
|
||
storage technologies. Since the detailed semantics of the PCIM
|
||
classes appear only in [1], that document is a prerequisite for
|
||
reading and understanding this document.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 4]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
3. Inheritance Hierarchy for the PCLS
|
||
|
||
The following diagram illustrates the class hierarchy for the LDAP
|
||
Classes defined in this document:
|
||
|
||
top
|
||
|
|
||
+--dlm1ManagedElement (abstract)
|
||
| |
|
||
| +--pcimPolicy (abstract)
|
||
| | |
|
||
| | +--pcimGroup (abstract)
|
||
| | | |
|
||
| | | +--pcimGroupAuxClass (auxiliary)
|
||
| | | |
|
||
| | | +--pcimGroupInstance (structural)
|
||
| | |
|
||
| | +--pcimRule (abstract)
|
||
| | | |
|
||
| | | +--pcimRuleAuxClass (auxiliary)
|
||
| | | |
|
||
| | | +--pcimRuleInstance (structural)
|
||
| | |
|
||
| | +--pcimRuleConditionAssociation (structural)
|
||
| | |
|
||
| | +--pcimRuleValidityAssociation (structural)
|
||
| | |
|
||
| | +--pcimRuleActionAssociation (structural)
|
||
| | |
|
||
| | +--pcimPolicyInstance (structural)
|
||
| | |
|
||
| | +--pcimElementAuxClass (auxiliary)
|
||
| |
|
||
| +--dlm1ManagedSystemElement (abstract)
|
||
| |
|
||
| +--dlm1LogicalElement (abstract)
|
||
| |
|
||
| +--dlm1System (abstract)
|
||
| |
|
||
| +--dlm1AdminDomain (abstract)
|
||
| |
|
||
| +--pcimRepository (abstract)
|
||
| |
|
||
| +--pcimRepositoryAuxClass (auxiliary)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 5]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
top
|
||
| |
|
||
| +--pcimRepositoryInstance
|
||
| (structural)
|
||
|
|
||
+--pcimConditionAuxClass (auxiliary)
|
||
| |
|
||
| +---pcimTPCAuxClass (auxiliary)
|
||
| |
|
||
| +---pcimConditionVendorAuxClass (auxiliary)
|
||
|
|
||
+--pcimActionAuxClass (auxiliary)
|
||
| |
|
||
| +---pcimActionVendorAuxClass (auxiliary)
|
||
|
|
||
+--pcimSubtreesPtrAuxClass (auxiliary)
|
||
|
|
||
+--pcimGroupContainmentAuxClass (auxiliary)
|
||
|
|
||
+--pcimRuleContainmentAuxClass (auxiliary)
|
||
|
||
Figure 1. LDAP Class Inheritance Hierarchy for the PCLS
|
||
|
||
4. General Discussion of Mapping the Information Model to LDAP
|
||
|
||
The classes described in Section 5 below contain certain
|
||
optimizations for a directory that uses LDAP as its access protocol.
|
||
One example of this is the use of auxiliary classes to represent some
|
||
of the associations defined in the information model. Other data
|
||
stores might need to implement these associations differently. A
|
||
second example is the introduction of classes specifically designed
|
||
to optimize retrieval of large amounts of policy-related data from a
|
||
directory. This section discusses some general topics related to the
|
||
mapping from the information model to LDAP.
|
||
|
||
The remainder of this section will discuss the following topics.
|
||
Section 4.1 will discuss the strategy used in mapping the classes and
|
||
associations defined in [1] to a form that can be represented in a
|
||
directory that uses LDAP as its access protocol. Section 4.2
|
||
discusses DIT content and structure rules, as well as name forms.
|
||
Section 4.3 describes the strategy used in defining naming attributes
|
||
for the schema described in Section 5 of this document. Section 4.4
|
||
defines the strategy recommended for locating and retrieving
|
||
PCIM-derived objects in the directory.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 6]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
4.1. Summary of Class and Association Mappings
|
||
|
||
Fifteen of the classes in the PCLS come directly from the nine
|
||
corresponding classes in the information model. Note that names of
|
||
classes begin with an upper case character in the information model
|
||
(although for CIM in particular, case is not significant in class and
|
||
property names), but with a lower case character in LDAP. This is
|
||
because although LDAP doesn't care, X.500 doesn't allow class names
|
||
to begin with an uppercase character. Note also that the prefix
|
||
"pcim" is used to identify these LDAP classes.
|
||
|
||
+---------------------------+-------------------------------+
|
||
| Information Model | LDAP Class(es) |
|
||
+---------------------------+-------------------------------+
|
||
+---------------------------+-------------------------------+
|
||
| Policy | pcimPolicy |
|
||
+---------------------------+-------------------------------+
|
||
| PolicyGroup | pcimGroup |
|
||
| | pcimGroupAuxClass |
|
||
| | pcimGroupInstance |
|
||
+---------------------------+-------------------------------+
|
||
| PolicyRule | pcimRule |
|
||
| | pcimRuleAuxClass |
|
||
| | pcimRuleInstance |
|
||
+---------------------------+-------------------------------+
|
||
| PolicyCondition | pcimConditionAuxClass |
|
||
+---------------------------+-------------------------------+
|
||
| PolicyAction | pcimActionAuxClass |
|
||
+---------------------------+-------------------------------+
|
||
| VendorPolicyCondition | pcimConditionVendorAuxClass |
|
||
+---------------------------+-------------------------------+
|
||
| VendorPolicyAction | pcimActionVendorAuxClass |
|
||
+---------------------------+-------------------------------+
|
||
| PolicyTimePeriodCondition | pcimTPCAuxClass |
|
||
+---------------------------+-------------------------------+
|
||
| PolicyRepository | pcimRepository |
|
||
| | pcimRepositoryAuxClass |
|
||
| | pcimRepositoryInstance |
|
||
+---------------------------+-------------------------------+
|
||
|
||
Figure 2. Mapping of Information Model Classes to LDAP
|
||
|
||
The associations in the information model map to attributes that
|
||
reference DNs (Distinguished Names) or to Directory Information Tree
|
||
(DIT) containment (i.e., superior-subordinate relationships) in LDAP.
|
||
Two of the attributes that reference DNs appear in auxiliary classes,
|
||
which allow each of them to represent several relationships from the
|
||
information model.
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 7]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
+----------------------------------+----------------------------------+
|
||
| Information Model Association | LDAP Attribute / Class |
|
||
+-----------------------------------+---------------------------------+
|
||
+-----------------------------------+---------------------------------+
|
||
| PolicyGroupInPolicyGroup | pcimGroupsAuxContainedSet in |
|
||
| | pcimGroupContainmentAuxClass |
|
||
+-----------------------------------+---------------------------------+
|
||
| PolicyRuleInPolicyGroup | pcimRulesAuxContainedSet in |
|
||
| | pcimRuleContainmentAuxClass |
|
||
+-----------------------------------+---------------------------------+
|
||
| PolicyConditionInPolicyRule | DIT containment or |
|
||
| | pcimRuleConditionList in |
|
||
| | pcimRule or |
|
||
| | pcimConditionDN in |
|
||
| | pcimRuleConditionAssociation |
|
||
+-----------------------------------+---------------------------------+
|
||
| PolicyActionInPolicyRule | DIT containment or |
|
||
| | pcimRuleActionList in |
|
||
| | pcimRule or |
|
||
| | pcimActionDN in |
|
||
| | pcimRuleActionAssociation |
|
||
+-----------------------------------+---------------------------------+
|
||
| PolicyRuleValidityPeriod | pcimRuleValidityPeriodList |
|
||
| | in pcimRule or (if reusable) |
|
||
| | referenced through the |
|
||
| | pcimTimePeriodConditionDN in |
|
||
| | pcimRuleValidityAssociation |
|
||
+-----------------------------------+---------------------------------+
|
||
| PolicyConditionInPolicyRepository | DIT containment |
|
||
+-----------------------------------+---------------------------------+
|
||
| PolicyActionInPolicyRepository | DIT containment |
|
||
+-----------------------------------+---------------------------------+
|
||
| PolicyRepositoryInPolicyRepository| DIT containment |
|
||
+-----------------------------------+---------------------------------+
|
||
|
||
Figure 3. Mapping of Information Model Associations to LDAP
|
||
|
||
Of the remaining classes in the PCLS, two (pcimElementAuxClass and
|
||
pcimSubtreesPtrAuxClass) are included to make navigation through the
|
||
DIT and retrieval of the entries found there more efficient. This
|
||
topic is discussed below in Section 4.5.
|
||
|
||
The remaining four classes in the PCLS, pcimRuleConditionAssociation,
|
||
pcimRuleValidityAssociation, pcimRuleActionAssociation, and
|
||
pcimPolicyInstance, are all involved with the representation of
|
||
policy conditions and policy actions in an LDAP directory. This
|
||
topic is discussed below in Section 4.4.
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 8]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
4.2. Usage of DIT Content and Structure Rules and Name Forms
|
||
|
||
There are three powerful tools that can be used to help define
|
||
schemata. The first, DIT content rules, is a way of defining the
|
||
content of an entry for a structural object class. It can be used to
|
||
specify the following characteristics of the entry:
|
||
|
||
- additional mandatory attributes that the entries are required
|
||
to contain
|
||
- additional optional attributes the entries are allowed to
|
||
contain
|
||
- the set of additional auxiliary object classes that these
|
||
entries are allowed to be members of
|
||
- any optional attributes from the structural and auxiliary
|
||
object class definitions that the entries are required to
|
||
preclude
|
||
|
||
DIT content rules are NOT mandatory for any structural object class.
|
||
|
||
A DIT structure rule, together with a name form, controls the
|
||
placement and naming of an entry within the scope of a subschema.
|
||
Name forms define which attribute type(s) are required and are
|
||
allowed to be used in forming the Relative Distinguished Names (RDNs)
|
||
of entries. DIT structure rules specify which entries are allowed to
|
||
be superior to other entries, and hence control the way that RDNs are
|
||
added together to make DNs.
|
||
|
||
A name form specifies the following:
|
||
|
||
- the structural object class of the entries named by this name
|
||
form
|
||
- attributes that are required to be used in forming the RDNs of
|
||
these entries
|
||
- attributes that are allowed to be used in forming the RDNs of
|
||
these entries
|
||
- an object identifier to uniquely identify this name form
|
||
|
||
Note that name forms can only be specified for structural object
|
||
classes. However, every entry in the DIT must have a name form
|
||
controlling it.
|
||
|
||
Unfortunately, current LDAP servers vary quite a lot in their support
|
||
of these features. There are also three crucial implementation
|
||
points that must be followed. First, X.500 use of structure rules
|
||
requires that a structural object class with no superior structure
|
||
rule be a subschema administrative point. This is exactly NOT what
|
||
we want for policy information. Second, when an auxiliary class is
|
||
subclassed, if a content rule exists for the structural class that
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 9]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
the auxiliary class refers to, then that content rule needs to be
|
||
augmented. Finally, most LDAP servers unfortunately do not support
|
||
inheritance of structure and content rules.
|
||
|
||
Given these concerns, DIT structure and content rules have been
|
||
removed from the PCLS. This is because, if included, they would be
|
||
normative references and would require OIDs. However, we don't want
|
||
to lose the insight gained in building the structure and content
|
||
rules of the previous version of the schema. Therefore, we describe
|
||
where such rules could be used in this schema, what they would
|
||
control, and what their effect would be.
|
||
|
||
4.3. Naming Attributes in the PCLS
|
||
|
||
Instances in a directory are identified by distinguished names (DNs),
|
||
which provide the same type of hierarchical organization that a file
|
||
system provides in a computer system. A distinguished name is a
|
||
sequence of RDNs. An RDN provides a unique identifier for an
|
||
instance within the context of its immediate superior, in the same
|
||
way that a filename provides a unique identifier for a file within
|
||
the context of the folder in which it resides.
|
||
|
||
To preserve maximum naming flexibility for policy administrators,
|
||
three optional (i.e., "MAY") naming attributes have been defined.
|
||
They are:
|
||
|
||
- Each of the structural classes defined in this schema has its
|
||
own unique ("MAY") naming attribute. Since the naming
|
||
attributes are different, a policy administrator can, by using
|
||
these attributes, guarantee that there will be no name
|
||
collisions between instances of different classes, even if the
|
||
same value is assigned to the instances' respective naming
|
||
attributes.
|
||
|
||
- The LDAP attribute cn (corresponding to X.500's commonName) is
|
||
included as a MAY attribute in the abstract class pcimPolicy,
|
||
and thus by inheritance in all of its subclasses. In X.500,
|
||
commonName typically functions as an RDN attribute, for naming
|
||
instances of many classes (e.g., X.500's person class).
|
||
|
||
- A special attribute is provided for implementations that expect
|
||
to map between native CIM and LDAP representations of policy
|
||
information. This attribute, called orderedCimKeys, is defined
|
||
in the class dlm1ManagedElement [6]. The value of this
|
||
attribute is derived algorithmically from values that are
|
||
already present in a CIM policy instance. The normative
|
||
reference for this algorithm is contained in [6]. See the
|
||
appendix of this document for a description of the algorithm.
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 10]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
Since any of these naming attributes MAY be used for naming an
|
||
instance of a PCLS class, implementations MUST be able to accommodate
|
||
instances named in any of these ways.
|
||
|
||
Note that it is recommended that two or more of these attributes
|
||
SHOULD NOT be used together to form a multi-part RDN, since support
|
||
for multi-part RDNs is limited among existing directory
|
||
implementations.
|
||
|
||
4.4. Rule-Specific and Reusable Conditions and Actions
|
||
|
||
The PCIM [1] distinguishes between two types of policy conditions and
|
||
policy actions: those associated with a single policy rule, and
|
||
those that are reusable, in the sense that they may be associated
|
||
with more than one policy rule. While there is no inherent
|
||
functional difference between a rule-specific condition or action and
|
||
a reusable one, there is both a usage, as well as, an implementation
|
||
difference between them.
|
||
|
||
Defining a condition or action as reusable vs. rule-specific reflects
|
||
a conscious decision on the part of the administrator in defining how
|
||
they are used. In addition, there are variations that reflect
|
||
implementing rule-specific vs. reusable policy conditions and actions
|
||
and how they are treated in a policy repository. The major
|
||
implementation differences between a rule-specific and a reusable
|
||
condition or action are delineated below:
|
||
|
||
1. It is natural for a rule-specific condition or action to be
|
||
removed from the policy repository at the same time the rule is.
|
||
It is just the opposite for reusable conditions and actions.
|
||
This is because the condition or action is conceptually attached
|
||
to the rule in the rule-specific case, whereas it is referenced
|
||
(e.g., pointed at) in the reusable case. The persistence of a
|
||
pcimRepository instance is independent of the persistence of a
|
||
pcimRule instance.
|
||
2. Access permissions for a rule-specific condition or action are
|
||
usually identical to those for the rule itself. On the other
|
||
hand, access permissions of reusable conditions and actions must
|
||
be expressible without reference to a policy rule.
|
||
3. Rule-specific conditions and actions require fewer accesses,
|
||
because the conditions and actions are "attached" to the rule.
|
||
In contrast, reusable conditions and actions require more
|
||
accesses, because each condition or action that is reusable
|
||
requires a separate access.
|
||
4. Rule-specific conditions and actions are designed for use by a
|
||
single rule. As the number of rules that use the same
|
||
rule-specific condition increase, subtle problems are created
|
||
(the most obvious being how to keep the rule-specific conditions
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 11]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
and actions updated to reflect the same value). Reusable
|
||
conditions and actions lend themselves for use by multiple
|
||
independent rules.
|
||
5. Reusable conditions and actions offer an optimization when
|
||
multiple rules are using the same condition or action. This is
|
||
because the reusable condition or action only needs be updated
|
||
once, and by virtue of DN reference, the policy rules will be
|
||
automatically updated.
|
||
|
||
The preceding paragraph does not contain an exhaustive list of the
|
||
ways in which reusable and rule-specific conditions should be treated
|
||
differently. Its purpose is merely to justify making a semantic
|
||
distinction between rule-specific and reusable, and then reflecting
|
||
this distinction in the policy repository itself.
|
||
|
||
When the policy repository is realized in an LDAP-accessible
|
||
directory, the distinction between rule-specific and reusable
|
||
conditions and actions is realized via placement of auxiliary classes
|
||
and via DIT containment. Figure 4 illustrates a policy rule Rule1
|
||
with one rule-specific condition CA and one rule-specific action AB.
|
||
|
||
+-----+
|
||
|Rule1|
|
||
| |
|
||
+-----|- -|-----+
|
||
| +-----+ |
|
||
| * * |
|
||
| * * |
|
||
| **** **** |
|
||
| * * |
|
||
v * * v
|
||
+--------+ +--------+
|
||
| CA+ca | | AB+ab |
|
||
+--------+ +--------+
|
||
|
||
|
||
+------------------------------+
|
||
|LEGEND: |
|
||
| ***** DIT containment |
|
||
| + auxiliary attachment |
|
||
| ----> DN reference |
|
||
+------------------------------+
|
||
|
||
Figure 4 Rule-Specific Policy Conditions and Actions
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 12]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
Because the condition and action are specific to Rule1, the auxiliary
|
||
classes ca and ab that represent them are attached, respectively, to
|
||
the structural classes CA and AB. These structural classes represent
|
||
not the condition ca and action ab themselves, but rather the
|
||
associations between Rule1 and ca, and between Rule1 and ab.
|
||
|
||
As Figure 4 illustrates, Rule1 contains DN references to the
|
||
structural classes CA and AB that appear below it in the DIT. At
|
||
first glance it might appear that these DN references are
|
||
unnecessary, since a subtree search below Rule1 would find all of the
|
||
structural classes representing the associations between Rule1 and
|
||
its conditions and actions. Relying only on a subtree search,
|
||
though, runs the risk of missing conditions or actions that should
|
||
have appeared in the subtree, but for some reason did not, or of
|
||
finding conditions or actions that were inadvertently placed in the
|
||
subtree, or that should have been removed from the subtree, but for
|
||
some reason were not. Implementation experience has suggested that
|
||
many (but not all) of these risks are eliminated.
|
||
|
||
However, it must be noted that this comes at a price. The use of DN
|
||
references, as shown in Figure 4 above, thwarts inheritance of access
|
||
control information as well as existence dependency information. It
|
||
also is subject to referential integrity considerations. Therefore,
|
||
it is being included as an option for the designer.
|
||
|
||
Figure 5 illustrates a second way of representing rule-specific
|
||
conditions and actions in an LDAP-accessible directory: attachment of
|
||
the auxiliary classes directly to the instance representing the
|
||
policy rule. When all of the conditions and actions are attached to
|
||
a policy rule in this way, the rule is termed a "simple" policy rule.
|
||
When conditions and actions are not attached directly to a policy
|
||
rule, the rule is termed a "complex" policy rule.
|
||
|
||
+-----------+
|
||
|Rule1+ca+ab|
|
||
| |
|
||
+-----------+
|
||
|
||
+------------------------------+
|
||
|LEGEND: |
|
||
| + auxiliary attachment |
|
||
+------------------------------+
|
||
|
||
Figure 5. A Simple Policy Rule
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 13]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
The simple/complex distinction for a policy rule is not all or
|
||
nothing. A policy rule may have its conditions attached to itself
|
||
and its actions attached to other entries, or it may have its actions
|
||
attached to itself and its conditions attached to other entries.
|
||
However, it SHALL NOT have either its conditions or its actions
|
||
attached both to itself and to other entries, with one exception: a
|
||
policy rule may reference its validity periods with the
|
||
pcimRuleValidityPeriodList attribute, but have its other conditions
|
||
attached to itself.
|
||
|
||
The tradeoffs between simple and complex policy rules are between the
|
||
efficiency of simple rules and the flexibility and greater potential
|
||
for reuse of complex rules. With a simple policy rule, the semantic
|
||
options are limited:
|
||
|
||
- All conditions are ANDed together. This combination can be
|
||
represented in two ways in the Disjunctive Normal Form (DNF)/
|
||
Conjunctive Normal Form (CNF) (please see [1] for definitions of
|
||
these terms) expressions characteristic of policy conditions: as
|
||
a DNF expression with a single AND group, or as a CNF expression
|
||
with multiple single-condition OR groups. The first of these is
|
||
arbitrarily chosen as the representation for the ANDed conditions
|
||
in a simple policy rule.
|
||
|
||
- If multiple actions are included, no order can be specified for
|
||
them.
|
||
|
||
If a policy administrator needs to combine conditions in some other
|
||
way, or if there is a set of actions that must be ordered, then the
|
||
only option is to use a complex policy rule.
|
||
|
||
Finally, Figure 6 illustrates the same policy rule Rule1, but this
|
||
time its condition and action are reusable. The association classes
|
||
CA and AB are still present, and they are still DIT contained under
|
||
Rule1. But rather than having the auxiliary classes ca and ab
|
||
attached directly to the association classes CA and AB, each now
|
||
contains DN references to other entries to which these auxiliary
|
||
classes are attached. These other entries, CIA and AIB, are DIT
|
||
contained under RepositoryX, which is an instance of the class
|
||
pcimRepository. Because they are named under an instance of
|
||
pcimRepository, ca and ab are clearly identified as reusable.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 14]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
+-----+ +-------------+
|
||
|Rule1| | RepositoryX |
|
||
+-|- -|--+ | |
|
||
| +-----+ | +-------------+
|
||
| * * | * *
|
||
| * * | * *
|
||
| *** **** | * *
|
||
| * * v * *
|
||
| * +---+ * *
|
||
| * |AB | +------+ *
|
||
v * | -|-------->|AIB+ab| *
|
||
+---+ +---+ +------+ *
|
||
|CA | +------+
|
||
| -|------------------------>|CIA+ca|
|
||
+---+ +------+
|
||
|
||
+------------------------------+
|
||
|LEGEND: |
|
||
| ***** DIT containment |
|
||
| + auxiliary attachment |
|
||
| ----> DN reference |
|
||
+------------------------------+
|
||
|
||
Figure 6. Reusable Policy Conditions and Actions
|
||
|
||
The classes pcimConditionAuxClass and pcimActionAuxClass do not
|
||
themselves represent actual conditions and actions: these are
|
||
introduced in their subclasses. What pcimConditionAuxClass and
|
||
pcimActionAuxClass do introduce are the semantics of being a policy
|
||
condition or a policy action. These are the semantics that all the
|
||
subclasses of pcimConditionAuxClass and pcimActionAuxClass inherit.
|
||
Among these semantics are those of representing either a
|
||
rule-specific or a reusable policy condition or policy action.
|
||
|
||
In order to preserve the ability to represent a rule-specific or a
|
||
reusable condition or action, as well as a simple policy rule, all
|
||
the subclasses of pcimConditionAuxClass and pcimActionAuxClass MUST
|
||
also be auxiliary classes.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 15]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
4.5. Location and Retrieval of Policy Objects in the Directory
|
||
|
||
When a Policy Decision Point (PDP) goes to an LDAP directory to
|
||
retrieve the policy object instances relevant to the Policy
|
||
Enforcement Points (PEPs) it serves, it is faced with two related
|
||
problems:
|
||
|
||
- How does it locate and retrieve the directory entries that apply
|
||
to its PEPs? These entries may include instances of the PCLS
|
||
classes, instances of domain-specific subclasses of these
|
||
classes, and instances of other classes modeling such resources
|
||
as user groups, interfaces, and address ranges.
|
||
|
||
- How does it retrieve the directory entries it needs in an
|
||
efficient manner, so that retrieval of policy information from
|
||
the directory does not become a roadblock to scalability? There
|
||
are two facets to this efficiency: retrieving only the relevant
|
||
directory entries, and retrieving these entries using as few LDAP
|
||
calls as possible.
|
||
|
||
The placement of objects in the Directory Information Tree (DIT)
|
||
involves considerations other than how the policy-related objects
|
||
will be retrieved by a PDP. Consequently, all that the PCLS can do
|
||
is to provide a "toolkit" of classes to assist the policy
|
||
administrator as the DIT is being designed and built. A PDP SHOULD
|
||
be able to take advantage of any tools that the policy administrator
|
||
is able to build into the DIT, but it MUST be able to use a less
|
||
efficient means of retrieval if that is all it has available to it.
|
||
|
||
The basic idea behind the LDAP optimization classes is a simple one:
|
||
make it possible for a PDP to retrieve all the policy-related objects
|
||
it needs, and only those objects, using as few LDAP calls as
|
||
possible. An important assumption underlying this approach is that
|
||
the policy administrator has sufficient control over the underlying
|
||
DIT structure to define subtrees for storing policy information. If
|
||
the policy administrator does not have this level of control over DIT
|
||
structure, a PDP can still retrieve the policy-related objects it
|
||
needs individually. But it will require more LDAP access operations
|
||
to do the retrieval in this way. Figure 7 illustrates how LDAP
|
||
optimization is accomplished.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 16]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
+-----+
|
||
---------------->| A |
|
||
DN reference to | | DN references to subtrees +---+
|
||
starting object +-----+ +-------------------------->| C |
|
||
| o--+----+ +---+ +---+
|
||
| o--+------------->| B | / \
|
||
+-----+ +---+ / \
|
||
/ \ / \ / ... \
|
||
/ \ / \
|
||
/ \ / ... \
|
||
|
||
Figure 7. Using the pcimSubtreesPtrAuxClass to Locate Policies
|
||
|
||
The PDP is configured initially with a DN reference to some entry in
|
||
the DIT. The structural class of this entry is not important; the
|
||
PDP is interested only in the pcimSubtreesPtrAuxClass attached to it.
|
||
This auxiliary class contains a multi-valued attribute with DN
|
||
references to objects that anchor subtrees containing policy-related
|
||
objects of interest to the PDP. Since pcimSubtreesPtrAuxClass is an
|
||
auxiliary class, it can be attached to an entry that the PDP would
|
||
need to access anyway - perhaps an entry containing initial
|
||
configuration settings for the PDP, or for a PEP that uses the PDP.
|
||
|
||
Once it has retrieved the DN references, the PDP will direct to each
|
||
of the objects identified by them an LDAP request that all entries in
|
||
its subtree be evaluated against the selection criteria specified in
|
||
the request. The LDAP-enabled directory then returns all entries in
|
||
that subtree that satisfy the specified criteria.
|
||
|
||
The selection criteria always specify that object class="pcimPolicy".
|
||
Since all classes representing policy rules, policy conditions, and
|
||
policy actions, both in the PCLS and in any domain-specific schema
|
||
derived from it, are subclasses of the abstract class policy, this
|
||
criterion evaluates to TRUE for all instances of these classes. To
|
||
accommodate special cases where a PDP needs to retrieve objects that
|
||
are not inherently policy-related (for example, an IP address range
|
||
object referenced by a subclass of pcimActionAuxClass representing
|
||
the DHCP action "assign from this address range"), the auxiliary
|
||
class pcimElementAuxClass can be used to "tag" an entry, so that it
|
||
will be found by the selection criterion "object class=pcimPolicy".
|
||
|
||
The approach described in the preceding paragraph will not work for
|
||
certain directory implementations, because these implementations do
|
||
not support matching of auxiliary classes in the objectClass
|
||
attribute. For environments where these implementations are expected
|
||
to be present, the "tagging" of entries as relevant to policy can be
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 17]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
accomplished by inserting the special value "POLICY" into the list of
|
||
values contained in the pcimKeywords attribute (provided by the
|
||
pcimPolicy class).
|
||
|
||
If a PDP needs only a subset of the policy-related objects in the
|
||
indicated subtrees, then it can be configured with additional
|
||
selection criteria based on the pcimKeywords attribute defined in the
|
||
pcimPolicy class. This attribute supports both standardized and
|
||
administrator- defined values. For example, a PDP could be
|
||
configured to request only those policy-related objects containing
|
||
the keywords "DHCP" and "Eastern US".
|
||
|
||
To optimize what is expected to be a typical case, the initial
|
||
request from the client includes not only the object to which its
|
||
"seed" DN references, but also the subtree contained under this
|
||
object. The filter for searching this subtree is whatever the client
|
||
is going to use later to search the other subtrees: object
|
||
class="pcimPolicy" or the presence of the keyword "POLICY", and/or
|
||
presence of a more specific value of pcimKeywords (e.g., "QoS Edge
|
||
Policy").
|
||
|
||
Returning to the example in Figure 7, we see that in the best case, a
|
||
PDP can get all the policy-related objects it needs, and only those
|
||
objects, with exactly three LDAP requests: one to its starting
|
||
object A to get the references to B and C, as well as the
|
||
policy-related objects it needs from the subtree under A, and then
|
||
one each to B and C to get all the policy-related objects that pass
|
||
the selection criteria with which it was configured. Once it has
|
||
retrieved all of these objects, the PDP can then traverse their
|
||
various DN references locally to understand the semantic
|
||
relationships among them. The PDP should also be prepared to find a
|
||
reference to another subtree attached to any of the objects it
|
||
retrieves, and to follow this reference first, before it follows any
|
||
of the semantically significant references it has received. This
|
||
recursion permits a structured approach to identifying related
|
||
policies. In Figure 7, for example, if the subtree under B includes
|
||
departmental policies and the one under C includes divisional
|
||
policies, then there might be a reference from the subtree under C to
|
||
an object D that roots the subtree of corporate-level policies.
|
||
|
||
A PDP SHOULD understand the pcimSubtreesPtrAuxClass class, SHOULD be
|
||
capable of retrieving and processing the entries in the subtrees it
|
||
references, and SHOULD be capable of doing all of this recursively.
|
||
The same requirements apply to any other entity needing to retrieve
|
||
policy information from the directory. Thus, a Policy Management
|
||
Tool that retrieves policy entries from the directory in order to
|
||
perform validation and conflict detection SHOULD also understand and
|
||
be capable of using the pcimSubtreesPtrAuxClass. All of these
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 18]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
requirements are "SHOULD"s rather than "MUST"s because an LDAP client
|
||
that doesn't implement them can still access and retrieve the
|
||
directory entries it needs. The process of doing so will just be
|
||
less efficient than it would have been if the client had implemented
|
||
these optimizations.
|
||
|
||
When it is serving as a tool for creating policy entries in the
|
||
directory, a Policy Management Tool SHOULD support creation of
|
||
pcimSubtreesPtrAuxClass entries and their references to object
|
||
instances.
|
||
|
||
4.5.1. Aliases and Other DIT-Optimization Techniques
|
||
|
||
Additional flexibility in DIT structure is available to the policy
|
||
administrator via LDAP aliasing and other techniques. Previous
|
||
versions of this document have used aliases. However, because
|
||
aliases are experimental, the use of aliases has been removed from
|
||
this version of this document. This is because the IETF has yet to
|
||
produce a specification on how aliases are represented in the
|
||
directory or how server implementations are to process aliases.
|
||
|
||
5. Class Definitions
|
||
|
||
The semantics for the policy information classes that are to be
|
||
mapped directly from the information model to an LDAP representation
|
||
are detailed in [1]. Consequently, all that this document presents
|
||
for these classes is the specification for how to do the mapping from
|
||
the information model (which is independent of repository type and
|
||
access protocol) to a form that can be accessed using LDAP. Remember
|
||
that some new classes needed to be created (that were not part of
|
||
[1]) to implement the LDAP mapping. These new LDAP-only classes are
|
||
fully documented in this document.
|
||
|
||
The formal language for specifying the classes, attributes, and DIT
|
||
structure and content rules is that defined in reference [3]. If
|
||
your implementation does not support auxiliary class inheritance, you
|
||
will have to list auxiliary classes in content rules explicitly or
|
||
define them in another (implementation-specific) way.
|
||
|
||
The following notes apply to this section in its entirety.
|
||
|
||
Note 1: in the following definitions, the class and attribute
|
||
definitions follow RFC 2252 [3] but they are line-wrapped to enhance
|
||
human readability.
|
||
|
||
Note 2: where applicable, the possibilities for specifying DIT
|
||
structure and content rules are noted. However, care must be taken
|
||
in specifying DIT structure rules. This is because X.501 [4] states
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 19]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
that an entry may only exist in the DIT as a subordinate to another
|
||
superior entry (the superior) if a DIT structure rule exists in the
|
||
governing subschema which:
|
||
|
||
1) indicates a name form for the structural object class of the
|
||
subordinate entry, and
|
||
2) either includes the entry's superior structure rule as a possible
|
||
superior structure rule, or
|
||
3) does not specify a superior structure rule.
|
||
|
||
If this last case (3) applies, then the entry is defined to be a
|
||
subschema administrative point. This is not what is desired.
|
||
Therefore, care must be taken in defining structure rules, and in
|
||
particular, they must be locally augmented.
|
||
|
||
Note 3: Wherever possible, both an equality and a substring matching
|
||
rule are defined for a particular attribute (as well as an ordering
|
||
match rule to enable sorting of matching results). This provides two
|
||
different choices for the developer for maximum flexibility.
|
||
|
||
For example, consider the pcimRoles attribute (section 5.3). Suppose
|
||
that a PEP has reported that it is interested in pcimRules for three
|
||
roles R1, R2, and R3. If the goal is to minimize queries, then the
|
||
PDP can supply three substring filters containing the three role
|
||
names.
|
||
|
||
These queries will return all of the pcimRules that apply to the PEP,
|
||
but they may also get some that do not apply (e.g., ones that contain
|
||
one of the roles R1, R2, or R3 and one or more other roles present in
|
||
a role-combination [1]).
|
||
|
||
Another strategy would be for the PDP to use only equality filters.
|
||
This approach eliminates the extraneous replies, but it requires the
|
||
PDP to explicitly build the desired role-combinations itself. It
|
||
also requires extra queries. Note that this approach is practical
|
||
only because the role names in a role combination are required to
|
||
appear in alphabetical order.
|
||
|
||
Note 4: in the following definitions, note that all LDAP matching
|
||
rules are defined in [3] and in [9]. The corresponding X.500
|
||
matching rules are defined in [8].
|
||
|
||
Note 5: some of the following attribute definitions specify
|
||
additional constraints on various data types (e.g., this integer has
|
||
values that are valid from 1..10). Text has been added to instruct
|
||
servers and applications what to do if a value outside of this range
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 20]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
is encountered. In all cases, if a constraint is violated, then the
|
||
policy rule SHOULD be treated as being disabled, meaning that
|
||
execution of the policy rule SHOULD be stopped.
|
||
|
||
5.1. The Abstract Class pcimPolicy
|
||
|
||
The abstract class pcimPolicy is a direct mapping of the abstract
|
||
class Policy from the PCIM. The class value "pcimPolicy" is also
|
||
used as the mechanism for identifying policy-related instances in the
|
||
Directory Information Tree. An instance of any class may be "tagged"
|
||
with this class value by attaching to it the auxiliary class
|
||
pcimElementAuxClass. Since pcimPolicy is derived from the class
|
||
dlm1ManagedElement defined in reference [6], this specification has a
|
||
normative dependency on that element of reference [6].
|
||
|
||
The class definition is as follows:
|
||
|
||
( 1.3.6.1.1.6.1.1 NAME 'pcimPolicy'
|
||
DESC 'An abstract class that is the base class for all classes
|
||
that describe policy-related instances.'
|
||
SUP dlm1ManagedElement
|
||
ABSTRACT
|
||
MAY ( cn $ dlmCaption $ dlmDescription $ orderedCimKeys $
|
||
pcimKeywords )
|
||
)
|
||
|
||
The attribute cn is defined in RFC 2256 [7]. The dlmCaption,
|
||
dlmDescription, and orderedCimKeys attributes are defined in [6].
|
||
|
||
The pcimKeywords attribute is a multi-valued attribute that contains
|
||
a set of keywords to assist directory clients in locating the policy
|
||
objects identified by these keywords. It is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.3 NAME 'pcimKeywords'
|
||
DESC 'A set of keywords to assist directory clients in
|
||
locating the policy objects applicable to them.'
|
||
EQUALITY caseIgnoreMatch
|
||
ORDERING caseIgnoreOrderingMatch
|
||
SUBSTR caseIgnoreSubstringsMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||
)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 21]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
5.2. The Three Policy Group Classes
|
||
|
||
PCIM [1] defines the PolicyGroup class to serve as a generalized
|
||
aggregation mechanism, enabling PolicyRules and/or PolicyGroups to be
|
||
aggregated together. PCLS maps this class into three LDAP classes,
|
||
called pcimGroup, pcimGroupAuxClass, and pcimGroupInstance. This is
|
||
done in order to provide maximum flexibility for the DIT designer.
|
||
|
||
The class definitions for the three policy group classes are listed
|
||
below. These class definitions do not include attributes to realize
|
||
the PolicyRuleInPolicyGroup and PolicyGroupInPolicyGroup associations
|
||
from the PCIM. This is because a pcimGroup object refers to
|
||
instances of pcimGroup and pcimRule via, respectively, the attribute
|
||
pcimGroupsAuxContainedSet in the pcimGroupContainmentAuxClass object
|
||
class and the attribute pcimRulesAuxContainedSet in the
|
||
pcimRuleContainmentAuxClass object class.
|
||
|
||
To maximize flexibility, the pcimGroup class is defined as abstract.
|
||
The subclass pcimGroupAuxClass provides for auxiliary attachment to
|
||
another entry, while the structural subclass pcimGroupInstance is
|
||
available to represent a policy group as a standalone entry.
|
||
|
||
The class definitions are as follows. First, the definition of the
|
||
abstract class pcimGroup:
|
||
|
||
( 1.3.6.1.1.6.1.2 NAME 'pcimGroup'
|
||
DESC 'A container for a set of related pcimRules and/or
|
||
a set of related pcimGroups.'
|
||
SUP pcimPolicy
|
||
ABSTRACT
|
||
MAY ( pcimGroupName )
|
||
)
|
||
|
||
The one attribute of pcimGroup is pcimGroupName. This attribute is
|
||
used to define a user-friendly name of this policy group, and may be
|
||
used as a naming attribute if desired. It is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.4 NAME 'pcimGroupName'
|
||
DESC 'The user-friendly name of this policy group.'
|
||
EQUALITY caseIgnoreMatch
|
||
ORDERING caseIgnoreOrderingMatch
|
||
SUBSTR caseIgnoreSubstringsMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 22]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
The two subclasses of pcimGroup are defined as follows. The class
|
||
pcimGroupAuxClass is an auxiliary class that can be used to collect a
|
||
set of related pcimRule and/or pcimGroup classes. It is defined as
|
||
follows:
|
||
|
||
( 1.3.6.1.1.6.1.3 NAME 'pcimGroupAuxClass'
|
||
DESC 'An auxiliary class that collects a set of related
|
||
pcimRule and/or pcimGroup entries.'
|
||
SUP pcimGroup
|
||
AUXILIARY
|
||
)
|
||
|
||
The class pcimGroupInstance is a structural class that can be used to
|
||
collect a set of related pcimRule and/or pcimGroup classes. It is
|
||
defined as follows:
|
||
|
||
( 1.3.6.1.1.6.1.4 NAME 'pcimGroupInstance'
|
||
DESC 'A structural class that collects a set of related
|
||
pcimRule and/or pcimGroup entries.'
|
||
SUP pcimGroup
|
||
STRUCTURAL
|
||
)
|
||
|
||
A DIT content rule could be written to enable an instance of
|
||
pcimGroupInstance to have attached to it either references to one or
|
||
more policy groups (using pcimGroupContainmentAuxClass) or references
|
||
to one or more policy rules (using pcimRuleContainmentAuxClass).
|
||
This would be used to formalize the semantics of the PolicyGroup
|
||
class [1]. Since these semantics do not include specifying any
|
||
properties of the PolicyGroup class, the content rule would not need
|
||
to specify any attributes.
|
||
|
||
Similarly, three separate DIT structure rules could be written, each
|
||
of which would refer to a specific name form that identified one of
|
||
the three possible naming attributes (i.e., pcimGroupName, cn, and
|
||
orderedCIMKeys) for the pcimGroup object class. This structure rule
|
||
SHOULD include a superiorStructureRule (see Note 2 at the beginning
|
||
of section 5). The three name forms referenced by the three
|
||
structure rules would each define one of the three naming attributes.
|
||
|
||
5.3. The Three Policy Rule Classes
|
||
|
||
The information model defines a PolicyRule class to represent the "If
|
||
Condition then Action" semantics associated with processing policy
|
||
information. For maximum flexibility, the PCLS maps this class into
|
||
three LDAP classes.
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 23]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
To maximize flexibility, the pcimRule class is defined as abstract.
|
||
The subclass pcimRuleAuxClass provides for auxiliary attachment to
|
||
another entry, while the structural subclass pcimRuleInstance is
|
||
available to represent a policy rule as a standalone entry.
|
||
|
||
The conditions and actions associated with a policy rule are modeled,
|
||
respectively, with auxiliary subclasses of the auxiliary classes
|
||
pcimConditionAuxClass and pcimActionAuxClass. Each of these
|
||
auxiliary subclasses is attached to an instance of one of three
|
||
structural classes. A subclass of pcimConditionAuxClass is attached
|
||
to an instance of pcimRuleInstance, to an instance of
|
||
pcimRuleConditionAssociation, or to an instance of
|
||
pcimPolicyInstance. Similarly, a subclass of pcimActionAuxClass is
|
||
attached to an instance of pcimRuleInstance, to an instance of
|
||
pcimRuleActionAssociation, or to an instance of pcimPolicyInstance.
|
||
|
||
The pcimRuleValidityPeriodList attribute (defined below) realizes the
|
||
PolicyRuleValidityPeriod association defined in the PCIM. Since this
|
||
association has no additional properties besides those that tie the
|
||
association to its associated objects, this association can be
|
||
realized by simply using an attribute. Thus, the
|
||
pcimRuleValidityPeriodList attribute is simply a multi-valued
|
||
attribute that provides an unordered set of DN references to one or
|
||
more instances of the pcimTPCAuxClass, indicating when the policy
|
||
rule is scheduled to be active and when it is scheduled to be
|
||
inactive. A policy rule is scheduled to be active if it is active
|
||
according to AT LEAST ONE of the pcimTPCAuxClass instances referenced
|
||
by this attribute.
|
||
|
||
The PolicyConditionInPolicyRule and PolicyActionInPolicyRule
|
||
associations, however, do have additional attributes. The
|
||
association PolicyActionInPolicyRule defines an integer attribute to
|
||
sequence the actions, and the association PolicyConditionInPolicyRule
|
||
has both an integer attribute to group the condition terms as well as
|
||
a Boolean property to specify whether a condition is to be negated.
|
||
|
||
In the PCLS, these additional association attributes are represented
|
||
as attributes of two classes introduced specifically to model these
|
||
associations. These classes are the pcimRuleConditionAssociation
|
||
class and the pcimRuleActionAssociation class, which are defined in
|
||
Sections 5.4 and 5.5, respectively. Thus, they do not appear as
|
||
attributes of the class pcimRule. Instead, the pcimRuleConditionList
|
||
and pcimRuleActionList attributes can be used to reference these
|
||
classes.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 24]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
The class definitions for the three pcimRule classes are as follows.
|
||
|
||
The abstract class pcimRule is a base class for representing the "If
|
||
Condition then Action" semantics associated with a policy rule. It
|
||
is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.1.5 NAME 'pcimRule'
|
||
DESC 'The base class for representing the "If Condition
|
||
then Action" semantics associated with a policy rule.'
|
||
SUP pcimPolicy
|
||
ABSTRACT
|
||
MAY ( pcimRuleName $ pcimRuleEnabled $
|
||
pcimRuleConditionListType $ pcimRuleConditionList $
|
||
pcimRuleActionList $ pcimRuleValidityPeriodList $
|
||
pcimRuleUsage $ pcimRulePriority $
|
||
pcimRuleMandatory $ pcimRuleSequencedActions $
|
||
pcimRoles )
|
||
)
|
||
|
||
The PCIM [1] defines seven properties for the PolicyRule class. The
|
||
PCLS defines eleven attributes for the pcimRule class, which is the
|
||
LDAP equivalent of the PolicyRule class. Of these eleven attributes,
|
||
seven are mapped directly from corresponding properties in PCIM's
|
||
PolicyRule class. The remaining four attributes are a class-specific
|
||
optional naming attribute, and three attributes used to realize the
|
||
three associations that the pcimRule class participates in.
|
||
|
||
The pcimRuleName attribute is used as a user-friendly name of this
|
||
policy rule, and can also serve as the class-specific optional naming
|
||
attribute. It is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.5 NAME 'pcimRuleName'
|
||
DESC 'The user-friendly name of this policy rule.'
|
||
EQUALITY caseIgnoreMatch
|
||
ORDERING caseIgnoreOrderingMatch
|
||
SUBSTR caseIgnoreSubstringsMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
The pcimRuleEnabled attribute is an integer enumeration indicating
|
||
whether a policy rule is administratively enabled (value=1),
|
||
administratively disabled (value=2), or enabled for debug (value=3).
|
||
It is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.6 NAME 'pcimRuleEnabled'
|
||
DESC 'An integer indicating whether a policy rule is
|
||
administratively enabled (value=1), disabled
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 25]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
(value=2), or enabled for debug (value=3).'
|
||
EQUALITY integerMatch
|
||
ORDERING integerOrderingMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
Note: All other values for the pcimRuleEnabled attribute are
|
||
considered errors, and the administrator SHOULD treat this rule as
|
||
being disabled if an invalid value is found.
|
||
|
||
The pcimRuleConditionListType attribute is used to indicate whether
|
||
the list of policy conditions associated with this policy rule is in
|
||
disjunctive normal form (DNF, value=1) or conjunctive normal form
|
||
(CNF, value=2). It is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.7 NAME 'pcimRuleConditionListType'
|
||
DESC 'A value of 1 means that this policy rule is in
|
||
disjunctive normal form; a value of 2 means that this
|
||
policy rule is in conjunctive normal form.'
|
||
EQUALITY integerMatch
|
||
ORDERING integerOrderingMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
Note: any value other than 1 or 2 for the pcimRuleConditionListType
|
||
attribute is considered an error. Administrators SHOULD treat this
|
||
rule as being disabled if an invalid value is found, since it is
|
||
unclear how to structure the condition list.
|
||
|
||
The pcimRuleConditionList attribute is a multi-valued attribute that
|
||
is used to realize the policyRuleInPolicyCondition association
|
||
defined in [1]. It contains a set of DNs of
|
||
pcimRuleConditionAssociation entries representing associations
|
||
between this policy rule and its conditions. No order is implied.
|
||
It is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.8 NAME 'pcimRuleConditionList'
|
||
DESC 'Unordered set of DNs of pcimRuleConditionAssociation
|
||
entries representing associations between this policy
|
||
rule and its conditions.'
|
||
EQUALITY distinguishedNameMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
|
||
)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 26]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
The pcimRuleActionList attribute is a multi-valued attribute that is
|
||
used to realize the policyRuleInPolicyAction association defined in
|
||
[1]. It contains a set of DNs of pcimRuleActionAssociation entries
|
||
representing associations between this policy rule and its actions.
|
||
No order is implied. It is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.9 NAME 'pcimRuleActionList'
|
||
DESC 'Unordered set of DNs of pcimRuleActionAssociation
|
||
entries representing associations between this policy
|
||
rule and its actions.'
|
||
EQUALITY distinguishedNameMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
|
||
)
|
||
|
||
The pcimRuleValidityPeriodList attribute is a multi-valued attribute
|
||
that is used to realize the pcimRuleValidityPeriod association that
|
||
is defined in [1]. It contains a set of DNs of
|
||
pcimRuleValidityAssociation entries that determine when the pcimRule
|
||
is scheduled to be active or inactive. No order is implied. It is
|
||
defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.10 NAME 'pcimRuleValidityPeriodList'
|
||
DESC 'Unordered set of DNs of pcimRuleValidityAssociation
|
||
entries that determine when the pcimRule is scheduled
|
||
to be active or inactive.'
|
||
EQUALITY distinguishedNameMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
|
||
)
|
||
|
||
The pcimRuleUsage attribute is a free-form string providing
|
||
guidelines on how this policy should be used. It is defined as
|
||
follows:
|
||
|
||
( 1.3.6.1.1.6.2.11 NAME 'pcimRuleUsage'
|
||
DESC 'This attribute is a free-form sting providing
|
||
guidelines on how this policy should be used.'
|
||
EQUALITY caseIgnoreMatch
|
||
ORDERING caseIgnoreOrderingMatch
|
||
SUBSTR caseIgnoreSubstringsMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 27]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
The pcimRulePriority attribute is a non-negative integer that is used
|
||
to prioritize this pcimRule relative to other pcimRules. A larger
|
||
value indicates a higher priority. It is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.12 NAME 'pcimRulePriority'
|
||
DESC 'A non-negative integer for prioritizing this
|
||
pcimRule relative to other pcimRules. A larger
|
||
value indicates a higher priority.'
|
||
EQUALITY integerMatch
|
||
ORDERING integerOrderingMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
Note: if the value of the pcimRulePriority field is 0, then it SHOULD
|
||
be treated as "don't care". On the other hand, if the value is
|
||
negative, then it SHOULD be treated as an error and Administrators
|
||
SHOULD treat this rule as being disabled.
|
||
|
||
The pcimRuleMandatory attribute is a Boolean attribute that, if TRUE,
|
||
indicates that for this policy rule, the evaluation of its conditions
|
||
and execution of its actions (if the condition is satisfied) is
|
||
required. If it is FALSE, then the evaluation of its conditions and
|
||
execution of its actions (if the condition is satisfied) is not
|
||
required. This attribute is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.13 NAME 'pcimRuleMandatory'
|
||
DESC 'If TRUE, indicates that for this policy rule, the
|
||
evaluation of its conditions and execution of its
|
||
actions (if the condition is satisfied) is required.'
|
||
EQUALITY booleanMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
The pcimRuleSequencedActions attribute is an integer enumeration that
|
||
is used to indicate that the ordering of actions defined by the
|
||
pcimActionOrder attribute is either mandatory(value=1),
|
||
recommended(value=2), or dontCare(value=3). It is defined as
|
||
follows:
|
||
|
||
( 1.3.6.1.1.6.2.14 NAME 'pcimRuleSequencedActions'
|
||
DESC 'An integer enumeration indicating that the ordering of
|
||
actions defined by the pcimActionOrder attribute is
|
||
mandatory(1), recommended(2), or dontCare(3).'
|
||
EQUALITY integerMatch
|
||
ORDERING integerOrderingMatch
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 28]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
Note: if the value of pcimRulesSequencedActions field is not one of
|
||
these three values, then Administrators SHOULD treat this rule as
|
||
being disabled.
|
||
|
||
The pcimRoles attribute represents the policyRoles property of [1].
|
||
Each value of this attribute represents a role-combination, which is
|
||
a string of the form:
|
||
<RoleName>[&&<RoleName>]* where the individual role names appear
|
||
in alphabetical order according to the collating sequence for UCS-2.
|
||
This attribute is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.15 NAME 'pcimRoles'
|
||
DESC 'Each value of this attribute represents a role-
|
||
combination.'
|
||
EQUALITY caseIgnoreMatch
|
||
ORDERING caseIgnoreOrderingMatch
|
||
SUBSTR caseIgnoreSubstringsMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||
)
|
||
|
||
Note: if the value of the pcimRoles attribute does not conform to the
|
||
format "<RoleName>[&&<RoleName>]*" (see Section 6.3.7 of [1]), then
|
||
this attribute is malformed and its policy rule SHOULD be treated as
|
||
being disabled.
|
||
|
||
The two subclasses of the pcimRule class are defined as follows.
|
||
First, the pcimRuleAuxClass is an auxiliary class for representing
|
||
the "If Condition then Action" semantics associated with a policy
|
||
rule. Its class definition is as follows:
|
||
|
||
( 1.3.6.1.1.6.1.6 NAME 'pcimRuleAuxClass'
|
||
DESC 'An auxiliary class for representing the "If Condition
|
||
then Action" semantics associated with a policy rule.'
|
||
SUP pcimRule
|
||
AUXILIARY
|
||
)
|
||
|
||
The pcimRuleInstance is a structural class for representing the "If
|
||
Condition then Action" semantics associated with a policy rule. Its
|
||
class definition is as follows:
|
||
|
||
( 1.3.6.1.1.6.1.7 NAME 'pcimRuleInstance'
|
||
DESC 'A structural class for representing the "If Condition
|
||
then Action" semantics associated with a policy rule.'
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 29]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
SUP pcimRule
|
||
STRUCTURAL
|
||
)
|
||
|
||
A DIT content rule could be written to enable an instance of
|
||
pcimRuleInstance to have attached to it either references to one or
|
||
more policy conditions (using pcimConditionAuxClass) or references to
|
||
one or more policy actions (using pcimActionAuxClass). This would be
|
||
used to formalize the semantics of the PolicyRule class [1]. Since
|
||
these semantics do not include specifying any properties of the
|
||
PolicyRule class, the content rule would not need to specify any
|
||
attributes.
|
||
|
||
Similarly, three separate DIT structure rules could be written, each
|
||
of which would refer to a specific name form that identified one of
|
||
its three possible naming attributes (i.e., pcimRuleName, cn, and
|
||
orderedCIMKeys). This structure rule SHOULD include a
|
||
superiorStructureRule (see Note 2 at the beginning of section 5).
|
||
The three name forms referenced by the three structure rules would
|
||
each define one of the three naming attributes.
|
||
|
||
5.4. The Class pcimRuleConditionAssociation
|
||
|
||
This class contains attributes to represent the properties of the
|
||
PCIM's PolicyConditionInPolicyRule association. Instances of this
|
||
class are related to an instance of pcimRule via DIT containment.
|
||
The policy conditions themselves are represented by auxiliary
|
||
subclasses of the auxiliary class pcimConditionAuxClass. These
|
||
auxiliary classes are attached directly to instances of
|
||
pcimRuleConditionAssociation for rule-specific policy conditions.
|
||
For a reusable policy condition, the policyCondition auxiliary
|
||
subclass is attached to an instance of the class pcimPolicyInstance
|
||
(which is presumably associated with a pcimRepository by DIT
|
||
containment), and the policyConditionDN attribute (of this class) is
|
||
used to reference the reusable policyCondition instance.
|
||
|
||
The class definition is as follows:
|
||
|
||
( 1.3.6.1.1.6.1.8 NAME 'pcimRuleConditionAssociation'
|
||
DESC 'This class contains attributes characterizing the
|
||
relationship between a policy rule and one of its
|
||
policy conditions.'
|
||
SUP pcimPolicy
|
||
MUST ( pcimConditionGroupNumber $ pcimConditionNegated )
|
||
MAY ( pcimConditionName $ pcimConditionDN )
|
||
)
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 30]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
The attributes of this class are defined as follows.
|
||
|
||
The pcimConditionGroupNumber attribute is a non-negative integer. It
|
||
is used to identify the group to which the condition referenced by
|
||
this association is assigned. This attribute is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.16
|
||
NAME 'pcimConditionGroupNumber'
|
||
DESC 'The number of the group to which a policy condition
|
||
belongs. This is used to form the DNF or CNF
|
||
expression associated with a policy rule.'
|
||
EQUALITY integerMatch
|
||
ORDERING integerOrderingMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
Note that this number is non-negative. A negative value for this
|
||
attribute is invalid, and any policy rule that refers to an invalid
|
||
entry SHOULD be treated as being disabled.
|
||
|
||
The pcimConditionNegated attribute is a Boolean attribute that
|
||
indicates whether this policy condition is to be negated or not. If
|
||
it is TRUE (FALSE), it indicates that a policy condition IS (IS NOT)
|
||
negated in the DNF or CNF expression associated with a policy rule.
|
||
This attribute is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.17
|
||
NAME 'pcimConditionNegated'
|
||
DESC 'If TRUE (FALSE), it indicates that a policy condition
|
||
IS (IS NOT) negated in the DNF or CNF expression
|
||
associated with a policy rule.'
|
||
EQUALITY booleanMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
The pcimConditionName is a user-friendly name for identifying this
|
||
policy condition, and may be used as a naming attribute if desired.
|
||
This attribute is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.18
|
||
NAME 'pcimConditionName'
|
||
DESC 'A user-friendly name for a policy condition.'
|
||
EQUALITY caseIgnoreMatch
|
||
ORDERING caseIgnoreOrderingMatch
|
||
SUBSTR caseIgnoreSubstringsMatch
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 31]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
The pcimConditionDN attribute is a DN that references an instance of
|
||
a reusable policy condition. This attribute is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.19
|
||
NAME 'pcimConditionDN'
|
||
DESC 'A DN that references an instance of a reusable policy
|
||
condition.'
|
||
EQUALITY distinguishedNameMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
A DIT content rule could be written to enable an instance of
|
||
pcimRuleConditionAssociation to have attached to it an instance of
|
||
the auxiliary class pcimConditionAuxClass, or one of its subclasses.
|
||
This would be used to formalize the semantics of the
|
||
PolicyConditionInPolicyRule association. Specifically, this would be
|
||
used to represent a rule-specific policy condition [1].
|
||
Similarly, three separate DIT structure rules could be written. Each
|
||
of these DIT structure rules would refer to a specific name form that
|
||
defined two important semantics. First, each name form would
|
||
identify one of the three possible naming attributes (i.e.,
|
||
pcimConditionName, cn, and orderedCIMKeys) for the
|
||
pcimRuleConditionAssociation object class. Second, each name form
|
||
would require that an instance of the pcimRuleConditionAssociation
|
||
class have as its superior an instance of the pcimRule class. This
|
||
structure rule SHOULD also include a superiorStructureRule (see Note
|
||
2 at the beginning of section 5).
|
||
|
||
5.5. The Class pcimRuleValidityAssociation
|
||
|
||
The policyRuleValidityPeriod aggregation is mapped to the PCLS
|
||
pcimRuleValidityAssociation class. This class represents the
|
||
scheduled activation and deactivation of a policy rule by binding the
|
||
definition of times that the policy is active to the policy rule
|
||
itself. The "scheduled" times are either identified through an
|
||
attached auxiliary class pcimTPCAuxClass, or are referenced through
|
||
its pcimTimePeriodConditionDN attribute.
|
||
|
||
This class is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.1.9 NAME 'pcimRuleValidityAssociation'
|
||
DESC 'This defines the scheduled activation or deactivation
|
||
of a policy rule.'
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 32]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
SUP pcimPolicy
|
||
STRUCTURAL
|
||
MAY ( pcimValidityConditionName $ pcimTimePeriodConditionDN )
|
||
)
|
||
|
||
The attributes of this class are defined as follows:
|
||
|
||
The pcimValidityConditionName attribute is used to define a
|
||
user-friendly name of this condition, and may be used as a naming
|
||
attribute if desired. This attribute is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.20
|
||
NAME 'pcimValidityConditionName'
|
||
DESC 'A user-friendly name for identifying an instance of
|
||
a pcimRuleValidityAssociation entry.'
|
||
EQUALITY caseIgnoreMatch
|
||
ORDERING caseIgnoreOrderingMatch
|
||
SUBSTR caseIgnoreSubstringsMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
The pcimTimePeriodConditionDN attribute is a DN that references a
|
||
reusable time period condition. It is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.21
|
||
NAME 'pcimTimePeriodConditionDN'
|
||
DESC 'A reference to a reusable policy time period
|
||
condition.'
|
||
EQUALITY distinguishedNameMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
A DIT content rule could be written to enable an instance of
|
||
pcimRuleValidityAssociation to have attached to it an instance of the
|
||
auxiliary class pcimTPCAuxClass, or one of its subclasses. This
|
||
would be used to formalize the semantics of the
|
||
PolicyRuleValidityPeriod aggregation [1].
|
||
|
||
Similarly, three separate DIT structure rules could be written. Each
|
||
of these DIT structure rules would refer to a specific name form that
|
||
defined two important semantics. First, each name form would
|
||
identify one of the three possible naming attributes (i.e.,
|
||
pcimValidityConditionName, cn, and orderedCIMKeys) for the
|
||
pcimRuleValidityAssociation object class. Second, each name form
|
||
would require that an instance of the pcimRuleValidityAssociation
|
||
class have as its superior an instance of the pcimRule class. This
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 33]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
structure rule SHOULD also include a superiorStructureRule (see Note
|
||
2 at the beginning of section 5).
|
||
|
||
5.6. The Class pcimRuleActionAssociation
|
||
|
||
This class contains an attribute to represent the one property of the
|
||
PCIM PolicyActionInPolicyRule association, ActionOrder. This
|
||
property is used to specify an order for executing the actions
|
||
associated with a policy rule. Instances of this class are related
|
||
to an instance of pcimRule via DIT containment. The actions
|
||
themselves are represented by auxiliary subclasses of the auxiliary
|
||
class pcimActionAuxClass.
|
||
|
||
These auxiliary classes are attached directly to instances of
|
||
pcimRuleActionAssociation for rule-specific policy actions. For a
|
||
reusable policy action, the pcimAction auxiliary subclass is attached
|
||
to an instance of the class pcimPolicyInstance (which is presumably
|
||
associated with a pcimRepository by DIT containment), and the
|
||
pcimActionDN attribute (of this class) is used to reference the
|
||
reusable pcimCondition instance.
|
||
|
||
The class definition is as follows:
|
||
|
||
( 1.3.6.1.1.6.1.10 NAME 'pcimRuleActionAssociation'
|
||
DESC 'This class contains attributes characterizing the
|
||
relationship between a policy rule and one of its
|
||
policy actions.'
|
||
SUP pcimPolicy
|
||
MUST ( pcimActionOrder )
|
||
MAY ( pcimActionName $ pcimActionDN )
|
||
)
|
||
|
||
The pcimActionName attribute is used to define a user-friendly name
|
||
of this action, and may be used as a naming attribute if desired.
|
||
This attribute is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.22
|
||
NAME 'pcimActionName'
|
||
DESC 'A user-friendly name for a policy action.'
|
||
EQUALITY caseIgnoreMatch
|
||
ORDERING caseIgnoreOrderingMatch
|
||
SUBSTR caseIgnoreSubstringsMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 34]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
The pcimActionOrder attribute is an unsigned integer that is used to
|
||
indicate the relative position of an action in a sequence of actions
|
||
that are associated with a given policy rule. When this number is
|
||
positive, it indicates a place in the sequence of actions to be
|
||
performed, with smaller values indicating earlier positions in the
|
||
sequence. If the value is zero, then this indicates that the order
|
||
is irrelevant. Note that if two or more actions have the same
|
||
non-zero value, they may be performed in any order as long as they
|
||
are each performed in the correct place in the overall sequence of
|
||
actions. This attribute is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.23
|
||
NAME 'pcimActionOrder'
|
||
DESC 'An integer indicating the relative order of an action
|
||
in the context of a policy rule.'
|
||
EQUALITY integerMatch
|
||
ORDERING integerOrderingMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
Note: if the value of the pcimActionOrder field is negative, then it
|
||
SHOULD be treated as an error and any policy rule that refers to such
|
||
an entry SHOULD be treated as being disabled.
|
||
|
||
The pcimActionDN attribute is a DN that references a reusable policy
|
||
action. It is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.24
|
||
NAME 'pcimActionDN'
|
||
DESC 'A DN that references a reusable policy action.'
|
||
EQUALITY distinguishedNameMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
A DIT content rule could be written to enable an instance of
|
||
pcimRuleActionAssociation to have attached to it an instance of the
|
||
auxiliary class pcimActionAuxClass, or one of its subclasses. This
|
||
would be used to formalize the semantics of the
|
||
PolicyActionInPolicyRule association. Specifically, this would be
|
||
used to represent a rule-specific policy action [1].
|
||
|
||
Similarly, three separate DIT structure rules could be written. Each
|
||
of these DIT structure rules would refer to a specific name form that
|
||
defined two important semantics. First, each name form would
|
||
identify one of the three possible naming attributes (i.e.,
|
||
pcimActionName, cn, and orderedCIMKeys) for the
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 35]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
pcimRuleActionAssociation object class. Second, each name form would
|
||
require that an instance of the pcimRuleActionAssociation class have
|
||
as its superior an instance of the pcimRule class. This structure
|
||
rule should also include a superiorStructureRule (see Note 2 at the
|
||
beginning of section 5).
|
||
|
||
5.7. The Auxiliary Class pcimConditionAuxClass
|
||
|
||
The purpose of a policy condition is to determine whether or not the
|
||
set of actions (contained in the pcimRule that the condition applies
|
||
to) should be executed or not. This class defines the basic
|
||
organizational semantics of a policy condition, as specified in [1].
|
||
Subclasses of this auxiliary class can be attached to instances of
|
||
three other classes in the PCLS. When a subclass of this class is
|
||
attached to an instance of pcimRuleConditionAssociation, or to an
|
||
instance of pcimRule, it represents a rule-specific policy condition.
|
||
When a subclass of this class is attached to an instance of
|
||
pcimPolicyInstance, it represents a reusable policy condition.
|
||
|
||
Since all of the classes to which subclasses of this auxiliary class
|
||
may be attached are derived from the pcimPolicy class, the attributes
|
||
of pcimPolicy will already be defined for the entries to which these
|
||
subclasses attach. Thus, this class is derived directly from "top".
|
||
|
||
The class definition is as follows:
|
||
|
||
( 1.3.6.1.1.6.1.11 NAME 'pcimConditionAuxClass'
|
||
DESC 'A class representing a condition to be evaluated in
|
||
conjunction with a policy rule.'
|
||
SUP top
|
||
AUXILIARY
|
||
)
|
||
|
||
5.8. The Auxiliary Class pcimTPCAuxClass
|
||
|
||
The PCIM defines a time period class, PolicyTimePeriodCondition, to
|
||
provide a means of representing the time periods during which a
|
||
policy rule is valid, i.e., active. It also defines an aggregation,
|
||
PolicyRuleValidityPeriod, so that time periods can be associated with
|
||
a PolicyRule. The LDAP mapping also provides two classes, one for
|
||
the time condition itself, and one for the aggregation.
|
||
|
||
In the PCIM, the time period class is named
|
||
PolicyTimePeriodCondition. However, the resulting name of the
|
||
auxiliary class in this mapping (pcimTimePeriodConditionAuxClass)
|
||
exceeds the length of a name that some directories can store.
|
||
Therefore, the name has been shortened to pcimTPCAuxClass.
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 36]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
The class definition is as follows:
|
||
|
||
( 1.3.6.1.1.6.1.12 NAME 'pcimTPCAuxClass'
|
||
DESC 'This provides the capability of enabling or disabling
|
||
a policy rule according to a predetermined schedule.'
|
||
SUP pcimConditionAuxClass
|
||
AUXILIARY
|
||
MAY ( pcimTPCTime $ pcimTPCMonthOfYearMask $
|
||
pcimTPCDayOfMonthMask $ pcimTPCDayOfWeekMask $
|
||
pcimTPCTimeOfDayMask $ pcimTPCLocalOrUtcTime )
|
||
)
|
||
|
||
The attributes of the pcimTPCAuxClass are defined as follows.
|
||
|
||
The pcimTPCTime attribute represents the time period that a policy
|
||
rule is enabled for. This attribute is defined as a string in [1]
|
||
with a special format which defines a time period with a starting
|
||
date and an ending date separated by a forward slash ("/"), as
|
||
follows:
|
||
|
||
yyyymmddThhmmss/yyyymmddThhmmss
|
||
|
||
where the first date and time may be replaced with the string
|
||
"THISANDPRIOR" or the second date and time may be replaced with the
|
||
string "THISANDFUTURE". This attribute is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.25
|
||
NAME 'pcimTPCTime'
|
||
DESC 'The start and end times on which a policy rule is
|
||
valid.'
|
||
EQUALITY caseIgnoreMatch
|
||
ORDERING caseIgnoreOrderingMatch
|
||
SUBSTR caseIgnoreSubstringsMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.44
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
The value of this attribute SHOULD be checked against its defined
|
||
format ("yyyymmddThhmmss/yyyymmddThhmmss", where the first and second
|
||
date strings may be replaced with the strings "THISANDPRIOR" and
|
||
"THISANDFUTURE"). If the value of this attribute does not conform to
|
||
this syntax, then this SHOULD be considered an error and the policy
|
||
rule SHOULD be treated as being disabled.
|
||
|
||
The next four attributes (pcimTPCMonthOfYearMask,
|
||
pcimTPCDayOfMonthMask, pcimTPCDayOfWeekMask, and
|
||
pcimTPCTimeOfDayMask) are all defined as octet strings in [1].
|
||
However, the semantics of each of these attributes are contained in
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 37]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
bit strings of various fixed lengths. Therefore, the PCLS uses a
|
||
syntax of Bit String to represent each of them. The definition of
|
||
these four attributes are as follows.
|
||
|
||
The pcimTPCMonthOfYearMask attribute defines a 12-bit mask
|
||
identifying the months of the year in which a policy rule is valid.
|
||
The format is a bit string of length 12, representing the months of
|
||
the year from January through December. The definition of this
|
||
attribute is as follows:
|
||
|
||
( 1.3.6.1.1.6.2.26
|
||
NAME 'pcimTPCMonthOfYearMask'
|
||
DESC 'This identifies the valid months of the year for a
|
||
policy rule using a 12-bit string that represents the
|
||
months of the year from January through December.'
|
||
EQUALITY bitStringMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.6
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
The value of this attribute SHOULD be checked against its defined
|
||
format. If the value of this attribute does not conform to this
|
||
syntax, then this SHOULD be considered an error and the policy rule
|
||
SHOULD be treated as being disabled.
|
||
|
||
The pcimTPCMonthOfDayMask attribute defines a mask identifying the
|
||
days of the month on which a policy rule is valid. The format is a
|
||
bit string of length 62. The first 31 positions represent the days
|
||
of the month in ascending order, from day 1 to day 31. The next 31
|
||
positions represent the days of the month in descending order, from
|
||
the last day to the day 31 days from the end. The definition of this
|
||
attribute is as follows:
|
||
|
||
( 1.3.6.1.1.6.2.27
|
||
NAME 'pcimTPCDayOfMonthMask'
|
||
DESC 'This identifies the valid days of the month for a
|
||
policy rule using a 62-bit string. The first 31
|
||
positions represent the days of the month in ascending
|
||
order, and the next 31 positions represent the days of
|
||
the month in descending order.'
|
||
EQUALITY bitStringMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.6
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 38]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
The value of this attribute SHOULD be checked against its defined
|
||
format. If the value of this attribute does not conform to this
|
||
syntax, then this SHOULD be considered an error and the policy rule
|
||
SHOULD be treated as being disabled.
|
||
|
||
The pcimTPCDayOfWeekMask attribute defines a mask identifying the
|
||
days of the week on which a policy rule is valid. The format is a
|
||
bit string of length 7, representing the days of the week from Sunday
|
||
through Saturday. The definition of this attribute is as follows:
|
||
|
||
( 1.3.6.1.1.6.2.28
|
||
NAME 'pcimTPCDayOfWeekMask'
|
||
DESC 'This identifies the valid days of the week for a
|
||
policy rule using a 7-bit string. This represents
|
||
the days of the week from Sunday through Saturday.'
|
||
EQUALITY bitStringMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.6
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
The value of this attribute SHOULD be checked against its defined
|
||
format. If the value of this attribute does not conform to this
|
||
syntax, then this SHOULD be considered an error and the policy rule
|
||
SHOULD be treated as being disabled.
|
||
|
||
The pcimTPCTimeOfDayMask attribute defines the range of times at
|
||
which a policy rule is valid. If the second time is earlier than the
|
||
first, then the interval spans midnight. The format of the string is
|
||
Thhmmss/Thhmmss. The definition of this attribute is as follows:
|
||
|
||
( 1.3.6.1.1.6.2.29
|
||
NAME 'pcimTPCTimeOfDayMask'
|
||
DESC 'This identifies the valid range of times for a policy
|
||
using the format Thhmmss/Thhmmss.'
|
||
EQUALITY caseIgnoreMatch
|
||
ORDERING caseIgnoreOrderingMatch
|
||
SUBSTR caseIgnoreSubstringsMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.44
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
The value of this attribute SHOULD be checked against its defined
|
||
format. If the value of this attribute does not conform to this
|
||
syntax, then this SHOULD be considered an error and the policy rule
|
||
SHOULD be treated as being disabled.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 39]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
Finally, the pcimTPCLocalOrUtcTime attribute is used to choose
|
||
between local or UTC time representation. This is mapped as a simple
|
||
integer syntax, with the value of 1 representing local time and the
|
||
value of 2 representing UTC time. The definition of this attribute
|
||
is as follows:
|
||
|
||
( 1.3.6.1.1.6.2.30
|
||
NAME 'pcimTPCLocalOrUtcTime'
|
||
DESC 'This defines whether the times in this instance
|
||
represent local (value=1) times or UTC (value=2)
|
||
times.'
|
||
EQUALITY integerMatch
|
||
ORDERING integerOrderingMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
Note: if the value of the pcimTPCLocalOrUtcTime is not 1 or 2, then
|
||
this SHOULD be considered an error and the policy rule SHOULD be
|
||
disabled. If the attribute is not present at all, then all times are
|
||
interpreted as if it were present with the value 2, that is, UTC
|
||
time.
|
||
|
||
5.9. The Auxiliary Class pcimConditionVendorAuxClass
|
||
|
||
This class provides a general extension mechanism for representing
|
||
policy conditions that have not been modeled with specific
|
||
properties. Instead, its two properties are used to define the
|
||
content and format of the condition, as explained below. This class
|
||
is intended for vendor-specific extensions that are not amenable to
|
||
using pcimCondition; standardized extensions SHOULD NOT use this
|
||
class.
|
||
|
||
The class definition is as follows:
|
||
|
||
( 1.3.6.1.1.6.1.13 NAME 'pcimConditionVendorAuxClass'
|
||
DESC 'A class that defines a registered means to describe a
|
||
policy condition.'
|
||
SUP pcimConditionAuxClass
|
||
AUXILIARY
|
||
MAY ( pcimVendorConstraintData $
|
||
pcimVendorConstraintEncoding )
|
||
)
|
||
|
||
The pcimVendorConstraintData attribute is a multi-valued attribute.
|
||
It provides a general mechanism for representing policy conditions
|
||
that have not been modeled as specific attributes. This information
|
||
is encoded in a set of octet strings. The format of the octet
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 40]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
strings is identified by the OID stored in the
|
||
pcimVendorConstraintEncoding attribute. This attribute is defined as
|
||
follows:
|
||
|
||
( 1.3.6.1.1.6.2.31
|
||
NAME 'pcimVendorConstraintData'
|
||
DESC 'Mechanism for representing constraints that have not
|
||
been modeled as specific attributes. Their format is
|
||
identified by the OID stored in the attribute
|
||
pcimVendorConstraintEncoding.'
|
||
EQUALITY octetStringMatch
|
||
ORDERING octetStringOrderingMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
|
||
)
|
||
|
||
The pcimVendorConstraintEncoding attribute is used to identify the
|
||
format and semantics for the pcimVendorConstraintData attribute.
|
||
This attribute is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.32
|
||
NAME 'pcimVendorConstraintEncoding'
|
||
DESC 'An OID identifying the format and semantics for the
|
||
pcimVendorConstraintData for this instance.'
|
||
EQUALITY objectIdentifierMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.38
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
5.10. The Auxiliary Class pcimActionAuxClass
|
||
|
||
The purpose of a policy action is to execute one or more operations
|
||
that will affect network traffic and/or systems, devices, etc. in
|
||
order to achieve a desired policy state. This class is used to
|
||
represent an action to be performed as a result of a policy rule
|
||
whose condition clause was satisfied.
|
||
|
||
Subclasses of this auxiliary class can be attached to instances of
|
||
three other classes in the PCLS. When a subclass of this class is
|
||
attached to an instance of pcimRuleActionAssociation, or to an
|
||
instance of pcimRule, it represents a rule-specific policy action.
|
||
When a subclass of this class is attached to an instance of
|
||
pcimPolicyInstance, it represents a reusable policy action.
|
||
|
||
Since all of the classes to which subclasses of this auxiliary class
|
||
may be attached are derived from the pcimPolicy class, the attributes
|
||
of the pcimPolicy class will already be defined for the entries to
|
||
which these subclasses attach. Thus, this class is derived directly
|
||
from "top".
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 41]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
The class definition is as follows:
|
||
|
||
( 1.3.6.1.1.6.1.14 NAME 'pcimActionAuxClass'
|
||
DESC 'A class representing an action to be performed as a
|
||
result of a policy rule.'
|
||
SUP top
|
||
AUXILIARY
|
||
)
|
||
|
||
5.11. The Auxiliary Class pcimActionVendorAuxClass
|
||
|
||
The purpose of this class is to provide a general extension mechanism
|
||
for representing policy actions that have not been modeled with
|
||
specific properties. Instead, its two properties are used to define
|
||
the content and format of the action, as explained below.
|
||
|
||
As its name suggests, this class is intended for vendor-specific
|
||
extensions that are not amenable to using the standard pcimAction
|
||
class. Standardized extensions SHOULD NOT use this class.
|
||
|
||
The class definition is as follows:
|
||
|
||
( 1.3.6.1.1.6.1.15 NAME 'pcimActionVendorAuxClass'
|
||
DESC 'A class that defines a registered means to describe a
|
||
policy action.'
|
||
SUP pcimActionAuxClass
|
||
AUXILIARY
|
||
MAY ( pcimVendorActionData $ pcimVendorActionEncoding )
|
||
)
|
||
|
||
The pcimVendorActionData attribute is a multi-valued attribute. It
|
||
provides a general mechanism for representing policy actions that
|
||
have not been modeled as specific attributes. This information is
|
||
encoded in a set of octet strings. The format of the octet strings
|
||
is identified by the OID stored in the pcimVendorActionEncoding
|
||
attribute. This attribute is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.33
|
||
NAME 'pcimVendorActionData'
|
||
DESC ' Mechanism for representing policy actions that have
|
||
not been modeled as specific attributes. Their
|
||
format is identified by the OID stored in the
|
||
attribute pcimVendorActionEncoding.'
|
||
EQUALITY octetStringMatch
|
||
ORDERING octetStringOrderingMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
|
||
)
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 42]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
The pcimVendorActionEncoding attribute is used to identify the format
|
||
and semantics for the pcimVendorActionData attribute. This attribute
|
||
is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.34
|
||
NAME 'pcimVendorActionEncoding'
|
||
DESC 'An OID identifying the format and semantics for the
|
||
pcimVendorActionData attribute of this instance.'
|
||
EQUALITY objectIdentifierMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.38
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
5.12. The Class pcimPolicyInstance
|
||
|
||
This class is not defined in the PCIM. Its role is to serve as a
|
||
structural class to which auxiliary classes representing policy
|
||
information are attached when the information is reusable. For
|
||
auxiliary classes representing policy conditions and policy actions,
|
||
there are alternative structural classes that may be used. See
|
||
Section 4.4 for a complete discussion of reusable policy conditions
|
||
and actions, and of the role that this class plays in how they are
|
||
represented.
|
||
|
||
The class definition is as follows:
|
||
|
||
( 1.3.6.1.1.6.1.16 NAME 'pcimPolicyInstance'
|
||
DESC 'A structural class to which aux classes containing
|
||
reusable policy information can be attached.'
|
||
SUP pcimPolicy
|
||
MAY ( pcimPolicyInstanceName )
|
||
)
|
||
|
||
The pcimPolicyInstanceName attribute is used to define a
|
||
user-friendly name of this class, and may be used as a naming
|
||
attribute if desired. It is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.35 NAME 'pcimPolicyInstanceName'
|
||
DESC 'The user-friendly name of this policy instance.'
|
||
EQUALITY caseIgnoreMatch
|
||
ORDERING caseIgnoreOrderingMatch
|
||
SUBSTR caseIgnoreSubstringsMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 43]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
A DIT content rule could be written to enable an instance of
|
||
pcimPolicyInstance to have attached to it either instances of one or
|
||
more of the auxiliary object classes pcimConditionAuxClass and
|
||
pcimActionAuxClass. Since these semantics do not include specifying
|
||
any properties, the content rule would not need to specify any
|
||
attributes. Note that other content rules could be defined to enable
|
||
other policy-related auxiliary classes to be attached to
|
||
pcimPolicyInstance.
|
||
|
||
Similarly, three separate DIT structure rules could be written. Each
|
||
of these DIT structure rules would refer to a specific name form that
|
||
defined two important semantics. First, each name form would
|
||
identify one of the three possible naming attributes (i.e.,
|
||
pcimPolicyInstanceName, cn, and orderedCIMKeys) for this object
|
||
class. Second, each name form would require that an instance of the
|
||
pcimPolicyInstance class have as its superior an instance of the
|
||
pcimRepository class. This structure rule SHOULD also include a
|
||
superiorStructureRule (see Note 2 at the beginning of section 5).
|
||
|
||
5.13. The Auxiliary Class pcimElementAuxClass
|
||
|
||
This class introduces no additional attributes, beyond those defined
|
||
in the class pcimPolicy from which it is derived. Its role is to
|
||
"tag" an instance of a class defined outside the realm of policy
|
||
information as represented by PCIM as being nevertheless relevant to
|
||
a policy specification. This tagging can potentially take place at
|
||
two levels:
|
||
|
||
- Every instance to which pcimElementAuxClass is attached becomes
|
||
an instance of the class pcimPolicy, since pcimElementAuxClass is
|
||
a subclass of pcimPolicy. Searching for object
|
||
class="pcimPolicy" will return the instance. (As noted earlier,
|
||
this approach does NOT work for some directory implementations.
|
||
To accommodate these implementations, policy-related entries
|
||
SHOULD be tagged with the pcimKeyword "POLICY".)
|
||
|
||
- With the pcimKeywords attribute that it inherits from pcimPolicy,
|
||
an instance to which pcimElementAuxClass is attached can be
|
||
tagged as being relevant to a particular type or category of
|
||
policy information, using standard keywords,
|
||
administrator-defined keywords, or both.
|
||
|
||
The class definition is as follows:
|
||
|
||
( 1.3.6.1.1.6.1.17 NAME 'pcimElementAuxClass'
|
||
DESC 'An auxiliary class used to tag instances of classes
|
||
defined outside the realm of policy as relevant to a
|
||
particular policy specification.'
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 44]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
SUP pcimPolicy
|
||
AUXILIARY
|
||
)
|
||
|
||
5.14. The Three Policy Repository Classes
|
||
|
||
These classes provide a container for reusable policy information,
|
||
such as reusable policy conditions and/or reusable policy actions.
|
||
This document is concerned with mapping just the properties that
|
||
appear in these classes. Conceptually, this may be thought of as a
|
||
special location in the DIT where policy information may reside.
|
||
Since pcimRepository is derived from the class dlm1AdminDomain
|
||
defined in reference [6], this specification has a normative
|
||
dependency on that element of reference [6] (as well as on its entire
|
||
derivation hierarchy, which also appears in reference [6]). To
|
||
maximize flexibility, the pcimRepository class is defined as
|
||
abstract. A subclass pcimRepositoryAuxClass provides for auxiliary
|
||
attachment to another entry, while a structural subclass
|
||
pcimRepositoryInstance is available to represent a policy repository
|
||
as a standalone entry.
|
||
|
||
The definition for the pcimRepository class is as follows:
|
||
|
||
( 1.3.6.1.1.6.1.18 NAME 'pcimRepository'
|
||
DESC 'A container for reusable policy information.'
|
||
SUP dlm1AdminDomain
|
||
ABSTRACT
|
||
MAY ( pcimRepositoryName )
|
||
)
|
||
|
||
The pcimRepositoryName attribute is used to define a user-friendly
|
||
name of this class, and may be used as a naming attribute if desired.
|
||
It is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.2.36 NAME 'pcimRepositoryName'
|
||
DESC 'The user-friendly name of this policy repository.'
|
||
EQUALITY caseIgnoreMatch
|
||
ORDERING caseIgnoreOrderingMatch
|
||
SUBSTR caseIgnoreSubstringsMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 45]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
The two subclasses of pcimRepository are defined as follows. First,
|
||
the pcimRepositoryAuxClass is an auxiliary class that can be used to
|
||
aggregate reusable policy information. It is defined as follows:
|
||
|
||
( 1.3.6.1.1.6.1.19 NAME 'pcimRepositoryAuxClass'
|
||
DESC 'An auxiliary class that can be used to aggregate
|
||
reusable policy information.'
|
||
SUP pcimRepository
|
||
AUXILIARY
|
||
)
|
||
|
||
In cases where structural classes are needed instead of an auxiliary
|
||
class, the pcimRepositoryInstance class is a structural class that
|
||
can be used to aggregate reusable policy information. It is defined
|
||
as follows:
|
||
|
||
( 1.3.6.1.1.6.1.20 NAME 'pcimRepositoryInstance'
|
||
DESC 'A structural class that can be used to aggregate
|
||
reusable policy information.'
|
||
SUP pcimRepository
|
||
STRUCTURAL
|
||
)
|
||
|
||
Three separate DIT structure rules could be written for this class.
|
||
Each of these DIT structure rules would refer to a specific name form
|
||
that enabled an instance of the pcimRepository class to be named
|
||
under any superior using one of the three possible naming attributes
|
||
(i.e., pcimRepositoryName, cn, and orderedCIMKeys). This structure
|
||
rule SHOULD also include a superiorStructureRule (see Note 2 at the
|
||
beginning of section 5).
|
||
|
||
5.15. The Auxiliary Class pcimSubtreesPtrAuxClass
|
||
|
||
This auxiliary class provides a single, multi-valued attribute that
|
||
references a set of objects that are at the root of DIT subtrees
|
||
containing policy-related information. By attaching this attribute
|
||
to instances of various other classes, a policy administrator has a
|
||
flexible way of providing an entry point into the directory that
|
||
allows a client to locate and retrieve the policy information
|
||
relevant to it.
|
||
|
||
It is intended that these entries are placed in the DIT such that
|
||
well-known DNs can be used to reference a well-known structural entry
|
||
that has the pcimSubtreesPtrAuxClass attached to it. In effect, this
|
||
defines a set of entry points. Each of these entry points can
|
||
contain and/or reference all related policy entries for
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 46]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
any well-known policy domains. The pcimSubtreesPtrAuxClass functions
|
||
as a tag to identify portions of the DIT that contain policy
|
||
information.
|
||
|
||
This object does not provide the semantic linkages between individual
|
||
policy objects, such as those between a policy group and the policy
|
||
rules that belong to it. Its only role is to enable efficient bulk
|
||
retrieval of policy-related objects, as described in Section 4.5.
|
||
|
||
Once the objects have been retrieved, a directory client can
|
||
determine the semantic linkages by following references contained in
|
||
multi-valued attributes, such as pcimRulesAuxContainedSet.
|
||
|
||
Since policy-related objects will often be included in the DIT
|
||
subtree beneath an object to which this auxiliary class is attached,
|
||
a client SHOULD request the policy-related objects from the subtree
|
||
under the object with these references at the same time that it
|
||
requests the references themselves.
|
||
|
||
Since clients are expected to behave in this way, the policy
|
||
administrator SHOULD make sure that this subtree does not contain so
|
||
many objects unrelated to policy that an initial search done in this
|
||
way results in a performance problem. The pcimSubtreesPtrAuxClass
|
||
SHOULD NOT be attached to the partition root for a large directory
|
||
partition containing a relatively few number of policy-related
|
||
objects along with a large number of objects unrelated to policy
|
||
(again, "policy" here refers to the PCIM, not the X.501, definition
|
||
and use of "policy"). A better approach would be to introduce a
|
||
container object immediately below the partition root, attach
|
||
pcimSubtreesPtrAuxClass to this container object, and then place all
|
||
of the policy-related objects in that subtree.
|
||
|
||
The class definition is as follows:
|
||
|
||
( 1.3.6.1.1.6.1.21 NAME 'pcimSubtreesPtrAuxClass'
|
||
DESC 'An auxiliary class providing DN references to roots of
|
||
DIT subtrees containing policy-related objects.'
|
||
SUP top
|
||
AUXILIARY
|
||
MAY ( pcimSubtreesAuxContainedSet )
|
||
)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 47]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
The attribute pcimSubtreesAuxContainedSet provides an unordered set
|
||
of DN references to instances of one or more objects under which
|
||
policy-related information is present. The objects referenced may or
|
||
may not themselves contain policy-related information. The attribute
|
||
definition is as follows:
|
||
|
||
( 1.3.6.1.1.6.2.37
|
||
NAME 'pcimSubtreesAuxContainedSet'
|
||
DESC 'DNs of objects that serve as roots for DIT subtrees
|
||
containing policy-related objects.'
|
||
EQUALITY distinguishedNameMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
|
||
)
|
||
|
||
Note that the cn attribute does NOT need to be defined for this
|
||
class. This is because an auxiliary class is used as a means to
|
||
collect common attributes and treat them as properties of an object.
|
||
A good analogy is a #include file, except that since an auxiliary
|
||
class is a class, all the benefits of a class (e.g., inheritance) can
|
||
be applied to an auxiliary class.
|
||
|
||
5.16. The Auxiliary Class pcimGroupContainmentAuxClass
|
||
|
||
This auxiliary class provides a single, multi-valued attribute that
|
||
references a set of pcimGroups. By attaching this attribute to
|
||
instances of various other classes, a policy administrator has a
|
||
flexible way of providing an entry point into the directory that
|
||
allows a client to locate and retrieve the pcimGroups relevant to it.
|
||
|
||
As is the case with pcimRules, a policy administrator might have
|
||
several different references to a pcimGroup in the overall directory
|
||
structure. The pcimGroupContainmentAuxClass is the mechanism that
|
||
makes it possible for the policy administrator to define all these
|
||
different references.
|
||
|
||
The class definition is as follows:
|
||
|
||
( 1.3.6.1.1.6.1.22 NAME 'pcimGroupContainmentAuxClass'
|
||
DESC 'An auxiliary class used to bind pcimGroups to an
|
||
appropriate container object.'
|
||
SUP top
|
||
AUXILIARY
|
||
MAY ( pcimGroupsAuxContainedSet )
|
||
)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 48]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
The attribute pcimGroupsAuxContainedSet provides an unordered set of
|
||
references to instances of one or more pcimGroups associated with the
|
||
instance of a structural class to which this attribute has been
|
||
appended.
|
||
|
||
The attribute definition is as follows:
|
||
|
||
( 1.3.6.1.1.6.2.38
|
||
NAME 'pcimGroupsAuxContainedSet'
|
||
DESC 'DNs of pcimGroups associated in some way with the
|
||
instance to which this attribute has been appended.'
|
||
EQUALITY distinguishedNameMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
|
||
)
|
||
|
||
Note that the cn attribute does NOT have to be defined for this class
|
||
for the same reasons as those given for the pcimSubtreesPtrAuxClass
|
||
in section 5.15.
|
||
|
||
5.17. The Auxiliary Class pcimRuleContainmentAuxClass
|
||
|
||
This auxiliary class provides a single, multi-valued attribute that
|
||
references a set of pcimRules. By attaching this attribute to
|
||
instances of various other classes, a policy administrator has a
|
||
flexible way of providing an entry point into the directory that
|
||
allows a client to locate and retrieve the pcimRules relevant to it.
|
||
|
||
A policy administrator might have several different references to a
|
||
pcimRule in the overall directory structure. For example, there
|
||
might be references to all pcimRules for traffic originating in a
|
||
particular subnet from a directory entry that represents that subnet.
|
||
At the same time, there might be references to all pcimRules related
|
||
to a particular DiffServ setting from an instance of a pcimGroup
|
||
explicitly introduced as a container for DiffServ-related pcimRules.
|
||
The pcimRuleContainmentAuxClass is the mechanism that makes it
|
||
possible for the policy administrator to define all these separate
|
||
references.
|
||
|
||
The class definition is as follows:
|
||
|
||
( 1.3.6.1.1.6.1.23 NAME 'pcimRuleContainmentAuxClass'
|
||
DESC 'An auxiliary class used to bind pcimRules to an
|
||
appropriate container object.'
|
||
SUP top
|
||
AUXILIARY
|
||
MAY ( pcimRulesAuxContainedSet )
|
||
)
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 49]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
The attribute pcimRulesAuxContainedSet provides an unordered set of
|
||
references to one or more instances of pcimRules associated with the
|
||
instance of a structural class to which this attribute has been
|
||
appended. The attribute definition is as follows:
|
||
|
||
( 1.3.6.1.1.6.2.39
|
||
NAME 'pcimRulesAuxContainedSet'
|
||
DESC 'DNs of pcimRules associated in some way with the
|
||
instance to which this attribute has been appended.'
|
||
EQUALITY distinguishedNameMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
|
||
)
|
||
|
||
The cn attribute does NOT have to be defined for this class for the
|
||
same reasons as those given for the pcimSubtreesPtrAuxClass in
|
||
section 5.15.
|
||
|
||
6. Extending the Classes Defined in This Document
|
||
|
||
The following subsections provide general guidance on how to create a
|
||
domain-specific schema derived from this document, discuss how the
|
||
vendor classes in the PCLS should be used, and explain how
|
||
policyTimePeriodConditions are related to other policy conditions.
|
||
|
||
6.1. Subclassing pcimConditionAuxClass and pcimActionAuxClass
|
||
|
||
In Section 4.4, there is a discussion of how, by representing policy
|
||
conditions and policy actions as auxiliary classes in a schema, the
|
||
flexibility is retained to instantiate a particular condition or
|
||
action as either rule-specific or reusable. This flexibility is lost
|
||
if a condition or action class is defined as structural rather than
|
||
auxiliary. For standardized schemata, this document specifies that
|
||
domain-specific information MUST be expressed in auxiliary subclasses
|
||
of pcimConditionAuxClass and pcimActionAuxClass. It is RECOMMENDED
|
||
that non-standardized schemata follow this practice as well.
|
||
|
||
6.2. Using the Vendor Policy Attributes
|
||
|
||
As discussed Section 5.9, the attributes pcimVendorConstraintData and
|
||
pcimVendorConstraintEncoding are included in the
|
||
pcimConditionVendorAuxClass to provide a mechanism for representing
|
||
vendor-specific policy conditions that are not amenable to being
|
||
represented with the pcimCondition class (or its subclasses). The
|
||
attributes pcimVendorActionData and pcimVendorActionEncoding in the
|
||
pcimActionVendorAuxClass class play the same role with respect to
|
||
actions. This enables interoperability between different vendors who
|
||
could not otherwise interoperate.
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 50]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
For example, imagine a network composed of access devices from vendor
|
||
A, edge and core devices from vendor B, and a policy server from
|
||
vendor C. It is desirable for this policy server to be able to
|
||
configure and manage all of the devices from vendors A and B.
|
||
Unfortunately, these devices will in general have little in common
|
||
(e.g., different mechanisms, different ways for controlling those
|
||
mechanisms, different operating systems, different commands, and so
|
||
forth). The extension conditions provide a way for vendor-specific
|
||
commands to be encoded as octet strings, so that a single policy
|
||
server can commonly manage devices from different vendors.
|
||
|
||
6.3. Using Time Validity Periods
|
||
|
||
Time validity periods are defined as an auxiliary subclass of
|
||
pcimConditionAuxClass, called pcimTPCAuxClass. This is to allow
|
||
their inclusion in the AND/OR condition definitions for a pcimRule.
|
||
Care should be taken not to subclass pcimTPCAuxClass to add
|
||
domain-specific condition properties.
|
||
|
||
For example, it would be incorrect to add IPsec- or QoS-specific
|
||
condition properties to the pcimTPCAuxClass class, just because IPsec
|
||
or QoS includes time in its condition definition. The correct
|
||
subclassing would be to create IPsec or QoS-specific subclasses of
|
||
pcimConditionAuxClass and then combine instances of these
|
||
domain-specific condition classes with the appropriate validity
|
||
period criteria. This is accomplished using the AND/OR association
|
||
capabilities for policy conditions in pcimRules.
|
||
|
||
7. Security Considerations
|
||
|
||
The PCLS, presented in this document, provides a mapping of the
|
||
object-oriented model for describing policy information (PCIM) into a
|
||
data model that forms the basic framework for describing the
|
||
structure of policy data, in the case where the policy repository
|
||
takes the form of an LDAP-accessible directory.
|
||
|
||
PCLS is not intended to represent any particular system design or
|
||
implementation. PCLS is not directly useable in a real world system,
|
||
without the discipline-specific mappings that are works in progress
|
||
in the Policy Framework Working Group of the IETF.
|
||
|
||
These other derivative documents, which use PCIM and its
|
||
discipline-specific extensions as a base, will need to convey more
|
||
specific security considerations (refer to RFC 3060 for more
|
||
information.)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 51]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
The reason that PCLS, as defined here, is not representative of any
|
||
real-world system, is that its object classes were designed to be
|
||
independent of any specific discipline, or policy domain. For
|
||
example, DiffServ and IPsec represent two different policy domains.
|
||
Each document that extends PCIM to one of these domains will derive
|
||
subclasses from the classes and relationships defined in PCIM, in
|
||
order to represent extensions of a generic model to cover specific
|
||
technical domains.
|
||
|
||
PCIM-derived documents will thus subclass the PCIM classes into
|
||
classes specific to each technical policy domain (QOS, IPsec, etc.),
|
||
which will, in turn, be mapped, to directory-specific schemata
|
||
consistent with the PCLS documented here.
|
||
|
||
Even though discipline-specific security requirements are not
|
||
appropriate for PCLS, specific security requirements MUST be defined
|
||
for each operational real-world application of PCIM. Just as there
|
||
will be a wide range of operational, real-world systems using PCIM,
|
||
there will also be a wide range of security requirements for these
|
||
systems. Some operational, real-world systems that are deployed
|
||
using PCLS may have extensive security requirements that impact
|
||
nearly all object classes utilized by such a system, while other
|
||
systems' security requirements might have very little impact.
|
||
|
||
The derivative documents, discussed above, will create the context
|
||
for applying operational, real-world, system-level security
|
||
requirements against the various models that derive from PCIM,
|
||
consistent with PCLS.
|
||
|
||
In some real-world scenarios, the values associated with certain
|
||
properties, within certain instantiated object classes, may represent
|
||
information associated with scarce, and/or costly (and therefore
|
||
valuable) resources. It may be the case that these values must not
|
||
be disclosed to, or manipulated by, unauthorized parties.
|
||
|
||
Since this document forms the basis for the representation of a
|
||
policy data model in a specific format (an LDAP-accessible
|
||
directory), it is herein appropriate to reference the data
|
||
model-specific tools and mechanisms that are available for achieving
|
||
the authentication and authorization implicit in a requirement that
|
||
restricts read and/or read- write access to these values stored in a
|
||
directory.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 52]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
General LDAP security considerations apply, as documented in RFC 3377
|
||
[2]. LDAP-specific authentication and authorization tools and
|
||
mechanisms are found in the following standards track documents,
|
||
which are appropriate for application to the management of security
|
||
applied to policy data models stored in an LDAP-accessible directory:
|
||
|
||
- RFC 2829 (Authentication Methods for LDAP)
|
||
- RFC 2830 (Lightweight Directory Access Protocol (v3): Extension
|
||
for Transport Layer Security)
|
||
|
||
Any identified security requirements that are not dealt with in the
|
||
appropriate discipline-specific information model documents, or in
|
||
this document, MUST be dealt with in the derivative data model
|
||
documents which are specific to each discipline.
|
||
|
||
8. IANA Considerations
|
||
|
||
Refer to RFC 3383, "Internet Assigned Numbers Authority (IANA)
|
||
Considerations for the Lightweight Directory Access Protocol (LDAP)"
|
||
[16].
|
||
|
||
8.1. Object Identifiers
|
||
|
||
The IANA has registered an LDAP Object Identifier for use in this
|
||
technical specification according to the following template:
|
||
|
||
Subject: Request for LDAP OID Registration
|
||
Person & email address to contact for further information:
|
||
Bob Moore (remoore@us.ibm.com)
|
||
Specification: RFC 3703
|
||
Author/Change Controller: IESG
|
||
Comments:
|
||
The assigned OID will be used as a base for identifying
|
||
a number of schema elements defined in this document.
|
||
|
||
IANA has assigned an OID of 1.3.6.1.1.6 with the name of pcimSchema
|
||
to this registration as recorded in the following registry:
|
||
|
||
http://www.iana.org/assignments/smi-numbers
|
||
|
||
8.2. Object Identifier Descriptors
|
||
|
||
The IANA has registered the LDAP Descriptors used in this technical
|
||
specification as detailed in the following template:
|
||
|
||
Subject: Request for LDAP Descriptor Registration Update
|
||
Descriptor (short name): see comment
|
||
Object Identifier: see comment
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 53]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
Person & email address to contact for further information:
|
||
Bob Moore (remoore@us.ibm.com)
|
||
Usage: see comment
|
||
Specification: RFC 3703
|
||
Author/Change Controller: IESG
|
||
Comments:
|
||
|
||
The following descriptors have been added:
|
||
|
||
NAME Type OID
|
||
-------------- ---- ------------
|
||
pcimPolicy O 1.3.6.1.1.6.1.1
|
||
pcimGroup O 1.3.6.1.1.6.1.2
|
||
pcimGroupAuxClass O 1.3.6.1.1.6.1.3
|
||
pcimGroupInstance O 1.3.6.1.1.6.1.4
|
||
pcimRule O 1.3.6.1.1.6.1.5
|
||
pcimRuleAuxClass O 1.3.6.1.1.6.1.6
|
||
pcimRuleInstance O 1.3.6.1.1.6.1.7
|
||
pcimRuleConditionAssociation O 1.3.6.1.1.6.1.8
|
||
pcimRuleValidityAssociation O 1.3.6.1.1.6.1.9
|
||
pcimRuleActionAssociation O 1.3.6.1.1.6.1.10
|
||
pcimConditionAuxClass O 1.3.6.1.1.6.1.11
|
||
pcimTPCAuxClass O 1.3.6.1.1.6.1.12
|
||
pcimConditionVendorAuxClass O 1.3.6.1.1.6.1.13
|
||
pcimActionAuxClass O 1.3.6.1.1.6.1.14
|
||
pcimActionVendorAuxClass O 1.3.6.1.1.6.1.15
|
||
pcimPolicyInstance O 1.3.6.1.1.6.1.16
|
||
pcimElementAuxClass O 1.3.6.1.1.6.1.17
|
||
pcimRepository O 1.3.6.1.1.6.1.18
|
||
pcimRepositoryAuxClass O 1.3.6.1.1.6.1.19
|
||
pcimRepositoryInstance O 1.3.6.1.1.6.1.20
|
||
pcimSubtreesPtrAuxClass O 1.3.6.1.1.6.1.21
|
||
pcimGroupContainmentAuxClass O 1.3.6.1.1.6.1.22
|
||
pcimRuleContainmentAuxClass O 1.3.6.1.1.6.1.23
|
||
pcimKeywords A 1.3.6.1.1.6.2.3
|
||
pcimGroupName A 1.3.6.1.1.6.2.4
|
||
pcimRuleName A 1.3.6.1.1.6.2.5
|
||
pcimRuleEnabled A 1.3.6.1.1.6.2.6
|
||
pcimRuleConditionListType A 1.3.6.1.1.6.2.7
|
||
pcimRuleConditionList A 1.3.6.1.1.6.2.8
|
||
pcimRuleActionList A 1.3.6.1.1.6.2.9
|
||
pcimRuleValidityPeriodList A 1.3.6.1.1.6.2.10
|
||
pcimRuleUsage A 1.3.6.1.1.6.2.11
|
||
pcimRulePriority A 1.3.6.1.1.6.2.12
|
||
pcimRuleMandatory A 1.3.6.1.1.6.2.13
|
||
pcimRuleSequencedActions A 1.3.6.1.1.6.2.14
|
||
pcimRoles A 1.3.6.1.1.6.2.15
|
||
pcimConditionGroupNumber A 1.3.6.1.1.6.2.16
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 54]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
NAME Type OID
|
||
-------------- ---- ------------
|
||
pcimConditionNegated A 1.3.6.1.1.6.2.17
|
||
pcimConditionName A 1.3.6.1.1.6.2.18
|
||
pcimConditionDN A 1.3.6.1.1.6.2.19
|
||
pcimValidityConditionName A 1.3.6.1.1.6.2.20
|
||
pcimTimePeriodConditionDN A 1.3.6.1.1.6.2.21
|
||
pcimActionName A 1.3.6.1.1.6.2.22
|
||
pcimActionOrder A 1.3.6.1.1.6.2.23
|
||
pcimActionDN A 1.3.6.1.1.6.2.24
|
||
pcimTPCTime A 1.3.6.1.1.6.2.25
|
||
pcimTPCMonthOfYearMask A 1.3.6.1.1.6.2.26
|
||
pcimTPCDayOfMonthMask A 1.3.6.1.1.6.2.27
|
||
pcimTPCDayOfWeekMask A 1.3.6.1.1.6.2.28
|
||
pcimTPCTimeOfDayMask A 1.3.6.1.1.6.2.29
|
||
pcimTPCLocalOrUtcTime A 1.3.6.1.1.6.2.30
|
||
pcimVendorConstraintData A 1.3.6.1.1.6.2.31
|
||
pcimVendorConstraintEncoding A 1.3.6.1.1.6.2.32
|
||
pcimVendorActionData A 1.3.6.1.1.6.2.33
|
||
pcimVendorActionEncoding A 1.3.6.1.1.6.2.34
|
||
pcimPolicyInstanceName A 1.3.6.1.1.6.2.35
|
||
pcimRepositoryName A 1.3.6.1.1.6.2.36
|
||
pcimSubtreesAuxContainedSet A 1.3.6.1.1.6.2.37
|
||
pcimGroupsAuxContainedSet A 1.3.6.1.1.6.2.38
|
||
pcimRulesAuxContainedSet A 1.3.6.1.1.6.2.39
|
||
|
||
where Type A is Attribute, Type O is ObjectClass
|
||
|
||
These assignments are recorded in the following registry:
|
||
|
||
http://www.iana.org/assignments/ldap-parameters
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 55]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
9. Acknowledgments
|
||
|
||
We would like to thank Kurt Zeilenga, Roland Hedburg, and Steven Legg
|
||
for doing a review of this document and making many helpful
|
||
suggestions and corrections.
|
||
|
||
Several of the policy classes in this model first appeared in early
|
||
IETF drafts on IPsec policy and QoS policy. The authors of these
|
||
drafts were Partha Bhattacharya, Rob Adams, William Dixon, Roy
|
||
Pereira, Raju Rajan, Jean-Christophe Martin, Sanjay Kamat, Michael
|
||
See, Rajiv Chaudhury, Dinesh Verma, George Powers, and Raj Yavatkar.
|
||
|
||
This document is closely aligned with the work being done in the
|
||
Distributed Management Task Force (DMTF) Policy and Networks working
|
||
groups. We would especially like to thank Lee Rafalow, Glenn Waters,
|
||
David Black, Michael Richardson, Mark Stevens, David Jones, Hugh
|
||
Mahon, Yoram Snir, and Yoram Ramberg for their helpful comments.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 56]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
10. Appendix: Constructing the Value of orderedCIMKeys
|
||
|
||
This appendix is non-normative, and is included in this document as a
|
||
guide to implementers that wish to exchange information between CIM
|
||
schemata and LDAP schemata.
|
||
|
||
Within a CIM name space, the naming is basically flat; all instances
|
||
are identified by the values of their key properties, and each
|
||
combination of key values must be unique. A limited form of
|
||
hierarchical naming is available in CIM, however, by using weak
|
||
associations: since a weak association involves propagation of key
|
||
properties and their values from the superior object to the
|
||
subordinate one, the subordinate object can be thought of as being
|
||
named "under" the superior object. Once they have been propagated,
|
||
however, propagated key properties and their values function in
|
||
exactly the same way that native key properties and their values do
|
||
in identifying a CIM instance.
|
||
|
||
The CIM mapping document [6] introduces a special attribute,
|
||
orderedCIMKeys, to help map from the CIM_ManagedElement class to the
|
||
LDAP class dlm1ManagedElement. This attribute SHOULD only be used in
|
||
an environment where it is necessary to map between an
|
||
LDAP-accessible directory and a CIM repository. For an LDAP
|
||
environment, other LDAP naming attributes are defined (i.e., cn and a
|
||
class-specific naming attribute) that SHOULD be used instead.
|
||
|
||
The role of orderedCIMKeys is to represent the information necessary
|
||
to correlate an entry in an LDAP-accessible directory with an
|
||
instance in a CIM name space. Depending on how naming of CIM-related
|
||
entries is handled in an LDAP directory, the value of orderedCIMKeys
|
||
represents one of two things:
|
||
|
||
- If the DIT hierarchy does not mirror the "weakness hierarchy" of
|
||
the CIM name space, then orderedCIMKeys represents all the
|
||
keys of the CIM instance, both native and propagated.
|
||
- If the DIT hierarchy does mirror the "weakness hierarchy" of the
|
||
CIM name space, then orderedCIMKeys may represent either all the
|
||
keys of the instance, or only the native keys.
|
||
|
||
Regardless of which of these alternatives is taken, the syntax of
|
||
orderedCIMKeys is the same - a DirectoryString of the form
|
||
|
||
<className>.<key>=<value>[,<key>=<value>]*
|
||
|
||
where the <key>=<value> elements are ordered by the names of the key
|
||
properties, according to the collating sequence for US ASCII. The
|
||
only spaces allowed in the DirectoryString are those that fall within
|
||
a <value> element. As with alphabetizing the key properties, the
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 57]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
goal of suppressing the spaces is once again to make the results of
|
||
string operations predictable.
|
||
|
||
The values of the <value> elements are derived from the various CIM
|
||
syntaxes according to a grammar specified in [5].
|
||
|
||
11. References
|
||
|
||
11.1. Normative References
|
||
|
||
[1] Moore, B., Ellesson,E., Strassner, J. and A. Westerinen "Policy
|
||
Core Information Model -- Version 1 Specification", RFC 3060,
|
||
February 2001.
|
||
|
||
[2] Hodges, J. and R. Morgan, "Lightweight Directory Access
|
||
Protocol (v3): Technical Specification", RFC 3377, September
|
||
2002.
|
||
|
||
[3] Wahl, M., Coulbeck, A., Howes,T. and S. Kille, "Lightweight
|
||
Directory Access Protocol (v3): Attribute Syntax Definitions",
|
||
RFC 2252, December 1997.
|
||
|
||
[4] The Directory: Models. ITU-T Recommendation X.501, 2001.
|
||
|
||
[5] Distributed Management Task Force, Inc., "Common Information
|
||
Model (CIM) Specification", Version 2.2, June 14, 1999. This
|
||
document is available on the following DMTF web page:
|
||
http://www.dmtf.org/standards/documents/CIM/DSP0004.pdf
|
||
|
||
[6] Distributed Management Task Force, Inc., "DMTF LDAP Schema for
|
||
the CIM v2.5 Core Information Model", April 15, 2002. This
|
||
document is available on the following DMTF web page:
|
||
http://www.dmtf.org/standards/documents/DEN/DSP0123.pdf
|
||
|
||
[7] Wahl, M., "A Summary of the X.500(96) User Schema for use with
|
||
LDAPv3", RFC 2256, December 1997.
|
||
|
||
[8] The Directory: Selected Attribute Types. ITU-T Recommendation
|
||
X.520, 2001.
|
||
|
||
[9] Zeilenga, K., Ed., "Lightweight Directory Access Protocol
|
||
(LDAP): Additional Matching Rules", RFC 3698, February 2004.
|
||
|
||
[10] Bradner, S., "Key words for use in RFCs to Indicate Requirement
|
||
Levels", BCP 14, RFC 2119, March 1997.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 58]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
11.2. Informative References
|
||
|
||
[11] Hovey, R. and S. Bradner, "The Organizations Involved in the
|
||
IETF Standards Process", BCP 11, RFC 2028, October 1996.
|
||
|
||
[12] Strassner, J., policy architecture BOF presentation, 42nd IETF
|
||
Meeting, Chicago, Illinois, October 1998. Minutes of this BOF
|
||
are available at the following location:
|
||
http://www.ietf.org/proceedings/98aug/index.html.
|
||
|
||
[13] Yavatkar, R., Guerin, R. and D. Pendarakis, "A Framework for
|
||
Policy-based Admission Control", RFC 2753, January 2000.
|
||
|
||
[14] Wahl, M., Alvestrand, H., Hodges, J. and R. Morgan,
|
||
"Authentication Methods for LDAP", RFC 2829, May 2000
|
||
|
||
[15] Hodges, J., Morgan, R. and M. Wahl, "Lightweight Directory
|
||
Access Protocol (v3): Extension for Transport Layer Security",
|
||
RFC 2830, May 2000.
|
||
|
||
[16] Zeilenga, K., "Internet Assigned Numbers Authority (IANA)
|
||
Considerations for the Lightweight Directory Access Protocol
|
||
(LDAP)", BCP 64, RFC 3383, September 2002.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 59]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
12. Authors' Addresses
|
||
|
||
John Strassner
|
||
Intelliden Corporation
|
||
90 South Cascade Avenue
|
||
Colorado Springs, CO 80903
|
||
|
||
Phone: +1.719.785.0648
|
||
Fax: +1.719.785.0644
|
||
EMail: john.strassner@intelliden.com
|
||
|
||
|
||
Bob Moore
|
||
IBM Corporation
|
||
P. O. Box 12195, BRQA/B501/G206
|
||
3039 Cornwallis Rd.
|
||
Research Triangle Park, NC 27709-2195
|
||
|
||
Phone: +1 919-254-4436
|
||
Fax: +1 919-254-6243
|
||
EMail: remoore@us.ibm.com
|
||
|
||
|
||
Ryan Moats
|
||
Lemur Networks, Inc.
|
||
15621 Drexel Circle
|
||
Omaha, NE 68135
|
||
|
||
Phone: +1-402-894-9456
|
||
EMail: rmoats@lemurnetworks.net
|
||
|
||
|
||
Ed Ellesson
|
||
3026 Carriage Trail
|
||
Hillsborough, NC 27278
|
||
|
||
Phone: +1 919-644-3977
|
||
EMail: ellesson@mindspring.com
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 60]
|
||
|
||
RFC 3703 Policy Core LDAP Schema February 2004
|
||
|
||
|
||
13. Full Copyright Statement
|
||
|
||
Copyright (C) The Internet Society (2004). This document is subject
|
||
to the rights, licenses and restrictions contained in BCP 78 and
|
||
except as set forth therein, the authors retain all their rights.
|
||
|
||
This document and the information contained herein are provided on an
|
||
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE
|
||
REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE
|
||
INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR
|
||
IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
|
||
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
|
||
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||
|
||
Intellectual Property
|
||
|
||
The IETF takes no position regarding the validity or scope of any
|
||
Intellectual Property Rights or other rights that might be claimed
|
||
to pertain to the implementation or use of the technology
|
||
described in this document or the extent to which any license
|
||
under such rights might or might not be available; nor does it
|
||
represent that it has made any independent effort to identify any
|
||
such rights. Information on the procedures with respect to
|
||
rights in RFC documents can be found in BCP 78 and BCP 79.
|
||
|
||
Copies of IPR disclosures made to the IETF Secretariat and any
|
||
assurances of licenses to be made available, or the result of an
|
||
attempt made to obtain a general license or permission for the use
|
||
of such proprietary rights by implementers or users of this
|
||
specification can be obtained from the IETF on-line IPR repository
|
||
at http://www.ietf.org/ipr.
|
||
|
||
The IETF invites any interested party to bring to its attention
|
||
any copyrights, patents or patent applications, or other
|
||
proprietary rights that may cover technology that may be required
|
||
to implement this standard. Please address the information to the
|
||
IETF at ietf-ipr@ietf.org.
|
||
|
||
Acknowledgement
|
||
|
||
Funding for the RFC Editor function is currently provided by the
|
||
Internet Society.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Strassner, et al. Standards Track [Page 61]
|
||
|