Index: openacs-4/packages/acs-core-docs/www/permissions-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions-requirements.html,v diff -u -r1.25 -r1.26 --- openacs-4/packages/acs-core-docs/www/permissions-requirements.html 16 Feb 2005 00:21:03 -0000 1.25 +++ openacs-4/packages/acs-core-docs/www/permissions-requirements.html 4 Jun 2006 00:45:24 -0000 1.26 @@ -1,10 +1,11 @@ -Permissions Requirements

Permissions Requirements

By John McClary Prevost

+ +Permissions Requirements

Permissions Requirements

By John McClary Prevost

OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

Introduction

This document records requirements for the OpenACS 4 Permissions system, a component of the OpenACS 4 Kernel. The Permissions system is meant to unify and centralize the handling of access and control on a given OpenACS 4 system.

Vision Statement

Any multi-user software system must address the general problem of -permissions, or "who can do what, on what." On web services, which +permissions, or "who can do what, on what." On web services, which typically involve large numbers of users belonging to different groups, permissions handling is a critical need: access to content, services, and information generally must be controlled. The OpenACS 4 Permissions system is @@ -18,7 +19,7 @@ a typical module might allow any registered user to access its pages read-only, but only allow members of a certain group to make changes. The way this group was determined also varied greatly between modules. Some modules -used "roles", while others did not. Other modules did all access +used "roles", while others did not. Other modules did all access control based simply on coded rules regarding who can act on a given database row based on the information in that row.

Problems resulting from this piecemeal approach to permissions and access control were many, the two major ones being inconsistency, and @@ -34,38 +35,38 @@ or fall outside the common administrative interfaces.

Use Cases and User Scenarios

Terminology

The primary question an access control system must answer is a three-way relation, like that between the parts of most simple sentences. A simple sentence generally has three parts, a subject, an object, and a verb - in the -context of OpenACS Permissions, our simple sentence is, "Can this party -perform this operation on this target?" Definitions:

The subject of the sentence is "party" - a +context of OpenACS Permissions, our simple sentence is, "Can this party +perform this operation on this target?" Definitions:

The subject of the sentence is "party" - a distinguishable actor whose access may be controlled, this special word is used because one person may be represented by several parties, and one party -may represent many users (or no users at all).

The object of the sentence is "target" - this +may represent many users (or no users at all).

The object of the sentence is "target" - this is an entity, or object, that the party wishes to perform some action on. An -entity/object here is anything that can be put under access control.

The verb of the sentence is "operation" - a behavior on the OpenACS +entity/object here is anything that can be put under access control.

The verb of the sentence is "operation" - a behavior on the OpenACS system subject to control, this word is used to represent the fact that a single operation may be part of many larger actions the system wants to -perform. If "foo" is an operation, than we sometimes refer to the -foo "privilege" to mean that a user has the privilege to perform +perform. If "foo" is an operation, than we sometimes refer to the +foo "privilege" to mean that a user has the privilege to perform that operation.

Examples of the essential question addressed by the Permissions system: Can jane@attacker.com delete the web security forum? Can the Boston office (a party) within the VirtuaCorp intranet/website create its own news instance?

Functional Requirements

10.0 Granularity

The system must support access control down to the level of a single entity (this would imply down to the level of a row in the OpenACS Objects data model).

20.0 Operations

The system itself must be able to answer the essential permissions -question as well as several derived questions.

20.10 Basic Access Check

The system must be able to answer the question, "May party P perform -operation O on target T?"

20.20 Allowed Parties Check

The system must be able to answer the question, "Which parties may -perform operation O on target T?"

20.30 Allowed Operations Check

The system must be able to answer the question, "Which operations may -party P perform on target T?"

20.40 Allowed Targets Check

The system must be able to answer the question, "Upon which targets -may party P perform operation O?"

Behavioral Requirements

40.0 Scale of Privileges

Privileges must be designed with appropriate scope for a given OpenACS -package. Some privileges are of general utility (e.g. "read" and -"write"). Others are of more limited use (e.g. "moderate" +question as well as several derived questions.

20.10 Basic Access Check

The system must be able to answer the question, "May party P perform +operation O on target T?"

20.20 Allowed Parties Check

The system must be able to answer the question, "Which parties may +perform operation O on target T?"

20.30 Allowed Operations Check

The system must be able to answer the question, "Which operations may +party P perform on target T?"

20.40 Allowed Targets Check

The system must be able to answer the question, "Upon which targets +may party P perform operation O?"

Behavioral Requirements

40.0 Scale of Privileges

Privileges must be designed with appropriate scope for a given OpenACS +package. Some privileges are of general utility (e.g. "read" and +"write"). Others are of more limited use (e.g. "moderate" - applies mainly to a package like forum, where many users are contributing content simultaneously). A package defining its own privileges should do so with moderation, being careful not to overload a privilege like -"read" to mean too many things.

50.0 Aggregation of Operations (Privileges)

For user interface purposes, it can be appropriate to group certain -privileges under others. For example, anyone with the "admin" -privilege may also automatically receive "read", "write", -"delete", etc. privileges.

60.0 Aggregation of Parties (Groups)

The system must allow aggregation of parties. The exact method used for -aggregation will probably be addressed by the OpenACS 4 "Groups" +"read" to mean too many things.

50.0 Aggregation of Operations (Privileges)

For user interface purposes, it can be appropriate to group certain +privileges under others. For example, anyone with the "admin" +privilege may also automatically receive "read", "write", +"delete", etc. privileges.

60.0 Aggregation of Parties (Groups)

The system must allow aggregation of parties. The exact method used for +aggregation will probably be addressed by the OpenACS 4 "Groups" system. Regardless of the exact behavior of aggregate parties, if an aggregate party exists, then access which is granted to the aggregate party should be available to all members of that aggregate.

70.0 Scope of Access Control

70.10 Context

There must be a method for objects to receive default access control from