summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2012-09-10 15:54:18 -0400
committerSimo Sorce <simo@redhat.com>2012-10-25 15:53:31 -0400
commit51f30f5ca6366e73f2338150b16e973dc3091fbf (patch)
treeed339b5d98bbfe100518284322cc50a9ecbae223
parentfd03673045060bb71672d49ac4c37c9ff81c3966 (diff)
downloadgss-proxy-51f30f5ca6366e73f2338150b16e973dc3091fbf.tar.gz
gss-proxy-51f30f5ca6366e73f2338150b16e973dc3091fbf.tar.xz
gss-proxy-51f30f5ca6366e73f2338150b16e973dc3091fbf.zip
Add doc about current and future planned behavior
-rw-r--r--proxy/docs/Behavior111
1 files changed, 111 insertions, 0 deletions
diff --git a/proxy/docs/Behavior b/proxy/docs/Behavior
new file mode 100644
index 0000000..7ee93fe
--- /dev/null
+++ b/proxy/docs/Behavior
@@ -0,0 +1,111 @@
+This little document is about the current behavior of the GSSProxy and the
+libgssapi interposer plugin.
+Each is documented separately.
+
+Note that the GSSProxy act as server not only for the interposer plugin but
+also directly for the kernel and potentially for other clients, so the proxy
+behavior may include additional behaviors not directly available to the
+libgssapi interposer plugin.
+
+NOTE:
+This document should be upgraded every time we change the proxy or the plugin
+behavior, however it is my experience that developers forget to do so, so here
+we have also a timestamp from the last update:
+20120910
+
+If it is way too much in the past then something in the actual code may not
+reflect this document anymore, and please yell at the current maintainer to
+bring it up to date :-)
+
+
+GSS Proxy
+-----------------------------------------------------------------------------
+
+
+Application based behavior:
+Currently GSS Proxy can be configure to behave differently for each 'user'
+connecting to it. By user here we really mean euid at this point (we are
+planning to make it possible to act on a per-application basis provided SELinux
+is used and each application has a different label that can be trasmitted via
+SM Rights like calls).
+
+The euid is obtained through a SCM Rigths call on the Unix Socket used to talk
+to the proxy.
+
+Each euid can have a config entry which can specify whether the euid is trusted
+or not and based on specific mechanism some options. The currently only
+supported mechanism is krb5. For this mechanism a euid specific keytab and
+ccache can be specified.
+
+When a 'user' is considered trusted it means it is allowed to command gss-proxy
+to act on behalf of another user (for example init a context as a user
+specified in an optional field in the protocol).
+
+The following table represent the current thinking around default/allowed
+behavior depending on the connecting peer:
+
+--------------------------------------------------------------------
+| Operation | Initiate | Accept |
+|Peer | | |
+--------------------------------------------------------------------
+| |With ccache available | Never allow to accept for |
+|euid not |always try to init | unconfigured euids |
+|explicitly | | |
+|configured in |Use default ccache | |
+|gssproxy.conf |defined in [global] | |
+| | | |
+| |Never use keytab | |
+---------------|----------------------|-----------------------------
+| |With ccache available | If keytab is explicitly |
+|euid X |always try to init | configured always allow to |
+|(referenced | | try to accept via proxy |
+| explicitly |When keytab available | |
+| in a config |init with keytab only | |
+| section) |if following option | |
+| |is set to True: | |
+| |krb5_init_with_keytab | |
+| |defaults to False | |
+---------------|----------------------|-----------------------------
+| | | If keytab is explicitly |
+|euid 0 | | configured always allow to |
+| | | try to accept via proxy |
+| | | |
+| | | Allow to fallback to host |
+| | | keytab if not configured ? |
+--------------------------------------------------------------------
+
+
+
+Credentials:
+At the moment the GSS Proxy cannot be fully stateless due to limitations in
+GSSAPI (they are being addressed in MIT 1.11). The gss-proxy keeps a list of
+credential structs in a ring buffer and sends applications an encrypted token to
+reference them when the same credential needs to be used across multiple calls.
+
+Contexts:
+Context are always exported to the clients once obtained.
+Currently both lucid-type contexts and native MIT format contexts are
+supported.
+
+
+
+
+
+
+
+libgssapi Interposer Plugin
+-----------------------------------------------------------------------------
+
+The Interposer plugin currently tries to perform local only operations first
+and falls back to try proxy communication if it can't obtain
+contexts/credentials using local calls.
+Also an environment variable can be used to change this behavior somewhat
+(NOTE: still inconsistent while developing the feature). The variable is
+called: GSSPROXY_BEHAVIOR and allowed values are: LOCAL_ONLY, LOCAL_FIRST,
+REMOTE_ONLY, REMOTE_FIRST.
+
+Currently only a hardcoded set of mechanism is supported, however in future it
+is planned that the supported set of mechanism to be queried from the gssproxy
+and/or the configuration file instead.
+
+