RFC 2820 INFORMATIONAL LDAP · SECURITY · ACCESS CONTROL

LDAP access control: Access Control Requirements for LDAP

What LDAP access control systems must be able to do

On rfc-editor.org ↗
PUBLISHED
May 2000
AUTHORS
E. Stokes, D. Byrne, B. Blakley, P. Behera
STREAM
IETF
RFC TYPE
Informational
PUBLICATION DATE
May 2000
FOCUS AREA
Access control list (ACL) model for LDAP
REQUIREMENT AREAS
4 (general, semantics, usability, nested groups)
DOI
10.17487/RFC2820
ERRATA
Reported errata

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                      E. Stokes
Request for Comments: 2820                                  D. Byrne
Category: Informational                                          IBM
                                                          B. Blakley
                                                              Dascom
                                                           P. Behera
                                                            Netscape
                                                            May 2000


                  Access Control Requirements for LDAP

Status of this Memo

   This memo provides information for the Internet community.  It does
   not specify an Internet standard of any kind.  Distribution of this
   memo is unlimited.

Copyright Notice

   Copyright (C) The Internet Society (2000).  All Rights Reserved.

Abstract

   This document describes the fundamental requirements of an access
   control list (ACL) model for the Lightweight Directory Application
   Protocol (LDAP) directory service.  It is intended to be a gathering
   place for access control requirements needed to provide authorized
   access to and interoperability between directories.

   The keywords "MUST", "SHOULD", and "MAY" used in this document are to
   be interpreted as described in [bradner97].

1.  Introduction

   The ability to securely access (replicate and distribute) directory
   information throughout the network is necessary for successful
   deployment.  LDAP's acceptance as an access protocol for directory
   information is driving the need to provide an access control model
   definition for LDAP directory content among servers within an
   enterprise and the Internet.  Currently LDAP does not define an
   access control model, but is needed to ensure consistent secure
   access across heterogeneous LDAP implementations.  The requirements
   for access control are critical to the successful deployment and
   acceptance of LDAP in the market place.

   The RFC 2119 terminology is used in this document.

2.  Objectives

   The major objective is to provide a simple, but secure, highly
   efficient access control model for LDAP while also providing the
   appropriate flexibility to meet the needs of both the Internet and
   enterprise environments and policies.

   This generally leads to several general requirements that are
   discussed below.

3.  Requirements

   This section is divided into several areas of requirements: general,
   semantics/policy, usability, and nested groups (an unresolved issue).
   The requirements are not in any priority order.  Examples and
   explanatory text is provided where deemed necessary.  Usability is
   perhaps the one set of requirements that is generally overlooked, but
   must be addressed to provide a secure system. Usability is a security
   issue, not just a nice design goal and requirement. If it is
   impossible to set and manage a policy for a secure situation that a
   human can understand, then what was set up will probably be non-
   secure. We all need to think of usability as a functional security
   requirement.

3.1  General

   G1.  Model SHOULD be general enough to support extensibility to add
   desirable features in the future.

   G2.  When in doubt, safer is better, especially when establishing
   defaults.

   G3.  ACL administration SHOULD be part of the LDAP protocol.  Access
   control information MUST be an LDAP attribute.

   G4.  Object reuse protection SHOULD be provided and MUST NOT inhibit
   implementation of object reuse. The directory SHOULD support policy
   controlling the re-creation of deleted DNs, particularly in cases
   where they are re-created for the purpose of assigning them to a
   subject other than the owner of the deleted DN.

3.2  Semantics / Policy

   S1.  Omitted as redundant; see U8.

   S2.  More specific policies must override less specific ones (e.g.
   individual user entry in ACL SHOULD take precedence over group entry)
   for the evaluation of an ACL.

   S3.  Multiple policies of equal specificity SHOULD be combined in
   some easily-understood way (e.g. union or intersection).  This is
   best understood by example.  Suppose user A belongs to 3 groups and
   those 3 groups are listed on the ACL. Also suppose that the
   permissions for each of those groups are not identical. Each group is
   of equal specificity (e.g. each group is listed on the ACL) and the
   policy for granting user A access (given the example) SHOULD be
   combined in some easily understood way, such as by intersection or
   union.  For example, an intersection policy here may yield a more
   limited access for user A than a union policy.

   S4.  Newly created directory entries SHOULD be subject to a secure
   default policy.

   S5.  Access policy SHOULD NOT be expressed in terms of attributes
   which the directory administrator or his organization cannot
   administer (e.g. groups whose membership is administered by another
   organization).

   S6.  Access policy SHOULD NOT be expressed in terms of attributes
   which are easily forged (e.g. IP addresses).  There may be valid
   reasons for enabling access based on attributes that are easily
   forged and the behavior/implications of doing that should be
   documented.

   S7.  Humans (including administrators) SHOULD NOT be required to
   manage access policy on the basis of attributes which are not
   "human-readable" (e.g. IP addresses).

   S8.  It MUST be possible to deny a subject the right to invoke a
   directory operation.  The system SHOULD NOT require a specific
   implementation of denial (e.g.  explicit denial, implicit denial).

   S9.  The system MUST be able (semantically) to support either
   default-grant or default-deny semantics (not simultaneously).

   S10.  The system MUST be able to support either union semantics or
   intersection semantics for aggregate subjects (not simultaneously).

   S11.  Absence of policy SHOULD be interpretable as grant or deny.
   Deny takes precedence over grant among entries of equal specificity.

   S12.  ACL policy resolution MUST NOT depend on the order of entries
   in the ACL.

   S13.  Rights management MUST have no side effects.  Granting a
   subject one right to an object MUST NOT implicitly grant the same or
   any other subject a different right to the same object.  Granting a
   privilege attribute to one subject MUST NOT implicitly grant the same
   privilege attribute to any other subject.  Granting a privilege
   attribute to one subject MUST NOT implicitly grant a different
   privilege attribute to the same or any other subject.  Definition: An
   ACL's "scope" is defined as the set of directory objects governed by
   the policy it defines; this set of objects is a sub-tree of the
   directory.  Changing the policy asserted by an ACL (by changing one
   or more of its entries) MUST NOT implicitly change the policy
   governed by an ACL in a different scope.

   S14.  It SHOULD be possible to apply a single policy to multiple
   directory entries, even if those entries are in different subtrees.
   Applying a single policy to multiple directory entries SHOULD NOT
   require creation and storage of multiple copies of the policy data.
   The system SHOULD NOT require a specific implementation (e.g. nested
   groups, named ACLs) of support for policy sharing.

3.3  Usability (Manageability)

   U1.  When in doubt, simpler is better, both at the interface and in
   the implementation.

   U2.  Subjects MUST be drawn from the "natural" LDAP namespace; they
   should be DNs.

   U3.  It SHOULD NOT be possible via ACL administration to lock all
   users, including all administrators, out of the directory.

   U4.  Administrators SHOULD NOT be required to evaluate arbitrary
   Boolean predicates in order to create or understand policy.

   U5.  Administrators SHOULD be able to administer access to
   directories and their attributes based on their sensitivity, without
   having to understand the semantics of individual schema elements and
   their attributes (see U9).

   U6.  Management of access to resources in an entire subtree SHOULD
   require only one ACL (at the subtree root).  Note that this makes
   access control based explicitly on attribute types very hard, unless
   you constrain the types of entries in subtrees.  For example, another
   attribute is added to an entry. That attribute may fall outside the
   grouping covered by the ACL and hence require additional
   administration where the desired affect is indeed a different ACL.
   Access control information specified in one administrative area MUST
   NOT have jurisdiction in another area.  You SHOULD NOT be able to
   control access to the aliased entry in the alias.  You SHOULD be able
   to control access to the alias name.

   U7.  Override of subtree policy MUST be supported on a per-
   directory-entry basis.

   U8.  Control of access to individual directory entry attributes (not
   just the whole directory entry) MUST be supported.

   U9.  Administrator MUST be able to coarsen access policy granularity
   by grouping attributes with similar access sensitivities.

   U10.  Control of access on a per-user granularity MUST be supported.

   U11.  Administrator MUST be able to aggregate users (for example, by
   assigning them to groups or roles) to simplify administration.

   U12.  It MUST be possible to review "effective access" of any user,
   group, or role to any entry's attributes. This aids the administrator
   in setting the correct policy.

   U13.  A single administrator SHOULD be able to define policy for the
   entire directory tree.  An administrator MUST be able to delegate
   policy administration for specific subtrees to other users.  This
   allows for the partitioning of the entire directory tree for policy
   administration, but still allows a single policy to be defined for
   the entire tree independent of partitioning.  (Partition in this
   context means scope of administration). An administrator MUST be able
   to create new partitions at any point in the directory tree, and MUST
   be able to merge a superior and subordinate partition.  An
   administrator MUST be able to configure whether delegated access
   control information from superior partitions is to be accepted or
   not.

   U14.  It MUST be possible to authorize users to traverse directory
   structure even if they are not authorized to examine or modify some
   traversed entries; it MUST also be possible to prohibit this.  The
   tree structure MUST be able to be protected from view if so desired
   by the administrator.

   U15.  It MUST be possible to create publicly readable entries, which
   may be read even by unauthenticated clients.

   U16.  The model for combining multiple access control list entries
   referring to a single individual MUST be easy to understand.

   U17.  Administrator MUST be able to determine where inherited policy
   information comes from, that is, where ACLs are located and which
   ACLs were applied. Where inheritance of ACLs is applied, it must be
   able to be shown how/where that new ACL is derived from.

   U18.  It SHOULD be possible for the administrator to configure the
   access control system to permit users to grant additional access
   control rights for entries which they create.

4.  Security Considerations

   Access control is a security consideration.  This documents addresses
   the requirements.

5.  Glossary

   This glossary is intended to aid the novice not versed in depth about
   access control.  It contains a list of terms and their definitions
   that are commonly used in discussing access control [emca].

   Access control - The prevention of use of a resource by unidentified
   and/or unauthorized entities in any other that an authorized manner.

   Access control list - A set of control attributes.  It is a list,
   associated with a security object or a group of security objects.
   The list contains the names of security subjects and the type of
   access that may be granted.

   Access control policy - A set of rules, part of a security policy, by
   which human users, or their representatives, are authenticated and by
   which access by these users to applications and other services and
   security objects is granted or denied.

   Access context - The context, in terms of such variables as location,
   time of day, level of security of the underlying associations, etc.,
   in which an access to a security object is made.

   Authorization - The granting of access to a security object.

   Authorization policy - A set of rules, part of an access control
   policy, by which access by security subjects to security objects is
   granted or denied.  An authorization policy may be defined in terms
   of access control lists, capabilities, or attributes assigned to
   security subjects, security objects, or both.

   Control attributes - Attributes, associated with a security object
   that, when matched against the privilege attributes of a security
   subject, are used to grant or deny access to the security object.  An
   access control list or list of rights or time of day range are
   examples of control attributes.

   Credentials - Data that serve to establish the claimed identity of a
   security subject relative to a given security domain.

   Privilege attributes - Attributes, associated with a security subject
   that, when matched against control attributes of a security object,
   are used to grant or deny access to that subject.  Group and role
   memberships are examples of privilege attributes.

   Security attributes - A general term covering both privilege
   attributes and control attributes.  The use of security attributes is
   defined by a security policy.

   Security object - An entity in a passive role to which a security
   policy applies.

   Security policy - A general term covering both access control
   policies and authorization policies.

   Security subject - An entity in an active role to which a security
   policy applies.

6.  References

   [ldap]      Kille, S., Howes, T. and M. Wahl, "Lightweight Directory
               Access Protocol (v3)", RFC 2251, August 1997.

   [ecma]      ECMA, "Security in Open Systems: A Security Framework"
               ECMA TR/46, July 1988.

   [bradner97] Bradner, S., "Key Words for use in RFCs to Indicate
               Requirement Levels", BCP 14, RFC 2119, March 1997.

7. Authors' Addresses

   Bob Blakley
   Dascom
   5515 Balcones Drive
   Austin, TX 78731
   USA

   Phone: +1 512 458 4037  ext 5012
   Fax:   +1 512 458 2377
   EMail: blakley@dascom.com


   Ellen Stokes
   IBM
   11400 Burnet Rd
   Austin, TX 78758
   USA

   Phone: +1 512 838 3725
   Fax:   +1 512 838 0156
   EMail: stokes@austin.ibm.com


   Debbie Byrne
   IBM
   11400 Burnet Rd
   Austin, TX 78758
   USA

   Phone: +1 512 838 1930
   Fax:   +1 512 838 8597
   EMail: djbyrne@us.ibm.com


   Prasanta Behera
   Netscape
   501 Ellis Street
   Mountain View, CA 94043
   USA

   Phone: +1 650 937 4948
   Fax:   +1 650 528-4164
   EMail: prasanta@netscape.com

8.  Full Copyright Statement

   Copyright (C) The Internet Society (2000).  All Rights Reserved.

   This document and translations of it may be copied and furnished to
   others, and derivative works that comment on or otherwise explain it
   or assist in its implementation may be prepared, copied, published
   and distributed, in whole or in part, without restriction of any
   kind, provided that the above copyright notice and this paragraph are
   included on all such copies and derivative works.  However, this
   document itself may not be modified in any way, such as by removing
   the copyright notice or references to the Internet Society or other
   Internet organizations, except as needed for the purpose of
   developing Internet standards in which case the procedures for
   copyrights defined in the Internet Standards process must be
   followed, or as required to translate it into languages other than
   English.

   The limited permissions granted above are perpetual and will not be
   revoked by the Internet Society or its successors or assigns.

   This document and the information contained herein is provided on an
   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
   TASK FORCE DISCLAIMS 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.

Acknowledgement

   Funding for the RFC Editor function is currently provided by the
   Internet Society.

AI ELI5

On this page
PROBLEMLDAP directory services store information that organizations need to control access to—some users should see certain data while others should not, but LDAP had no standard access control model, making it hard to deploy securely.
MECHANISMThis RFC lists fundamental requirements that any LDAP access control model must meet, covering general goals, policy semantics, usability, and how to handle complex scenarios like nested groups.
FOUNDATION FOR SECURE LDAPThe requirements provide a foundation for access control implementations to ensure consistent, secure, and manageable access to LDAP directories across different implementations.

§1Why LDAP Needs Access Control

LDAP is a protocol for accessing directory information—like phone books, employee records, and security groups—across networks. As LDAP became widely deployed across enterprises and the Internet, the need to control who can see and modify what information became critical. Organizations must be able to allow some users to read certain entries while denying access to others, and to grant some users the right to modify data.

At the time this RFC was written, LDAP did not define an access control model. This meant each implementation did it differently, making it hard to deploy LDAP securely and to move directories between different systems. The RFC calls this a critical requirement for the successful deployment of LDAP in the marketplace.

Directories store secrets. You need a way to say 'this person can see their address but not anyone else's.' Nobody had written down how LDAP should do that.

§2General Goals and Requirements

The requirements start with a major objective: provide a simple but secure, highly efficient access control model for LDAP that works for both Internet and enterprise environments.

General requirements include extensibility (the model should support future features), safety (when uncertain, deny rather than allow), and integration with LDAP (administration must be part of the protocol, and access control information must be an LDAP attribute). The model must support policy overrides at the entry level, control access to individual attributes (not just whole entries), and provide per-user granularity. Administrators must be able to aggregate users into groups or roles to simplify administration.

The system must be simple to understand, hard to break, and flexible enough to grow. When you are not sure, say no.

§3Policy Semantics and Usability

The RFC specifies requirements for how policies work. More specific policies must override less specific ones (for example, a rule about a single user takes precedence over a rule about a group). Multiple policies of equal specificity should be combined in an easily understood way, such as union or intersection. Newly created entries should be subject to a secure default policy.

Usability is emphasized as a security requirement, not just a nice goal. If the access control system is impossible for administrators to use and understand, the result will be insecure. The system must allow administrators to understand what policy applies to any user and entry, to see where inheritance comes from, and to delegate policy administration for subtrees to other users. It must be possible to deny a subject the right to perform directory operations, to support both default-grant and default-deny semantics (though not simultaneously), and to combine multiple access control entries for the same person in a way that is easy to understand.

Specific rules win over general ones. The system must make sense to humans, or they will set it up wrong.

§4Policy Attributes and Scope

Access policy should not be expressed in terms of attributes that administrators cannot manage (such as groups whose membership is controlled by another organization). Policies should not depend on easily forged attributes like IP addresses, unless the documentation clearly warns of the implications. Humans should not be required to manage policies based on non-human-readable attributes.

Critically, access policy resolution must not depend on the order of entries in the access control list—the system must be deterministic. Rights management must have no side effects: granting one person access to something must not implicitly grant the same or different access to anyone else. A single policy should be applicable to multiple directory entries even in different subtrees without requiring storage of multiple copies. The scope of an ACL is the subtree it governs, and changing one ACL must not change the policy in a different scope.

The order of rules should not matter. Giving Alice permission should not secretly give Bob permission too.

§5Practical Administration Features

Administrators must be able to control access to entire subtrees with a single ACL at the subtree root. It must be possible to review the effective access of any user, group, or role to any entry and its attributes, which helps administrators verify they set the correct policy. Traversal rights must be separately controllable from read rights, so users can navigate through directory structure without seeing the entries they pass through. It must be possible to create publicly readable entries that even unauthenticated clients can read.

The system must prevent situations where all users, including administrators, get locked out of the directory through misconfiguration. Administrators must be able to configure whether delegated access control information from superior partitions is accepted or rejected, allowing flexible partitioning of administration. It should be possible for administrators to delegate to users the right to grant additional access control rights on entries they create.

You should not lock yourself out. You should be able to see who can access what, and to let users help manage what they create.

§6References