Skip to content

ci(security): propagate least-privilege tokens to docouture workflows - #177

Merged
ivanasabi merged 3 commits into
mainfrom
fix/propagate-workflow-hardening
Oct 5, 2026
Merged

ivanasabi merged 3 commits into
mainfrom
fix/propagate-workflow-hardening

Conversation

@ivanasabi

Copy link
Copy Markdown
Contributor

Resumen

Propaga a este repo el hardening de los workflows docouture-* ya validado en InditexTech/internal-ops#768 (y aplicado en InditexTech/cerbia#20): sustituye la mitigación parcial actual (top-level contents: read manteniendo contents: write por job) por el esquema completo.

Qué cambia (los 6 workflows)

  • permissions: {} a nivel de workflow; permisos por job limitados a lo que cada job necesita (contents: read, pull-requests: write solo en los jobs que comentan).
  • Los pushes a gh-pages, tags docs/* y el bump de docs/.release-version autentican con un App token acotado (owner/repositories/permission-contents: write); GITHUB_TOKEN queda read-only y persist-credentials: false.
  • APP_PRIVATE_KEY pasa al reusable como secret explícito (nada de secrets: inherit).
  • Sin caches de dependencias ni de imágenes Kroki en las lanes que publican (vector de cache-poisoning). Este repo sí tiene Kroki activado — la primera build de cada release/publicación tirará las imágenes en frío (el lane docouture-kroki-cache-warm sigue calentando la cache para pr-verify).
  • Sustituido dorny/paths-filter por un diff git local.
  • Bonus: release ya no dispara con pre-releases de código y el guard de ref usa env (sin template injection).

Verificación

  • zizmor 1.29.0 sobre los 6: 0 hallazgos.
  • YAML válido en los 6 ficheros.
  • Misma matriz probada en producción: internal-ops ejecuta el publish encadenado desde el 10-02 y kumoss cortó una release de docs completa el 10-05 con la variante equivalente (entorno pnpm aparte: no aplica aquí).

Adopts the hardened docouture workflow set from InditexTech/internal-ops#768:
workflow-level permissions {}, job permissions limited to what each job needs,
gh-pages/tag pushes via an App token narrowed to this repository with
contents: write, APP_PRIVATE_KEY passed explicitly to docouture-publish.yml
instead of secrets: inherit, and no dependency or Kroki image caches on the
lanes that publish (cache poisoning vector for anything that ships). Kroki
pulls cold on those lanes; kroki-enabled is true here, so expect a slower
first build per release.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@ivanasabi
ivanasabi force-pushed the fix/propagate-workflow-hardening branch from 3e8a494 to 21d0de2 Compare October 5, 2026 10:19
…w-hardening

# Conflicts:
#	.github/workflows/docouture-release.yml
@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

❗ This Pull Request will not trigger a docs release

A Pull Request with no docs/release label will not trigger a docs site release — label it docs/release if you want this merge to release the docs site.

@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

❌ No changes in CHANGELOG.md

Update the ## [Unreleased] section listing the changes for this release before merging.

@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

❗ This Pull Request will not trigger a docs release

A Pull Request with no docs/release label will not trigger a docs site release — label it docs/release if you want this merge to release the docs site.

@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

Release Preview

Add a release-type/... label to calculate a release for this git-flow pull request.

@ivanasabi
ivanasabi merged commit 1bdace7 into main Oct 5, 2026
@ivanasabi
ivanasabi deleted the fix/propagate-workflow-hardening branch October 5, 2026 11:36
This was referenced Oct 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant