• Stephen Frost's avatar
    GSSAPI encryption support · b0b39f72
    Stephen Frost authored
    On both the frontend and backend, prepare for GSSAPI encryption
    support by moving common code for error handling into a separate file.
    Fix a TODO for handling multiple status messages in the process.
    Eliminate the OIDs, which have not been needed for some time.
    
    Add frontend and backend encryption support functions.  Keep the
    context initiation for authentication-only separate on both the
    frontend and backend in order to avoid concerns about changing the
    requested flags to include encryption support.
    
    In postmaster, pull GSSAPI authorization checking into a shared
    function.  Also share the initiator name between the encryption and
    non-encryption codepaths.
    
    For HBA, add "hostgssenc" and "hostnogssenc" entries that behave
    similarly to their SSL counterparts.  "hostgssenc" requires either
    "gss", "trust", or "reject" for its authentication.
    
    Similarly, add a "gssencmode" parameter to libpq.  Supported values are
    "disable", "require", and "prefer".  Notably, negotiation will only be
    attempted if credentials can be acquired.  Move credential acquisition
    into its own function to support this behavior.
    
    Add a simple pg_stat_gssapi view similar to pg_stat_ssl, for monitoring
    if GSSAPI authentication was used, what principal was used, and if
    encryption is being used on the connection.
    
    Finally, add documentation for everything new, and update existing
    documentation on connection security.
    
    Thanks to Michael Paquier for the Windows fixes.
    
    Author: Robbie Harwood, with changes to the read/write functions by me.
    Reviewed in various forms and at different times by: Michael Paquier,
       Andres Freund, David Steele.
    Discussion: https://www.postgresql.org/message-id/flat/jlg1tgq1ktm.fsf@thriss.redhat.com
    b0b39f72
be-secure.c 7.32 KB