You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -34,24 +34,60 @@ Before enabling remote access, make sure these pieces are in place:
34
34
35
35
ServiceRadar supports several credential paths, but they are not equal.
36
36
37
-
Preferred path:
38
-
39
-
1. The user signs in through ServiceRadar with OIDC or SAML SSO. A local password login is deliberately ineligible for SSH certificate issuance, even if the account previously used SSO.
40
-
2. ServiceRadar evaluates RBAC and the remote access target policy.
41
-
3. ServiceRadar signs a short-lived OpenSSH user certificate with allowed principals, target restrictions, key ID, and TTL.
42
-
4. The browser session and edge path use the short-lived certificate for this one remote access session.
43
-
5. The target host trusts the ServiceRadar user CA and maps the certificate principal to a local or LDAP-backed Linux account.
44
-
45
-
Transitional paths:
46
-
47
-
- User-present password or key material can be used for a session when the operator allows it. The material should remain memory-only for that session.
48
-
- Centrally brokered reusable credentials can be used for tightly scoped break-glass or legacy Proxmox host shell workflows. They must be encrypted centrally, released only for one approved session, and bound to the target, agent, gateway, protocol, and TTL.
49
-
50
-
Avoid:
37
+
### Preferred path: Teleport-style SSO certificates (default in the UI)
38
+
39
+
This is the enterprise default. The browser SSH console no longer asks operators to
40
+
paste private keys for certificate sessions.
41
+
42
+
1. The user signs in through ServiceRadar with OIDC or SAML SSO (Authentik in the
43
+
demo/lab environment). A local password login is deliberately ineligible for
44
+
SSH certificate issuance, even if the account previously used SSO.
45
+
2. The operator opens **Devices → Remote Access → SSH**. The form defaults to
46
+
**SSO certificate** mode. Unix account names come from certificate policy via
SSH certificates authenticate the *session*. They do not create Unix accounts.
318
+
The account named in the browser form (for example `mfreeman`) must already
319
+
exist on the target through FreeIPA (preferred), a local user, or another
320
+
NSS/PAM source.
321
+
322
+
**Decision:** FreeIPA is the fleet Unix IdM. It owns POSIX users/groups,
323
+
**centralized sudo rules**, HBAC, host enrollment, and Kerberos. Prefer
324
+
**2 VMs outside Kubernetes** for production FreeIPA (not Synology LDAP, not
325
+
Authentik LDAP outpost as the sudo plane). Platform runbook:
326
+
platform gitops `k8s/freeipa/README.md` (VM-primary; k8s StatefulSet is lab-only).
327
+
328
+
### Division of labor
329
+
330
+
| System | Role |
331
+
|--------|------|
332
+
| **Authentik** | Human SSO into ServiceRadar (OIDC/SAML). RBAC groups for who may open remote access. Already deployed at `https://auth.carverauto.dev`. Optional LDAP Source from FreeIPA for user/group sync. |
333
+
| **ServiceRadar SSH CA** | Issues short-lived OpenSSH user certificates bound to opaque principals and certificate policy accounts. |
| **Edge agent path** | All interactive traffic still tunnels browser → web-ng → agent-gateway → edge agent → target. FreeIPA does not open a second path around the agent. |
336
+
337
+
Authentik is not a FreeIPA replacement for sudo/HBAC/host join. Certificate
338
+
policy still maps ServiceRadar opaque principals → the same POSIX account names
339
+
FreeIPA provides.
340
+
341
+
Until FreeIPA is online, lab hosts may use local accounts (as on `dusk01` /
342
+
`192.168.2.22`) with the same CA + `AuthorizedPrincipalsFile` layout.
343
+
344
+
345
+
### Authentik groups (Model A)
346
+
347
+
Authentik is the source of truth for people. FreeIPA only receives users who are
348
+
explicitly gated:
349
+
350
+
| Authentik group | Meaning |
351
+
|-----------------|---------|
352
+
| `unix-users` | May have a FreeIPA POSIX account and host login (HBAC). |
353
+
| `unix-sudo` | Subset of Unix users who receive FreeIPA sudo rules. |
354
+
355
+
Operator flow: create/invite user in Authentik → add to `unix-users` (and
356
+
`unix-sudo`if needed) → run the provisioner in platform gitops
357
+
`k8s/freeipa/PROVISIONING.md`. Username must match FreeIPA `uid` and the
358
+
ServiceRadar certificate policy account name.
359
+
360
+
### FreeIPA + sudo (summary)
361
+
362
+
Manage privilege in IPA after clients enroll (`ipa sudorule-*`, `ipa hbacrule-*`,
363
+
host groups / user groups). Do not scatter permanent sudoers on each host for
364
+
fleet operators. See the platform FreeIPA README for install topology, client
365
+
enrollment, Authentik LDAP Source, and example sudo/HBAC commands.
366
+
367
+
### FreeIPA platform docs
368
+
369
+
```text
370
+
# platform gitops repo
371
+
k8s/freeipa/README.md # VM topology, sudo/HBAC, Authentik, checklist
372
+
k8s/freeipa/argocd-application.yaml
373
+
k8s/freeipa/base/ # optional lab StatefulSet only
374
+
```
375
+
376
+
## Lab target: dusk01 (192.168.2.22)
377
+
378
+
Use a disposable lab host for end-to-end SSH certificate tests. Prefer
379
+
**dusk01** (`192.168.2.22`) over Kubernetes worker nodes so enrollment mistakes
380
+
cannot break the control plane.
381
+
382
+
Demo certificate policy already includes target keys `192.168.2.22`, `dusk01`,
383
+
and the inventory device UID when present, with Unix account `mfreeman` and an
384
+
opaque principal of the form `srp_v1_...`.
385
+
386
+
Enrollment (once per host, with the **public** CA key only):
387
+
388
+
```bash
389
+
# On an operator workstation with SSH to dusk01 as a sudo user:
0 commit comments