welcome: please sign in

Diff for "DomTool/ArchitectureOverview"

Differences between revisions 2 and 3
Revision 2 as of 2006-12-16 21:24:27
Size: 2034
Editor: AdamChlipala
Comment:
Revision 3 as of 2006-12-16 21:35:38
Size: 3909
Editor: AdamChlipala
Comment: ACLs
Deletions are marked like this. Additions are marked like this.
Line 20: Line 20:
'''Meta note''': This clearly isn't the most direct way to do authentication. I chose to do things this way initially because of that wise security mantra to implement as little as possible of your own cryptography infrastructure. By basing our authentication on that implemented in well-tested OpenAFS code, along with some help from the OpenSSL library, we avoid opportunities to introduce new bugs. But the result definitely isn't so aesthetically pleasing. --AdamChlipala '''Meta note''': This clearly isn't the most direct way to do authentication. I chose to do things this way initially because of that wise security mantra to implement as little as possible of your own cryptography infrastructure. By basing our authentication on that implemented in well-tested OpenAFS code, along with some help from the OpenSSL library, we avoid opportunities to introduce new bugs. But the result definitely isn't so aesthetically pleasing. --AdamChlipala

= Access control lists =

As in the cases of so many fancy systems, DomTool has its own notion of access control lists relevant to the resources it controls. The ACL data is serialized to `$DOMTOOL/acl`, though it is usually accessed via in-memory data structures in the different `DomTool` tools, after they read initial values from that file.

There's nothing novel or surprising about ACLs in DomTool. The ACL list is essentially a set of '''user'''/'''class'''/'''value''' triples. Users are DomTool principals as discussed in the last section. ''Classes'' include things like domain configuration rights, rights to run programs as particular UNIX users, rights to use particular filesystem paths, etc.. ''Values'' are class-specific capabilities, like the name of a domain that the user may configure.

== Standard ACL classes ==

 * `user`: As which UNIX users may this principal run programs?
 * `group`: With which UNIX groups may this principal run programs?
 * `path`: Which filesystem directories is this principal allowed to reference in his configuration? Subdirectories of these are also allowed.
 * `domain`: Which Internet domain names may this principal configure?
 * `priv`: What kinds of admin actions may this principal perform? Useful values include:
   * `all`: Let the principal do whatever he asks. This privilege is required for administration of the ACL database itself.
   * `dns`: The principal may configure DNS settings on servers whose DNS daemons are off-limits to normal members.
   * `mail`: The principal may configure mail settings on servers whose mail daemons are off-limits to normal members.
   * `www`: The principal may configure web settings on servers whose web daemons are off-limits to normal members.
   * `regen`: The principal may run `domtool-admin regen` to reload all domain configuration from scratch.

This page describes the client/server distributed configuration architecture of DomTool. For (largely orthogonal) information on the programming language used for configuration, see DomTool/LanguageReference.

TableOfContents()

1. Conventions for this document

We'll use these conventions:

  • $DOMTOOL refers to /afs/hcoop.net/common/etc/domtool, the root of global DomTool data

2. Users and authentication

The principals that figure into DomTool authentication are either AFS/Kerberos users (like adamc) or HCoop machine hostnames (like mire). When one of these entities connects to another with some request to make, it authenticates using SSL.

To faciliate this, we have our own SSL certificate authority (CA) living in /etc/domtool on deleuze.hcoop.net. We use this CA to sign keys belonging to DomTool-related principals. The DomTool tools only recognize this certificate authority, so, e.g., VeriSign can't grant any DomTool privileges.

Each principal has its CA-signed certificate stored in $DOMTOOL/certs/$NAME.pem, where $NAME is the UNIX username of a user or the one-word hostname of a server. Any user is allowed to read these certificates, which are the public key halves of public key cryptography.

The private keys are stored in $DOMTOOL/keys/$NAME/key.pem. AFS permissions are set such that, besides admins, only the user in question has the ability to read the key data. In contrast to certificates, keys have their own directories because AFS only allows directory-level permissions.

Meta note: This clearly isn't the most direct way to do authentication. I chose to do things this way initially because of that wise security mantra to implement as little as possible of your own cryptography infrastructure. By basing our authentication on that implemented in well-tested OpenAFS code, along with some help from the OpenSSL library, we avoid opportunities to introduce new bugs. But the result definitely isn't so aesthetically pleasing. --AdamChlipala

3. Access control lists

As in the cases of so many fancy systems, DomTool has its own notion of access control lists relevant to the resources it controls. The ACL data is serialized to $DOMTOOL/acl, though it is usually accessed via in-memory data structures in the different DomTool tools, after they read initial values from that file.

There's nothing novel or surprising about ACLs in DomTool. The ACL list is essentially a set of user/class/value triples. Users are DomTool principals as discussed in the last section. Classes include things like domain configuration rights, rights to run programs as particular UNIX users, rights to use particular filesystem paths, etc.. Values are class-specific capabilities, like the name of a domain that the user may configure.

3.1. Standard ACL classes

  • user: As which UNIX users may this principal run programs?

  • group: With which UNIX groups may this principal run programs?

  • path: Which filesystem directories is this principal allowed to reference in his configuration? Subdirectories of these are also allowed.

  • domain: Which Internet domain names may this principal configure?

  • priv: What kinds of admin actions may this principal perform? Useful values include:

    • all: Let the principal do whatever he asks. This privilege is required for administration of the ACL database itself.

    • dns: The principal may configure DNS settings on servers whose DNS daemons are off-limits to normal members.

    • mail: The principal may configure mail settings on servers whose mail daemons are off-limits to normal members.

    • www: The principal may configure web settings on servers whose web daemons are off-limits to normal members.

    • regen: The principal may run domtool-admin regen to reload all domain configuration from scratch.

DomTool/ArchitectureOverview (last edited 2013-01-24 05:18:19 by ClintonEbadi)