Public bug reported:

Please enable the sssd-secrets service. This needs the MIR for http-
parser (#1638957) to pass.

[Rationale]
>From the MIR bug (#1638957):
The Debian sssd package has the secrets service enabled, and disabling it in 
the Ubuntu package is part of the delta we carry.

The secrets service can be used as a generic key/value database for
secrets, and one of its consumers is a kerberos KDC via KCM (Kerberos
Cache Manager), implemented by sssd-kcm. sssd-kcm gives users an option
to store the credentials in a cache that persists reboots, as opposed to
when it's stored in the kernel keyring or in /tmp, when that is a tmpfs.

sssd-secrets can also use a remote Custodia
[https://github.com/simo5/custodia] (in Universe) server to store its
secrets there.

sssd-secrets is unix socket activated and won't be running until there
is a connection to that socket.


[Testing]
This is the testing that was done. Only the local store was tested, not the 
Custodia remote server case.

During testing, I found a related bug and filed a bug in debian about it
with a related MP in salsa (https://bugs.debian.org/892315).

Quick simple test
=================
sudo add-apt-repository -y -u ppa:ahasenack/sssd-secrets-1638957
sudo apt install sssd

# Store a secret
$ curl -H "Content-Type: application/json" --unix-socket 
/var/run/secrets.socket -XPUT http://localhost/secrets/foo 
-d'{"type":"simple","value":"foosecret"}';echo
<html>
<head>
<title>200 OK</title></head>
<body>
<h1>OK</h1>
<p>Success</p>
</body>

# retrieve the secret
$ curl -H "Content-Type: application/json" --unix-socket 
/var/run/secrets.socket -XGET http://localhost/secrets/foo;echo
{
    "type": "simple",
    "value": "foosecret"
}

# try to retrieve the same secret but as a different user won't work because 
secrets are per user
$ sudo curl -H "Content-Type: application/json" --unix-socket 
/var/run/secrets.socket -XGET http://localhost/secrets/foo;echo
<html>
<head>
<title>404 Not Found</title></head>
<body>
<h1>Not Found</h1>
<p>The requested resource was not found.</p>
</body>

Extended test
=============
This is a more extended version of this verification and it tests the 
integration of the secrets service between three services: the secrets service 
itself, MIT kerberos client libraries, and the sssd-kcm service (kerberos cache 
manager).

sudo add-apt-repository -y -u ppa:ahasenack/sssd-secrets-1638957
sudo apt install sssd sssd-kcm

# use EXAMPLE.COM for the kerberos realm, and localhost for the admin and kdc 
servers, when prompted
sudo apt install krb5-user krb5-kdc krb5-admin-server

# the kdc will fail to start because there is no realm yet, that's ok. We will 
create it now. Use whatever password you want
sudo krb5_newrealm

# create a kerberos principal. This uses "secret" as a password
sudo kadmin.local -q "addprinc -pw secret ubuntu"

# edit /etc/krb5.conf and tell the library to use KCM by default
[libdefaults]
        default_ccache_name = KCM: # <-- add this line

# create /etc/sssd/sssd.conf with these contents:
[sssd]
config_file_version = 2
services = pam
domains = example.com

[pam]

[domain/example.com]
id_provider = proxy
proxy_lib_name = files
auth_provider = krb5
krb5_server = localhost
krb5_realm = EXAMPLE.COM

# adjust permissions
sudo chmod 0600 /etc/sssd/sssd.conf
sudo chown root:root /etc/sssd/sssd.conf

# (re)start sssd
sudo systemctl restart sssd

# test getting a ticket for "ubuntu". Notice how the cache is using "KCM":
ubuntu@bionic-sssd-http-parser:~$ kinit
Password for ubu...@example.com:

ubuntu@bionic-sssd-http-parser:~$ klist
Ticket cache: KCM:1000
Default principal: ubu...@example.com

Valid starting Expires Service principal
03/08/18 13:09:12 03/08/18 23:09:12 krbtgt/example....@example.com
 renew until 03/09/18 13:09:10

# install ldb-tools
sudo apt install ldb-tools

# perform a search on the secrets database to see the entry created by kcm
$ sudo ldbsearch -H /var/lib/sss/secrets/secrets.ldb cn
# record 1
dn: 
cn=3615a3ca-b857-4ee6-ae70-3a82485276b3-1000,cn=ccache,cn=1000,cn=persistent,cn=kcm

# record 2
dn: cn=ccache,cn=1000,cn=persistent,cn=kcm

# returned 2 records
# 2 entries
# 0 referrals

# destroy the kerberos ticket and confirm it's gone from the secrets database
ubuntu@bionic-sssd-http-parser:~$ kdestroy
ubuntu@bionic-sssd-http-parser:~$ sudo ldbsearch -H 
/var/lib/sss/secrets/secrets.ldb cn
# returned 0 records
# 0 entries
# 0 referrals

** Affects: sssd (Ubuntu)
     Importance: Undecided
     Assignee: Andreas Hasenack (ahasenack)
         Status: In Progress

** Merge proposal linked:
   
https://code.launchpad.net/~ahasenack/ubuntu/+source/sssd/+git/sssd/+merge/341122

** Description changed:

  Please enable the sssd-secrets service. This needs the MIR for http-
  parser (#1638957) to pass.
+ 
+ [Testing]
+ This is the testing that was done.
+ During testing, I found a related bug and filed a bug in debian about it with 
a related MP in salsa (https://bugs.debian.org/892315).
+ 
+ Quick simple test
+ =================
+ sudo add-apt-repository -y -u ppa:ahasenack/sssd-secrets-1638957
+ sudo apt install sssd
+ 
+ # Store a secret
+ $ curl -H "Content-Type: application/json" --unix-socket 
/var/run/secrets.socket -XPUT http://localhost/secrets/foo 
-d'{"type":"simple","value":"foosecret"}';echo
+ <html>
+ <head>
+ <title>200 OK</title></head>
+ <body>
+ <h1>OK</h1>
+ <p>Success</p>
+ </body>
+ 
+ # retrieve the secret
+ $ curl -H "Content-Type: application/json" --unix-socket 
/var/run/secrets.socket -XGET http://localhost/secrets/foo;echo
+ {
+     "type": "simple",
+     "value": "foosecret"
+ }
+ 
+ # try to retrieve the same secret but as a different user won't work because 
secrets are per user
+ $ sudo curl -H "Content-Type: application/json" --unix-socket 
/var/run/secrets.socket -XGET http://localhost/secrets/foo;echo
+ <html>
+ <head>
+ <title>404 Not Found</title></head>
+ <body>
+ <h1>Not Found</h1>
+ <p>The requested resource was not found.</p>
+ </body>
+ 
+ Extended test
+ =============
+ This is a more extended version of this verification and it tests the 
integration of the secrets service between three services: the secrets service 
itself, MIT kerberos client libraries, and the sssd-kcm service (kerberos cache 
manager).
+ 
+ sudo add-apt-repository -y -u ppa:ahasenack/sssd-secrets-1638957
+ sudo apt install sssd sssd-kcm
+ 
+ # use EXAMPLE.COM for the kerberos realm, and localhost for the admin and kdc 
servers, when prompted
+ sudo apt install krb5-user krb5-kdc krb5-admin-server
+ 
+ # the kdc will fail to start because there is no realm yet, that's ok. We 
will create it now. Use whatever password you want
+ sudo krb5_newrealm
+ 
+ # create a kerberos principal. This uses "secret" as a password
+ sudo kadmin.local -q "addprinc -pw secret ubuntu"
+ 
+ # edit /etc/krb5.conf and tell the library to use KCM by default
+ [libdefaults]
+         default_ccache_name = KCM: # <-- add this line
+ 
+ # create /etc/sssd/sssd.conf with these contents:
+ [sssd]
+ config_file_version = 2
+ services = pam
+ domains = example.com
+ 
+ [pam]
+ 
+ [domain/example.com]
+ id_provider = proxy
+ proxy_lib_name = files
+ auth_provider = krb5
+ krb5_server = localhost
+ krb5_realm = EXAMPLE.COM
+ 
+ # adjust permissions
+ sudo chmod 0600 /etc/sssd/sssd.conf
+ sudo chown root:root /etc/sssd/sssd.conf
+ 
+ # (re)start sssd
+ sudo systemctl restart sssd
+ 
+ # test getting a ticket for "ubuntu". Notice how the cache is using "KCM":
+ ubuntu@bionic-sssd-http-parser:~$ kinit
+ Password for ubu...@example.com:
+ 
+ ubuntu@bionic-sssd-http-parser:~$ klist
+ Ticket cache: KCM:1000
+ Default principal: ubu...@example.com
+ 
+ Valid starting Expires Service principal
+ 03/08/18 13:09:12 03/08/18 23:09:12 krbtgt/example....@example.com
+  renew until 03/09/18 13:09:10
+ 
+ # install ldb-tools
+ sudo apt install ldb-tools
+ 
+ # perform a search on the secrets database to see the entry created by kcm
+ $ sudo ldbsearch -H /var/lib/sss/secrets/secrets.ldb cn
+ # record 1
+ dn: 
cn=3615a3ca-b857-4ee6-ae70-3a82485276b3-1000,cn=ccache,cn=1000,cn=persistent,cn=kcm
+ 
+ # record 2
+ dn: cn=ccache,cn=1000,cn=persistent,cn=kcm
+ 
+ # returned 2 records
+ # 2 entries
+ # 0 referrals
+ 
+ # destroy the kerberos ticket and confirm it's gone from the secrets database
+ ubuntu@bionic-sssd-http-parser:~$ kdestroy
+ ubuntu@bionic-sssd-http-parser:~$ sudo ldbsearch -H 
/var/lib/sss/secrets/secrets.ldb cn
+ # returned 0 records
+ # 0 entries
+ # 0 referrals

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1754365

Title:
  [FFe]: Enable sssd-secrets service

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/sssd/+bug/1754365/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to