ArtiFerrisSeguridad

Seguridad y sus datos

Las medidas que protegen una instancia, descritas con precisión. Los datos permanecen en su servidor; solo los nombres y versiones de los paquetes auditados se envían a registry.npmjs.org.

Lo que devuelve el servidor

Las cabeceras de seguridad, tal como las envía una instancia.

$ curl -s -D - -o /dev/null https://app.artiferris.pro/healthz
HTTP/2 200
content-security-policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: https:; font-src 'self' data:; connect-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'
content-type: text/plain; charset=utf-8
cross-origin-opener-policy: same-origin
cross-origin-resource-policy: same-origin
date: Tue, 06 Oct 2026 14:31:01 GMT
permissions-policy: accelerometer=(), autoplay=(), camera=(), display-capture=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(), payment=(), usb=(), xr-spatial-tracking=()
referrer-policy: same-origin
strict-transport-security: max-age=31536000; includeSubDomains; preload
vary: origin
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
content-length: 2
La instancia de producción, versión 0.6.1, consultada en /healthz el 6 de octubre de 2026. El servidor establece la política de contenido, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy y las políticas Cross-Origin; aquí, Strict-Transport-Security y X-XSS-Protection vienen del proxy inverso.
La autenticación en dos pasos es obligatoria
Aplicación de autenticación o clave de acceso, con diez códigos de respaldo. Un token distinto y de corta duración representa «contraseña comprobada, segundo factor pendiente»; no sirve como sesión.
Contraseñas con hash Argon2
Para las cuentas locales. Las cuentas LDAP y OIDC se autentican ante su proveedor, y los inicios de sesión fallidos están limitados.
Permisos comprobados en cada ruta
El servidor aplica los permisos de un repositorio; no solo se ocultan en la interfaz. Los cuerpos de las peticiones solo se leen después de esas comprobaciones.
Secretos cifrados con AES-256-GCM
Contraseñas SMTP, LDAP y OIDC, credenciales de los proxys y semillas TOTP, bajo SECRETS_ENCRYPTION_KEY, que se cambia sin pérdida mediante una rotación.
Tokens, almacenados con hash
Las herramientas de línea de comandos se autentican con un token de API, que el servidor no puede volver a leer. Los tokens que Docker obtiene tras docker login duran 2 minutos.
Una memoria acotada
Los blobs Docker van a disco a medida que llegan. Los documentos mantenidos en memoria tiran de un presupuesto de 1 GiB, y un cliente tiene como mucho cuatro cuerpos en curso.
Un presupuesto para el tráfico anónimo
Las páginas públicas, la API pública y las lecturas npm y Docker tienen un presupuesto por cliente y por minuto, compartido entre réplicas. La base de datos solo recibe huellas, nunca una dirección.
Registros de auditoría y de seguridad
Conservados 365 días por defecto. Allí se registran los inicios de sesión, los accesos denegados y las acciones de administración.
Conexiones salientes controladas
LDAP, SMTP, OIDC y los proxys no alcanzan ninguna dirección privada, salvo los rangos que usted autorice. Un proxy solo envía sus credenciales al registro de origen configurado, por https.
Sus datos, en su servidor
PostgreSQL y un volumen, ambos a su cargo para las copias de seguridad. Con el chart de Helm, el pod se ejecuta sin privilegios, en un sistema de archivos de solo lectura.

La sección Seguridad del README

Evalúe ArtiFerris y luego despliegue su propia instancia.

La instancia pública permite descubrir el producto. Su instancia conserva sus paquetes.

Arrancar la pila con Docker Compose
git clone https://github.com/Masmarino/ArtiFerris.git
cd ArtiFerris
cp .env.example .env
# set POSTGRES_PASSWORD, JWT_SECRET, SECRETS_ENCRYPTION_KEY, PUBLIC_URL and the first admin in .env
docker compose up -d --build