[Bug 1754365] Re: [FFe]: Enable sssd-secrets service

Andreas Hasenack andreas at canonical.com
Thu Mar 8 15:37:01 UTC 2018


** Description changed:

  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.
- 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).
+ 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"
+     "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
+         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 at bionic-sssd-http-parser:~$ kinit
  Password for ubuntu at EXAMPLE.COM:
  
  ubuntu at bionic-sssd-http-parser:~$ klist
  Ticket cache: KCM:1000
  Default principal: ubuntu at EXAMPLE.COM
  
  Valid starting Expires Service principal
  03/08/18 13:09:12 03/08/18 23:09:12 krbtgt/EXAMPLE.COM at EXAMPLE.COM
-  renew until 03/09/18 13:09:10
+  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 at bionic-sssd-http-parser:~$ kdestroy
  ubuntu at 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
Server, which is subscribed to sssd in 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



More information about the Ubuntu-server-bugs mailing list