SSSD Manual pages
sssd-kcm
8
File Formats and Conventions
sssd-kcm
SSSD Kerberos Cache Manager
DESCRIPTION
This manual page describes the configuration of the SSSD Kerberos
Cache Manager (KCM). KCM is a process that stores, tracks and
manages Kerberos credential caches. It originates in the Heimdal
Kerberos project, although the MIT Kerberos library also provides
client side (more details on that below) support for the KCM
credential cache.
In a setup where Kerberos caches are managed by KCM, the
Kerberos library (typically used through an application, like
e.g.,
kinit1
,
is a "KCM client"
and the KCM daemon
is being referred to as a "KCM server"
. The client
and server communicate over a UNIX socket.
The KCM server keeps track of each credential caches's owner and
performs access check control based on the UID and GID of the
KCM client. The root user has access to all credential caches.
The KCM credential cache has several interesting properties:
since the process runs in userspace, it is subject to UID namespacing, unlike the kernel keyring
unlike the kernel keyring-based cache, which is shared between all containers, the KCM server is a separate process whose entry point is a UNIX socket
the SSSD implementation stores the ccaches in a database,
typically located at /var/lib/sss/secrets
allowing the ccaches to survive KCM server restarts or machine reboots.
This allows the system to use a collection-aware credential
cache, yet share the credential cache between some or no
containers by bind-mounting the socket.
The KCM default client idle timeout is 5 minutes, this allows
more time for user interaction with command line tools such as kinit.
USING THE KCM CREDENTIAL CACHE
In order to use KCM credential cache, it must be selected as the default
credential type in
krb5.conf5
,
The credentials cache name must be only KCM:
without any template expansions. For example:
[libdefaults]
default_ccache_name = KCM:
Next, make sure the Kerberos client libraries and the KCM server must agree
on the UNIX socket path. By default, both use the same path
/var/run/.heim_org.h5l.kcm-socket. To configure
the Kerberos library, change its kcm_socket
option which
is described in the
krb5.conf5
manual page.
Finally, make sure the SSSD KCM server can be contacted.
The KCM service is typically socket-activated by
systemd
1
.
Unlike
other SSSD services, it cannot be started by adding the
kcm
string to the service
directive.
systemctl start sssd-kcm.socket
systemctl enable sssd-kcm.socket
Please note your distribution may already configure the units
for you.
THE CREDENTIAL CACHE STORAGE
The credential caches are stored in a database, much like SSSD
caches user or group entries. The database is typically
located at /var/lib/sss/secrets
.
OBTAINING DEBUG LOGS
The sssd-kcm service is typically socket-activated
systemd
1
. To generate debug logs, add the following
either to the /etc/sssd/sssd.conf
file directly or as a configuration snippet to
/etc/sssd/conf.d/ directory:
[kcm]
debug_level = 10
Then, restart the sssd-kcm service:
systemctl restart sssd-kcm.service
Finally, run whatever use-case doesn't work for you. The KCM
logs will be generated at
/var/log/sssd/sssd_kcm.log. It is
recommended to disable the debug logs when you no longer need
the debugging to be enabled as the sssd-kcm service can generate
quite a large amount of debugging information.
Please note that configuration snippets are, at the moment,
only processed if the main configuration file at
/etc/sssd/sssd.conf exists at all.
RENEWALS
The sssd-kcm service can be configured to attempt TGT
renewal for renewable TGTs stored in the KCM ccache.
Renewals are only attempted when half of the ticket
lifetime has been reached. KCM Renewals are configured
when the following options are set in the [kcm] section:
tgt_renewal = true
krb5_renew_interval = 60m
SSSD can also inherit krb5 options for renewals from an existing
domain.
tgt_renewal = true
tgt_renewal_inherit = domain-name
The following krb5 options can be configured in the
[kcm] section to control renewal behavior, these
options are described in detail below
krb5_renew_interval
krb5_renewable_lifetime
krb5_lifetime
krb5_validate
krb5_canonicalize
krb5_auth_timeout
CONFIGURATION OPTIONS
The KCM service is configured in the kcm
section of the sssd.conf file. Please note that because
the KCM service is typically socket-activated, it is
enough to just restart the sssd-kcm
service
after changing options in the kcm
section
of sssd.conf:
systemctl restart sssd-kcm.service
The KCM service is configured in the kcm
For a detailed syntax reference, refer to the FILE FORMAT
section of the
sssd.conf
5
manual page.
The generic SSSD service options such as
debug_level
or fd_limit
are
accepted by the kcm service. Please refer to the
sssd.conf
5
manual page for a complete list. In addition,
there are some KCM-specific options as well.
socket_path (string)
The socket the KCM service will listen on.
Default: /var/run/.heim_org.h5l.kcm-socket
Note: on platforms where systemd is supported, the
socket path is overwritten by the one defined in
the sssd-kcm.socket unit file.
max_ccaches (integer)
How many credential caches does the KCM database allow
for all users.
Default: 0 (unlimited, only the per-UID quota is enforced)
max_uid_ccaches (integer)
How many credential caches does the KCM database allow
per UID. This is equivalent to with how many
principals you can kinit
.
Default: 64
max_ccache_size (integer)
How big can a credential cache be per ccache. Each
service ticket accounts into this quota.
Default: 65536
tgt_renewal (bool)
Enables TGT renewals functionality.
Default: False (Automatic renewals disabled)
tgt_renewal_inherit (string)
Domain to inherit krb5_* options from, for use with TGT
renewals.
Default: NULL
SEE ALSO
sssd8
,
sssd.conf5
,