feat(auth): annuaire Authentik + portail consoles Guacamole (#76)

- k8s/apps/authentik : IdP OIDC (auth.lab.local), namespace auth —
  server + worker 2026.5.3, Redis in-cluster, PG sur storage-01, PVC media
- k8s/apps/guacamole : portail consoles SSH web s01/g01 (portail.lab.local) —
  guacd + webapp 1.6.0, SSO OIDC vers Authentik, Job initdb idempotent
- ansible : rôle console_user (user sans sudo pour les consoles, s01 + g01),
  bases PG authentik/guacamole, secrets vault (mdp PG + clé SSH console)
- doc : admin/k8s/auth-portal.md (déploiement, config initiale, pièges)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
ALI YESILKAYA 2026-07-06 21:24:46 +02:00 committed by GitHub
parent 09ca0be469
commit 87b786eb57
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 775 additions and 64 deletions

View file

@ -0,0 +1,27 @@
# Rôle `console_user`
Crée l'utilisateur **`console`** (non privilégié, sans sudo) sur les hôtes AlmaLinux.
C'est le compte que **Guacamole** (`portail.lab.local`) utilise pour ouvrir les
consoles SSH web vers storage-01 et gpu-01.
## Variables
| Variable | Défaut | Rôle |
|---|---|---|
| `console_user_name` | `console` | Nom du compte |
| `console_user_home` | `/home/console` | Home |
| `console_user_public_key` | clé ed25519 (défauts) | Clé publique autorisée — appairée avec `vault_console_ssh_private_key` |
## Caveats
- La **clé privée** correspondante est dans le vault (`vault_console_ssh_private_key`) ;
elle se colle dans les paramètres de connexion Guacamole (UI → stockée dans la base
`guacamole` sur storage-01). `make vault-view` pour la récupérer.
- `exclusive: true` sur `authorized_keys` : toute clé ajoutée à la main sur ce compte
sera supprimée au run suivant.
- **Pas de sudo** volontairement. Pour de l'administration, ouvrir une session avec un
compte admin classique, pas via le portail.
- Rotation de clé : régénérer une paire ed25519, remplacer la clé publique ici et la
privée dans le vault + dans les connexions Guacamole, puis re-appliquer le rôle.
Doc portail complète : `admin/k8s/auth-portal.md`.

View file

@ -0,0 +1,7 @@
---
console_user_name: console
console_user_home: /home/console
# Clé publique appairée avec vault_console_ssh_private_key (vault) — la clé privée
# est collée dans les paramètres de connexion Guacamole (UI, stockée dans sa base).
console_user_public_key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKdt0yocK6OvPewhO8l3zHT3t37D+agl9sl0oj4r1OgT console@guacamole-portail"

View file

@ -0,0 +1,19 @@
---
# Utilisateur non privilégié pour les consoles SSH du portail Guacamole
# (portail.lab.local). Pas de sudo : les utilisateurs du portail observent,
# l'administration reste sur les comptes habituels.
- name: Create console user
ansible.builtin.user:
name: "{{ console_user_name }}"
shell: /bin/bash
home: "{{ console_user_home }}"
create_home: true
state: present
- name: Authorize Guacamole SSH key
ansible.posix.authorized_key:
user: "{{ console_user_name }}"
key: "{{ console_user_public_key }}"
exclusive: true
state: present