Set-OPS-Public/roles/serveur_icingaweb2/templates/roles.ini.j2
Daniel Allaire 5ecce4282a une console pour le site, et un repli qui ouvrait vers l Internet
Icinga Web 2 gagne un troisieme mode, locale : nginx authentifie en HTTP Basic
et pose REMOTE_USER, l application le croit. Un SITE n a ni annuaire ni Keycloak
— ce sont des services d ecosysteme. Ni backend LDAP ni backend de groupes : un
backend qui vise une ressource inexistante fait echouer chaque ouverture de
session. L habilitation nomme alors une personne, entorse a D-66 ecrite plutot
que contournee.

Deux pieges en chemin : resoudre_annuaire etait appele sans condition et tombait
sur NoneType has no len (default sans son second argument ne remplace pas None),
et le flux du role ne nommait que l edge — le site n en a pas, donc personne ne
pouvait entrer. serveur_grafana portait deja la reponse.

LE DEFAUT DU DEVIS : une sortie vers un role ABSENT de l ecosysteme retombait
sur !SETOPS_INTERNES, la forme de vers l Internet. La frontiere aurait autorise
la console a parler LDAPS a n importe quelle machine du monde, pour joindre un
annuaire qui n existe pas. C est une source vide ouvre le port, cote
destination. Trois regles du meme defaut etaient DEJA posees pour postfix.

La frontiere n est pas ecrite : elle porte la production, et le devis attend un
mot.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 19:11:22 -04:00

22 lines
1 KiB
Django/Jinja

; Géré par Set-OPS (rôle serveur_icingaweb2). Ne pas éditer à la main.
[Administrators]
{% if serveur_icingaweb2_auth == 'locale' %}
; ICI ON NOMME QUELQU'UN, ET C'EST UNE ENTORSE ASSUMEE A D-66.
;
; « Le groupe, jamais des personnes » suppose un annuaire ou le groupe existe. Un SITE
; n'en a pas : ni LDAP, ni Keycloak — ce sont des services d'ecosysteme, et l'hebergeur
; n'en est pas un. Nommer un groupe absent ne protegerait personne, il empecherait
; seulement d'entrer.
;
; Le jour ou un site porte un annuaire, ce role bascule en `ldap` ou `external` et cette
; branche cesse de s'appliquer — sans rien reecrire.
users = "{{ serveur_icingaweb2_admin_utilisateur }}"
{% else %}
; Le GROUPE, jamais des personnes (D-66) : revoquer quelqu'un ne demande alors
; aucun deploiement. `serveur_icingaweb2_admins` reste un repli, vide par defaut.
groups = "{{ serveur_icingaweb2_groupe_admin }}"
{% if serveur_icingaweb2_admins | length > 0 %}
users = "{{ serveur_icingaweb2_admins }}"
{% endif %}
{% endif %}
permissions = "*"