dorsal : confiance limitee a la forge du site ; chemin public eprouve de bout en bout
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
8186389309
commit
80bd8e88ac
3 changed files with 80 additions and 0 deletions
32
CHANGELOG.md
32
CHANGELOG.md
|
|
@ -1,5 +1,37 @@
|
||||||
# CHANGELOG — Set-OPS
|
# CHANGELOG — Set-OPS
|
||||||
|
|
||||||
|
## 2026-09-29 (41) — Le chemin public éprouvé de bout en bout : Internet → `.61` → WAF → dorsal → forge du site
|
||||||
|
|
||||||
|
**Le contenu vient de la forge du site.** Organisation `essais` (distincte du génome), dépôt
|
||||||
|
public `essai-web` et sa page `public/index.html`, créés par l'API de la forge depuis le runner
|
||||||
|
du site ; lecture anonyme vérifiée.
|
||||||
|
|
||||||
|
**Le dorsal fait confiance à la forge du site, et à elle seule.** Comme le runner : la racine
|
||||||
|
de l'AC du site n'entre pas dans le magasin système, `git config http.<url>.sslCAInfo` la
|
||||||
|
limite à l'adresse de la forge. L'adresse et la racine sont LUES chez le runner du locataire
|
||||||
|
(`serveur_ops_forge_amont`, `serveur_ops_forge_amont_ac`) — pas de seconde copie. Premier
|
||||||
|
passage : le répertoire de la racine manquait (créé désormais). Posé aussi chez Technolibre.
|
||||||
|
|
||||||
|
**Déclaré au plan de Chezlepro** : application `essai_web` (dorsal, port 80,
|
||||||
|
`expose: essai.chezlepro.ca`) et le site `essai` du dorsal ; inventaire régénéré (`make
|
||||||
|
instancier`, écart relu : `serveur_web_dorsal_hostname` et `sans_exposition` du frontal — une
|
||||||
|
variable que seul l'edge lit ; le certificat interne du frontal passe par `client_pki`, filtré).
|
||||||
|
|
||||||
|
**Éprouvé depuis l'Internet** (le wifi du poste sort par un autre accès) :
|
||||||
|
- le DNS public du site répond `essai.chezlepro.ca → 69.70.26.61` — la zone du locataire,
|
||||||
|
notifiée et transférée ;
|
||||||
|
- la page est servie : `.61` → frontal → dorsal ;
|
||||||
|
- une injection SQL est journalisée par le WAF (942100, 949110) et passe (200) : mode
|
||||||
|
détection, comme prévu ;
|
||||||
|
- un nom inconnu sur `.61` est refusé.
|
||||||
|
|
||||||
|
Sondes : `sites-servis` « 1 servi », `frontal` « 1 exposition publique servie, WAF CRS en
|
||||||
|
DetectionOnly ».
|
||||||
|
|
||||||
|
**Reste** : Let's Encrypt (le 443 attend son certificat) ; passer le WAF en blocage après
|
||||||
|
lecture de son journal ; le plancher `/etc/hosts` de Chezlepro n'a pas encore la ligne
|
||||||
|
`essai.chezlepro.ca` (sans effet sur la sonde `plancher`, qui ne compte que le domaine interne).
|
||||||
|
|
||||||
## 2026-09-29 (40) — Le domaine public désigne le frontal ; les noms publics pointent vers l'adresse du locataire ; le dorsal refuse les inconnus
|
## 2026-09-29 (40) — Le domaine public désigne le frontal ; les noms publics pointent vers l'adresse du locataire ; le dorsal refuse les inconnus
|
||||||
|
|
||||||
**Point 3.** `domaines.yml` des deux locataires : le domaine public (`chezlepro.ca`,
|
**Point 3.** `domaines.yml` des deux locataires : le domaine public (`chezlepro.ca`,
|
||||||
|
|
|
||||||
|
|
@ -56,3 +56,18 @@ serveur_web_dorsal_sites: []
|
||||||
# l'edge, pour un nom interne) qui les recoit et les relaie. La sonde mesure ce qu'il ira
|
# l'edge, pour un nom interne) qui les recoit et les relaie. La sonde mesure ce qu'il ira
|
||||||
# chercher — si le frontal est vert et le site muet, la panne est ici.
|
# chercher — si le frontal est vert et le site muet, la panne est ici.
|
||||||
serveur_web_dorsal_sites_port: 80
|
serveur_web_dorsal_sites_port: 80
|
||||||
|
|
||||||
|
# --- LA FORGE DU SITE, SOURCE DES SITES ET DES APPLICATIONS (2026-09-29) -------------------
|
||||||
|
#
|
||||||
|
# Les locataires n'ont plus de forge a eux : le contenu vient de celle du SITE, jointe par
|
||||||
|
# son adresse et signee par l'AC du site. On ne pose pas cette racine dans le magasin
|
||||||
|
# systeme : `git config http.<url>.sslCAInfo` ne l'applique qu'a CETTE forge — le patron du
|
||||||
|
# runner (`serveur_ops`). L'adresse et la racine sont LUES chez le runner du locataire,
|
||||||
|
# qui les declare deja : une seconde copie prendrait du retard.
|
||||||
|
serveur_web_dorsal_forge_site: >-
|
||||||
|
{{ (hostvars[groups['serveur_ops'][0]].serveur_ops_forge_amont | default(''))
|
||||||
|
if (groups.get('serveur_ops') or []) else '' }}
|
||||||
|
serveur_web_dorsal_forge_site_ac: >-
|
||||||
|
{{ (hostvars[groups['serveur_ops'][0]].serveur_ops_forge_amont_ac | default(''))
|
||||||
|
if (groups.get('serveur_ops') or []) else '' }}
|
||||||
|
serveur_web_dorsal_forge_site_ac_depot: "/usr/local/share/setops/ac-forge-site.crt"
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,39 @@
|
||||||
group: root
|
group: root
|
||||||
mode: "0755"
|
mode: "0755"
|
||||||
|
|
||||||
|
# LA CONFIANCE AVANT LE CLONE, LIMITEE A LA FORGE DU SITE (voir defaults/main.yml).
|
||||||
|
- name: Creer le repertoire de la racine de la forge du site
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ serveur_web_dorsal_forge_site_ac_depot | dirname }}"
|
||||||
|
state: directory
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0755"
|
||||||
|
when:
|
||||||
|
- serveur_web_dorsal_forge_site | trim | length > 0
|
||||||
|
- serveur_web_dorsal_forge_site_ac | trim | length > 0
|
||||||
|
|
||||||
|
- name: Deposer la racine de la forge du site
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: "{{ serveur_web_dorsal_forge_site_ac | trim }}"
|
||||||
|
dest: "{{ serveur_web_dorsal_forge_site_ac_depot }}"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0644"
|
||||||
|
when:
|
||||||
|
- serveur_web_dorsal_forge_site | trim | length > 0
|
||||||
|
- serveur_web_dorsal_forge_site_ac | trim | length > 0
|
||||||
|
|
||||||
|
- name: Limiter cette confiance a la forge du site, et a elle seule
|
||||||
|
community.general.git_config:
|
||||||
|
name: "http.{{ serveur_web_dorsal_forge_site | trim }}/.sslCAInfo"
|
||||||
|
scope: global
|
||||||
|
value: "{{ serveur_web_dorsal_forge_site_ac_depot }}"
|
||||||
|
when:
|
||||||
|
- serveur_web_dorsal_forge_site | trim | length > 0
|
||||||
|
- serveur_web_dorsal_forge_site_ac | trim | length > 0
|
||||||
|
- not ansible_check_mode
|
||||||
|
|
||||||
- name: Cloner / mettre a jour chaque app (clone superficiel)
|
- name: Cloner / mettre a jour chaque app (clone superficiel)
|
||||||
ansible.builtin.git:
|
ansible.builtin.git:
|
||||||
repo: "{{ item.depot }}"
|
repo: "{{ item.depot }}"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue