diff options
author | Russ Allbery <rra@stanford.edu> | 2007-10-06 00:07:01 +0000 |
---|---|---|
committer | Russ Allbery <rra@stanford.edu> | 2007-10-06 00:07:01 +0000 |
commit | 44c5bc5991fb24f872c5f4d032d8ae3fe072fbeb (patch) | |
tree | 45611b661e370d639c36107529a4f9df65e4b6de /README | |
parent | 4d419154bf4c8bae224eaf2a9db8660bd14ddb04 (diff) |
Add standard README and NEWS files and organize TODO a bit more by
release targets.
Diffstat (limited to 'README')
-rw-r--r-- | README | 205 |
1 files changed, 205 insertions, 0 deletions
@@ -0,0 +1,205 @@ + wallet release 0.2 + (secure data management system) + + Written by Russ Allbery <rra@stanford.edu> + + Copyright 2006, 2007 Board of Trustees, Leland Stanford Jr. University. + This software is distributed under a BSD-style license. Please see the + file LICENSE in the distribution for more information. + + This software is alpha-quality, and this release is intended as a + technology preview and API preview. This code has never been deployed + in a production environment and considerable work remains before it will + be ready. See the file TODO in the distribution for the list of work + that remains. + +BLURB + + The wallet is a system for managing secure data, authorization rules to + retrieve or change that data, and audit rules for documenting actions + taken on that data. Objects of various types may be stored in the + wallet or generated on request and retrieved by authorized users. The + wallet tracks ACLs, metadata, and trace information. It is built on top + of the remctl protocol and uses Kerberos GSS-API authentication. One of + the object types it supports is Kerberos keytabs, making it suitable as + a user-accessible front-end to Kerberos kadmind with richer ACL and + metadata operations. + +DESCRIPTION + + The wallet is a client/server system using a central server with a + supporting database and a stand-alone client that can be widely + distributed to users. The server runs on a secure host with access to a + local database; tracks object metadata such as ACLs, attributes, + history, expiration, and ownership; and has the necessary access + privileges to create wallet-managed objects in external systems (such as + Kerberos service principals). The client uses the remctl protocol to + send commands to the server, store and retrieve objects, and query + object metadata. The same client can be used for both regular user + operations and wallet administrative actions. + + All wallet actions are controlled by a fine-grained set of ACLs. Each + object has an owner ACL and optional get, store, show, destroy, and + flags ACLs that control more specific actions. A global administrative + ACL controls access to administrative actions. An ACL consists of zero + or more entries, each of which is a generic scheme and identifier pair, + allowing the ACL system to be extended to use any existing authorization + infrastructure. Currently, the only ACL type supported matches a single + Kerberos principal name, but this will be extended in future releases. + + Currently, the only object type supported is a Kerberos keytab. By + default, whenever a Kerberos keytab object is retrieved from the wallet, + the key is changed in the Kerberos KDC and the wallet returns a keytab + for the new key. However, also included in the wallet distribution is a + script that can be run via remctl on the Kerberos KDC to extract the + existing key for a principal, and the wallet system will use that + interface to retrieve the current key if the unchanging flag is set on a + Kerberos keytab object. + + The Kerberos keytab object implementation also optionally supports + synchronization of keys with an AFS kaserver to aid in migration from + Kerberos v4 to Kerberos v5. Included in the wallet distribution is the + kasetkey client, which can create, change the keys of, and delete + principals from an AFS kaserver, authenticating from a srvtab. It is a + partial replacement for kas or a Kerberos v4 kadmin. + +REQUIREMENTS + + The wallet client is written in C and builds against the C remctl + libraries. You will have to install the remctl client libraries in + order to build it. remctl can be obtained from: + + http://www.eyrie.org/~eagle/software/remctl/ + + The wallet client currently requires MIT Kerberos and will need some + minor portability modifications to build with Heimdal. + + The kasetkey program requires AFS libraries and MIT Kerberos and its + Kerberos v4 compatibility libraries. Currently, kasetkey is built + unconditionally. It will become optional and disabled by default in a + future release. + + The wallet server is written in Perl and requires Perl 5.6.0 or later. + It uses the Perl DBI layer to talk to a database, and therefore the DBI + module and a DBD module for the database it will use must be installed. + Currently, the server has only been tested against SQLite 3 and will + probably not work fully with other database backends. It will be ported + to and tested with MySQL for a later release. + + The wallet server is intended to be run under remctld and use remctld to + do authentication. It can be ported to any other front-end, but doing + so will require writing a new version of server/wallet-backend that + translates the actions in that protocol into calls to the Wallet::Server + Perl object. + + The keytab support in the wallet server requires the kadmin client + program be installed and currently assumes that it follows the syntax of + the MIT Kerberos kadmin client. It also requires that the wallet server + have a keytab for a principal with appropriate access to create, modify, + and delete principals from the KDC (as configured in kadm5.acl on an MIT + Kerberos KDC). + + To support the unchanging flag on keytab objects, the Net::Remctl Perl + module (shipped with remctl) must be installed on the server and the + keytab-backend script must be runnable via remctl on the KDC. This + script also requires an MIT Kerberos kadmin.local binary that supports + the -norandkey option to ktadd. This option will be included in MIT + Kerberos 1.7 and later. + + To support synchronization with an AFS kaserver, the server must have + the Authen::Krb5 Perl module installed. + + To run the full test suite, all of the above software requirements must + be met. Tests requiring some bit of software that's not installed will + be skipped, but all the permutations have not yet been checked. The + test suite also requires the Perl modules Test::More and Test::Pod. + Test::More comes with Perl 5.8 or later and is available separately from + CPAN. Test::Pod is available from CPAN. The test suite also requires + that remctld be installed and available on the user's path or in + /usr/local/sbin or /usr/sbin, that test cases can run services on and + connect to ports 14373 and 14444 on 127.0.0.1, and that kinit and kvno + (which come with Kerberos) be installed and available on the user's + path. The full test suite also requires a local keytab, a srvtab with + ADMIN access to a test AFS kaserver, and some additional configuration. + + If you change the Automake files and need to regenerate Makefile.in, you + will need Automake 1.10 or later. If you change configure.ac or any of + the m4 files it includes and need to regenerate configure or + config.h.in, you will need Autoconf 2.61 or later. + +BUILD AND INSTALLATION + + You can build and install wallet with the standard commands: + + ./configure + make + make install + + The last step will probably have to be done as root. Currently, this + always installs both the client and the server. By default, wallet + installs itself under /usr/local except for the server Perl modules, + which are installed into whatever default site module path is used by + your Perl installation. To change the installation location of the + files other than the Perl modules, pass the --prefix=DIR argument to + configure. To change the Perl module installation location, you will + need to run perl on Makefile.PL in the perl subdirectory of the build + tree with appropriate options and rebuild the module after running make + and before running make install. + + If remctl was installed in a path not normally searched by your + compiler, you must specify its installation prefix to configure with the + --with-remctl=DIR option. If the AFS library headers are not found by + your compiler, specify their location with --with-afs-headers=DIR; + similarly, if the AFS libraries are not found by your compiler, specify + their location with --with-afs-libs=DIR. + + Currently, building in a different directory from the source directory + is not supported due to the complexity of integration with the Perl + build process. This will be corrected in a later release. + +TESTING + + The wallet system comes with an extensive test suite which you can run + with: + + make check + + In order to test the client in a meaningful way and test the keytab + support in the server, however, you will need to do some preparatory + work before running the test suite. Review the files: + + tests/data/README + perl/t/data/README + + and follow the instructions in those files to enable the full test + suite. Note that testing the AFS kaserver requires creating a srvtab + with ADMIN access to a running AFS kaserver; if you don't care about AFS + kaserver synchronization, you may want to skip that part of the test + suite configuration. + + The test suite also requires some additional software be installed that + isn't otherwise used by the wallet. See REQUIREMENTS above for the full + list of requirements for the test suite. The test driver attempts to + selectively skip those tests for which the necessary configuration is + not available, but this has not yet been fully tested in all of its + possible permutations. + + If a test case fails, please run that individual test program directly + and send me the output when reporting the problem. + +THANKS + + To Roland Schemers for the original idea that kicked off this project + and for the original implementation of the leland_srvtab system, which + was its primary inspiration. + + To Anton Ushakov for his prior work on Kerberos v5 synchronization and + his enhancements to kasetkey to read a key from an existing srvtab. + + To Jeffrey Hutzelman for his review of the original wallet design and + multiple useful discussions about what actions and configurations the + wallet would need to support to be useful outside of Stanford. + + To Huaqing Zheng, Paul Pavelko, David Hoffman, and Paul Keser for their + reviews of the wallet system design and comments on design decisions and + security models. |