ADR-0024: one FreeIPA replaces OpenLDAP — write the ADR, implement the IPA side in ansible #316
Labels
No labels
bug
enhancement
in-progress
needs-info
needs-triage
p0
ready-for-agent
ready-for-human
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Cloonar/nixos#316
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Scope
Two deliverables, one issue: (1) ADR-0024 recording the full decision set below, (2) the complete IPA-side implementation in
ansible/so that a playbook run leavesipa.cloonar.comfully structured. No NixOS consumer changes here — those are the follow-up issue.Decisions the ADR must record
ipa.cloonar.com, realmCLOONAR.COM) replaces OpenLDAP entirely (slapd, all nine databases, custom schemas, phpldapadmin). Supersedes the FreeIPA rejections in ADR-0022/0023 and replaces the unimplemented parts of ADR-0023 (mail-KDC-authoritative,{CRYPT}!partition).mailattribute + a group; fleet-wide unique uid; login by email everywhere.CLOONAR.COM; mail's standalone KDC retires; service keytabs re-issued from IPA together with each consumer'skdc=flip.auth_bind = yesagainst IPA, login bymail=%u.mailQuota,cloudQuota, opt.mailSendOnly) in a custom auxiliary class, editable via an IPA Web UI plugin; Dovecot readsmailQuota; Nextcloud keepsuser_ldap(internal username =uid, quota field =cloudQuota) withoidc_loginproxy mode; IPA is the only quota writer.admins/staff/<domain>-users; (2) service accesssvc-*, every one enforced; (3) in-app roles only where consumed; (4) collaborationcloud-*/git-*, app-prefixed, never gates; (5) Unix — the only POSIX groups (unix-admins,adm-*).sss_ssh_authorizedkeysfor keys, sudo via%adm-*group rules,pam_groupfor workstation hardware groups). New user = IPA operations only, zero commits.Ansible implementation (idempotent, re-run = update path, per existing role conventions)
cloonarAccount:mailQuota,cloudQuota,mailSendOnly) via LDIF/ipa-ldap-updater; add it toipaconfigdefault user objectclasses so new users carry it.admins→ allsvc-*;staff→ standard set;<domain>-users→ their granted set; layer-1 → collaboration groups). Layer 5 groups POSIX, everything else non-POSIX.servers/workstations.allow_all;hbac-admins-all(unix-admins→ both hostgroups, servicessshd,login,sudo).cn=sysaccounts,cn=etc) for the NixOS consumers: dovecot, keycloak, nextclouduser_ldap, home-assistant — read-only, per-service, passwords in the per-server sops file per the existing security invariant.allow_alldisabled, a test lookup of the quota attribute.ADR structure/tone per existing
docs/adr/; considered-options sections can draw on the discussion summarized above.