Annotation of 43BSDReno/contrib/isode-beta/doc/quipu/design.tex, revision 1.1

1.1     ! root        1: 
        !             2: \chapter {General Design}
        !             3: 
        !             4: \section {Overview}
        !             5: 
        !             6: This chapter describes general decisions.  
        !             7: In particular, issues relating to use of
        !             8: the OSI Directory are covered,
        !             9: rather than
        !            10: system implementation decisions.
        !            11: However, the two are somewhat bound up.
        !            12: Attention is drawn to the protocol extensions defined in section
        !            13: \ref{edb-ros}.  Note that this does {\em not} affect interactions with
        !            14: non-QUIPU DSAs (or DUAs).
        !            15: The following aspects of the OSI Directory are not handled in QUIPU 5.0.
        !            16: 
        !            17: \begin {itemize}
        !            18: \item The protocol elements for support of directory use of authentication
        !            19: are handled in a conformant manner, but the associated services are not
        !            20: available to the end user.
        !            21: 
        !            22: \item
        !            23: Search is always supported by multicasting.  This does
        !            24: {\em not} affect the basic service offered to the user, but means that
        !            25: prohibition of chaining is not possible in all cases.  
        !            26: 
        !            27: \item For full subtree searches the filter is not applied to the base object.
        !            28: 
        !            29: \item Partial Outcome Qualifier is not supported for List.
        !            30: 
        !            31: \item There are some aspects of distributed operation, where interaction
        !            32: with another conforming system would not be fully general.  In particular,
        !            33: QUIPU might not be able to be configured with references to point at a
        !            34: complex configuration where not all sibling entries are held.  
        !            35: \end {itemize}
        !            36: 
        !            37: Otherwise, QUIPU 5.0 is believed to conform to the standard.
        !            38: 
        !            39: \section {Service Controls}
        !            40: 
        !            41: QUIPU use of service controls conforms to the OSI Directory.
        !            42: Comments are made on those
        !            43: controls where QUIPU makes a choice with respect to some option
        !            44: given by the OSI Directory.
        !            45: 
        !            46: \begin {description}
        !            47: \item [preferChaining]
        !            48: Chaining will be done.
        !            49: 
        !            50: \item [chainingProhibited]
        !            51: Chaining will not be done.
        !            52: For some cases of the search operation, this means that the QUIPU Directory
        !            53: Service will not be able to provide the service, and will return a
        !            54: ``chaining required'' error.
        !            55: 
        !            56: 
        !            57: \item [localScope]
        !            58: The scope will be restricted to the DSA concerned (i.e., no chaining will be
        !            59: done).
        !            60: 
        !            61: \item [dontUseCopy] If this is set, the master data will be used.  This may
        !            62: have a significant impact on performance for operations on entries which are
        !            63: high up the tree and for the DSAs which master this information.  These issues
        !            64: need study.
        !            65: 
        !            66: 
        !            67: \item [dontDereferenceAliases]
        !            68: Followed as per the OSI Directory.
        !            69: 
        !            70: \item [priority]
        !            71: This will be used to help control scheduling within the DSA, but is not done
        !            72: in QUIPU 5.0.
        !            73: 
        !            74: \item [timeLimit]
        !            75: Followed as per the OSI Directory.
        !            76: 
        !            77: \item [sizeLimit]
        !            78: Followed as per the OSI Directory.
        !            79: 
        !            80: \item [scopeOfReferral]
        !            81: The OSI Directory is followed, although QUIPU does not make use of this control.
        !            82: \end {description}
        !            83: 
        !            84: 
        !            85: 
        !            86: \section {Access Control}
        !            87: \label {acl-def}
        !            88: 
        !            89: The term Access Control is used to mean the control of user access
        !            90: to data.  Access Control relies on authentication, which is discussed
        !            91: separately.
        !            92: Although there is no Access Control defined in the standard, it is
        !            93: essential for any real system.  The QUIPU directory handles this by
        !            94: specifying an Access Control List (ACL) for each entry, which is stored as
        !            95: an attribute.  
        !            96: This mechanism allows for access control to be added without change
        !            97: of protocol.
        !            98: The ACL is defined in a manner which also
        !            99: allows specification of rights to update the ACL itself.  
        !           100: The Directory System knows about this attribute, and
        !           101: so can make choices based on it.  QUIPU Access Control is designed so that it is {\em
        !           102: not} required, and so will not prevent QUIPU interworking with other
        !           103: systems.  Non-QUIPU DUAs will not in general be able to specify or update
        !           104: QUIPU Access Control Lists,  as they will not support the special syntax.
        !           105: The syntax
        !           106: is given in Figure~\ref{acl-py}.
        !           107: 
        !           108: \tagrind {acl}{ACL definition}{acl-py}
        !           109: \clearpage
        !           110: 
        !           111: Access control is performed by a structure ACL, which is implemented as an
        !           112: attribute stored with each entry.  The ACL contains a number of elements
        !           113: called ACLInfo, which are applied to various objects.
        !           114: The ACLInfo is
        !           115: composed of two components: the AccessSelector and a list of Access
        !           116: Categories.
        !           117: The ACLSelector
        !           118: describes which DUAs are granted rights, and has four types:
        !           119: 
        !           120: \begin {itemize}
        !           121: \item
        !           122: The DUA corresponding to the entry.
        !           123: \item
        !           124: All DUAs (i.e., public access)
        !           125: \item
        !           126: Specific subtrees of the DIT - typically this will be a single DUA (i.e., a
        !           127: degenerate subtree).
        !           128: This can also be used to restrict information to within Organisations.
        !           129: \item
        !           130: Groups of DUAs.
        !           131: In this case, the entry specified must be of object class ``Organisational
        !           132: Role'' or ``Group of Names''.
        !           133: The DUAs with rights are identified by the ``Role Occupant'' and ``Member''
        !           134: attributes respectively.
        !           135: \end {itemize}
        !           136: 
        !           137: The AccessCategories can be applied to Attributes, Entries, and Children, in
        !           138: the manner described below.
        !           139: The values of access category are ordered, and a given level implies all
        !           140: previous rights.
        !           141: 
        !           142: \subsection {ACLInfo applied to Attributes}
        !           143: 
        !           144: This describes the semantics of each Access Category between the identified
        !           145: attribute and DUAs identified by the AccessSelector.
        !           146: 
        !           147: \begin {description}
        !           148: \item [none]
        !           149: 
        !           150: This prevents any knowledge of the attribute.
        !           151: \item [detect]
        !           152: 
        !           153: Detect if the attribute is present.
        !           154: \item [compare]
        !           155: Compare given value with all attribute values
        !           156: \item [read]
        !           157: Read all attribute values
        !           158: \item [add]
        !           159: As for read, and allows addition of new values.
        !           160: \item [write]
        !           161: As for add, and allows removal (and thus modification) of
        !           162: existing values.
        !           163: \end {description}
        !           164: 
        !           165: \subsection {ACLInfo applied to entries}
        !           166: 
        !           167: \begin {description}
        !           168: \item [none]
        !           169: 
        !           170: This prevents any knowledge of the entry.
        !           171: \item [detect]
        !           172: 
        !           173: This allows the existence of the entry to be determined.
        !           174: \item [compare]
        !           175: This allows the RDN to be compared.
        !           176: \item [read]
        !           177: This allows the RDN to be read.
        !           178: \item [add]
        !           179: This allows new attributes to be added.
        !           180: \item [write]
        !           181: This allows the RDN to be changed, and attributes to be
        !           182: deleted.
        !           183: \end {description}
        !           184: 
        !           185: \subsection {childACL}
        !           186: 
        !           187: This applies to the level 
        !           188: {\em immediately}
        !           189: below the entry in question.
        !           190: There is no implication for levels further down.
        !           191: 
        !           192: \begin {description}
        !           193: \item [none]
        !           194: The DUA is completely blocked from downwards progress.
        !           195: \item [detect]
        !           196: 
        !           197: This allows admission of the existence of lower layers  (e.g., a read
        !           198: would return securityError rather than name error).
        !           199: \item [compare]
        !           200: This allows exactly specified RDNs to be matched, but no more.
        !           201: \item [read]
        !           202: This allows child information to be listed, and for searching of the DIT
        !           203: below this entry.
        !           204: \item [add]
        !           205: This allows new children to be added.
        !           206: \item [write]
        !           207: Add access, and allows deletion of existing children.
        !           208: \end {description}
        !           209: 
        !           210: The add access category is subtly different when applied to the (single valued)
        !           211: ACL attribute.
        !           212: A DUA which has add access to the ACL may modify the ACL Attribute 
        !           213: extend access to any
        !           214: attribute.
        !           215: It may not give more access rights to any attribute or default than the DUA
        !           216: itself has (i.e., if you have write access to an attribute, you can
        !           217: permit someone else to have write access to it {\em if} you have add access to
        !           218: the ACL).
        !           219: 
        !           220: \subsection {Example Use of ACLs}
        !           221: 
        !           222: An example of how this structure might be used is given.
        !           223: An organisation might give a leaf attribute the following values:
        !           224: 
        !           225: \begin {itemize}
        !           226: \item
        !           227: ChildACL is not applicable, and so omitted.
        !           228: \item
        !           229: EntryACL is \{other, read\} + \{group = DSA Managers, write\}, which
        !           230: restricts addition of new attributes to managers.
        !           231: \item
        !           232: DefaultAttributeACL is \{other, read\} + \{self, write\}, which leads to
        !           233: publicly readable attributes modifyable by the owner.
        !           234: \item
        !           235: Common Name is
        !           236: \{other, read\} + \{group = DSA Managers, write\}, which restricts name
        !           237: changes to the manager.
        !           238: \item
        !           239: ACL is \{self, add\} + \{group = DSA Managers, write\}, which allows the
        !           240: user to grant access, but not to reduce it.
        !           241: \item
        !           242: Password is \{self, write\} + \{group = DSA Managers, write\}
        !           243: \end {itemize}
        !           244: 
        !           245: It can be seen that this scheme gives a great deal of flexibility,
        !           246: without the addition of any protocol elements.
        !           247: The encoding is designed so that the volume overhead is not excessive
        !           248: for sensible access policies.
        !           249: 
        !           250: \subsection {An issue for further study}
        !           251: 
        !           252: One serious problem not tackled is that of allowing limited access, where
        !           253: some level of matching is allowed, but exhaustive listing by repeated query
        !           254: is made prohibitively expensive.  No satisfactory solution has been devised,
        !           255: and so this problem is being left for further study.
        !           256: 
        !           257: 
        !           258: 
        !           259: \section {Authentication}
        !           260: 
        !           261: QUIPU takes a minimal approach to authentication.
        !           262: Simple Authentication is seen as a minimum, which is straightforward to
        !           263: implement.
        !           264: The Password attribute is used.
        !           265: 
        !           266: Simple Authentication is used between DUA and DSA.
        !           267: Simple authentication will be used between DSAs in QUIPU 6.0\footnote{It is
        !           268: not used in QUIPU 5.0, because the performance degradation has proven to be
        !           269: too high prior to the introduction of on-disk caching as described in
        !           270: Section~\ref{disk-cache}.}.
        !           271: This is felt to be the minimum level acceptable for some aspects of
        !           272: the planned usage (e.g., user modification of data).
        !           273: Other uses of QUIPU will not require authentication (e.g., lookup of
        !           274: some OSI information).
        !           275: DSAs authenticate each other to provide the basis
        !           276: for mutual trust.  
        !           277: The first DSA will authenticate the DUA on the basis of password plus
        !           278: DUA name in the A\_Associate, as described in the OSI Directory.
        !           279: Subsequent DSAs will trust the DUA parameter given in the DSP (i.e.
        !           280: there is mutual trust between QUIPU DSAs, with DSAs performing mutual
        !           281: authentication).
        !           282: Looping (livelock) is possible, as each DSA must use the directory to
        !           283: perform authentication.   
        !           284: This will be prevented by the DSA naming procedures described in the
        !           285: Section~\ref{dsa-naming} on page \pageref{dsa-naming}, as well as by use of
        !           286: DSA Trace.
        !           287: 
        !           288: \section {Schemas}
        !           289: 
        !           290: Directories should provide a very flexible tool
        !           291: which enables any information to be stored.  There is a danger that Schemas,
        !           292: as specified in the OSI Directory, will lead to procrustean directory implementations
        !           293: which impose unreasonable restrictions.  The QUIPU Directory will not, per
        !           294: se, place restrictions on what can be placed in a DSA.
        !           295: It will give control so that managers may control what is stored in the
        !           296: directory.
        !           297: 
        !           298: \subsection {Matching}
        !           299: 
        !           300: There is a need to understand Attribute Syntaxes in order to perform correct
        !           301: matching.
        !           302: The QUIPU DSA ``knows'' about a limited number of standard
        !           303: syntaxes, and some  special ones defined in this document.
        !           304: These receive an optimised internal encoding, and special (typically
        !           305: faster) matching.
        !           306: Any other structures are mapped to one of the known syntaxes (if the ASN.1 is
        !           307: unambiguous --- e.g. ``PrintableString'' is unambiguous, whereas ``[0] IMPLICIT
        !           308: PrintableString'' is not), or treated as generic ASN.1.
        !           309: 
        !           310: The supported standard syntaxes are:
        !           311: 
        !           312: \begin {enumerate}
        !           313: \item Case Exact String.
        !           314: \item Case Ignore String.
        !           315: \item Numeric String.
        !           316: \item Distinguished Name.
        !           317: \item Boolean
        !           318: \item Integer
        !           319: \item UTC Time
        !           320: \item Object Identifier
        !           321: \item Presentation Address. 
        !           322: \end {enumerate}
        !           323: 
        !           324: Other supported syntaxes are: 
        !           325: 
        !           326: \begin {enumerate}
        !           327: \item ASN.1.  This is a general catch-all, and will deal with most syntaxes
        !           328: which do not have ``special'' rules (see below).
        !           329: \item Object Class (some special QUIPU handling)
        !           330: \item QUIPU ACL
        !           331: \item QUIPU Schema (Tree Structure).
        !           332: \item QUIPU Update Control.
        !           333: \item Photographs encoded in G3 Fax
        !           334: \end {enumerate}
        !           335: 
        !           336: Generic attributes stored as ASN.1, will usually be matched correctly, with
        !           337: the following exceptions:
        !           338: 
        !           339: \begin {itemize}
        !           340: \item
        !           341: There is an IMPLICIT Set in the ASN.1.  The DSA will not detect the
        !           342: set, and so will not know to match components in arbitrary order.
        !           343: 
        !           344: \item
        !           345: If special matching rules apply: for example, special rules to
        !           346: determine equivalence of telephone numbers.  Such rules would need
        !           347: to be represented by code in the DSA.
        !           348: \end {itemize}
        !           349: 
        !           350: \subsection {Structure}
        !           351: 
        !           352: The first aspect of structure is with respect to attributes which may be
        !           353: present in an entry.  A QUIPU DSA will allow an entry to belong to one or
        !           354: more object classes which are known to the DSA (stored in a table).  An
        !           355: entry will typically have a small number of object classes (e.g., TOP
        !           356: (implicit) + Person + Organisational Person + QUIPU Object).  The DSA will
        !           357: maintain a table of mandatory and optional attributes for each object class
        !           358: supported.  This will be follow the guidelines of the standard or
        !           359: specification identifying the object class in question.  From this
        !           360: information, the DSA can determine the permitted and mandatory attributes for a
        !           361: given entry, by calculating the union of all the object classes of that
        !           362: entry.  Free extension (i.e., the ability to store any attribute) was
        !           363: rejected, as there does not appear to be a reasonable mechanism to manage
        !           364: this.  However, it is straightforward for managers to create new object
        !           365: classes as desired.
        !           366: 
        !           367: It is important 
        !           368: to allow management control of what is permitted at a given level.
        !           369: Therefore a ``tree structure''
        !           370: attribute may be created.  
        !           371: This attribute is defined in Figure~\ref{schema-py}.
        !           372: This specifies for the level below,
        !           373: what types of object are permitted.  
        !           374: Each attribute value identifies a class of object which can exist at the level
        !           375: below, and 
        !           376: defines a set of mandatory and optional object classes.
        !           377: This can be considered as defining a (private) object class implied by the
        !           378: combination of these classes.
        !           379: For each type of object, the attribute types permitted in the RDN are also
        !           380: listed.  This is not checked in QUIPU 5.0.
        !           381: The directory knows about the tree structure attribute, and will
        !           382: ensure consistency.  
        !           383: When creating an entry, the DSA must check that it conforms to the
        !           384: treeStructure attribute of the parent entry.
        !           385: When removing information from a treeStructure attribute, the
        !           386: Directory will  check that all of the children conform to the
        !           387: modified attribute.
        !           388: There may be some synchronisation problems in this area, if the tree
        !           389: structure was being modified at the same time as other data was added.
        !           390: However, this is a pathological case, and ignored by QUIPU at runtime.
        !           391: Management tools will be able to detect inconsistency at a later point.
        !           392: 
        !           393: 
        !           394: \tagrind[htb]{schema}{Schema definition}{schema-py}
        !           395: 
        !           396: 
        !           397: It is important to provide a mechanism whereby a user can examine the
        !           398: type structure of the  DIT.
        !           399: This is also achieved by the same mechanism.
        !           400: As well as giving the manager control, it allows the user to
        !           401: determine the (potential) shape of the tree, by reading and
        !           402: displaying the TreeStructure attribute.
        !           403: This can be used as a complement to the standard Search Guide attribute, 
        !           404: which indicates how searches in that region of the DIT are keyed.
        !           405: 
        !           406: \section {Extended Searching}
        !           407: 
        !           408: Phonetic searching is supported for all string based attributes.
        !           409: This will is done by holding a short array of soundex keys for each
        !           410: attribute value.
        !           411: The soundex keys are generated by the DSA at loadtime.
        !           412: Typically, there is  one soundex key for each component of a name.
        !           413: 
        !           414: 
        !           415: There is a problem with some attributes which can be looked at in a general
        !           416: or specific manner (e.g. phone number / home phone number).  This may be
        !           417: tackled in the standards bodies by introduction of Attribute Classes.
        !           418: We propose to investigate this area, prior to 1992.  Attribute Subclasses
        !           419: and Attribute Aliases will be
        !           420: defined {\em internally} to a QUIPU DSA.  Externally, all attributes will be
        !           421: shown, even where this means sending both subclass and superclass.
        !           422: Care must be taken on modifications, as all members of a superclass do not
        !           423: have to be members of the subclass.
        !           424: 
        !           425: There is a serious problem in handling personal names, and some other
        !           426: attributes.  It is intended to handle this as a generalisation of the
        !           427: attribute class mechanism.  Initially, this will be hard coded in as a
        !           428: special case for human names.  A name is considered to be represented as 
        !           429: either a string encoded common name, or a series of other attributes
        !           430: (Surname, Given Name, Initials, Title).  This can be viewed as a structured
        !           431: and unstructured representation of the same information.  These should be
        !           432: modified to be aligned.  All components of the structured form should be
        !           433: represented in the unstructured form, and vice versa.  In addition, any
        !           434: ``preferred form'' should be represented in the common name.  Initially, it
        !           435: will be mandatory for update to be via the structured form.
        !           436: 
        !           437: The details of this section will be expanded, and additions made to the naming
        !           438: architecture.
        !           439: 
        !           440: \section {Update}
        !           441: 
        !           442: Update is achieved by the operations specified in the OSI Directory.
        !           443: This gives fully general update on the basis of three considerations:
        !           444: 
        !           445: \begin {itemize}
        !           446: \item
        !           447: Access Control is specified by an attribute.
        !           448: Thus sophisticated control of remote update can be made.
        !           449: \item
        !           450: Because of the master/slave concept, updates can work in a distributed
        !           451: environment, where multiple DSAs are affected.
        !           452: This is described in Chapter~\ref{dist-update}.
        !           453: \item 
        !           454: Within the OSI Directory, the update operations give no indication as to the DSA
        !           455: where an entry should be added.
        !           456: In QUIPU, the 
        !           457: configuration of the Directory is represented in the Directory, and so
        !           458: updates can be made in the ``correct'' DSA(s).  
        !           459: \end {itemize}
        !           460: 
        !           461: 
        !           462: 
        !           463: 
        !           464: \section {Operation Status}
        !           465: 
        !           466: Some operations will take a long time.  Real implementations also hang up,
        !           467: and block.  It is useful for the user to determine how an operation is
        !           468: progressing.  It is proposed to add a QUIPU specific operation to the DAP,
        !           469: which allows a user to query how a given operation is progressing.  
        !           470: This might be done by a DUA invoked operation, or by a DSA invoked linked
        !           471: operation, which returns status at DUA specified intervals.
        !           472: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.