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

1.1     ! root        1: 
        !             2: \chapter {Management}
        !             3: \section {Introduction}
        !             4: 
        !             5: Perhaps the most significant change between QUIPU 5.0 and QUIPU 6.0 will be
        !             6: the addition of the management facilities described in this chapter.  Whilst
        !             7: most of the things specified here can be achieved in QUIPU 5.0, much needs to
        !             8: be done by direct editing of the EDB files.  It is expected to be able to
        !             9: move to a very high level of remote management in the next version.  Except
        !            10: where stated, this chapter applies to QUIPU 6.0.
        !            11: 
        !            12: Most of the focus in this section is in management of the directory itself.
        !            13: However, there is also discussion of some issues relating to management of
        !            14: user data.
        !            15: 
        !            16: 
        !            17: \section {DUA Configuration}
        !            18: 
        !            19: \label {dua-mgt}
        !            20: 
        !            21: Most of the issues of DUA management are those of standard software
        !            22: installation, and beyond the scope of this document.  The use of a Directory
        !            23: for software management might be an interesting research issue.   
        !            24: We assume conventional installation practices.  
        !            25: 
        !            26: In this section, we consider a DUA to be a system accessing the directory
        !            27: using the DAP, which may or may not have a name registered in the directory.
        !            28: The only information which a DUA needs is a list of DSAs to contact, in
        !            29: order to ``get into the system''.  This can be done by use of a system wide
        !            30: file, which may be overridden by the DUA.  This file must be updated
        !            31: manually at present.
        !            32: 
        !            33: A problem with this is that DSAs move, and there is no way to keep the DUA
        !            34: configuration up to date.  It is assumed that each host supporting DUAs has
        !            35: the concept of ``site'', which is a name (e.g.,
        !            36: ``@Country=GB@Organisation=University College London''), and that each host
        !            37: has a local name (e.g., ``pyr1.cs.ucl.ac.uk'').  This is mapped onto an
        !            38: entry in the directory with an attribute in the entry, giving a list of appropriate DSAs (typically 2-3, to
        !            39: give redundancy).  A process is provided which runs on the machine and
        !            40: updates the default address list (file) at intervals.  By automatically
        !            41: installing defaults which point to ``well known'' DSAs, the initial manual
        !            42: step can be avoided.  This leads to the following DUA installation procedure:
        !            43: 
        !            44: \begin {enumerate}
        !            45: \item Bootstrap  by use of default ``well known'' DSAs
        !            46: \item Define Default Site 
        !            47: \item Register Site and Machines in Directory, including list of default
        !            48: DSAs.   This may well require installation of local DSAs as a pre-requisite.
        !            49: \item Run DUA default update program at intervals
        !            50: \end {enumerate}
        !            51: 
        !            52: 
        !            53: DUAs overriding the host defaults should take analogous precautions to
        !            54: ensure information is up to date.  Explicit storing of presentation
        !            55: addresses, other than in a cache, is deprecated.
        !            56: 
        !            57: \section {DSA Management}
        !            58: 
        !            59: The basic level of management is of a single DSA.  This section discussed
        !            60: procedures for dealing with a single DSA.  Installation of a single DSA
        !            61: affects multiple DSAs, and is discussed in Section~\ref{add-dsa}.
        !            62: 
        !            63: \subsection {DSA Static Configuration}
        !            64: 
        !            65: There are tools to view the the configuration of a single DSA.  These are
        !            66: provided by DISH scripts (QUIPU 6.0).
        !            67: Dish is described in the QUIPU Manual \cite{QUIPU.Manual}.
        !            68: First there is an overall summary, which includes.
        !            69: 
        !            70: \begin {itemize}
        !            71: \item Software version
        !            72: \item List of EDBs held 
        !            73: \item Address
        !            74: \end {itemize}
        !            75: 
        !            76: Then for each EDB, the following information may be obtained:
        !            77: 
        !            78: \begin {itemize}
        !            79: \item Version number
        !            80: \item Master / Slave / Cache
        !            81: \item Number of Entries
        !            82: \item Volume of Data
        !            83: \item All RDNs 
        !            84: \item All data
        !            85: \end {itemize}
        !            86: 
        !            87: There will be a tool to list the tree (name only) for all the information
        !            88: held in a DSA.   
        !            89: 
        !            90: \subsection {DSA Dynamic Configuration}
        !            91: 
        !            92: There is a need to determine the operational state of a given DSA.  This
        !            93: will be done either by use of a QUIPU specific operation or by reading
        !            94: pseudo-attributes.  It will include information on:
        !            95: 
        !            96: \begin {itemize}
        !            97: \item  Listens available
        !            98: \item  Calls open
        !            99: \item  Queries in progress
        !           100: \end {itemize}
        !           101: 
        !           102: To be defined.  
        !           103: 
        !           104: \subsection {DSA Control}
        !           105: \label {dsa-control}
        !           106: 
        !           107: There is a need to control the operation of a DSA.  Rather than invent
        !           108: protocol, which would restrict operations to QUIPU DUAs, we utilise a special
        !           109: attribute stored in the DSAs own EDB (``DSAControl'').  This (virtual) attribute is only
        !           110: writable by the DSA Manager, and is not readable.   Values written into it
        !           111: control operation of the DSA.  These are described fully in the QUIPU Manual.
        !           112: The operations include:
        !           113: 
        !           114: \begin {itemize}
        !           115: \item Lock the DSA (to prevent updates).
        !           116: \item Alter the logging level (globally, or on a the current association).
        !           117: This is primarily for debugging.
        !           118: \item Reread EDBs from disk.
        !           119: \item Refresh: reread DSA parameters, and adapt to any changes.  This operation is
        !           120: used when changing the Directory Configuration.
        !           121: \item Stop DSA (cause process to exit)
        !           122: \end {itemize}
        !           123: 
        !           124: 
        !           125: QUIPU 6.0 will add the functionality to control specific EDBs stored in a
        !           126: DSA.
        !           127: 
        !           128: 
        !           129: \subsection {Consistency Checks}
        !           130: 
        !           131: The following consistency checks should be carried out by a DSA.
        !           132: Some are applied at DSA startup.  Others are costly, and so should be
        !           133: applied at intervals using special tools.
        !           134: The following checks should be made:
        !           135: 
        !           136: \begin {enumerate}
        !           137: \item Spurious (Unix) directories in the database
        !           138: \item Extra attribute files
        !           139: 
        !           140: \item For all master non-leaf entries:
        !           141: \begin {itemize}
        !           142: \item
        !           143: Check that the master and slave DSAs
        !           144: referenced (EDB Info) have copies of the implied EDB.
        !           145: \item Check that referenced DSAs are accessible (directly or indirectly).
        !           146: This might be expensive, and so not be undertaken too often.
        !           147: \end {itemize}
        !           148: 
        !           149: 
        !           150: \item For the DSAs own EDB Info (master and slave), as determined from the
        !           151: DSAs own entry:
        !           152: \begin {itemize}
        !           153: \item
        !           154: check that the EDB files
        !           155: are present (should happen at boot time)
        !           156: \item Check that from and to DSAs and correctly listed (they exist, have the
        !           157: implied EDB, and the distance is acceptable)
        !           158: \end {itemize}
        !           159: 
        !           160: Note that the introduction of replication by subtree may well have an effect
        !           161: on this.
        !           162: 
        !           163: \item Check that all file attributes referenced in each EDB  are present
        !           164: 
        !           165: 
        !           166: \end {enumerate}
        !           167: 
        !           168: \section {Configuration Inspection}
        !           169: 
        !           170: It will be important to have tools to enable viewing of the overall
        !           171: Directory Configuration.  These will be provided by the use of DISH scripts.
        !           172: The basic function should operate at an EDB level, and for an EDB should be
        !           173: able to provide:
        !           174: 
        !           175: \begin {itemize}
        !           176: \item Master DSA
        !           177: \item Registered Slave DSAs
        !           178: \item Unregistered Slave DSAs
        !           179: \item Propagation tree 
        !           180: \item References to non-QUIPU DSAs
        !           181: \item Spot shadow information 
        !           182: \item List of child EDBs (a basis for recursive operation)
        !           183: \end {itemize}
        !           184: 
        !           185: This is non-trivial.
        !           186: 
        !           187: 
        !           188: \section {Configuration Changes}
        !           189: 
        !           190: \subsection {General Approach}
        !           191: 
        !           192: This section describes how the directory is manipulated to give a coherent
        !           193: configuration.   There are some general principles:
        !           194: 
        !           195: \begin {itemize}
        !           196: \item  As much as possible is done by use of standard directory operations.
        !           197: \item These operations are for DSA managers, and not naiive users.  Access
        !           198: Control needs to be set up appropriately.
        !           199: \end {itemize}
        !           200: 
        !           201: Many of these operations will be provided by use of DISH scripts, giving
        !           202: manual directions where external action must be taken (e.g., loading
        !           203: software).   
        !           204: 
        !           205: Operations will often affect multiple DSAs.  The tools will be designed so
        !           206: that if later operations fail, earlier ones will be unrolled.  There is
        !           207: clearly some potential for getting the overall system into an incoherent
        !           208: state.  At this point the tool will complain loudly, and expect intelligent
        !           209: intervention.   
        !           210: 
        !           211: \subsection {Add DSA}
        !           212: \label {add-dsa}
        !           213: 
        !           214: Adding a new DSA proceeds in the following manner:
        !           215: 
        !           216: \begin {enumerate}
        !           217: \item Install software at OSI location.  No tailoring should be needed,
        !           218: other than that in the software configuration.
        !           219: Installation will include:
        !           220: \begin {itemize}
        !           221: \item All of the relevant DSA binaries 
        !           222: \item A default DSA tailor file, which will include pointers to ``well
        !           223: known'' DSAs.
        !           224: \item A base directory for the database, owned by an appropriate uid.
        !           225: \end {itemize}
        !           226: 
        !           227: \item Add DSA entry to the global directory (using a DUA pointed at an
        !           228: existing DSA).
        !           229: \label{global-step}
        !           230: 
        !           231: \item Boot new DSA.
        !           232: \item Add local DSA information (over DAP).
        !           233: \item Refresh DSA (see Section~\ref{dsa-control}).
        !           234: \end {enumerate}
        !           235: 
        !           236: For testing purposes, step \ref{global-step} may be replaced by adding an
        !           237: EDB which gives the DSA a dummy name stored locally.  This will enable a DSA
        !           238: to be tested in isolation from the rest of the directory.
        !           239: 
        !           240: \subsection {Remove DSA}
        !           241: 
        !           242: \begin {enumerate}
        !           243: \item Needs name of DSA
        !           244: \item Ensure no EDBs held by DSA
        !           245: \item Turn off DSA
        !           246: \item Remove DSA entry
        !           247: \item Remove software
        !           248: \end {enumerate}
        !           249: 
        !           250: 
        !           251: \subsection {Modify DSA info}
        !           252: 
        !           253: Most DSA information can be changed as an aspect of local configuration.
        !           254: The name of a DSA cannot be changed externally.  It is necessary to remove
        !           255: one DSA and then recreate a new one (or vice versa).  In practice, the tools
        !           256: for DSA creation and EDB manipulation will make this straightforward.  
        !           257: 
        !           258: Moving the OSI location of a DSA is straightforward, as the naming rules will
        !           259: ensure that this propagates without deadlock.  DUAs will adapt to the change
        !           260: by use of backup DSAs (which must not be moved at the same time) and the
        !           261: techniques described in Section~\ref{dua-mgt}.
        !           262: This will cause some level of disruption, and so OSI location changes should be
        !           263: avoided as far as possible.
        !           264: 
        !           265: Note that the presentation address of a DSA is stored in two entries, and
        !           266: that both must be modified.
        !           267: 
        !           268: \subsection {Add new EDB}
        !           269: 
        !           270: AddEntry will only work if the appropriate EDB is in place (although subtree
        !           271: propagation might enable a sensible defaulting mechanism to be achieved).   
        !           272: AddEntry should not create EDBs, as this affects multiple DSAs, and a failure
        !           273: could leave the directory in an inconsistent state.  This also gives
        !           274: management control over the addition of new layers into the DIT.
        !           275: The following steps are followed by the EDB creation tool.
        !           276: 
        !           277: \begin {enumerate}
        !           278: \item Need to specify Name of EDB and Master DSA
        !           279: \item Check the EDB of parent exists
        !           280: \item Add EDB info to DSA entry of the master DSA
        !           281: \item Add master pointer in parent Entry
        !           282: \item Refresh master DSA, which will cause EDB file to be created
        !           283: \end {enumerate}
        !           284: 
        !           285: 
        !           286: \subsection {Add EDB copy}
        !           287: 
        !           288: Usually, an EDB will be given a number of slave copies.
        !           289: 
        !           290: \begin {enumerate}
        !           291: \item Needs name of EDB, slave DSA, update mechanism, and whether EDB will be visible
        !           292: \item Add EDB info to slave DSA
        !           293: \item Modify EDB Info of DSA sending update (often, but not necessarily the
        !           294: master)
        !           295: \item Refresh slave DSA and DSA sending update
        !           296: \item Optionally add slave pointer to entry.  Every EDB will be given a
        !           297: small number of ``visible'' copies.  EDBs high in the tree will often have
        !           298: many private copies.   
        !           299: 
        !           300: \end {enumerate}
        !           301: 
        !           302: \subsection {Remove EDB copy}
        !           303: 
        !           304: An EDB copy is removed as follows:
        !           305: 
        !           306: \begin {enumerate}
        !           307: \item Needs name of EDB and DSA name
        !           308: \item Ensure no copies being sent from this DSA
        !           309: \item Modify EDB Info of sending DSA
        !           310: \item Modify pointer in Entry (if needed)
        !           311: \item Remove EDB Info from DSA
        !           312: \item Refresh DSA
        !           313: 
        !           314: \end {enumerate}
        !           315: 
        !           316: \subsection {Remove EDB}
        !           317: 
        !           318: After removing all copies, a master EDB is removed as follows:
        !           319: 
        !           320: \begin {enumerate}
        !           321: \item Ensure no copies being sent from the DSA
        !           322: \item Ensure that EDB has no remaining entries (might optionally
        !           323: remove all such entries)
        !           324: \item Remove pointer in entry
        !           325: \item Remove EDB from DSA
        !           326: \item Get DSA to refresh (or wait for reboot)
        !           327: \end {enumerate}
        !           328: 
        !           329: \subsection {Change EDB Master}
        !           330: 
        !           331: It is sometimes necessary to change a master or EDB propagation path, and
        !           332: their should be tools to facilitate this.
        !           333: 
        !           334: The propagation path can be viewed as a tree.  The basic tool acts like the
        !           335: unix mv command.  It works as follows:
        !           336: 
        !           337: \begin {enumerate}
        !           338: \item Needs the EDB/DSA pair being moved, and name of new feed DSA
        !           339: \item If incremental update is used, remove item from old feed DSA
        !           340: \item Optionally remove DSA from getEDB list of old feed DSA
        !           341: \item Change source in DSA
        !           342: \item If incremental update is used, add item to new feed DSA
        !           343: \item Optionally add DSA to getEDB list of new feed DSA
        !           344: \item Optionally modify the associated entry list of slaves
        !           345: \item Extra twiddles if moving a parent to a child
        !           346: \end {enumerate}
        !           347: 
        !           348: Changing the master is a special case of this.  In addition:
        !           349: \begin {itemize}
        !           350: \item The EDB entry must be updated to reflect change of master
        !           351: \item The new master must not
        !           352: \end {itemize}
        !           353: 
        !           354: 
        !           355: \subsection {References}
        !           356: 
        !           357: Facilities will be provided to establish, update, and remove references to
        !           358: non-QUIPU DSAs.
        !           359: 
        !           360: \subsection {Spot Shadows}
        !           361: 
        !           362: Facilities will be provided to establish, update, and remove spot shadows.
        !           363: 
        !           364: \section {Bootstrap}
        !           365: 
        !           366: The only thing {\em not} automated is installation of the software, and
        !           367: setup of tsapd info (for non-QUIPU OSI software).  The former might be
        !           368: tractable by use of QUIPU, but is not considered here.  
        !           369: 
        !           370: For the latter, tsapd might contact the Directory dynamically (probably at
        !           371: start time) or a special tool might down load the isoservices file from the
        !           372: directory.   It is almost certainly worth doing one of these.
        !           373: 
        !           374: \section {Authorisation}
        !           375: 
        !           376: QUIPU 6.0 will tackle authorisation of access.  The following will be
        !           377: considered:
        !           378: 
        !           379: \begin {enumerate}
        !           380: \item Who can connect
        !           381: \begin {itemize}
        !           382: \item DSA and DUA rights
        !           383: \item Specification by entry/subtree/filter
        !           384: \end {itemize}
        !           385: 
        !           386: \item Which networks the authorised entity is allowed access to
        !           387: 
        !           388: \item Level of access (authentication policy variations)
        !           389: 
        !           390: \end {enumerate}
        !           391: 
        !           392: 
        !           393: \section {User Data Management}
        !           394: 
        !           395: QUIPU 6.0 will provide additional facilities for checking data stored in the
        !           396: directory.
        !           397: 
        !           398: \subsection {Aliases}
        !           399: 
        !           400: A special interface is provided for managing aliases (built on DISH).
        !           401: This has two functions, achieved as described.
        !           402: 
        !           403: \begin {itemize}
        !           404: \item 
        !           405: 
        !           406: Add alias:
        !           407: \begin {enumerate}
        !           408: \item Check if object pointed to exists and is not an alias
        !           409: \item Add the alias
        !           410: \end {enumerate}
        !           411: 
        !           412: Delete alias:
        !           413: \begin {enumerate}
        !           414: \item Simply remove the entry.
        !           415: \end {enumerate}
        !           416: 
        !           417: \end {itemize}
        !           418: 
        !           419: 
        !           420: 
        !           421: \subsection {Externally mastered data}
        !           422: 
        !           423: It is important to recognise that in most early uses of the the directory,
        !           424: much data will be downloaded from external sources of data.  This needs to
        !           425: deal with:
        !           426: 
        !           427: \begin {itemize}
        !           428: \item There will be multiple external sources, and user modification of data
        !           429: in the {\em same} entry
        !           430: \item Different sources will have different names for the same object
        !           431: \item There must be a mechanism to delete old entries.  This needs to cope
        !           432: with multiple sources.
        !           433: \end {itemize}
        !           434: 
        !           435: The approach taken here, is intended to overcome some of the deficiencies
        !           436: found with earlier bulk loading techniques.
        !           437: 
        !           438: 
        !           439: A basic rule is: Each source of data views a single object to have one
        !           440: unique name;  This unique name is stored as a value of an attribute in an
        !           441: entry in the context of a Distinguished Name (e.g., ``Steve Kille'' in the
        !           442: context of ``@Country=GB@Organisation=University College London='').
        !           443: 
        !           444: This rule will facilitate unique merging from multiple sources.  Tools (DISH
        !           445: scripts) will be provided to facilitate this merging.  It is assumed that
        !           446: such scripts will be adapted to local data.  
        !           447: 
        !           448: The following two tools are expected:
        !           449: 
        !           450: \begin {enumerate}
        !           451: \item Given a list of values relative to a DN:
        !           452: \begin {itemize}
        !           453: \item If there is is an exact match to a single entry, do nothing.
        !           454: \item If there is a unique approximate match, add in the value given as an
        !           455: alternate value (typically of the common name).  Log this match (for 
        !           456: possible human verification).
        !           457: \item If there is no approximate match, create an entry.  Use the value as
        !           458: the distinguished name.  Other parameters should be a set of supplied
        !           459: defaults.  Optionally allocate a randomly generated password.
        !           460: \item If there are multiple approximate matches, or an exact match to
        !           461: multiple entries, break for human intervention
        !           462: to disambiguate.
        !           463: \item  Optionally, delete any children of the DN not identified.
        !           464: \end {itemize}
        !           465: This tool gives a general facility for namespace management.
        !           466: 
        !           467: \item Given an RDN {\em or} unique value relative to a DN, merge in
        !           468: specified attributes.  This can be used to merge in partial data from many
        !           469: sources, having used the previous tool to control the namespace.
        !           470: 
        !           471: \end {enumerate}
        !           472: 
        !           473: 
        !           474: 
        !           475: 
        !           476: \subsection {Consistency Checking}
        !           477: 
        !           478: Tools to check the data stored will include:
        !           479: 
        !           480: \begin {itemize}
        !           481: \item Presence of attributes
        !           482: \item Syntax checking
        !           483: \item Old entries
        !           484: \item Misc (e.g., searching for swear words)
        !           485: \end {itemize}
        !           486: 
        !           487: 
        !           488: \subsection {Changing Names and Arboriculture}
        !           489: 
        !           490: It is useful to be able to change non-leaf names, and to move around
        !           491: portions of the DIT.  This is rather easy to do locally, because of the
        !           492: nature of the QUIPU EDB format.  However, much care must be taken to
        !           493: correctly preserve external references.  Often, there will be the need to
        !           494: use aliases as a part of the transition.
        !           495: 
        !           496: Moving is not supported directly by the directory.  This needs to be done by 
        !           497: creation and deletion, with appropriate additional EDB management (pointers).
        !           498: Tools should be provided to:
        !           499: 
        !           500: \begin {itemize}
        !           501: \item Delete EDBs (recursively)
        !           502: \item Copy EDBs
        !           503: \item Move EDBs (combining the previous two)
        !           504: \end {itemize}
        !           505: 
        !           506: These sound easy, but much care must be taken with the propagation aspects.
        !           507: 

unix.superglobalmegacorp.com

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