Blame README

Packit Service aa3010
INTRODUCTION
Packit Service aa3010
Packit Service aa3010
  MUNGE (MUNGE Uid 'N' Gid Emporium) is an authentication service for creating
Packit Service aa3010
  and validating credentials.  It is designed to be highly scalable for use
Packit Service aa3010
  in an HPC cluster environment.  It allows a process to authenticate the
Packit Service aa3010
  UID and GID of another local or remote process within a group of hosts
Packit Service aa3010
  having common users and groups.  These hosts form a security realm that is
Packit Service aa3010
  defined by a shared cryptographic key.  Clients within this security realm
Packit Service aa3010
  can create and validate credentials without the use of root privileges,
Packit Service aa3010
  reserved ports, or platform-specific methods.
Packit Service aa3010
Packit Service aa3010
Packit Service aa3010
RATIONALE
Packit Service aa3010
Packit Service aa3010
  The need for MUNGE arose out of the HPC cluster environment.  Consider the
Packit Service aa3010
  scenario in which a local daemon running on a login node receives a client
Packit Service aa3010
  request and forwards it on to remote daemons running on compute nodes within
Packit Service aa3010
  the cluster.  Since the user has already logged on to the login node, the
Packit Service aa3010
  local daemon just needs a reliable means of ascertaining the UID and GID
Packit Service aa3010
  of the client process.  Furthermore, the remote daemons need a mechanism to
Packit Service aa3010
  ensure the forwarded authentication data has not been subsequently altered.
Packit Service aa3010
Packit Service aa3010
  A common solution to this problem is to use Unix domain sockets to
Packit Service aa3010
  determine the identity of the local client, and then forward this
Packit Service aa3010
  information on to remote hosts via trusted rsh connections.  But this
Packit Service aa3010
  presents several new problems.  First, there is no portable API for
Packit Service aa3010
  determining the identity of a client over a Unix domain socket.  Second,
Packit Service aa3010
  rsh connections must originate from a reserved port; the limited number
Packit Service aa3010
  of reserved ports available on a given host directly limits scalability.
Packit Service aa3010
  Third, root privileges are required in order to bind to a reserved port.
Packit Service aa3010
  Finally, the remote daemons have no means of determining whether the
Packit Service aa3010
  client identity is authentic.  MUNGE solves all of these problems.
Packit Service aa3010
Packit Service aa3010
Packit Service aa3010
USAGE
Packit Service aa3010
Packit Service aa3010
  A process creates a credential by requesting one from the local
Packit Service aa3010
  MUNGE service, either via the munge_encode() C library call or the
Packit Service aa3010
  munge executable.  The encoded credential contains the UID and GID of
Packit Service aa3010
  the originating process.  This process sends the credential to another
Packit Service aa3010
  process within the security realm as a means of proving its identity.
Packit Service aa3010
  The receiving process validates the credential with the use of its local
Packit Service aa3010
  MUNGE service, either via the munge_decode() C library call or the unmunge
Packit Service aa3010
  executable.  The decoded credential provides the receiving process with a
Packit Service aa3010
  reliable means of ascertaining the UID and GID of the originating process.
Packit Service aa3010
  This information can be used for accounting or access control decisions.
Packit Service aa3010
Packit Service aa3010
Packit Service aa3010
DETAILS
Packit Service aa3010
Packit Service aa3010
  The contents of the credential (including any optional payload data) are
Packit Service aa3010
  encrypted with a key shared by all munged daemons within the security realm.
Packit Service aa3010
  The integrity of the credential is ensured by a message authentication
Packit Service aa3010
  code (MAC).  The credential is valid for a limited time defined by its
Packit Service aa3010
  time-to-live (TTL); this presumes clocks within a security realm are
Packit Service aa3010
  in sync.  Unexpired credentials are tracked by the local munged daemon in
Packit Service aa3010
  order to prevent replay attacks on a given host.  Decoding of a credential
Packit Service aa3010
  can be restricted to a particular user and/or group ID.  The payload data
Packit Service aa3010
  can be used for purposes such as embedding the destination's address to
Packit Service aa3010
  ensure the credential is only valid on a specific host.  The internal
Packit Service aa3010
  format of the credential is encoded in a platform-independent manner.
Packit Service aa3010
  And the credential itself is base64 encoded to allow it to be transmitted
Packit Service aa3010
  over virtually any transport.
Packit Service aa3010
Packit Service aa3010
Packit Service aa3010
LICENSE
Packit Service aa3010
Packit Service aa3010
  MUNGE is free software: you can redistribute it and/or modify it under
Packit Service aa3010
  the terms of the GNU General Public License as published by the Free
Packit Service aa3010
  Software Foundation, either version 3 of the License, or (at your option)
Packit Service aa3010
  any later version.
Packit Service aa3010
Packit Service aa3010
  Additionally for the MUNGE library (libmunge), you can redistribute it
Packit Service aa3010
  and/or modify it under the terms of the GNU Lesser General Public License
Packit Service aa3010
  as published by the Free Software Foundation, either version 3 of the
Packit Service aa3010
  License, or (at your option) any later version.
Packit Service aa3010
Packit Service aa3010
Packit Service aa3010
KEYS
Packit Service aa3010
Packit Service aa3010
  Releases are signed with the following GPG key:
Packit Service aa3010
Packit Service aa3010
  pub   4096R/0x3B7ECB2B30DE0871 2011-10-01
Packit Service aa3010
        Key fingerprint = A441 880C 3D4C 7C36 C5DD  41E1 3B7E CB2B 30DE 0871
Packit Service aa3010
  uid                            Chris Dunlap <chris.m.dunlap@gmail.com>
Packit Service aa3010
  uid                            Chris Dunlap <cdunlap@llnl.gov>
Packit Service aa3010
  uid                            Chris Dunlap <dun@imsa.edu>
Packit Service aa3010
  sub   4096R/0x48A5CADDECA74B8A 2011-10-01
Packit Service aa3010
Packit Service aa3010
Packit Service aa3010
HOMEPAGE
Packit Service aa3010
Packit Service aa3010
  https://dun.github.io/munge/