2000-03-29 20:17:51 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
Internet-Draft E. Stokes
|
|
|
|
|
LDAP Extensions WG D. Byrne
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Intended Category: Standards Track IBM
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Expires: 10 September 2000 B. Blakley
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Dascom
|
2000-03-29 20:17:51 +08:00
|
|
|
|
10 March 2000
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
Access Control Model for LDAP
|
2000-03-29 20:17:51 +08:00
|
|
|
|
<draft-ietf-ldapext-acl-model-05.txt>
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
STATUS OF THIS MEMO
|
|
|
|
|
|
|
|
|
|
This document is an Internet-Draft and is in full
|
|
|
|
|
conformance with all provisions of Section 10 of RFC2026.
|
|
|
|
|
|
|
|
|
|
Internet-Drafts are working documents of the Internet
|
|
|
|
|
Engineering Task Force (IETF), its areas, and its working
|
|
|
|
|
groups. Note that other groups may also distribute
|
|
|
|
|
working documents as Internet-Drafts. Internet-Drafts are
|
|
|
|
|
draft documents valid for a maximum of six months and may
|
|
|
|
|
be updated, replaced, or obsoleted by other documents at
|
1999-10-07 01:23:54 +08:00
|
|
|
|
any time. It is inappropriate to use Internet-Drafts as
|
1999-08-19 04:07:09 +08:00
|
|
|
|
reference material or to cite them other than as "work in
|
|
|
|
|
progress."
|
|
|
|
|
|
|
|
|
|
The list of current Internet-Drafts can be accessed at
|
|
|
|
|
http://www.ietf.org/ietf/1id-abstracts.txt
|
|
|
|
|
|
|
|
|
|
The list of Internet-Draft Shadow Directories can be
|
|
|
|
|
accessed at http://www.ietf.org/shadow.html.
|
|
|
|
|
|
|
|
|
|
Comments and suggestions on this document are encouraged.
|
|
|
|
|
Comments on this document should be sent to the LDAPEXT
|
|
|
|
|
working group discussion list:
|
|
|
|
|
|
|
|
|
|
ietf-ldapext@netscape.com
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
COPYRIGHT NOTICE
|
|
|
|
|
Copyright (C) The Internet Society (1997). All Rights
|
|
|
|
|
Reserved.
|
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
ABSTRACT
|
|
|
|
|
|
|
|
|
|
This document describes the access control model for the
|
|
|
|
|
Lightweight Directory Application Protocol (LDAP)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 1]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
directory service. It includes a description of the
|
1999-08-19 04:15:22 +08:00
|
|
|
|
model, the LDAP controls, and the extended operations to
|
1999-10-07 01:23:54 +08:00
|
|
|
|
the LDAP protocol. The current LDAP APIs are sufficient
|
|
|
|
|
for most access control operations. An API (in a
|
|
|
|
|
separate document) is needed for the extended operation
|
2000-03-29 20:17:51 +08:00
|
|
|
|
getEffectiveAccess and specifyCredentials.
|
|
|
|
|
|
|
|
|
|
The keywords "MUST", "SHOULD", and "MAY" used in this
|
|
|
|
|
document are to be interpreted as described in
|
|
|
|
|
[Bradner97].
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
1999-10-07 01:23:54 +08:00
|
|
|
|
access control model, but one is needed to ensure
|
|
|
|
|
consistent secure access across heterogeneous LDAP
|
|
|
|
|
implementations. 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 document defines the
|
|
|
|
|
model and the protocol extensions (controls and extended
|
|
|
|
|
operations).
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2. Overview
|
|
|
|
|
|
|
|
|
|
Access Control mechanisms evaluate requests for access to
|
|
|
|
|
protected resources and make decisions about whether
|
|
|
|
|
those requests should be granted or denied. In order to
|
|
|
|
|
make a grant/deny decision about a request for access to
|
|
|
|
|
a protected resource, an access control mechanism needs
|
|
|
|
|
to evaluate policy data. This policy data describes
|
|
|
|
|
security-relevant characteristics of the requesting
|
|
|
|
|
subject and the rules which govern the use of the target
|
|
|
|
|
object.
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 2]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
The access control model defines
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
- A wire protocol for interoperability: The existing
|
1999-10-07 01:23:54 +08:00
|
|
|
|
LDAP protocol flows for add, delete, modify, and
|
|
|
|
|
search are used to manipulate access control
|
2000-03-29 20:17:51 +08:00
|
|
|
|
information. There is an additional LDAP control
|
|
|
|
|
and extended protocol operation defined,
|
|
|
|
|
getEffectiveRights, to further help management of
|
|
|
|
|
access control information.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
- A set of access control information (ACI) attributes
|
|
|
|
|
for application portability: These attributes are
|
1999-08-19 04:07:09 +08:00
|
|
|
|
used as input to the LDAP APIs so access control
|
|
|
|
|
information can be addressed uniformly independent
|
1999-08-19 04:15:22 +08:00
|
|
|
|
of how that information is addressed and stored at
|
|
|
|
|
the server. These same attributes appear in LDIF
|
|
|
|
|
output for interchange of access control
|
|
|
|
|
information.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
- A set of attributes to identity the access control
|
2000-03-29 20:17:51 +08:00
|
|
|
|
mechanisms supported by a server and in a given part
|
|
|
|
|
of the namespace.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
Encoding of access control information on the wire is per
|
|
|
|
|
the LDAPv3 specifications.
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The instantiation of an access control model at the
|
|
|
|
|
directory server is not defined in this document.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
No mechanisms are defined in this document to control
|
|
|
|
|
access to access control information or for storage of
|
|
|
|
|
access control information at the server; this is vendor
|
|
|
|
|
dependent.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
A separate requirements document for access control
|
|
|
|
|
exists. The access control model used the requirements
|
|
|
|
|
documents as a guideline for the development of this
|
|
|
|
|
specification and are reflected in this specification to
|
|
|
|
|
the extent that the working group could agree on an
|
|
|
|
|
access control model.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
|
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 3]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
3. Terminology
|
|
|
|
|
|
|
|
|
|
An "access control list" contains the access control
|
|
|
|
|
policy information controlling access to an object or
|
1999-08-19 04:15:22 +08:00
|
|
|
|
collection of objects. An access control list consists
|
|
|
|
|
of a set of access control list entries.
|
|
|
|
|
|
|
|
|
|
An "access control list entry" defines a single subject
|
|
|
|
|
security attribute's granted rights for the objects
|
1999-08-19 04:07:09 +08:00
|
|
|
|
governed by the access control list to which it belongs.
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The "access control information" (aci) for an object or a
|
|
|
|
|
collection of objects defines which subject security
|
|
|
|
|
attributes entitle a subject to which granted rights.
|
|
|
|
|
The access control information for an object may be
|
|
|
|
|
stored in an access control list.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
An "access decision" is a boolean-valued function which
|
|
|
|
|
answers the question: "can the subject with these subject
|
|
|
|
|
security attributes perform this operation on this
|
|
|
|
|
object?"
|
|
|
|
|
|
|
|
|
|
An "access decision function" is an algorithm which makes
|
|
|
|
|
an access decision based on subject security attributes,
|
1999-10-07 01:23:54 +08:00
|
|
|
|
access control information, an object identifier, and an
|
|
|
|
|
operation name (possibly augmented by additional
|
1999-08-19 04:07:09 +08:00
|
|
|
|
contextual information).
|
|
|
|
|
|
|
|
|
|
An "access decision function interface" is a programmatic
|
|
|
|
|
interface through which applications can request an
|
|
|
|
|
access decision.
|
|
|
|
|
|
|
|
|
|
An "access identity" is an identity which is used by an
|
|
|
|
|
access decision function to make an access decision.
|
|
|
|
|
|
|
|
|
|
An "audit identity" is an identity which does not, in the
|
|
|
|
|
absence of additional information, enable a party
|
|
|
|
|
receiving and examining it to determine which subject it
|
|
|
|
|
belongs to.
|
|
|
|
|
|
|
|
|
|
A "credential" is a collection of subject security
|
|
|
|
|
attributes.
|
|
|
|
|
|
|
|
|
|
"effective rights" are the complete set of rights a
|
|
|
|
|
subject is entitled to based on all access control lists
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 4]
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
which apply to a specific object and based on all of the
|
|
|
|
|
subject's security attributes.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
"granted rights" are the complete set of rights an access
|
1999-08-19 04:15:22 +08:00
|
|
|
|
control list entitles a subject to based on a specific
|
|
|
|
|
subject security attribute.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
A "group" is a privilege attribute asserting a subject's
|
|
|
|
|
membership in the collection of subjects whose name is
|
1999-08-19 04:07:09 +08:00
|
|
|
|
that of the group.
|
|
|
|
|
|
|
|
|
|
An "identity" is a subject security attribute which is
|
|
|
|
|
unique to a single subject.
|
|
|
|
|
|
|
|
|
|
A "privilege attribute" is a subject security attribute
|
|
|
|
|
which may be shared by several subjects.
|
|
|
|
|
|
|
|
|
|
"required rights" are the complete set of rights needed
|
|
|
|
|
to authorize a requester to perform a specific operation
|
|
|
|
|
on an object of a specific type.
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
A "right" is the basic unit of access control
|
1999-08-19 04:07:09 +08:00
|
|
|
|
administration. For each object type in an information
|
|
|
|
|
system, a security administrator defines a set of
|
|
|
|
|
required rights for each operation. For each object in
|
|
|
|
|
the system, a security administrator defines a set of
|
|
|
|
|
granted rights for each subject security attribute. When
|
|
|
|
|
an access decision is required, an access decision
|
|
|
|
|
function checks to make sure that the requester's subject
|
|
|
|
|
security attributes have been granted all required rights
|
|
|
|
|
needed to perform the requested operation on the
|
|
|
|
|
specified target object.
|
|
|
|
|
|
|
|
|
|
A "role" is a privilege attribute asserting a subject's
|
1999-10-07 01:23:54 +08:00
|
|
|
|
organizational position and entitlement to perform the
|
|
|
|
|
operations appropriate to that organizational position.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
A "subject' is an entity which initiate actions in an
|
|
|
|
|
information system.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
A "subject security attribute" is a defined property
|
|
|
|
|
which is used by a security policy evaluation system to
|
|
|
|
|
make policy decisions.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 5]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
4. The Model
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
The access control mechanism described in this draft
|
1999-10-07 01:23:54 +08:00
|
|
|
|
addresses these activities:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
- Definition of subject security attributes
|
|
|
|
|
information
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
- Definition of access control policy
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
- Retrieval of subject security attributes
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
- Retrieval of effective access rights
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
- Externalization of access control policy information
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
4.1 Access Control Information Model
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
This document does not define formats for storage of
|
|
|
|
|
access control information; it does define the
|
|
|
|
|
operational semantics of access control operations.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 6]
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The diagram below illustrates the componentry of a LDAP
|
1999-08-19 04:07:09 +08:00
|
|
|
|
system and the placement of the function specified in
|
|
|
|
|
this draft.
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
+-------------+
|
|
|
|
|
| Application |<--attrs to address ACI
|
2000-03-29 20:17:51 +08:00
|
|
|
|
+-------------+ - ldapACI
|
|
|
|
|
+--------+ - policyOwner
|
|
|
|
|
| LDAP |
|
1999-10-07 01:23:54 +08:00
|
|
|
|
| Client |
|
|
|
|
|
+--------+
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
| <-- LDAP control
|
1999-10-07 01:23:54 +08:00
|
|
|
|
| - getEffectiveAccess
|
2000-03-29 20:17:51 +08:00
|
|
|
|
|
|
|
|
|
|
| <-- LDAP extended operation
|
1999-10-07 01:23:54 +08:00
|
|
|
|
| - getEffectiveAccess
|
|
|
|
|
v
|
|
|
|
|
+-----------------------------+
|
|
|
|
|
| LDAP Server (e.g. SLAPD) |
|
|
|
|
|
+-----------------------------+
|
|
|
|
|
. |
|
|
|
|
|
. |
|
|
|
|
|
. |
|
|
|
|
|
. |
|
|
|
|
|
v v
|
|
|
|
|
+----------+ +-----------+
|
|
|
|
|
| Access | | |<-attrs to define
|
|
|
|
|
| Control |<--| Datastore | access control mechanisms
|
|
|
|
|
| Manager | | | - supportedACIMechanisms
|
2000-03-29 20:17:51 +08:00
|
|
|
|
+----------+ +-----------+ - aCIMechanisms
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
LDAP clients use the control and extended operation
|
1999-08-19 04:07:09 +08:00
|
|
|
|
specified in this document to administer access control
|
|
|
|
|
policy enforced by LDAP servers. Servers may store
|
|
|
|
|
access control information in any way they choose. In
|
|
|
|
|
particular, servers may use the access control mechanisms
|
|
|
|
|
of their datastores to store and enforce LDAP access
|
|
|
|
|
control, or they may implement access control managers
|
|
|
|
|
external to their datastores. Datastores and external
|
2000-03-29 20:17:51 +08:00
|
|
|
|
access control managers may implement any access control
|
1999-08-19 04:07:09 +08:00
|
|
|
|
rule syntax and semantics they choose, as long as the
|
1999-10-07 01:23:54 +08:00
|
|
|
|
semantics are compatible with that defined in the section
|
1999-08-19 04:07:09 +08:00
|
|
|
|
titled "Operational Semantics of Access Control
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Operations".
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 7]
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The access control administration mechanisms specified in
|
|
|
|
|
this document are neutral with respect to policy
|
|
|
|
|
inheritance mechanisms, explicit vs. implicit denial,
|
|
|
|
|
and group nesting.
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
5. Access Control Mechanism Attributes
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
There are several attributes defined associated with
|
2000-03-29 20:17:51 +08:00
|
|
|
|
access control. Two attributes are defined to identify
|
1999-10-07 01:23:54 +08:00
|
|
|
|
which access control mechanisms are supported by a given
|
|
|
|
|
server and by a given subtree: supportedACIMechanisms
|
2000-03-29 20:17:51 +08:00
|
|
|
|
and aCIMechanisms.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
5.1 Root DSE Attribute for Access Control Mechanism
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The server advertises which access control mechanisms it
|
|
|
|
|
supports by inclusion of the 'supportedACIMechanisms'
|
|
|
|
|
attribute in the root DSE. This attribute is a list of
|
|
|
|
|
OIDs, each of which identify an access control mechanism
|
|
|
|
|
supported by the server.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
(<OID to be assigned>
|
|
|
|
|
NAME 'supportedACIMechanisms'
|
1999-10-07 01:23:54 +08:00
|
|
|
|
DESC list of access control mechanisms supported
|
|
|
|
|
by this directory server
|
|
|
|
|
SYNTAX LDAPOID
|
|
|
|
|
USAGE dSAOperation
|
|
|
|
|
)
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The access control mechanism defined is:
|
|
|
|
|
LDAPv3 <OID to be assigned>
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
Other vendor access control mechanisms can be defined (by
|
|
|
|
|
OID) and are the responsibility of those vendors to
|
|
|
|
|
provide the definition and OID.
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
5.2 Subschema Attribute for Access Control Mechanism
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
A given naming context must provide information about
|
2000-03-29 20:17:51 +08:00
|
|
|
|
which access control mechanisms are in effect for that
|
1999-08-19 04:07:09 +08:00
|
|
|
|
portion of the namespace. The following attribute must
|
|
|
|
|
be in each subschema entry associated with a naming
|
2000-03-29 20:17:51 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 8]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
context whose access control mechanism is different from
|
|
|
|
|
adjacent naming contexts supported by that directory
|
|
|
|
|
server.
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
aCIMechanisms lists the values (list of OIDs) that
|
|
|
|
|
defines the access control mechanism in effect for the
|
|
|
|
|
scope of that subschema entry. More than one mechanism
|
|
|
|
|
may be in effect for the scope of that subschema entry.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
(<OID to be assigned>
|
2000-03-29 20:17:51 +08:00
|
|
|
|
NAME 'aCIMechanisms'
|
|
|
|
|
DESC list of access control mechanisms supported
|
1999-10-07 01:23:54 +08:00
|
|
|
|
in this subtree
|
|
|
|
|
SYNTAX LDAPOID
|
|
|
|
|
USAGE dSAOperation
|
|
|
|
|
)
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
6. Access Control Information Attributes
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The intent of the following attribute definitions is to
|
|
|
|
|
design a common interchange format. Any given LDAP
|
|
|
|
|
server should be able to translate the below defined
|
|
|
|
|
attributes into a meaningful operation requests. Each
|
|
|
|
|
server should be able to understand the attributes; there
|
|
|
|
|
should not be any ambiguity into what any part of the
|
|
|
|
|
syntax means.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
While the end goal is to have a common behavior model
|
|
|
|
|
between different LDAP server implementations, the
|
|
|
|
|
attribute definition alone will not ensure identical ACL
|
|
|
|
|
processing behavior between servers. The semantics of
|
|
|
|
|
how a server interprets the ACI syntax are defined in the
|
|
|
|
|
"Operational Semantics of Access Control' section of this
|
|
|
|
|
document. Additionally, while the server must recognize
|
|
|
|
|
and act on the attribute when received over the wire,
|
|
|
|
|
there are no requirements for the server to physically
|
|
|
|
|
store this attribute.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The attribute definition maintains an assumption that the
|
|
|
|
|
receiving server supports inheritance within the security
|
|
|
|
|
model. If the server does not support inheritance, the
|
|
|
|
|
receiving server must expand any inherited information
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 9]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
based on the scope flag. If the server does not support
|
|
|
|
|
partial inheritance and both the entry and subtree scope
|
|
|
|
|
are used, then entry is the prevailing scope.
|
|
|
|
|
|
|
|
|
|
Two attributes are defined so access control information
|
|
|
|
|
(ACI) can be addressed in a server independent of server
|
|
|
|
|
implementation. These attributes are used in typical
|
|
|
|
|
LDAP APIs and in LDIF output of ACI. These two attributes
|
|
|
|
|
may be queried or set on all directory objects: ldapACI
|
|
|
|
|
and policyOwner. Their BNF and definitions are defined
|
|
|
|
|
below.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6.1 The BNF
|
|
|
|
|
|
|
|
|
|
< ldapACI > ::= < acl entry syntax >
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
< acl entry syntax > ::= <familyOID> + '#' + <scope > + '#'
|
|
|
|
|
+ < rights > + '#' + < dnType >
|
|
|
|
|
+ '#' + < subjectDn >
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
< policyOwner > ::= < familyOid > + '#' + <scope >
|
|
|
|
|
+ '#' +< dnType > + '#' + < subjectDn >
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
< subjectDn > ::= < printable string > | "public" | "this"
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
< familyOid > ::= < oid >
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
<scope > ::= "entry" | "subtree"
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
< dnType > ::= "access-id" | "role" | "group" | "subtree"
|
|
|
|
|
| "ipAddress" | "kerberosID"
|
|
|
|
|
| <printableString>
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
< kerberosID > ::= < userID > + '@' + < realm >
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
< userID > ::= < printableString >
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
< realm > ::= < printableString >
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
< rights > ::= "grant" + ';' + <permissions> + ';'+<attr>
|
|
|
|
|
| "deny" + ';' + <permissions> + ';'+<attr> |
|
|
|
|
|
"grant"+';'+<permissions>+';'+"deny"+';'+<permissions>+';'+<attr>
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
< permissions > ::= [ ] | [ <permission>
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 10]
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
+ [ ',' + <permission> ] ]*
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
< attr > ::= ["collection" + ':' + [ "[all]" | "[entry]"
|
|
|
|
|
| <printableString>] ]
|
|
|
|
|
| ["attribute" + ':' <printableString>]
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
< permission > ::= "a" | "d" | "r" | "s" | "w" |
|
2000-03-29 20:17:51 +08:00
|
|
|
|
"c" | "e" | "b"
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
These are the permissions defined for the IETF LDAP family
|
|
|
|
|
OID.
|
1999-10-07 01:23:54 +08:00
|
|
|
|
"a" corresponds to add
|
|
|
|
|
"d" corresponds to delete
|
|
|
|
|
"r" corresponds to read
|
2000-03-29 20:17:51 +08:00
|
|
|
|
"s" corresponds to search
|
1999-10-07 01:23:54 +08:00
|
|
|
|
"w" corresponds to write
|
|
|
|
|
"c" corresponds to compare
|
2000-03-29 20:17:51 +08:00
|
|
|
|
"e" corresponds to editDN
|
|
|
|
|
"b" corresponds to browseDN
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
6.2 Other Defined Parameters
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
This section defines additional parameters that are used
|
2000-03-29 20:17:51 +08:00
|
|
|
|
in the two attributes that address access control
|
1999-10-07 01:23:54 +08:00
|
|
|
|
information.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
6.2.1 Families and Rights
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
The familyOID tells what permission set etc. will follow
|
|
|
|
|
in the string. This allows a different permission set,
|
|
|
|
|
scope etc., but with the same syntax.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
The following family is defined:
|
|
|
|
|
IETF-LDAPv3 <OID to be assigned>
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Other families can be defined (by OID). It is the
|
1999-10-07 01:23:54 +08:00
|
|
|
|
responsibility of those parties to provide the definition
|
|
|
|
|
and OID.
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
6.2.1.1 IETF-LDAPv3 Family
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Access rights can apply to an entire object or to
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 11]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
attributes of the object. Each of the LDAP access rights
|
|
|
|
|
are discrete. One permission does not imply another
|
|
|
|
|
permission. The rights which apply to attributes and the
|
|
|
|
|
entry parallel the type of ldap operations that can be
|
|
|
|
|
performed.
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Rights which apply to attributes:
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
r Read Read attribute values
|
|
|
|
|
w Write Write attribute values
|
|
|
|
|
s Search Search entries with specified attributes
|
|
|
|
|
c Compare Compare attributes
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Rights that apply to an entire entry:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
a Add Add an entry below this entry
|
|
|
|
|
d Delete Delete this entry
|
|
|
|
|
e EditDN Edit an entry's DN
|
|
|
|
|
b BrowseDN Browse an entry's DN
|
|
|
|
|
|
|
|
|
|
When searching, the ldap search filter specifies the
|
|
|
|
|
returned set of attributes. To do the search, browse (b)
|
|
|
|
|
must be set for the entry (you can search only entries
|
|
|
|
|
that you have permission to search so you can't discover
|
|
|
|
|
things you don't have permission to) and search (s) must
|
|
|
|
|
be set for all attributes used in the filter if you are
|
|
|
|
|
testing for existence, otherwise search (s) and read (r)
|
|
|
|
|
must be set for all attributes used in the filter because
|
|
|
|
|
the filter specifies a test for other than existence.
|
|
|
|
|
For a search to return attribute names only, search (s)
|
|
|
|
|
must be set for the attribute. For a search to return
|
|
|
|
|
attribute names and values, search (s) and read (r) must
|
|
|
|
|
be set for the attribute. Search (s) implies knowledge
|
|
|
|
|
of the attribute; read (r) implies knowledge of the
|
|
|
|
|
value.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
6.2.2 DN Types
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
The following DN Types strings are defined and MUST be
|
|
|
|
|
supported:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
- access-id
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 12]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
- group
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
- role
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
The following DN Types strings are defined and SHOULD be
|
1999-10-07 01:23:54 +08:00
|
|
|
|
supported:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
- ipAddress
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
- kerberosID
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
An access-id is a non-collection (non-group and non-role
|
|
|
|
|
objects) DN that can be authenticated.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
groupOfNames and groupOfUniqueNames (or subclasses from
|
|
|
|
|
those object classes) must be recognized as a collection
|
|
|
|
|
object. This aids in interoperability during
|
|
|
|
|
replication.
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Other parties can (and will) define other DN Types. It
|
|
|
|
|
is the responsibility of those parties to provide the
|
2000-03-29 20:17:51 +08:00
|
|
|
|
definition.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
6.3 Basic ACI Attribute (ldapACI)
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
(<OID to be assigned>
|
|
|
|
|
NAME 'ldapACI'
|
|
|
|
|
DESC 'ldap access control information'
|
|
|
|
|
EQUALITY caseIgnoreMatch
|
|
|
|
|
SYNTAX directoryString
|
|
|
|
|
USAGE directoryOperation
|
|
|
|
|
)
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Within the access control syntax, the family OID
|
|
|
|
|
describes the permissions, dnType, subjectDn and scope
|
|
|
|
|
that will be found in the following string. If the OID
|
2000-03-29 20:17:51 +08:00
|
|
|
|
within the ldapACI attribute is listed as other than the
|
|
|
|
|
IETF-LDAPv3 family OID, the syntax is the same, but one
|
|
|
|
|
or more of the scope, dnType, subjectDn or permissions
|
|
|
|
|
may vary from the defined syntax.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Within the access control syntax, there is a string which
|
|
|
|
|
describes the rights. This is a composite of the
|
|
|
|
|
permissions and resources to which the subject is being
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 13]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
granted or denied access. The set of permissions is
|
|
|
|
|
fixed. Either or both of the actions "grant" | "deny"
|
|
|
|
|
may be used when creating or updating ldapACI.
|
|
|
|
|
|
|
|
|
|
<attr> describes either an attribute name or an attribute
|
|
|
|
|
collection. The keyword attribute indicates that the
|
|
|
|
|
following printable string refers to an attribute name.
|
|
|
|
|
If the string refers to an attribute not defined in the
|
|
|
|
|
given server's schema, the server SHOULD report an error.
|
|
|
|
|
The keyword "collection" indicates that the string that
|
|
|
|
|
follows describes a group of attributes. The method for
|
|
|
|
|
grouping attributes is server specific. Another option
|
|
|
|
|
for the collection printable string is "[entry]". This is
|
|
|
|
|
provided to describe permissions which apply to an entire
|
|
|
|
|
object. This could mean actions such as delete the
|
|
|
|
|
object, or add a child object. The third option for a
|
|
|
|
|
collection is "[all]" which means the permission set
|
|
|
|
|
should apply to all attributes. Even if the server does
|
|
|
|
|
not support attribute grouping, it MUST recognize the
|
|
|
|
|
"[all]" and "[entry]" keywords. If the server receives
|
|
|
|
|
an unrecognized attribute collection name, the server
|
|
|
|
|
SHOULD return an error. If the server supports grouping,
|
|
|
|
|
the grouping is server and implementation specific.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
If the keyword "[all]" and another attribute are both
|
|
|
|
|
specified within an aci, the more specific permission set
|
|
|
|
|
for the attribute overrides the less specific permission
|
|
|
|
|
set for "[all]".
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
All permissions (for grant and deny) for an attribute and
|
|
|
|
|
a given DN MUST be contained within one ldapACI value,
|
|
|
|
|
i.e. (in abbreviated form)
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
ldapACI: ...grant attr1 DN1
|
|
|
|
|
ldapACI: ...deny attr1 DN1
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
must be ldapACI: ...grant ... deny... attr1 DN1
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Using the defined BNF it is possible for the permission
|
|
|
|
|
string to be empty. The ACI
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
ldapACI: 1.2.3.4#subtree#grant;;
|
|
|
|
|
attribute:attr1#group#cn=Dept XYZ,c=US
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
ldapACI: 1.2.3.4#subtree#grant;r,s;
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 14]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
collection:[all]#group#cn=Dept XYZ,c=US
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
means that this group (Dept XYZ) is granted permission to
|
|
|
|
|
read and search all attributes except attr1 because attr1
|
|
|
|
|
is more specific than "[all]".
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
6.3.1 LDAP Operations
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
The attributes which are defined for access control
|
|
|
|
|
interchange may be used in all LDAP operations.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Within the ldapmodify-delete operation, the entire acl
|
|
|
|
|
may be deleted by specifying
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
dn: cn = some Entry
|
|
|
|
|
changetype: modify
|
|
|
|
|
delete: ldapACI
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
In this case, the entry would then inherit its ACI from
|
|
|
|
|
some other node in the tree depending on the server
|
|
|
|
|
inheritance model.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Similarly, if all values of ldapACI are deleted, then the
|
|
|
|
|
access control information for that entry is defined by
|
|
|
|
|
that implementation's inheritance model.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
6.3.2 Grant/Deny Evaluation Rules
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
More specific policies must override less specific ones
|
|
|
|
|
(e.g. individual user entry in ACI takes precedence over
|
|
|
|
|
group entry).
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Deny takes precedence over Grant. When there are
|
|
|
|
|
conflicting ACI values, deny takes precedence over grant.
|
|
|
|
|
Deny is the default when there is no access control
|
|
|
|
|
information.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Precendence of Scope Types (highest to lowest)
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
- entry
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
- subtree
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 15]
|
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Precedence of Privilege Attribute dnTypes within a scope
|
|
|
|
|
(highest to lowest):
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
- ipAddress
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
- access-id, kerberosID (both same precedence)
|
|
|
|
|
|
|
|
|
|
- group
|
|
|
|
|
|
|
|
|
|
- role
|
|
|
|
|
|
|
|
|
|
- subtree
|
|
|
|
|
|
|
|
|
|
Although other types can be defined given the BNF, use of
|
|
|
|
|
the well-known types aids in interoperability and
|
|
|
|
|
operational consistency.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6.4 Policy Owner Attribute (policyOwner)
|
|
|
|
|
|
|
|
|
|
(<OID to be assigned>
|
|
|
|
|
NAME 'policyOwner'
|
|
|
|
|
DESC 'Policy Owner Access Control Information'
|
|
|
|
|
EQUALITY caseIgnoreMatch
|
|
|
|
|
SYNTAX directoryString
|
|
|
|
|
USAGE directoryOperation
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
Policy ownership controls administrative subdomains. It
|
|
|
|
|
can also control who has permission to set / change acls
|
|
|
|
|
for implementations that do not have ACI controlling
|
|
|
|
|
access to itself. If there are multiple policy owners
|
|
|
|
|
it is implementation specific as to the behavior of
|
|
|
|
|
whether policy owner #1 can override policy owner # 2.
|
|
|
|
|
|
|
|
|
|
The syntax for policyOwner includes the 'scope' flag.
|
|
|
|
|
Servers which do not support inheritance must expand the
|
|
|
|
|
policyOwner inheritance similar to the expansion of the
|
|
|
|
|
ACI. The scope and any inheritance hierarchy for policy
|
|
|
|
|
ownership is distinct from any inheritance hierarchy
|
|
|
|
|
defined for ACI values.
|
|
|
|
|
|
|
|
|
|
If the policy owner is not specified for any object in
|
|
|
|
|
the tree, behavior is implementation defined. For
|
|
|
|
|
instance, if no object anywhere in the tree has a policy
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
|
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 16]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
owner, then the server could simply assert that the 'root
|
|
|
|
|
DN' is considered the policy owner for all objects. An
|
|
|
|
|
alternate approach might be that the implementation
|
|
|
|
|
defines the entryDN to be the policy owner.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6.5 ACI Examples
|
|
|
|
|
|
|
|
|
|
The examples use a family OID = 1.2.3.4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6.5.1 Attribute Definition
|
|
|
|
|
|
|
|
|
|
The following two examples show an administrative
|
|
|
|
|
subdomain being established. The first example shows a
|
|
|
|
|
single user being assigned the policyOwner for the entire
|
|
|
|
|
domain. The second example shows a group of IDs assigned
|
1999-10-07 01:23:54 +08:00
|
|
|
|
to the policy Owner.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
policyOwner: 1.2.3.4#subtree#access-id#cn=Hoyt
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
policyOwner: 1.2.3.4#subtree#group#cn=System
|
|
|
|
|
Owners,o=Company
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
The next example shows a ldapACI attribute where a group
|
1999-10-07 01:23:54 +08:00
|
|
|
|
"cn=Dept XYZ, c=US" is being given permissions to read,
|
2000-03-29 20:17:51 +08:00
|
|
|
|
search and compare attribute attr1. The permission
|
|
|
|
|
applies to the entire subtree below the node containing
|
1999-10-07 01:23:54 +08:00
|
|
|
|
this ACI.
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
ldapACI:1.2.3.4#subtree#grant;r,s,c;
|
|
|
|
|
attribute:attr1#group#cn=Dept XYZ,c=US
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The next example shows an ACI attribute where a role
|
|
|
|
|
"cn=SysAdmins,o=Company" is being given permissions to
|
2000-03-29 20:17:51 +08:00
|
|
|
|
add objects below this node and read, search, and compare
|
|
|
|
|
attributes attr2 and attr3. The permission applies to the
|
1999-10-07 01:23:54 +08:00
|
|
|
|
entire subtree below the node containing this ACI.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
ldapACI: 1.2.3.4#subtree#grant;a;
|
|
|
|
|
collection:[entry]#role#cn=SysAdmins,o=Company
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
ldapACI: 1.2.3.4#subtree#grant;r,s,c;
|
|
|
|
|
attribute:attr2#role#cn=SysAdmins,o=Company
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 17]
|
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
ldapACI: 1.2.3.4#subtree#grant;r,s,c;
|
|
|
|
|
attribute:attr3#role#cn=SysAdmins,o=Company
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
6.5.2 Modifying the ldapACI Values
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Modify-Replace works as defined in the ldap oepration
|
|
|
|
|
modify. If the attribute value does not exist, create the
|
|
|
|
|
value. If the attribute does exist, replace the value. If
|
|
|
|
|
the ldapACI value is replaced, all ldapACI values are
|
|
|
|
|
replaced.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
A given ldapACI for an entry:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
ldapACI: 1.2.3.4#subtree#deny;r,w;
|
|
|
|
|
collection:[all]#group#cn=Dept ABC
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
ldapACI: 1.2.3.4#subtree#grant;r;
|
|
|
|
|
attribute:attr1#group#cn=Dept XYZ
|
|
|
|
|
|
|
|
|
|
perform the following change:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
dn: cn=someEntry
|
|
|
|
|
changetype: modify
|
2000-03-29 20:17:51 +08:00
|
|
|
|
replace: ldapACI
|
|
|
|
|
ldapACI: 1.2.3.4#subtree#grant;r,w;
|
|
|
|
|
collection:[all];#group#cn=Dept LMN
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
The resulting ACI is:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
ldapACI: 1.2.3.4#subtree#grant;r,w;
|
|
|
|
|
collection:[all];#group#cn=Dept LMN
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
( ldapACI values for Dept XYZ and ABC are lost through the
|
1999-10-07 01:23:54 +08:00
|
|
|
|
replace )
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
During an ldapmodify-add, if the ACI does not exist, the
|
2000-03-29 20:17:51 +08:00
|
|
|
|
create the ACI with the specific ldapACI value(s). If the
|
|
|
|
|
ACI does exist, then add the specified values to the given
|
|
|
|
|
ldapACI. For example a given ACI:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
ldapACI: 1.2.3.4#subtree#grant;r,w;
|
|
|
|
|
collection:[all]#group#cn=Dept XYZ
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
with a modification:
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 18]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
dn: cn=someEntry
|
|
|
|
|
changetype: modify
|
2000-03-29 20:17:51 +08:00
|
|
|
|
add: ldapACI
|
|
|
|
|
ldapACI: 1.2.3.4#subtree#grant;r;
|
|
|
|
|
attribute:attr1#group#cn=Dept XYZ
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
would yield an multi-valued aci of:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
ldapACI: 1.2.3.4#subtree#grant;r,w;
|
|
|
|
|
collection:[all]#group#cn=Dept XYZ
|
|
|
|
|
|
|
|
|
|
ldapACI: 1.2.3.4#subtree#grant;r;
|
|
|
|
|
attribute:attr1#group#cn=Dept XYZ
|
|
|
|
|
|
|
|
|
|
To delete a particular ACI value, use the regular ldapmodify
|
1999-10-07 01:23:54 +08:00
|
|
|
|
- delete syntax
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Given an ACI of:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
ldapACI: 1.2.3.4#subtree#grant;r,w;
|
|
|
|
|
collection:[all]#group#cn=Dept XYZ
|
|
|
|
|
ldapACI: 1.2.3.4#subtree#grant;r;
|
|
|
|
|
attribute:attr1#group#cn=Dept XYZ
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
dn: cn = some Entry
|
|
|
|
|
changetype: modify
|
2000-03-29 20:17:51 +08:00
|
|
|
|
delete: ldapACI
|
|
|
|
|
ldapACI: 1.2.3.4#subtree#grant;r;
|
|
|
|
|
attribute:attr1#group#cn=Dept XYZ
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
would yield a remaining ACI on the server of
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
ldapACI: 1.2.3.4#subtree#grant;r,w;
|
|
|
|
|
collection:[all]#group#cn=Dept XYZ
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
6.5.3 Evaluation
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
These examples assume that the ldapACI entries listed in
|
|
|
|
|
each example are the only ACI which applies to the entry
|
|
|
|
|
in question; if backing-store ACI also exists, the
|
|
|
|
|
effective policy may be different from that listed in
|
|
|
|
|
each example. See section 7 for a discussion of the
|
|
|
|
|
semantics of ldapACI entries when backing-store ACI
|
|
|
|
|
administration is also used.
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 19]
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Assume cn=jsmith is a member of group cn=G1. Assume
|
|
|
|
|
cn=jsmith is a member of group cn=G2.
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Example #1
|
|
|
|
|
dn: o=XYZ, c=US
|
|
|
|
|
ldapACI: 1.2.3.4#subtree#grant;r;attribute:attr1;
|
|
|
|
|
#access-id#cn=jsmith,ou=ABC,o=XYZ,c=US
|
|
|
|
|
ldapACI: 1.2.3.4#subtree#grant;w;attribute:attr1;
|
|
|
|
|
#group#cn=G1,ou=ABC,o=XYZ,c=US
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
What rights does cn=jsmith have to attr1 of o=XYZ,c=US?
|
|
|
|
|
Read (r) access; access-id is higher precedence than
|
|
|
|
|
group.
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Example #2
|
|
|
|
|
dn: o=XYZ, c=US
|
|
|
|
|
ldapACI: 1.2.3.4#subtree#grant;r;attribute:attr2;
|
|
|
|
|
#group#cn=G1,ou=ABC,o=XYZ,c=US
|
|
|
|
|
ldapACI: 1.2.3.4#subtree#grant;w;attribute:attr2;
|
|
|
|
|
#group#cn=G2,ou=ABC,o=XYZ,c=US
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
What rights does cn=jsmith have to attr2 of o=XYZ,c=US?
|
|
|
|
|
Read-write (r,w) access; ACI is combined because both
|
|
|
|
|
dnTypes (group) have same precedence.
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Example #3
|
|
|
|
|
dn: o=XYZ, c=US
|
|
|
|
|
ldapACI: 1.2.3.4#subtree#grant;r,w;attribute:attr3;
|
|
|
|
|
#group#cn=G1,ou=ABC,o=XYZ,c=US
|
|
|
|
|
ldapACI: 1.2.3.4#subtree#deny;w;attribute:attr3;
|
|
|
|
|
#group#cn=G2,ou=ABC,o=XYZ,c=US
|
|
|
|
|
|
|
|
|
|
What rights does cn=jsmith have to attr3 of o=XYZ, c=US?
|
|
|
|
|
Read access; write is denied (deny has precedence over
|
|
|
|
|
grant).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example #4
|
|
|
|
|
dn: o=XYZ, c=US
|
|
|
|
|
ldapACI: 1.2.3.4#subtree#grant;w;attribute:attr4;
|
|
|
|
|
#access-id#cn=jsmith,ou=ABC,o=XYZ,c=US
|
|
|
|
|
ldapACI: 1.2.3.4#subtree#grant;r;attribute:attr4;
|
|
|
|
|
#subtree#ou=ABC,ou=XYZ,c=US
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 20]
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
What rights does cn=jsmith have to attr4 of o=XYZ, c=US?
|
|
|
|
|
Write (w); rights given to an access-id take precedence
|
|
|
|
|
over those given to a subtree.
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7. Operational Semantics of Access Control Operations
|
|
|
|
|
|
|
|
|
|
The semantics of access control operations described in
|
|
|
|
|
this document are defined operationally in terms of
|
|
|
|
|
"histories". A history is a sequence of actions (x1, x2,
|
|
|
|
|
..., xN).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7.1 Types of actions
|
|
|
|
|
|
|
|
|
|
We consider five types of actions:
|
|
|
|
|
|
|
|
|
|
- LDAP Access Control Policy Update actions:
|
|
|
|
|
invocations of ldap modify when used to add, delete,
|
|
|
|
|
or replace the aci attribute; invocations of ldap
|
|
|
|
|
add when used to add an entry with an aci attribute.
|
|
|
|
|
A LDAP Access Control Policy Update action may
|
|
|
|
|
replace the policy (by completely replacing the aci
|
|
|
|
|
attribute with new policy information) or it may
|
|
|
|
|
grant or deny specific rights while leaving others
|
|
|
|
|
unaffected.
|
|
|
|
|
|
|
|
|
|
- LDAP Access Control Policy Query operations:
|
|
|
|
|
invocations of ldap search when used to retrieve the
|
|
|
|
|
aci attribute; invocations of ldap search with the
|
|
|
|
|
getEffectiveRightsRequest control; invocations of
|
|
|
|
|
the ldapGetEffectiveRightsRequest extended
|
|
|
|
|
operation.
|
|
|
|
|
|
|
|
|
|
- Datastore Access Control Policy Update Actions: any
|
|
|
|
|
operation implemented by the server which LDAP is
|
|
|
|
|
using as its datastore which changes the access
|
|
|
|
|
policy enforced with respect to attempts to access
|
|
|
|
|
LDAP directory entries and their attributes.
|
|
|
|
|
|
|
|
|
|
- LDAP Access Request operations: invocations of LDAP
|
|
|
|
|
entry or attribute access operations (Read, Update,
|
|
|
|
|
Search, Compare, etc...).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 21]
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
- Other operations: anything else, including Datastore
|
|
|
|
|
operations which do not change the access policy
|
|
|
|
|
enforced by the server.
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7.2 Semantics of Histories
|
|
|
|
|
|
|
|
|
|
The semantics of histories are defined as follows:
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Replace), LDAP Query
|
|
|
|
|
|
|
|
|
|
The Query will show that the subject has all rights
|
|
|
|
|
granted by the Update operation, and no rights not
|
|
|
|
|
granted by the Update operation.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Grant), LDAP Query
|
|
|
|
|
|
|
|
|
|
The Query will show that the subject has all rights
|
|
|
|
|
granted by the Update operation. The Query may show
|
|
|
|
|
that the subject also has other rights not granted
|
|
|
|
|
by the Update operation, depending on the policy in
|
|
|
|
|
force before the Update operation.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Deny), LDAP Query
|
|
|
|
|
|
|
|
|
|
The Query will show that the subject does not have
|
|
|
|
|
any right denied by the Update operation. The Query
|
|
|
|
|
may show that the subject has rights not denied by
|
|
|
|
|
the Update operation, depending on the policy in
|
|
|
|
|
force before the Update operation.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Replace), LDAP Access Request
|
|
|
|
|
|
|
|
|
|
The Request will succeed if it requires only rights
|
|
|
|
|
granted to the requesting subject by the Update
|
2000-03-29 20:17:51 +08:00
|
|
|
|
operation. The Request will fail if it requires any
|
|
|
|
|
right not granted by the Update operation.
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
- LDAP Update (Grant), LDAP Access Request
|
|
|
|
|
|
|
|
|
|
The Request will succeed if it requires only rights
|
|
|
|
|
granted to the requesting subject by the Update
|
|
|
|
|
operation. The Request may succeed if it requires
|
|
|
|
|
rights not granted by the Update operation,
|
|
|
|
|
depending on the policy in force before the Update
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 22]
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
operation.
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
- LDAP Update (Deny), LDAP Access Request
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
The Request will fail if it requires any right
|
|
|
|
|
denied to the requesting subject by the Update
|
|
|
|
|
operation. If the Request requires only rights
|
|
|
|
|
which were not denied by the Update operation, it
|
|
|
|
|
may succeed, depending on the policy in force before
|
|
|
|
|
the Update operation.
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
- LDAP Update (Replace), Other, LDAP Query
|
|
|
|
|
|
|
|
|
|
The Query will show that the subject has all rights
|
|
|
|
|
granted by the Update operation, and no rights not
|
|
|
|
|
granted by the Update operation.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Grant), Other, LDAP Query
|
|
|
|
|
|
|
|
|
|
The Query will show that the subject has all rights
|
|
|
|
|
granted by the Update operation. The Query may show
|
|
|
|
|
that the subject also has other rights not granted
|
|
|
|
|
by the Update operation, depending on the policy in
|
|
|
|
|
force before the Update operation.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Deny), Other, LDAP Query
|
|
|
|
|
|
|
|
|
|
The Query will show that the subject does not have
|
|
|
|
|
any right denied by the Update operation. The Query
|
|
|
|
|
may show that the subject has rights not denied by
|
|
|
|
|
the Update operation, depending on the policy in
|
|
|
|
|
force before the Update operation.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Replace), Other, LDAP Access Request
|
|
|
|
|
|
|
|
|
|
The Request will succeed if it requires only rights
|
|
|
|
|
granted to the requesting subject by the Update
|
2000-03-29 20:17:51 +08:00
|
|
|
|
operation. The Request will fail if it requires any
|
|
|
|
|
right not granted by the Update operation.
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
- LDAP Update (Grant), Other, LDAP Access Request
|
|
|
|
|
|
|
|
|
|
The Request will succeed if it requires only rights
|
|
|
|
|
granted to the requesting subject by the Update
|
|
|
|
|
operation. The Request may succeed if it requires
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 23]
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
rights not granted by the Update operation,
|
|
|
|
|
depending on the policy in force before the Update
|
|
|
|
|
operation.
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
- LDAP Update (Deny), Other, LDAP Access Request
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
The Request will fail if it requires any right
|
|
|
|
|
denied to the requesting subject by the Update
|
|
|
|
|
operation. If the Request requires only rights
|
|
|
|
|
which were not denied by the Update operation, it
|
|
|
|
|
may succeed, depending on the policy in force before
|
|
|
|
|
the Update operation.
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
- LDAP Update (Replace), Datastore Policy Update, LDAP
|
|
|
|
|
Query
|
|
|
|
|
|
|
|
|
|
The result of the Query is not defined.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Grant), Datastore Policy Update, LDAP
|
|
|
|
|
Query
|
|
|
|
|
|
|
|
|
|
The result of the Query is not defined.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Deny), Datastore Policy Update, LDAP
|
|
|
|
|
Query
|
|
|
|
|
|
|
|
|
|
The result of the Query is not defined.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Replace), Datastore Policy Update, LDAP
|
|
|
|
|
Access Request
|
|
|
|
|
|
|
|
|
|
The result of the Access Request is not defined.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Grant), Datastore Policy Update, LDAP
|
|
|
|
|
Access Request
|
|
|
|
|
|
|
|
|
|
The result of the Access Request is not defined.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Deny), Datastore Policy Update, LDAP
|
|
|
|
|
Access Request
|
|
|
|
|
|
|
|
|
|
The result of the Access Request is not defined.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 24]
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
8. Access Control Parameters for LDAP Controls & Extended
|
|
|
|
|
Operations
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
This section defines the parameters used in the access
|
1999-10-07 01:23:54 +08:00
|
|
|
|
control LDAP controls and extended operations in this
|
|
|
|
|
document.
|
|
|
|
|
|
|
|
|
|
targetDN specifies the initial directory entry in DN
|
|
|
|
|
syntax on which the control or extended operation is
|
|
|
|
|
performed.
|
|
|
|
|
|
|
|
|
|
whichObject specifies whether the access control
|
|
|
|
|
information (in the get effective rights control) which
|
|
|
|
|
is retrieved is for the target directory entry (ENTRY) or
|
|
|
|
|
the target directory entry and its subtree (SUBTREE).
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
family specifies the family OID that will be retrieved
|
|
|
|
|
for the get effective rights control or extended
|
|
|
|
|
operation performed. A family has a defined set of
|
|
|
|
|
rights, among other things.
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
rights in the get effective rights control or extended
|
|
|
|
|
operation response is of the form specified in the BNF
|
|
|
|
|
for <rights>.
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
dnType speficies the type of subject security attribute.
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Defined types are specified in the BNF.
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
subjectDN is a LDAP string that defines the subject or
|
|
|
|
|
value of the dnType. The subjectDN may be a DN or
|
|
|
|
|
another string such as IPAddress (dotted-decimal string
|
|
|
|
|
representation) on which access control is get/set. If
|
|
|
|
|
the subject is an entry in the directory, then the syntax
|
2000-03-29 20:17:51 +08:00
|
|
|
|
of the LDAP string is DN. The well-known subjectDNs
|
1999-10-07 01:23:54 +08:00
|
|
|
|
strings are defined
|
|
|
|
|
|
|
|
|
|
- public - meaning public access for all users
|
|
|
|
|
|
|
|
|
|
- this - meaning the user whose name matches the entry
|
|
|
|
|
being accessed
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
- * - meaning everyone who has access to the entry
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 25]
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
9. Access Control Information (ACI) Controls
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
The access control information controls provide a way to
|
|
|
|
|
manipulate access control information in conjunction with
|
|
|
|
|
a LDAP operation. One LDAP control is defined. This
|
|
|
|
|
control allows access control information to be get/set
|
1999-10-07 01:23:54 +08:00
|
|
|
|
while manipulating other directory information for that
|
2000-03-29 20:17:51 +08:00
|
|
|
|
entry. The control is:
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
- getEffectiveRights to obtain the effective rights
|
|
|
|
|
for a given directory entry(s) for a given subject
|
|
|
|
|
during a ldap_search operation
|
|
|
|
|
|
|
|
|
|
9.1 getEffectiveRights Control
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9.1.1 Request Control
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
This control may only be included in the ldap_search
|
|
|
|
|
message as part of the controls field of the
|
|
|
|
|
LDAPMessage, as defined in Section 4.1.12 of [LDAPv3].
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The controlType is set to <OID to be assigned>. The
|
|
|
|
|
criticality MAY be either TRUE or FALSE (where absent is
|
|
|
|
|
also equivalent to FALSE) at the client's option. The
|
|
|
|
|
controlValue is an OCTET STRING, whose value is the BER
|
|
|
|
|
encoding of a value of the following SEQUENCE:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
getEffectiveRightsRequest ::= SEQUENCE {
|
|
|
|
|
effectiveRightsRequest SEQUENCE OF SEQUENCE {
|
2000-03-29 20:17:51 +08:00
|
|
|
|
family LDAPOID | "*",
|
1999-10-07 01:23:54 +08:00
|
|
|
|
whichObject ENUMERATED {
|
|
|
|
|
LDAP_ENTRY (1),
|
|
|
|
|
LDAP_SUBTREE (2)
|
|
|
|
|
},
|
2000-03-29 20:17:51 +08:00
|
|
|
|
dnType "access-id"|"group"|"role"|
|
|
|
|
|
"ipAddress"|"kerberosID"|
|
|
|
|
|
<printableString> | "*",
|
|
|
|
|
subjectDN LDAPString | "public" |
|
|
|
|
|
"this" | "*"
|
1999-10-07 01:23:54 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The effectiveRightsRequest is a set of sequences that
|
|
|
|
|
state the whichObject (entry or entry plus subtree) and
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 26]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
specifics of the control request to be performed. One or
|
|
|
|
|
more family can be be obtained for a given subjectDN ad
|
|
|
|
|
dnType. A "*" in the family field indicates that the
|
|
|
|
|
rights for all families defined for the subjectDN /
|
|
|
|
|
dnType are to be returned. A "*" in the dnType field
|
|
|
|
|
specifies that all DN types are to be used in returning
|
|
|
|
|
the effective rights. This control is applied to the
|
|
|
|
|
filter and scope set by the ldap_search operation, i.e.
|
|
|
|
|
base, one-level, subtree. So the attributes/values
|
|
|
|
|
returned are defined by the ldap_search operation.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
9.1.2 Response Control
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
This control is included in the ldap_search_response
|
|
|
|
|
message as part of the controls field of the LDAPMessage,
|
|
|
|
|
as defined in Section 4.1.12 of [LDAPv3].
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
The controlType is set to <OID to be assigned>. There is
|
|
|
|
|
no need to set the criticality on the response. The
|
|
|
|
|
controlValue is an OCTET STRING, whose value is the BER
|
|
|
|
|
encoding of a value of the following SEQUENCE:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
getEffectiveRightsResponse ::= {
|
|
|
|
|
result ENUMERATED {
|
|
|
|
|
success (0),
|
|
|
|
|
operationsError (1),
|
|
|
|
|
unavailableCriticalExtension (12),
|
|
|
|
|
noSuchAttribute (16),
|
|
|
|
|
undefinedAttributeType (17),
|
|
|
|
|
invalidAttributeSyntax (21),
|
|
|
|
|
insufficientRights (50),
|
|
|
|
|
unavailable (52),
|
|
|
|
|
unwillingToPerform (53),
|
|
|
|
|
other (80)
|
1999-08-19 04:07:09 +08:00
|
|
|
|
}
|
1999-10-07 01:23:54 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
The effective rights returned are returned with each
|
|
|
|
|
entry returned by the search result. The control
|
|
|
|
|
response for ldap_search is:
|
|
|
|
|
|
|
|
|
|
PartialEffectiveRightsList ::= SEQUENCE OF SEQUENCE {
|
2000-03-29 20:17:51 +08:00
|
|
|
|
family LDAPOID,
|
|
|
|
|
rights <see <rights> in BNF>,
|
1999-10-07 01:23:54 +08:00
|
|
|
|
whichObject ENUMERATED {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 27]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
LDAP_ENTRY (1),
|
|
|
|
|
LDAP_SUBTREE (2)
|
|
|
|
|
},
|
|
|
|
|
dnType "access-id"|"group"|
|
|
|
|
|
"role"|"ipAddress"|
|
|
|
|
|
"kerberosID"|
|
|
|
|
|
<printableString> |
|
|
|
|
|
"*",
|
|
|
|
|
subjectDN LDAPString | "public" |
|
|
|
|
|
"this" | "*"
|
1999-10-07 01:23:54 +08:00
|
|
|
|
}
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Although this extends the search operation, there are no
|
|
|
|
|
incompatibilities between versions. LDAPv2 cannot send a
|
|
|
|
|
control, hence the above structure cannot be returned to
|
|
|
|
|
a LDAPv2 client. A LDAPv3 client cannot send this
|
|
|
|
|
request to a LDAPv2 server. A LDAPv3 server not
|
|
|
|
|
supporting this control cannot return the additional
|
|
|
|
|
data.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
9.1.3 Client-Server Interaction
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The getEffectiveRightsRequest control requests the rights
|
|
|
|
|
that MUST be in effect for requested directory
|
|
|
|
|
entry/attribute based on the subject DN. The server that
|
|
|
|
|
consumes the search operation looks up the rights for the
|
|
|
|
|
returned directory information based on the subject DN
|
|
|
|
|
and returns that rights information.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
There are six possible scenarios that may occur as a
|
|
|
|
|
result of the getEffectiveRights control being included
|
|
|
|
|
on the search request:
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
1. If the server does not support this control and the
|
|
|
|
|
client specified TRUE for the control's criticality
|
|
|
|
|
field, then the server MUST return
|
|
|
|
|
unavailableCriticalExtension as a return code in
|
|
|
|
|
the searchResponse message and not send back any
|
|
|
|
|
other results. This behavior is specified in
|
|
|
|
|
section 4.1.12 of [LDAPv3].
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
2. If the server does not support this control and the
|
|
|
|
|
client specified FALSE for the control's
|
|
|
|
|
criticality field, then the server MUST ignore the
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 28]
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
control and process the request as if it were not
|
|
|
|
|
present. This behavior is specified in section
|
|
|
|
|
4.1.12 of [LDAPv3].
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
3. If the server supports this control but for some
|
|
|
|
|
reason such as cannot process specified family and
|
|
|
|
|
the client specified TRUE for the control's
|
|
|
|
|
criticality field, then the server SHOULD do the
|
|
|
|
|
following: return unavailableCriticalExtension as a
|
|
|
|
|
return code in the searchResult message.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
4. If the server supports this control but for some
|
2000-03-29 20:17:51 +08:00
|
|
|
|
reason such as cannot process specified family and
|
|
|
|
|
the client specified FALSE for the control's
|
|
|
|
|
criticality field, then the server should process
|
|
|
|
|
as 'no rights returned for that family' and include
|
|
|
|
|
the result Unavailable in the
|
1999-10-07 01:23:54 +08:00
|
|
|
|
getEffectiveRightsResponse control in the
|
|
|
|
|
searchResult message.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
5. If the server supports this control and can return
|
2000-03-29 20:17:51 +08:00
|
|
|
|
the rights per the family information, then it
|
|
|
|
|
should include the getEffectiveRightsResponse
|
1999-10-07 01:23:54 +08:00
|
|
|
|
control in the searchResult message with a result
|
|
|
|
|
of success.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
6. If the search request failed for any other reason,
|
|
|
|
|
then the server SHOULD omit the
|
|
|
|
|
getEffectiveRightsResponse control from the
|
|
|
|
|
searchResult message.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The client application is assured that the correct rights
|
|
|
|
|
are returned for scope of the search operation if and
|
|
|
|
|
only if the getEffectiveRightsResponse control returns
|
|
|
|
|
the rights. If the server omits the
|
|
|
|
|
getEffectiveRightsResponse control from the searchResult
|
|
|
|
|
message, the client SHOULD assume that the control was
|
|
|
|
|
ignored by the server.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The getEffectiveRightsResponse control, if included by
|
|
|
|
|
the server in the searchResponse message, should have the
|
|
|
|
|
getEffectiveRightsResult set to either success if the
|
|
|
|
|
rights are returned or set to the appropriate error code
|
|
|
|
|
as to why the rights could not be returned.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 29]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
The server may not be able to return a right because it
|
|
|
|
|
may not exist in that directory object's attribute; in
|
|
|
|
|
this case, the rights request is ignored with success.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
10. Access Control Extended Operation
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
An extended operation, get effective rights, is defined
|
|
|
|
|
to obtain the effective rights for a given directory
|
|
|
|
|
entry for a given subject. This operation may help with
|
|
|
|
|
the management of access control information independent
|
|
|
|
|
of manipulating other directory information.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
10.1 LDAP Get Effective Rights Operation
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
ldapGetEffectiveRightsRequest ::= [APPLICATION 23]
|
|
|
|
|
SEQUENCE {
|
|
|
|
|
requestName [0] <OID to be assigned>,
|
|
|
|
|
requestValue [1] OCTET STRING OPTIONAL }
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
where
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
requestValue ::= SEQUENCE {
|
|
|
|
|
targetDN LDAPDN,
|
|
|
|
|
updates SEQUENCE OF SEQUENCE {
|
2000-03-29 20:17:51 +08:00
|
|
|
|
family LDAPOID | "*",
|
1999-10-07 01:23:54 +08:00
|
|
|
|
whichObject ENUMERATED {
|
|
|
|
|
LDAP_ENTRY (1),
|
|
|
|
|
LDAP_SUBTREE (2)
|
|
|
|
|
},
|
2000-03-29 20:17:51 +08:00
|
|
|
|
attr SEQUENCE {
|
|
|
|
|
attr <see <attr> in BNF >
|
|
|
|
|
},
|
|
|
|
|
dnType "access-id"|"group"|
|
|
|
|
|
"role"|"ipAddress"|
|
|
|
|
|
"kerberosID"|
|
|
|
|
|
<printableString> |
|
|
|
|
|
"*",
|
|
|
|
|
subjectDN LDAPString | "public" |
|
|
|
|
|
"this" | "*"
|
|
|
|
|
}
|
|
|
|
|
}
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 30]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The requestName is a dotted-decimal representation of the
|
|
|
|
|
OBJECT IDENTIFIER corresponding to the request. The
|
|
|
|
|
requestValue is information in a form defined by that
|
|
|
|
|
request, encapsulated inside an OCTET STRING.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The server will respond to this with an LDAPMessage
|
|
|
|
|
containing the ExtendedResponse which is a rights list.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
ldapGetEffectiveRightsResponse ::= [APPLICATION 24]
|
|
|
|
|
SEQUENCE {
|
|
|
|
|
COMPONENTS OF LDAPResult,
|
|
|
|
|
responseName [10] <OID to be assigned> OPTIONAL,
|
|
|
|
|
effectiveRights [11] OCTET STRING OPTIONAL }
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
where
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
effectiveRights ::= SEQUENCE OF SEQUENCE {
|
2000-03-29 20:17:51 +08:00
|
|
|
|
family LDAPOID,
|
|
|
|
|
rights <see <rights> in BNF>,
|
1999-10-07 01:23:54 +08:00
|
|
|
|
whichObject ENUMERATED {
|
|
|
|
|
LDAP_ENTRY (1),
|
|
|
|
|
LDAP_SUBTREE (2)
|
|
|
|
|
},
|
2000-03-29 20:17:51 +08:00
|
|
|
|
dnType "access-id"|"group"|"role"|
|
|
|
|
|
"ipAddress"|"kerberosID"|
|
|
|
|
|
<printableString>,
|
|
|
|
|
subjectDN LDAPString | "public" | "this"
|
1999-10-07 01:23:54 +08:00
|
|
|
|
}
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
If the server does not recognize the request name, it
|
|
|
|
|
MUST return only the response fields from LDAPResult,
|
|
|
|
|
containing the protocolError result code.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
11. Security Considerations
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
This document proposes protocol elements for transmission
|
|
|
|
|
of security policy information. Security considerations
|
|
|
|
|
are discussed throughout this draft. Because subject
|
|
|
|
|
security attribute information is used to evaluate
|
|
|
|
|
decision requests, it is security-sensitive information
|
|
|
|
|
and must be protected against unauthorized modification
|
2000-03-29 20:17:51 +08:00
|
|
|
|
whenever it is stored or transmitted.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 31]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
12. References
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
[LDAPv3] M. Wahl, T. Howes, S. Kille, "Lightweight
|
|
|
|
|
Directory Access Protocol (v3)", RFC 2251, December 1997.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
[ECMA] ECMA, "Security in Open Systems: A Security
|
|
|
|
|
Framework" ECMA TR/46, July 1988
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
[REQTS] Stokes, Byrne, Blakley, "Access Control
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Requirements for LDAP", INTERNET-DRAFT <draft-ietf-
|
|
|
|
|
ldapext-acl-reqts-03.txt>, February 2000.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
[ATTR] M.Wahl, A, Coulbeck, T. Howes, S. Kille,
|
|
|
|
|
"Lightweight Directory Access Protocol (v3)": Attribute
|
|
|
|
|
Syntax Definitions, RFC 2252, December 1997.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
[UTF] M. Wahl, S. Kille, "Lightweight Directory Access
|
|
|
|
|
Protocol (v3)": A UTF-8 String Representation of
|
|
|
|
|
Distinguished Names", RFC 2253, December 1997.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
[Bradner97] Bradner, Scott, "Key Words for use in RFCs to
|
|
|
|
|
Indicate Requirement Levels", RFC 2119.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
AUTHOR(S) ADDRESS
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Ellen Stokes Bob Blakley
|
|
|
|
|
IBM Dascom
|
|
|
|
|
11400 Burnet Rd 5515 Balcones Drive
|
|
|
|
|
Austin, TX 78758 Austin, TX 78731
|
|
|
|
|
USA USA
|
|
|
|
|
mail-to: stokes@austin.ibm.com mail-to: blakley@dascom.com
|
|
|
|
|
phone: +1 512 838 3725 phone: +1 512 458 4037 ext 5012
|
|
|
|
|
fax: +1 512 838 8597 fax: +1 512 458 237
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Debbie Byrne
|
|
|
|
|
IBM
|
|
|
|
|
11400 Burnet Rd
|
|
|
|
|
Austin, TX 78758
|
|
|
|
|
USA
|
|
|
|
|
mail-to: djbyrne@us.ibm.com
|
|
|
|
|
phone: +1 512 838 1960
|
|
|
|
|
fax: +1 512 838 8597
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 32]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Internet-Draft Access Control Model 10 March 2000
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 10 September 2000 [Page 33]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
CONTENTS
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
1. Introduction....................................... 2
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
2. Overview........................................... 2
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
3. Terminology........................................ 4
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
4. The Model.......................................... 6
|
1999-10-07 01:23:54 +08:00
|
|
|
|
4.1 Access Control Information Model............. 6
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
5. Access Control Mechanism Attributes................ 8
|
|
|
|
|
5.1 Root DSE Attribute for Access Control
|
|
|
|
|
Mechanism.................................... 8
|
|
|
|
|
5.2 Subschema Attribute for Access Control
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Mechanism.................................... 8
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
6. Access Control Information Attributes.............. 9
|
|
|
|
|
6.1 The BNF...................................... 10
|
|
|
|
|
6.2 Other Defined Parameters..................... 11
|
2000-03-29 20:17:51 +08:00
|
|
|
|
6.2.1 Families and Rights 11
|
|
|
|
|
6.2.2 DN Types 12
|
|
|
|
|
6.3 Basic ACI Attribute (ldapACI)................ 13
|
|
|
|
|
6.3.1 LDAP Operations 15
|
|
|
|
|
6.3.2 Grant/Deny Evaluation Rules 15
|
|
|
|
|
6.4 Policy Owner Attribute (policyOwner)......... 16
|
|
|
|
|
6.5 ACI Examples................................. 17
|
|
|
|
|
6.5.1 Attribute Definition 17
|
|
|
|
|
6.5.2 Modifying the ldapACI Values 18
|
|
|
|
|
6.5.3 Evaluation 19
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
7. Operational Semantics of Access Control
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Operations......................................... 21
|
|
|
|
|
7.1 Types of actions............................. 21
|
|
|
|
|
7.2 Semantics of Histories....................... 22
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
8. Access Control Parameters for LDAP Controls &
|
2000-03-29 20:17:51 +08:00
|
|
|
|
Extended Operations................................ 25
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
9. Access Control Information (ACI) Controls.......... 26
|
|
|
|
|
9.1 getEffectiveRights Control................... 26
|
|
|
|
|
9.1.1 Request Control 26
|
|
|
|
|
9.1.2 Response Control 27
|
|
|
|
|
9.1.3 Client-Server Interaction 28
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
- i -
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-03-29 20:17:51 +08:00
|
|
|
|
10. Access Control Extended Operation.................. 30
|
|
|
|
|
10.1 LDAP Get Effective Rights Operation.......... 30
|
|
|
|
|
|
|
|
|
|
11. Security Considerations............................ 31
|
|
|
|
|
|
|
|
|
|
12. References......................................... 32
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
- ii -
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
Full Copyright Statement
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
Copyright (C) The Internet Society (1999).<2E> All Rights
|
|
|
|
|
Reserved.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
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.<2E> 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.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
The limited permissions granted above are perpetual and will
|
|
|
|
|
not be revoked by the Internet Society or its successors or
|
|
|
|
|
assigns.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
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.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
- iii -
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|