Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 80 additions & 0 deletions i18n/es/_security_assessment/security-assessment/advisories.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
---
layout: default
title: Avisos de seguridad
nav_order: 5
translated_from: 6c1cec5253792365347a7303bf545cdb375681fb
---

# Avisos de seguridad
{: .no_toc }

Cada vulnerabilidad publicada, su gravedad y su corrección
{: .fs-6 .fw-300 }

1. TOC
{:toc}

---

## Avisos publicados

Leídos de la [pestaña Security del repositorio](https://github.com/ansibleforms/ansibleforms/security/advisories) en cada build de este sitio:

{% assign af_advisories = site.data.advisories | sort: "published_at" | reverse %}
{% if af_advisories.size > 0 %}
<table>
<thead>
<tr>
<th>Aviso</th>
<th>Gravedad</th>
<th>Debilidad</th>
<th>Afectadas</th>
<th>Corregido en</th>
<th>Publicado</th>
</tr>
</thead>
<tbody>
{% for a in af_advisories %}
<tr>
<td>
<strong>{{ a.summary | escape }}</strong><br>
<a href="{{ a.html_url }}">{{ a.ghsa_id }}</a>{% if a.cve_id %}<br>{{ a.cve_id }}{% endif %}
</td>
<td>
{{ a.severity | capitalize }}
{%- assign af_cvss = a.cvss_severities.cvss_v3 | default: a.cvss -%}
{%- if af_cvss.score %}<br>CVSS {{ af_cvss.score }}{% endif %}
</td>
<td>
{%- for w in a.cwes %}<span title="{{ w.name | escape }}">{{ w.cwe_id }}</span>{% unless forloop.last %}<br>{% endunless %}{% endfor -%}
</td>
<td>{% for v in a.vulnerabilities %}<code>{{ v.vulnerable_version_range }}</code>{% unless forloop.last %}<br>{% endunless %}{% endfor %}</td>
<td>{% for v in a.vulnerabilities %}{{ v.patched_versions | default: "-" }}{% unless forloop.last %}<br>{% endunless %}{% endfor %}</td>
<td>{{ a.published_at | date: "%Y-%m-%d" }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
No se ha publicado ningún aviso.
{% endif %}

Cada aviso en GitHub da los detalles: el impacto, las condiciones, el vector CVSS y la corrección.

---

## Qué significa para tu versión

Un aviso indica las versiones afectadas y la primera versión corregida. La corrección llega a las versiones con soporte,
[7.x y 6.5.x](development.html#supported-versions), y las versiones anteriores no se parchean: la corrección es actualizar.

Compara la versión de una instancia (**Acerca de** en el menú de ayuda, o `GET /api/v2/version`) con **Afectadas**.

---

## Enterarte de los avisos nuevos

GitHub notifica a quienes siguen el repositorio cuando se publica un aviso:

* En [github.com/ansibleforms/ansibleforms](https://github.com/ansibleforms/ansibleforms), elige **Watch > Custom > Security alerts**.
* El [registro de cambios](../changelog.html) lista cada corrección de seguridad bajo la versión que la incluye.
92 changes: 92 additions & 0 deletions i18n/es/_security_assessment/security-assessment/development.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
---
layout: default
title: Desarrollo seguro
nav_order: 3
translated_from: b5b66a3ebecfb686b0cf33ed8724fe96622c7d0f
---

# Desarrollo seguro
{: .no_toc }

Cómo se revisan y publican los cambios, y qué tiene soporte
{: .fs-6 .fw-300 }

1. TOC
{:toc}

---

## El código fuente

AnsibleForms es código abierto, así que todo lo de esta página puede comprobarse en el propio repositorio:

* El código, su historial y sus pipelines de build son públicos en [github.com/ansibleforms/ansibleforms](https://github.com/ansibleforms/ansibleforms).
* La [licencia](https://github.com/ansibleforms/ansibleforms/blob/main/LICENSE) es GPL-3.0.
* El [registro de cambios](../changelog.html) lista todos los cambios de cada versión, correcciones de seguridad incluidas.

---

## Cómo se fusiona un cambio

Todo cambio llega a `main` mediante un pull request, bajo un ruleset que nadie puede saltarse:

| Regla | Qué significa |
|---|---|
| Pull request obligatorio | No se hace push directo a `main` |
| Comprobaciones obligatorias | El pull request solo se fusiona cuando pasan todas las comprobaciones de abajo |
| Sin force push ni borrado | El historial de `main` no puede reescribirse ni eliminarse |
| Historial lineal | Cada pull request se convierte en un commit, así cada cambio puede rastrearse y revertirse por separado |

Las comprobaciones que debe pasar un pull request:

| Comprobación | Qué hace |
|---|---|
| Client, Server | Los tests unitarios de la interfaz web y del servidor |
| CodeQL | El análisis estático de GitHub del código JavaScript y TypeScript, en busca de inyección, cross-site scripting y otras debilidades |
| Public schema is up to date | El esquema de base de datos que espera el código coincide con el que incluye |
| Title, Branch | El pull request sigue las reglas de nombres, así el registro de cambios se mantiene exacto |

Otras dos se ejecutan en cada pull request e informan sobre él:

* **Database** prueba el servidor en MySQL y MariaDB, y **Browser** maneja la interfaz en un navegador.
* **Dependency review** bloquea una dependencia nueva con una vulnerabilidad conocida alta o crítica.

---

## Análisis del código y dependencias

El código y aquello de lo que depende se vuelven a comprobar tras fusionarse:

* **CodeQL** analiza también cada push a `main` y a las ramas de versión, y todo el código cada semana:
así una regla nueva de CodeQL comprueba también el código fusionado antes de ella.
* **Dependabot** abre un pull request por cada versión nueva de una dependencia: los paquetes npm del servidor y de la
interfaz, los paquetes Python del entorno de ejecución y las GitHub Actions de los pipelines cada semana, y
las imágenes base de los contenedores cada día.
* Las imágenes base se fijan por digest (`node:26-trixie-slim@sha256:...`), así un build usa exactamente la imagen revisada.
Dependabot mueve el digest cuando la imagen se reconstruye en origen.

---

## Versiones e imágenes

Una versión solo la construye y publica GitHub Actions, nunca la máquina de un desarrollador:

* Una versión se corta desde `main` (o `release/6.x`), con un registro de cambios generado a partir de sus pull requests.
* Las imágenes las construye el [workflow Publish](https://github.com/ansibleforms/ansibleforms/blob/main/.github/workflows/publish.yml)
y se suben al GitHub Container Registry, `ghcr.io/ansibleforms/ansibleforms`, junto a las imágenes del entorno de
ejecución. El workflow y sus logs son públicos, así que cualquiera puede ver qué entró en una imagen.
* Las imágenes de la aplicación y del entorno de ejecución se ejecutan como el usuario sin privilegios `node` (uid 1000), nunca como root.

---

## Versiones con soporte

Las correcciones de seguridad van a la versión más reciente de cada línea con soporte:

| Versión | Recibe correcciones de seguridad |
|---|---|
| 7.x | Sí |
| 6.5.x | Sí |
| Anterior a 6.5 | No: la corrección es actualizar |

La [guía de actualización](../upgrading/) explica cómo pasar a una versión más reciente, y [Actualizar a la v7](../upgrade-7.html) el paso desde 6.5.
86 changes: 86 additions & 0 deletions i18n/es/_security_assessment/security-assessment/faq.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
---
layout: default
title: Preguntas de evaluación
nav_order: 6
translated_from: 731a656c844e6262715e5c8d0a7a291e3b6321f2
---

# Preguntas de evaluación
{: .no_toc }

Respuestas breves a las preguntas habituales de los cuestionarios
{: .fs-6 .fw-300 }

1. TOC
{:toc}

---

## Datos y alojamiento

Dónde están los datos, y quién puede llegar a ellos:

| Pregunta | Respuesta |
|---|---|
| ¿Dónde se guardan nuestros datos? | En la base de datos MySQL o MariaDB que gestionas tú, y en la carpeta persistente de tu instancia. AnsibleForms es autoalojado, sin ningún servicio en la nube detrás. |
| ¿Envía datos a sus autores? | No. No hay telemetría, ni informes de uso, ni comprobación de actualizaciones. |
| ¿A qué se conecta? | Solo a los sistemas que configura un administrador: consulta [Conexiones salientes](measures.html#outbound-connections). |
| ¿Usa IA o envía datos a un proveedor de modelos? | Solo con el [asistente de chat](../chat/) activado, que está desactivado por defecto. Entonces envía las definiciones de los formularios y los valores que se rellenan al proveedor que configures. |
| ¿Puede funcionar sin acceso a internet? | Sí. La aplicación no necesita acceso a internet; los playbooks necesitan lo que alcancen sus tareas. |

---

## Cifrado

Qué se cifra, y con qué claves:

| Pregunta | Respuesta |
|---|---|
| ¿Se cifran los datos en tránsito? | Con [HTTPS](../security/https.html), servido por la aplicación o por tu proxy inverso, y `wss://` entre la aplicación y sus entornos de ejecución. |
| ¿Se cifran los datos en reposo? | Todo secreto guardado lo cifra la aplicación con AES-256. Los trabajos y su salida se guardan tal cual: usa el cifrado en reposo de la propia base de datos. Consulta [Secretos guardados](measures.html#stored-secrets). |
| ¿Quién tiene las claves? | Tú: el [`ENCRYPTION_SECRET`](../security/secrets.html) lo defines tú, queda fuera de las copias de seguridad y puede rotarse. |
| ¿Pueden quedarse los secretos en nuestro almacén? | Sí: [HashiCorp Vault y CyberArk](../secret-stores/) se leen cuando un trabajo los necesita. |

---

## Acceso y responsabilidad

Quién puede iniciar sesión, qué puede hacer y qué se registra:

| Pregunta | Respuesta |
|---|---|
| ¿Admite inicio de sesión único? | Sí: LDAP / Active Directory, OpenID Connect y Entra ID. Consulta [Autenticación](../authentication/). |
| ¿Admite autenticación multifactor? | A través del inicio de sesión único: se aplica la MFA de tu proveedor de identidad. Las cuentas locales no tienen MFA propia. |
| ¿Cómo se gestionan los permisos? | Con roles asignados a grupos, que el servidor comprueba en cada petición. Consulta [Permisos](measures.html#permissions). |
| ¿Hay registro de auditoría? | Sí: todo cambio y todo intento denegado, conservado 365 días por defecto y reenviable a syslog. Consulta [Registro de auditoría](measures.html#audit-trail). |
| ¿Hay una contraseña predeterminada? | La primera cuenta admin tiene una contraseña predeterminada pública, que debe cambiarse en el primer inicio de sesión. Consulta [La cuenta admin](../security/hardening.html#the-admin-account). |

---

## Vulnerabilidades y actualizaciones

Cómo se encuentran, corrigen y anuncian los problemas:

| Pregunta | Respuesta |
|---|---|
| ¿Se han encontrado vulnerabilidades? | Sí. Todas las publicadas aparecen en [Avisos de seguridad](advisories.html), con la versión que las corrigió. |
| ¿Cómo informamos de una? | En privado, a través de GitHub: consulta [Informar de una vulnerabilidad](reporting.html). |
| ¿Cómo se comprueba el código? | Análisis estático con CodeQL y revisión de dependencias en cada pull request, tests automáticos y actualizaciones de Dependabot. Consulta [Desarrollo seguro](development.html). |
| ¿Qué versiones reciben correcciones de seguridad? | 7.x y 6.5.x. Consulta [Versiones con soporte](development.html#supported-versions). |
| ¿Cómo nos enteramos de un aviso nuevo? | Sigue las alertas de seguridad del repositorio en GitHub. Consulta [Enterarte de los avisos nuevos](advisories.html#being-told-of-new-advisories). |
| ¿Se ha hecho una prueba de penetración? | No se publica ningún informe de prueba de penetración de terceros. El código es público, así que tu propio equipo o auditor puede evaluarlo, y los hallazgos se notifican como se indica arriba. |

---

## Imágenes y cadena de suministro

De dónde vienen las imágenes, y cómo comprobarlas:

| Pregunta | Respuesta |
|---|---|
| ¿Dónde se publican las imágenes? | En el GitHub Container Registry, `ghcr.io/ansibleforms/ansibleforms`, construidas por workflows públicos de GitHub Actions. Consulta [Versiones e imágenes](development.html#releases-and-images). |
| ¿Los contenedores se ejecutan como root? | No: como el usuario sin privilegios `node`. |
| ¿Están firmadas las imágenes? | Todavía no. Descárgalas por digest (`@sha256:...`) para asegurarte de ejecutar la imagen que revisaste. |
| ¿Hay un SBOM? | Todavía no se publica ninguno con las imágenes. Un escáner como Trivy o Syft lo genera a partir de la imagen. |
| ¿Se escanean las imágenes en busca de vulnerabilidades? | No en el pipeline de publicación. Sus imágenes base se fijan por digest y Dependabot las mantiene al día; escanea las imágenes en tu propio registry para aplicar tu propia política. |
| ¿Bajo qué licencia está? | GPL-3.0, código abierto, sin garantía. |
40 changes: 40 additions & 0 deletions i18n/es/_security_assessment/security-assessment/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---
layout: default
title: Resumen
nav_order: 1
permalink: /security-assessment/
translated_from: 4357493c88da7b9bbd30f0a5ea185be3e6438abd
---

# Evaluación de seguridad
{: .no_toc }

Para revisiones de seguridad: medidas, desarrollo y avisos
{: .fs-6 .fw-300 }

---

## En resumen

AnsibleForms ejecuta playbooks y guarda sus credenciales, así que forma parte de tu cadena de confianza:

* Es **autoalojado**: se ejecuta en tu infraestructura, guarda sus datos en tu base de datos y no envía nada a sus autores.
* Es **código abierto** (GPL-3.0): el código, sus pipelines y todos los avisos son públicos.
* Todo secreto guardado está **cifrado**, todo cambio **auditado**, y los **roles** se comprueban en cada petición.
* Las vulnerabilidades se **notifican en privado**, se corrigen en cada versión con soporte y se **publican**.

---

## En esta sección

Las páginas responden a las preguntas de una revisión de seguridad, desde el diseño hasta la lista de CVE:

| Página | Qué cubre |
|---|---|
| [Medidas de seguridad](measures.html) | Inicio de sesión, permisos, secretos guardados, la auditoría, el navegador, el servidor, las conexiones y los contenedores |
| [Desarrollo seguro](development.html) | Cómo se revisa y prueba un cambio, el análisis del código y las dependencias, cómo se construyen las imágenes, las versiones con soporte |
| [Informar de una vulnerabilidad](reporting.html) | Cómo informar de un problema en privado, y qué ocurre después |
| [Avisos de seguridad](advisories.html) | Cada vulnerabilidad publicada, con su CVE, su gravedad y la versión que la corrige |
| [Preguntas de evaluación](faq.html) | Respuestas breves a las preguntas más habituales de los cuestionarios de seguridad |

Para proteger una instancia en lugar de evaluarla, consulta [Seguridad](../security/) en la guía del administrador.
Loading
Loading