X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=modules%2Fprivate%2Fdatabases%2Fopenldap%2Fdefault.nix;h=d35aca08de4a51858ea979ba33d961145e078121;hb=4c4652aabf2cb3ac8b40f2856eca07a1df9c27e0;hp=9f72b297df0383abff8ad15102133a8ac288fcd6;hpb=8415083eb6acc343dfa404dbbc12fa0171a48a20;p=perso%2FImmae%2FConfig%2FNix.git diff --git a/modules/private/databases/openldap/default.nix b/modules/private/databases/openldap/default.nix index 9f72b29..d35aca0 100644 --- a/modules/private/databases/openldap/default.nix +++ b/modules/private/databases/openldap/default.nix @@ -2,22 +2,9 @@ let cfg = config.myServices.databases.openldap; ldapConfig = let - kerberosSchema = pkgs.fetchurl { - url = "https://raw.githubusercontent.com/krb5/krb5/master/src/plugins/kdb/ldap/libkdb_ldap/kerberos.schema"; - sha256 = "17fnkkf6s3lznsl7wp6914pqsc78d038rh38l638big8z608ksww"; - }; - puppetSchema = pkgs.fetchurl { - url = "https://raw.githubusercontent.com/puppetlabs/puppet/master/ext/ldap/puppet.schema"; - sha256 = "11bjf5zfvqlim7p9vddcafs0wiq3v8ys77x8h6fbp9c6bdfh0awh"; - }; + eldiron_schemas = pkgs.callPackage ./eldiron_schemas.nix {}; in '' - include ${pkgs.openldap}/etc/schema/core.schema - include ${pkgs.openldap}/etc/schema/cosine.schema - include ${pkgs.openldap}/etc/schema/inetorgperson.schema - include ${pkgs.openldap}/etc/schema/nis.schema - include ${puppetSchema} - include ${kerberosSchema} - include ${./immae.schema} + ${eldiron_schemas} pidfile ${cfg.pids.pid} argsfile ${cfg.pids.args} @@ -25,23 +12,14 @@ let moduleload back_hdb backend hdb - moduleload memberof - database hdb - suffix "${cfg.baseDn}" - rootdn "${cfg.rootDn}" - include ${config.secrets.location}/ldap/password - directory ${cfg.dataDir} - overlay memberof - - TLSCertificateFile ${config.security.acme.directory}/ldap/cert.pem - TLSCertificateKeyFile ${config.security.acme.directory}/ldap/key.pem - TLSCACertificateFile ${config.security.acme.directory}/ldap/fullchain.pem + TLSCertificateFile ${config.security.acme.certs.ldap.directory}/cert.pem + TLSCertificateKeyFile ${config.security.acme.certs.ldap.directory}/key.pem + TLSCACertificateFile ${config.security.acme.certs.ldap.directory}/fullchain.pem TLSCACertificatePath ${pkgs.cacert.unbundled}/etc/ssl/certs/ #This makes openldap crash #TLSCipherSuite DEFAULT sasl-host kerberos.immae.eu - include ${config.secrets.location}/ldap/access ''; in { @@ -107,37 +85,32 @@ in }; config = lib.mkIf cfg.enable { - secrets.keys = [ - { - dest = "ldap/password"; + secrets.keys = { + "ldap/password" = { permissions = "0400"; user = "openldap"; group = "openldap"; text = "rootpw ${cfg.rootPw}"; - } - { - dest = "ldap/access"; + }; + "ldap/access" = { permissions = "0400"; user = "openldap"; group = "openldap"; - text = builtins.readFile "${cfg.accessFile}"; - } - ]; + text = builtins.readFile cfg.accessFile; + }; + "ldap" = { + permissions = "0500"; + user = "openldap"; + group = "openldap"; + isDir = true; + }; + }; users.users.openldap.extraGroups = [ "keys" ]; networking.firewall.allowedTCPPorts = [ 636 389 ]; - services.cron = { - systemCronJobs = [ - '' - 35 1,13 * * * root ${pkgs.openldap}/bin/slapcat -v -b "dc=immae,dc=eu" -f ${pkgs.writeText "slapd.conf" ldapConfig} -l ${cfg.dataDir}/backup.ldif | ${pkgs.gnugrep}/bin/grep -v "^# id=[0-9a-f]*$" - '' - ]; - }; - security.acme.certs."ldap" = config.myServices.databasesCerts // { user = "openldap"; group = "openldap"; - plugins = [ "fullchain.pem" "key.pem" "cert.pem" "account_key.json" ]; domain = "ldap.immae.eu"; postRun = '' systemctl restart openldap.service @@ -146,14 +119,29 @@ in services.filesWatcher.openldap = { restart = true; - paths = [ "${config.secrets.location}/ldap/" ]; + paths = [ config.secrets.fullPaths."ldap" ]; }; services.openldap = { enable = true; dataDir = cfg.dataDir; urlList = [ "ldap://" "ldaps://" ]; + logLevel = "none"; extraConfig = ldapConfig; + extraDatabaseConfig = '' + moduleload memberof + overlay memberof + + moduleload syncprov + overlay syncprov + syncprov-checkpoint 100 10 + + include ${config.secrets.fullPaths."ldap/access"} + ''; + rootpwFile = config.secrets.fullPaths."ldap/password"; + suffix = cfg.baseDn; + rootdn = cfg.rootDn; + database = "hdb"; }; }; }