]> git.sur5r.net Git - openldap/blob - doc/drafts/draft-haripriya-dynamicgroup-xx.txt
Merge remote-tracking branch 'origin/mdb.master'
[openldap] / doc / drafts / draft-haripriya-dynamicgroup-xx.txt
1
2
3
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
9
10
11                     LDAP: Dynamic Groups for LDAPv3
12                     draft-haripriya-dynamicgroup-02
13
14 Status of this Memo
15
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.
20
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.
25
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."
30
31    The list of current Internet-Drafts can be accessed at
32    http://www.ietf.org/ietf/1id-abstracts.txt.
33
34    The list of Internet-Draft Shadow Directories can be accessed at
35    http://www.ietf.org/shadow.html.
36
37    This Internet-Draft will expire on July 9, 2007.
38
39 Copyright Notice
40
41    Copyright (C) The Internet Society (2007).
42
43
44
45
46
47
48
49
50
51
52
53
54
55 Haripriya, et al.         Expires July 9, 2007                  [Page 1]
56 \f
57 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
58
59
60 Abstract
61
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.
71
72
73 Table of Contents
74
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
108
109
110
111 Haripriya, et al.         Expires July 9, 2007                  [Page 2]
112 \f
113 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
114
115
116    Intellectual Property and Copyright Statements . . . . . . . . . . 25
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167 Haripriya, et al.         Expires July 9, 2007                  [Page 3]
168 \f
169 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
170
171
172 1.  Conventions used in this document
173
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].
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223 Haripriya, et al.         Expires July 9, 2007                  [Page 4]
224 \f
225 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
226
227
228 2.  Introduction
229
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.
251
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.
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279 Haripriya, et al.         Expires July 9, 2007                  [Page 5]
280 \f
281 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
282
283
284 3.  Requirements of a dynamic group feature
285
286    The following requirements SHOULD be met by a proposal for the
287    dynamic groups feature:
288
289    1.  Creation and administration of dynamic groups should be done
290        using normal LDAP operations.
291
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.
295
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.
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335 Haripriya, et al.         Expires July 9, 2007                  [Page 6]
336 \f
337 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
338
339
340 4.  Schema and Semantic Definitions for Dynamic Groups
341
342    The dynamic group classes are defined by the following schema
343
344 4.1.  Object Classes
345
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.
349
350 4.1.1.  dynamicGroup
351
352    ( <OID.TBD> NAME 'dynamicGroup' SUP groupOfNames STRUCTURAL MAY
353    (memberQueryURL $ excludedMember $ dgIdentity ))
354
355    This structural object class is used to create a dynamic group
356    object.  It is derived from groupOfNames, which is defined in [4].
357
358 4.1.2.  dynamicGroupOfUniqueNames
359
360    ( <OID.TBD> NAME 'dynamicGroupOfUniqueNames' SUP groupOfUniqueNames
361    STRUCTURAL MAY (memberQueryURL $ excludedMember $ dgIdentity ))
362
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].
366
367 4.1.3.  dynamicGroupAux
368
369    ( <OID.TBD> NAME 'dynamicGroupAux' SUP groupOfNames AUXILIARY MAY
370    (memberQueryURL $ excludedMember $ dgIdentity ))
371
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].
376
377 4.1.4.  dynamicGroupOfUniqueNamesAux
378
379   ( <OID.TBD> NAME 'dynamicGroupOfUniqueNamesAux' SUP groupOfUniqueNames
380   AUXILIARY MAY (memberQueryURL $ excludedMember $ dgIdentity ))
381
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].
386
387
388
389
390
391 Haripriya, et al.         Expires July 9, 2007                  [Page 7]
392 \f
393 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
394
395
396 4.2.  Attributes
397
398    The following attribute names MUST be supported by the server.
399
400 4.2.1.  memberQueryURL
401
402    This attribute describes the membership of the list using an LDAPURL
403    [3].
404
405  (<OID.TBD> NAME 'memberQueryURL' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
406
407    The value of memberQueryURL is encoded as an LDAPURL [3]
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447 Haripriya, et al.         Expires July 9, 2007                  [Page 8]
448 \f
449 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
450
451
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 ("?")
489
490
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.
500
501
502
503 Haripriya, et al.         Expires July 9, 2007                  [Page 9]
504 \f
505 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
506
507
508 4.2.1.1.  The x-chain extension
509
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.
519
520 4.2.1.2.  Semantics of multiple values for memberQueryURL
521
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.
527
528 4.2.1.3.  Condition of membership
529
530    An object O is a member of a dynamic group G if and only if
531
532    (( O is a value of the 'member' or 'uniqueMember' attribute of G)
533
534    OR
535
536    (( O is selected by the membership criteria specified in the
537    'memberQueryURL' attribute values of G)
538
539    AND
540
541    ( O is not listed in the 'excludedMember' attribute of G) ))
542
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.
546
547    The last condition is imposed because
548
549    o  Recursively evaluating members of members may degrade the
550       performance of the server drastically.
551
552    o  Looping may occur particularly in situations where the search
553       chains across multiple-servers.
554
555
556
557
558
559 Haripriya, et al.         Expires July 9, 2007                 [Page 10]
560 \f
561 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
562
563
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.
567
568 4.2.2.  excludedMember
569
570    ( <OID.TBD> NAME 'excludedMember' SUP distinguishedName )
571
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.
578
579 4.3.  member
580
581    ( 2.5.4.31 NAME 'member' SUP distinguishedName )
582
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.
591
592 4.4.  uniqueMember
593
594    ( 2.5.4.32 NAME 'uniqueMember' SUP distinguishedName )
595
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.
604
605 4.5.  dgIdentity
606
607    ( <OID.TBD> NAME 'identity' SUP distinguishedName SINGLE-VALUE )
608
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
612
613
614
615 Haripriya, et al.         Expires July 9, 2007                 [Page 11]
616 \f
617 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
618
619
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.
630
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.
635
636 4.5.1.  dgIdentity - Security implications
637
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.
650
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.
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671 Haripriya, et al.         Expires July 9, 2007                 [Page 12]
672 \f
673 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
674
675
676 5.  Advertisement of support for dynamic groups
677
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.
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727 Haripriya, et al.         Expires July 9, 2007                 [Page 13]
728 \f
729 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
730
731
732 6.  Dynamic Group Operations
733
734 6.1.  Existing Operations
735
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.
739
740 6.1.1.  Access to resources in the directory
741
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).
752
753 6.1.2.  Reading a dynamic group object
754
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 .
767
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.
771
772    Example:
773
774    Let cn=dg1,o=myorg be a dynamic group object with the following
775    attributes stored in the directory.
776
777
778
779
780
781
782
783 Haripriya, et al.         Expires July 9, 2007                 [Page 14]
784 \f
785 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
786
787
788       member: cn=admin,o=myorg
789
790       excludedMember: cn=guest,ou=finance,o=myorg
791
792       excludedMember: cn=robin,ou=finance,o=myorg
793
794       memberQueryURL:
795       ldap:///ou=finance,o=myorg??sub?(objectclass=organizationalPerson)
796
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:
801
802       dn: cn=dg1,o=myorg
803
804       member: cn=admin,o=myorg
805
806       member: cn=bob,ou=finance,o=myorg
807
808       member: cn=alice,ou=finance,o=myorg
809
810       member: cn=john,ou=finance,o=myorg
811
812 6.1.3.  'Is Member Of' functionality
813
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).
823
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.
832
833
834
835
836
837
838
839 Haripriya, et al.         Expires July 9, 2007                 [Page 15]
840 \f
841 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
842
843
844 6.2.  New Extensions
845
846    The following new extensions are added for dynamic group support.
847
848 6.2.1.  Managing the static members of a dynamic group
849
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.
860
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.
867
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.
872
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.
876
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.
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895 Haripriya, et al.         Expires July 9, 2007                 [Page 16]
896 \f
897 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
898
899
900 7.  Performance Considerations
901
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.
909
910 7.1.  Caching of Dynamic Members
911
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
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951 Haripriya, et al.         Expires July 9, 2007                 [Page 17]
952 \f
953 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
954
955
956 8.  Security Considerations
957
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.
967
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.
977
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.
985
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.
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007 Haripriya, et al.         Expires July 9, 2007                 [Page 18]
1008 \f
1009 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
1010
1011
1012 9.  IANA Considerations
1013
1014    There are no IANA considerations.
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063 Haripriya, et al.         Expires July 9, 2007                 [Page 19]
1064 \f
1065 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
1066
1067
1068 10.  Conclusions
1069
1070    This document discusses the syntax, semantics and usage of dynamic
1071    groups in LDAPv3.
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119 Haripriya, et al.         Expires July 9, 2007                 [Page 20]
1120 \f
1121 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
1122
1123
1124 11.  Normative References
1125
1126    [1]  Bradner, S., "Key words for use in RFCs to Indicate Requirement
1127         Levels", BCP 14, RFC 2119, March 1997.
1128
1129    [2]  Zeilenga, K., "Lightweight Directory Access Protocol (LDAP):
1130         Directory Information Models", RFC 4512, June 2006.
1131
1132    [3]  Smith, M. and T. Howes, "Lightweight Directory Access Protocol
1133         (LDAP): Uniform Resource Locator", RFC 4516, June 2006.
1134
1135    [4]  Sciberras, A., "Lightweight Directory Access Protocol (LDAP):
1136         Schema for User Applications", RFC 4519, June 2006.
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175 Haripriya, et al.         Expires July 9, 2007                 [Page 21]
1176 \f
1177 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
1178
1179
1180 Appendix A.  Example Values for memberQueryURL
1181
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 ".
1186
1187           memberQueryURL: ldap:///
1188           ou=hr,o=myorg??sub?(&
1189           (objectclass=inetorgperson)(title=manager))? x-chain
1190
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 ".
1195
1196           memberQueryURL: ldap:///ou=eng,o=myorg??sub?
1197           (|(objectclass=posixaccount)(department=unix))
1198
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.
1202
1203           memberQueryURL:
1204           ldap:///ou=eng,o=myorg??sub?(objectclass=inetorgperson)
1205
1206           memberQueryURL:
1207           ldap:///ou=support,o=myorg??sub?(objectclass=inetorgperson)
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231 Haripriya, et al.         Expires July 9, 2007                 [Page 22]
1232 \f
1233 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
1234
1235
1236 Appendix B.  Acknowledgments
1237
1238    Funding for the RFC Editor function is currently provided by the
1239    Internet Society.
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287 Haripriya, et al.         Expires July 9, 2007                 [Page 23]
1288 \f
1289 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
1290
1291
1292 Authors' Addresses
1293
1294    Haripriya S
1295    Novell, Inc.
1296    49/1 & 49/3 Garvebhavi Palya,
1297    7th Mile, Hosur Road
1298    Bangalore, Karnataka  560068
1299    India
1300
1301    Email: sharipriya@novell.com
1302
1303
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
1310
1311    Email: jjaimon@novell.com
1312
1313
1314    Jim Sermersheim
1315    Novell, Inc.
1316    1800 South Novell Place
1317    Provo, Utah  84606
1318    US
1319
1320    Email: jimse@novell.com
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343 Haripriya, et al.         Expires July 9, 2007                 [Page 24]
1344 \f
1345 Internet-Draft       LDAP: Dynamic Groups for LDAPv3        January 2007
1346
1347
1348 Full Copyright Statement
1349
1350    Copyright (C) The Internet Society (2007).
1351
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.
1355
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.
1363
1364
1365 Intellectual Property
1366
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.
1375
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.
1382
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.
1388
1389
1390 Acknowledgment
1391
1392    Funding for the RFC Editor function is provided by the IETF
1393    Administrative Support Activity (IASA).
1394
1395
1396
1397
1398
1399 Haripriya, et al.         Expires July 9, 2007                 [Page 25]
1400 \f