ArtiFerrisSicurezza
Sicurezza e dati
Le misure che proteggono un'istanza, descritte con precisione. I dati restano sul proprio server; soltanto i nomi e le versioni dei pacchetti verificati vanno a registry.npmjs.org.
Cosa restituisce il server
Le intestazioni di sicurezza, così come un'istanza le invia.
$ 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- L'autenticazione a due fattori è obbligatoria
- App di autenticazione o passkey, con dieci codici di riserva. Un token distinto e di breve durata rappresenta «password verificata, secondo fattore atteso»; non funge da sessione.
- Password con hash Argon2
- Per gli account locali. Gli account LDAP e OIDC si autenticano presso il loro provider, e gli accessi falliti sono limitati.
- Permessi verificati su ogni rotta
- I permessi di un repository sono applicati dal server, non soltanto nascosti nell'interfaccia. I corpi delle richieste vengono letti solo dopo questi controlli.
- Segreti cifrati con AES-256-GCM
- Password SMTP, LDAP e OIDC, credenziali dei proxy e seed TOTP, con
SECRETS_ENCRYPTION_KEY, che si cambia senza perdite tramite una rotazione. - Token, conservati con hash
- Gli strumenti da riga di comando si autenticano con un token API, che il server non può rileggere. I token che Docker ottiene dopo
docker logindurano 2 minuti. - Una memoria limitata
- I blob Docker vanno su disco man mano che arrivano. I documenti tenuti in memoria attingono a un budget di 1 GiB, e un client ha al massimo quattro corpi in corso.
- Un budget per il traffico anonimo
- Le pagine pubbliche, l'API pubblica e le letture npm e Docker hanno un budget per client e per minuto, condiviso tra le repliche. Il database riceve solo impronte, mai un indirizzo.
- Registri di audit e di sicurezza
- Conservati 365 giorni per impostazione predefinita. Vi sono registrati gli accessi, gli accessi negati e le azioni di amministrazione.
- Connessioni in uscita controllate
- LDAP, SMTP, OIDC e i proxy non raggiungono alcun indirizzo privato, tranne gli intervalli autorizzati. Un proxy invia le sue credenziali soltanto al registry a monte configurato, in
https. - I dati, sul proprio server
- PostgreSQL e un volume, entrambi da salvare in proprio. Con il chart Helm, il pod gira senza privilegi, su un file system in sola lettura.
Provare ArtiFerris, poi distribuire la propria istanza.
L'istanza pubblica permette di scoprire il prodotto. La propria istanza conserva i propri pacchetti.
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