mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-21 03:10:25 +08:00
508 lines
18 KiB
Plaintext
508 lines
18 KiB
Plaintext
|
||
|
||
|
||
|
||
|
||
|
||
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.
|
||
|
||
|
||
|
||
|
||
Stokes, et al. Informational [Page 1]
|
||
|
||
RFC 2820 Access Control Requirements for LDAP May 2000
|
||
|
||
|
||
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.
|
||
|
||
|
||
|
||
Stokes, et al. Informational [Page 2]
|
||
|
||
RFC 2820 Access Control Requirements for LDAP May 2000
|
||
|
||
|
||
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
|
||
|
||
|
||
|
||
Stokes, et al. Informational [Page 3]
|
||
|
||
RFC 2820 Access Control Requirements for LDAP May 2000
|
||
|
||
|
||
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.
|
||
|
||
|
||
|
||
|
||
Stokes, et al. Informational [Page 4]
|
||
|
||
RFC 2820 Access Control Requirements for LDAP May 2000
|
||
|
||
|
||
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.
|
||
|
||
|
||
|
||
|
||
Stokes, et al. Informational [Page 5]
|
||
|
||
RFC 2820 Access Control Requirements for LDAP May 2000
|
||
|
||
|
||
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.
|
||
|
||
|
||
|
||
Stokes, et al. Informational [Page 6]
|
||
|
||
RFC 2820 Access Control Requirements for LDAP May 2000
|
||
|
||
|
||
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.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Stokes, et al. Informational [Page 7]
|
||
|
||
RFC 2820 Access Control Requirements for LDAP May 2000
|
||
|
||
|
||
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
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Stokes, et al. Informational [Page 8]
|
||
|
||
RFC 2820 Access Control Requirements for LDAP May 2000
|
||
|
||
|
||
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.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Stokes, et al. Informational [Page 9]
|
||
|