Patrick Welche <prlw1@cam.ac.uk>
[netbsd-mini2440.git] / external / bsd / openldap / dist / doc / drafts / draft-haripriya-dynamicgroup-xx.txt
bloba68af29a3519bd700781280f94c2878f14815361
4 Network Working Group                                       S. Haripriya
5 Internet-Draft                                         Jaimon. Jose, Ed.
6 Updates: 02 (if approved)                               Jim. Sermersheim
7 Intended status: Standards Track                            Novell, Inc.
8 Expires: July 9, 2007                                    January 5, 2007
11                     LDAP: Dynamic Groups for LDAPv3
12                     draft-haripriya-dynamicgroup-02
14 Status of this Memo
16    By submitting this Internet-Draft, each author represents that any
17    applicable patent or other IPR claims of which he or she is aware
18    have been or will be disclosed, and any of which he or she becomes
19    aware will be disclosed, in accordance with Section 6 of BCP 79.
21    Internet-Drafts are working documents of the Internet Engineering
22    Task Force (IETF), its areas, and its working groups.  Note that
23    other groups may also distribute working documents as Internet-
24    Drafts.
26    Internet-Drafts are draft documents valid for a maximum of six months
27    and may be updated, replaced, or obsoleted by other documents at any
28    time.  It is inappropriate to use Internet-Drafts as reference
29    material or to cite them other than as "work in progress."
31    The list of current Internet-Drafts can be accessed at
32    http://www.ietf.org/ietf/1id-abstracts.txt.
34    The list of Internet-Draft Shadow Directories can be accessed at
35    http://www.ietf.org/shadow.html.
37    This Internet-Draft will expire on July 9, 2007.
39 Copyright Notice
41    Copyright (C) The Internet Society (2007).
55 Haripriya, et al.         Expires July 9, 2007                  [Page 1]
57 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
60 Abstract
62    This document describes the requirements, semantics, schema elements,
63    and operations needed for a dynamic group feature in LDAP.  A dynamic
64    group is defined here as a group object with a membership list of
65    distinguished names that is dynamically generated using LDAP search
66    criteria.  The dynamic membership list may then be interrogated by
67    LDAP search and compare operations, and may also be used to find the
68    groups that an object is a member of.  This feature eliminates a huge
69    amount of the administrative effort required today for maintaining
70    group memberships and role-based operations in large enterprises.
73 Table of Contents
75    1.  Conventions used in this document  . . . . . . . . . . . . . .  4
76    2.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  5
77    3.  Requirements of a dynamic group feature  . . . . . . . . . . .  6
78    4.  Schema and Semantic Definitions for Dynamic Groups . . . . . .  7
79      4.1.  Object Classes . . . . . . . . . . . . . . . . . . . . . .  7
80        4.1.1.  dynamicGroup . . . . . . . . . . . . . . . . . . . . .  7
81        4.1.2.  dynamicGroupOfUniqueNames  . . . . . . . . . . . . . .  7
82        4.1.3.  dynamicGroupAux  . . . . . . . . . . . . . . . . . . .  7
83        4.1.4.  dynamicGroupOfUniqueNamesAux . . . . . . . . . . . . .  7
84      4.2.  Attributes . . . . . . . . . . . . . . . . . . . . . . . .  8
85        4.2.1.  memberQueryURL . . . . . . . . . . . . . . . . . . . .  8
86        4.2.2.  excludedMember . . . . . . . . . . . . . . . . . . . . 11
87      4.3.  member . . . . . . . . . . . . . . . . . . . . . . . . . . 11
88      4.4.  uniqueMember . . . . . . . . . . . . . . . . . . . . . . . 11
89      4.5.  dgIdentity . . . . . . . . . . . . . . . . . . . . . . . . 11
90        4.5.1.  dgIdentity - Security implications . . . . . . . . . . 12
91    5.  Advertisement of support for dynamic groups  . . . . . . . . . 13
92    6.  Dynamic Group Operations . . . . . . . . . . . . . . . . . . . 14
93      6.1.  Existing Operations  . . . . . . . . . . . . . . . . . . . 14
94        6.1.1.  Access to resources in the directory . . . . . . . . . 14
95        6.1.2.  Reading a dynamic group object . . . . . . . . . . . . 14
96        6.1.3.  'Is Member Of' functionality . . . . . . . . . . . . . 15
97      6.2.  New Extensions . . . . . . . . . . . . . . . . . . . . . . 16
98        6.2.1.  Managing the static members of a dynamic group . . . . 16
99    7.  Performance Considerations . . . . . . . . . . . . . . . . . . 17
100      7.1.  Caching of Dynamic Members . . . . . . . . . . . . . . . . 17
101    8.  Security Considerations  . . . . . . . . . . . . . . . . . . . 18
102    9.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 19
103    10. Conclusions  . . . . . . . . . . . . . . . . . . . . . . . . . 20
104    11. Normative References . . . . . . . . . . . . . . . . . . . . . 21
105    Appendix A.  Example Values for memberQueryURL . . . . . . . . . . 22
106    Appendix B.  Acknowledgments . . . . . . . . . . . . . . . . . . . 23
107    Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 24
111 Haripriya, et al.         Expires July 9, 2007                  [Page 2]
113 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
116    Intellectual Property and Copyright Statements . . . . . . . . . . 25
167 Haripriya, et al.         Expires July 9, 2007                  [Page 3]
169 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
172 1.  Conventions used in this document
174    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
175    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
176    document are to be interpreted as described in [1].
223 Haripriya, et al.         Expires July 9, 2007                  [Page 4]
225 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
228 2.  Introduction
230    The LDAP schema described in [4] defines two object classes:
231    'groupOfNames', and 'groupOfUniqueNames', that hold a static list of
232    distinguished names in their 'member' or 'uniqueMember' attributes
233    respectively, and are typically used to describe a group of objects
234    for various functions.  These grouping functions range from simple
235    group membership applications such as email distribution lists to
236    describing common authorization for a set of users The administration
237    and updating of these membership lists must be done by specifically
238    modifying the DN values in the member or uniqueMember attributes.
239    Thus, each time a change in membership happens, a process must exist
240    which adds or removes the particular entry's DN from the member
241    attribute.  For example, consider an organization, where the access
242    to its facilities is controlled by membership in a directory group.
243    Assume that all employees in a department have been added to the
244    group that provides access to the required department facility.  If
245    an employee moves from one department to another, the administrator
246    must remove the employee from one group and add him to another.
247    Similarly consider an organization that wants to provide access to
248    its facility, to both interns and employees on weekdays, but only to
249    employees on weekends.  It would be effort-consuming to achieve this
250    with static groups.
252    "Dynamic groups" are like normal groups, but they let one specify
253    criteria to be used for evaluating membership to a group; the
254    membership of the group is determined dynamically by the directory
255    servers involved.  This lets the group administrator define the
256    membership in terms of attributes, and let the DSAs worry about who
257    are the actual members.  This solution is more scalable and reduces
258    administrative costs.  This can also supplement static groups in LDAP
259    to provide flexibility to the user.
279 Haripriya, et al.         Expires July 9, 2007                  [Page 5]
281 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
284 3.  Requirements of a dynamic group feature
286    The following requirements SHOULD be met by a proposal for the
287    dynamic groups feature:
289    1.  Creation and administration of dynamic groups should be done
290        using normal LDAP operations.
292    2.  Applications must be able to use dynamic groups in the same way
293        that they are able to use static groups for listing members and
294        for membership evaluation.
296    3.  Interrogation of a dynamic group's membership should be done
297        using normal LDAP operations, and should be consistent.  This
298        means that all authorization identities with the same permission
299        to the membership attribute of a dynamic group (such as 'read')
300        should be presented with the same membership list.
335 Haripriya, et al.         Expires July 9, 2007                  [Page 6]
337 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
340 4.  Schema and Semantic Definitions for Dynamic Groups
342    The dynamic group classes are defined by the following schema
344 4.1.  Object Classes
346    The following object classes MUST be supported, and their semantics
347    understood by the server, for it to support the dynamic groups
348    feature.
350 4.1.1.  dynamicGroup
352    ( <OID.TBD> NAME 'dynamicGroup' SUP groupOfNames STRUCTURAL MAY
353    (memberQueryURL $ excludedMember $ dgIdentity ))
355    This structural object class is used to create a dynamic group
356    object.  It is derived from groupOfNames, which is defined in [4].
358 4.1.2.  dynamicGroupOfUniqueNames
360    ( <OID.TBD> NAME 'dynamicGroupOfUniqueNames' SUP groupOfUniqueNames
361    STRUCTURAL MAY (memberQueryURL $ excludedMember $ dgIdentity ))
363    This structural object class is used to create a dynamic group object
364    whose membership list is held in a uniqueMember attribute.  It is
365    derived from groupOfUniqueNames, which is defined in [4].
367 4.1.3.  dynamicGroupAux
369    ( <OID.TBD> NAME 'dynamicGroupAux' SUP groupOfNames AUXILIARY MAY
370    (memberQueryURL $ excludedMember $ dgIdentity ))
372    This auxiliary object class is used to convert an existing object to
373    a dynamic group or to create an object of another object class but
374    with dynamic group capabilities.  This is derived from groupOfNames
375    which is defined in [4].
377 4.1.4.  dynamicGroupOfUniqueNamesAux
379   ( <OID.TBD> NAME 'dynamicGroupOfUniqueNamesAux' SUP groupOfUniqueNames
380   AUXILIARY MAY (memberQueryURL $ excludedMember $ dgIdentity ))
382    This auxiliary object class is used to convert an existing object to
383    a dynamic group of unique names or to create an object of another
384    object class but with dynamic group capabilities.  This is derived
385    from groupOfUniqueNames which is defined in [4].
391 Haripriya, et al.         Expires July 9, 2007                  [Page 7]
393 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
396 4.2.  Attributes
398    The following attribute names MUST be supported by the server.
400 4.2.1.  memberQueryURL
402    This attribute describes the membership of the list using an LDAPURL
403    [3].
405  (<OID.TBD> NAME 'memberQueryURL' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
407    The value of memberQueryURL is encoded as an LDAPURL [3]
447 Haripriya, et al.         Expires July 9, 2007                  [Page 8]
449 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
452    The BNF from [3] is listed here for reference.
453 ldapurl = scheme COLON SLASH SLASH [host [COLON port]] [SLASH dn
454                      [QUESTION [attributes] [QUESTION [scope] [QUESTION [filter] [QUESTION
455                      extensions]]]]]
456                                 ; <host> and <port> are defined
457                                 ;   in Sections 3.2.2 and 3.2.3
458                                 ;   of [RFC3986].
459                                 ; <filter> is from Section 3 of
460                                 ;   [RFC4515], subject to the
461                                 ;   provisions of the
462                                 ;   "Percent-Encoding" section
463                                 ;   below.
464 scheme      = "ldap"
465 dn          = distinguishedName ; From Section 3 of [RFC4514],
466                                 ; subject to the provisions of
467                                 ; the "Percent-Encoding"
468                                 ; section below.
469 attributes  = attrdesc *(COMMA attrdesc)
470 attrdesc    = selector *(COMMA selector)
471 selector    = attributeSelector ; From Section 4.5.1 of
472                                 ; [RFC4511], subject to the
473                                 ; provisions of the
474                                 ; "Percent-Encoding" section
475                                 ; below.
476 scope       = "base" / "one" / "sub"
477 extensions  = extension *(COMMA extension)
478 extension   = [EXCLAMATION] extype [EQUALS exvalue]
479 extype      = oid               ; From section 1.4 of [RFC4512].
480 exvalue     = LDAPString        ; From section 4.1.2 of
481                                 ; [RFC4511], subject to the
482                                 ; provisions of the
483                                 ; "Percent-Encoding" section
484                                 ; below.
485 EXCLAMATION = %x21              ; exclamation mark ("!")
486 SLASH       = %x2F              ; forward slash ("/")
487 COLON       = %x3A              ; colon (":")
488 QUESTION    = %x3F              ; question mark ("?")
491    For the purpose of evaluating dynamic members, the directory server
492    uses only the dn, scope, filter and extensions fields.  All remaining
493    fields are ignored if specified.  If other fields are specified, the
494    server SHALL ignore them and MAY omit them when presenting the value
495    to a client.  The dn is used to specify the base dn from which to
496    start the search for dynamic members.  The scope specifies the scope
497    with respect to the dn in which to search for dynamic members.  The
498    filter specifies the criteria with which to select objects for
499    dynamic membership.
503 Haripriya, et al.         Expires July 9, 2007                  [Page 9]
505 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
508 4.2.1.1.  The x-chain extension
510    A new extension is defined for use of the memberQueryURL in dynamic
511    groups, named 'x-chain'. x-chain does not take a value.  When x-chain
512    is present, the server must follow any search continuation references
513    to other servers while searching for dynamic members.  When x-chain
514    is absent, the dynamic members computed will be only those that are
515    present on the server from which the search is made.  A directory
516    server supporting the memberQueryURL MAY support the x-chain
517    extension, thus the x-chain extension could be critical or non-
518    critical as specified by the '!' prefix to the extension type.
520 4.2.1.2.  Semantics of multiple values for memberQueryURL
522    The memberQueryURL MAY have multiple values, and in that case, the
523    members of the dynamic group will be the union of the members
524    computed using each individual URL value.  This is useful in
525    specifying a group membership that is made up from subtrees rooted at
526    different base DNs, and possibly using different filters.
528 4.2.1.3.  Condition of membership
530    An object O is a member of a dynamic group G if and only if
532    (( O is a value of the 'member' or 'uniqueMember' attribute of G)
534    OR
536    (( O is selected by the membership criteria specified in the
537    'memberQueryURL' attribute values of G)
539    AND
541    ( O is not listed in the 'excludedMember' attribute of G) ))
543    If a member M of a dynamic group G happens to be a dynamic or a
544    static group, the static or dynamic members of M SHALL NOT be
545    considered as members of G. M is a member of G though.
547    The last condition is imposed because
549    o  Recursively evaluating members of members may degrade the
550       performance of the server drastically.
552    o  Looping may occur particularly in situations where the search
553       chains across multiple-servers.
559 Haripriya, et al.         Expires July 9, 2007                 [Page 10]
561 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
564    o  Dynamic membership assertions (compare operation) cannot be
565       optimized if recursive memberships are allowed.  Without
566       recursion, comparisons can be made light-weight.
568 4.2.2.  excludedMember
570    ( <OID.TBD> NAME 'excludedMember' SUP distinguishedName )
572    This attribute is used to exclude entries from being a dynamic member
573    of a dynamic group.  Thus an entry is a dynamic member of a dynamic
574    group if and only if it is selected by the member criteria specified
575    by the 'memberQueryURL' attribute or explicitly added to the member
576    or uniqueMember attribute, and it is not listed in the
577    'excludedMember' attribute.
579 4.3.  member
581    ( 2.5.4.31 NAME 'member' SUP distinguishedName )
583    Defined in [4], this attribute is overloaded when used in the context
584    of a dynamic group.  It is used to explicitly specify static members
585    of a dynamic group.  If the same entry is listed in both the 'member'
586    and 'excludedMember' attributes, the 'member' overrides the
587    'excludedMember', and the entry is considered to be a member of the
588    group.  This attribute is also used to interrogate both the static
589    and dynamic member values of a dynamic group object.  Subclasses of
590    this attribute are NOT considered in this manner.
592 4.4.  uniqueMember
594    ( 2.5.4.32 NAME 'uniqueMember' SUP distinguishedName )
596    Defined in [4], this attribute is overloaded when used in the context
597    of a dynamic group.  It is used to specify the static members of a
598    dynamic group.  If the same entry is listed in both the
599    'uniqueMember' and 'excludedMember' attributes, the 'uniqueMember'
600    overrides the 'excludedMember', and the entry is considered to be a
601    member of the group.  This attribute is also used to interrogate both
602    the static and dynamic member values of a dynamic group object.
603    Subclasses of this attribute are NOT considered in this manner.
605 4.5.  dgIdentity
607    ( <OID.TBD> NAME 'identity' SUP distinguishedName SINGLE-VALUE )
609    In order to provide consistent results when processing the search
610    criteria, the server must use a single authorization identity.  If
611    the authorization of the bound identity is used, the membership list
615 Haripriya, et al.         Expires July 9, 2007                 [Page 11]
617 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
620    will vary, from identity to identity due to differing access
621    controls.  This may either be done by the server authenticating as
622    the dgIdentity prior to performing a search or compare operation, or
623    may be done by simply assuming the authorization of the dgIdentity
624    when performing those operations.  As server implementations vary, so
625    may the mechanisms to achieve consistent results through the use of
626    the dgIdentity.  In the case that the server authenticates as the
627    dgIdentity, it may be required by the server that this identity have
628    proper authentication credentials, and it may be required that this
629    identity reside in the DIB of the local server.
631    In the absence of an identity value, or in case the identity value
632    cannot be used, the server will process the memberQueryURL as the
633    anonymous identity.  This attribute MAY be supported, and represents
634    the identity the server will use for processing the memberQueryURL.
636 4.5.1.  dgIdentity - Security implications
638    Because this attribute indirectly but effectively grants anyone with
639    read or compare access to the member or uniqueMember attribute
640    sufficient permission to gain a DN result set from the
641    memberQueryURL, server implementations SHOULD NOT allow this
642    attribute to be populated with the DN of any object that is not
643    administered by the identity making the change to this attribute.
644    For purposes of this document, to "administer an object" indicates
645    that the administrative identity has the ability to fully update the
646    access control mechanism in place the object in question.  As of this
647    writing, there is no way to describe further what it means to be
648    fully able to administer the access control mechanism for an object,
649    so this definition is left as implementation-specific.
651    This requirement will allow an entity that has privileges to
652    administer a particular subtree (meaning that entity can add, delete,
653    and update objects in that subtree), to place in the dgIdentity DNs
654    of only those objects it administers.
671 Haripriya, et al.         Expires July 9, 2007                 [Page 12]
673 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
676 5.  Advertisement of support for dynamic groups
678    If the dynamic groups schema is not present on an LDAP server, it
679    MUST be assumed that the dynamic groups feature is not supported.
727 Haripriya, et al.         Expires July 9, 2007                 [Page 13]
729 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
732 6.  Dynamic Group Operations
734 6.1.  Existing Operations
736    The following operations SHOULD expose the dynamic groups
737    functionality.  These operations do not require any change in the
738    LDAP protocol to be exchanged between the client and server.
740 6.1.1.  Access to resources in the directory
742    If access control items are set on a target resource object in the
743    directory, with the subject being a dynamic group object, then all
744    the members of the group object, including the dynamic members, will
745    get the same permissions on the target entry.  This would be the most
746    useful application of dynamic groups as seen by an administrator
747    because it lets the server control access to resources based on
748    dynamic membership to a trustee (subject of ACI) of the resource.
749    The way to specify a dynamic ACL is currently implementation
750    specific, as there is no common ACL definition for LDAP, and hence
751    will be dealt with in a separate document or later (TO BE DONE).
753 6.1.2.  Reading a dynamic group object
755    When the member attributes of a dynamic group object is listed by the
756    client using an LDAP search operation, the member values returned
757    SHOULD contain both the static and dynamic members of the group
758    object.  This functionality will not require a change to the
759    protocol, and the clients need not be aware of dynamic groups to
760    exploit this functionality.  This feature is useful for clients that
761    determine access privileges to a resource by themselves, by reading
762    the members of a group object.  It will also be useful to
763    administrators who want to see the result of the query URL that they
764    set on the dynamic group entry.  Note that this overloads the
765    semantics of the 'member' and 'uniqueMember' attributes.  This could
766    lead to some surprises for the client .
768    for example: Clients that read the member attribute of a dynamic
769    group object and then attempt to remove values (which were dynamic)
770    could get an error specifying such a value was not there.
772    Example:
774    Let cn=dg1,o=myorg be a dynamic group object with the following
775    attributes stored in the directory.
783 Haripriya, et al.         Expires July 9, 2007                 [Page 14]
785 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
788       member: cn=admin,o=myorg
790       excludedMember: cn=guest,ou=finance,o=myorg
792       excludedMember: cn=robin,ou=finance,o=myorg
794       memberQueryURL:
795       ldap:///ou=finance,o=myorg??sub?(objectclass=organizationalPerson)
797    If there are 5 organizationalPerson objects under ou=finance,o=myorg
798    with common names bob, alice, john, robin, and guest, then the output
799    of a base-scope LDAP search at cn=dg1,o=myorg, with the attribute
800    list containing 'member' will be as follows:
802       dn: cn=dg1,o=myorg
804       member: cn=admin,o=myorg
806       member: cn=bob,ou=finance,o=myorg
808       member: cn=alice,ou=finance,o=myorg
810       member: cn=john,ou=finance,o=myorg
812 6.1.3.  'Is Member Of' functionality
814    The LDAP compare operation allows one to discover whether a given DN
815    is in the membership list of a dynamic group.  Again, the server
816    SHOULD produce consistent results among different authorization
817    identities when processing this request, as long as those identities
818    have the same access to the member or uniqueMember attribute.  Using
819    the data from the example in Section 6.1.2, a compare on
820    cn=dg1,o=myorg, for the AVA member=cn=bob,ou=finance,o=myorg would
821    result in a response of compareTrue (assuming the bound identity was
822    authorized to compare the member attribute of cn=dg1,o=myorg).
824    Likewise, a search operation that contains an equalityMatch or
825    presence filter, naming the member or uniqueMember attribute as the
826    attribute (such as (member= cn=bob,ou=finance,o=myorg), or
827    (member=*)), will cause the server to evaluate this filter against
828    the rules given in Section 4.2.1.3 in the event that the search is
829    performed on a dynamic group object.  As of this writing, no other
830    matching rules exist for the distinguished name syntax, thus no
831    requirements beyond equalityMatch are given here.
839 Haripriya, et al.         Expires July 9, 2007                 [Page 15]
841 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
844 6.2.  New Extensions
846    The following new extensions are added for dynamic group support.
848 6.2.1.  Managing the static members of a dynamic group
850    Because a dynamic group overloads the semantics of the member and
851    uniqueMember attributes, a mechanism is needed to retrieve the static
852    values found in these attributes for management purposes.  To serve
853    this need, a new attribute option is defined here called 'x-static'.
854    Attribute options are discussed in Section 2.5 of [2].  This option
855    SHALL only be specified with the 'member' or 'uniqueMember'
856    attribute.  When the LDAP server does not understand the semantics of
857    this option on a given attribute, the option SHOULD be ignored.  This
858    attribute option is only used to affect the transmitted values, and
859    does not impose sub-typing semantics on the attribute.
861    This option MAY be specified by a client during a search request in
862    the list of attributes to be returned, i.e. member;x-static.  In this
863    case, the server SHALL only return those members of the dynamic group
864    that are statically listed as values of the member or uniqueMember
865    attribute.  The evaluation process listed in Section 9 SHALL NOT be
866    used to populate the values to be returned.
868    This option MAY be specified is either an equalityMatch or presence
869    search filter.  In this case, the server evaluates only the values
870    statically listed in the member or uniqueMember attribute, and does
871    not apply the evaluation process listed in Section 9.
873    This option MAY be specified in update operations such as add and
874    modify, but SHOULD be ignored, as its presence is semantically the
875    same as its non-presence.
877    Note to user: Performing a search to read a dynamic group, with a
878    filter item such as (member=*), and specifying member;x-static, may
879    result in a search result entry that has no member attribute.  This
880    may seem counter-intuitive.
895 Haripriya, et al.         Expires July 9, 2007                 [Page 16]
897 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
900 7.  Performance Considerations
902    When the x-chain extension is present on the memberQueryURL, the
903    server MUST follow any search continuation references to other
904    servers while searching for dynamic members.  This may be expensive
905    and slow in a true distributed environment.  The dynamicGroup
906    implementation can consider a distributed caching feature to improve
907    the performance.  An outline of such a distributed caching is given
908    below.
910 7.1.  Caching of Dynamic Members
912    Since the dynamic members of a group are computed every time the
913    group is accessed, the performance could be affected.  An
914    implementation of dynamic groups can get around this problem by
915    caching the computed members of a dynamic group locally and using the
916    cached data subsequently.  One way to do this is to create pseudo-
917    objects for each dynamic group on every server that holds an object
918    that is a dynamic member of the group.  With this, the computation of
919    the dynamic members of a group reduces to the task of reading the
920    pseudo-objects from each server.  These pseudo-objects need to be
921    linked from the original dynamic group to speed up the member
922    computation.  Also, since these are cached objects, appropriate
923    timeouts need to be associated with the cache after which the cache
924    should be invalidated or refreshed
951 Haripriya, et al.         Expires July 9, 2007                 [Page 17]
953 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
956 8.  Security Considerations
958    This document discusses the use of one object as the identity
959    (Section 4.5) with which to read information for another object.  If
960    the creation of the dgIdentity attribute is uncontrolled, an intruder
961    could potentially create a dynamic group with the identity of, say,
962    the administrator, to be able to read the directory as the
963    administrator, and see information which would be otherwise
964    unavailable to him.  Thus, a person adding an object as identity of a
965    dynamic group should have appropriate permissions on the object being
966    added as identity.
968    This document also discusses using dynamic memberships to provide
969    access for resources in a directory.  As the dynamic members are not
970    created by the administrator, there could be surprises for the
971    administrator in the form of certain objects getting access to
972    certain resources through dynamic membership, which the administrator
973    never intended.  So the administrator should be wary of such
974    problems.  The administrator could view the memberships and make sure
975    that anybody who is not supposed to be a member of a group is added
976    to the excludedMember list.
978    Denial of service attacks can be launched on an LDAP server, by
979    repeatedly searching for a dynamic group with a large membership list
980    and listing the member attribute.  A more effective form of denial of
981    service attack could be launched by making searches of the form
982    (member="somedn") at the top of tree and closing the client
983    connection as soon as the search starts.  Some administrative limits
984    be imposed to avoid such situations.
986    The dynamic groups feature could be potentially misused by a user to
987    circumvent any administrative size-limit restriction placed on the
988    server.  In order to search an LDAP server and obtain the names of
989    all the objects on the server irrespective of admin size-limit
990    restriction on the server, the LDAP user could create a dynamic group
991    with a memberQueryURL which matches all objects in the tree, and list
992    just that one object.
1007 Haripriya, et al.         Expires July 9, 2007                 [Page 18]
1009 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
1012 9.  IANA Considerations
1014    There are no IANA considerations.
1063 Haripriya, et al.         Expires July 9, 2007                 [Page 19]
1065 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
1068 10.  Conclusions
1070    This document discusses the syntax, semantics and usage of dynamic
1071    groups in LDAPv3.
1119 Haripriya, et al.         Expires July 9, 2007                 [Page 20]
1121 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
1124 11.  Normative References
1126    [1]  Bradner, S., "Key words for use in RFCs to Indicate Requirement
1127         Levels", BCP 14, RFC 2119, March 1997.
1129    [2]  Zeilenga, K., "Lightweight Directory Access Protocol (LDAP):
1130         Directory Information Models", RFC 4512, June 2006.
1132    [3]  Smith, M. and T. Howes, "Lightweight Directory Access Protocol
1133         (LDAP): Uniform Resource Locator", RFC 4516, June 2006.
1135    [4]  Sciberras, A., "Lightweight Directory Access Protocol (LDAP):
1136         Schema for User Applications", RFC 4519, June 2006.
1175 Haripriya, et al.         Expires July 9, 2007                 [Page 21]
1177 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
1180 Appendix A.  Example Values for memberQueryURL
1182    1.  This memberQueryURL value specifies the membership criteria for a
1183        dynamic group entry as "all inetorgperson entries that also have
1184        their title attribute set to 'manager', and are in the DIT-wide
1185        subtree under ou=hr,o=myorg ".
1187           memberQueryURL: ldap:///
1188           ou=hr,o=myorg??sub?(&
1189           (objectclass=inetorgperson)(title=manager))? x-chain
1191    2.  This value lets the user specify the membership criteria for a
1192        dynamic group entry as "all entries on the local server, that
1193        either have unix accounts or belong to the unix department, and
1194        are under the engineering container ".
1196           memberQueryURL: ldap:///ou=eng,o=myorg??sub?
1197           (|(objectclass=posixaccount)(department=unix))
1199    3.  These values let the user specify the membership criteria as "all
1200        inetorgperson entries on the local server, in either the
1201        ou=eng,o=myorg or ou=support,o=myorg" subtrees.
1203           memberQueryURL:
1204           ldap:///ou=eng,o=myorg??sub?(objectclass=inetorgperson)
1206           memberQueryURL:
1207           ldap:///ou=support,o=myorg??sub?(objectclass=inetorgperson)
1231 Haripriya, et al.         Expires July 9, 2007                 [Page 22]
1233 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
1236 Appendix B.  Acknowledgments
1238    Funding for the RFC Editor function is currently provided by the
1239    Internet Society.
1287 Haripriya, et al.         Expires July 9, 2007                 [Page 23]
1289 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
1292 Authors' Addresses
1294    Haripriya S
1295    Novell, Inc.
1296    49/1 & 49/3 Garvebhavi Palya,
1297    7th Mile, Hosur Road
1298    Bangalore, Karnataka  560068
1299    India
1301    Email: sharipriya@novell.com
1304    Jaimon Jose (editor)
1305    Novell, Inc.
1306    49/1 & 49/3 Garvebhavi Palya,
1307    7th Mile, Hosur Road
1308    Bangalore, Karnataka  560068
1309    India
1311    Email: jjaimon@novell.com
1314    Jim Sermersheim
1315    Novell, Inc.
1316    1800 South Novell Place
1317    Provo, Utah  84606
1318    US
1320    Email: jimse@novell.com
1343 Haripriya, et al.         Expires July 9, 2007                 [Page 24]
1345 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
1348 Full Copyright Statement
1350    Copyright (C) The Internet Society (2007).
1352    This document is subject to the rights, licenses and restrictions
1353    contained in BCP 78, and except as set forth therein, the authors
1354    retain all their rights.
1356    This document and the information contained herein are provided on an
1357    "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
1358    OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
1359    ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
1360    INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
1361    INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
1362    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
1365 Intellectual Property
1367    The IETF takes no position regarding the validity or scope of any
1368    Intellectual Property Rights or other rights that might be claimed to
1369    pertain to the implementation or use of the technology described in
1370    this document or the extent to which any license under such rights
1371    might or might not be available; nor does it represent that it has
1372    made any independent effort to identify any such rights.  Information
1373    on the procedures with respect to rights in RFC documents can be
1374    found in BCP 78 and BCP 79.
1376    Copies of IPR disclosures made to the IETF Secretariat and any
1377    assurances of licenses to be made available, or the result of an
1378    attempt made to obtain a general license or permission for the use of
1379    such proprietary rights by implementers or users of this
1380    specification can be obtained from the IETF on-line IPR repository at
1381    http://www.ietf.org/ipr.
1383    The IETF invites any interested party to bring to its attention any
1384    copyrights, patents or patent applications, or other proprietary
1385    rights that may cover technology that may be required to implement
1386    this standard.  Please address the information to the IETF at
1387    ietf-ipr@ietf.org.
1390 Acknowledgment
1392    Funding for the RFC Editor function is provided by the IETF
1393    Administrative Support Activity (IASA).
1399 Haripriya, et al.         Expires July 9, 2007                 [Page 25]