Annotation of 43BSDReno/contrib/isode-beta/doc/quipu/design.tex, revision 1.1.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.