1. Hosting e residenza dei dati
Dove sono conservati e trattati i dati dei clienti:
- Database, autenticazione e archiviazione file su Supabase, regione eu-central-1 (Francoforte, Germania).
- Hosting web e funzioni server su Vercel, ancorati a fra1 (Francoforte). Le pagine pubbliche uguali per ogni visitatore, come le guide, sono anche memorizzate nella cache della rete globale di Vercel. Alcuni dati di telemetria della piattaforma transitano negli Stati Uniti sulla base delle Clausole Contrattuali Tipo (SCC) UE.
- Risoluzione DNS tramite la rete anycast globale di Cloudflare. Lì non viene memorizzato alcun dato applicativo.
- Email dell'account e di notifica tramite Heinlein Hosting GmbH (Mailbox.org), Berlino, Germania.
- Se utilizza una funzione IA (la lettura dei certificati, o Chiedi al gregge nel suo test chiuso), ciò che serve a quella funzione viene inviato ad Anthropic, che lo conserva negli Stati Uniti e può trattarlo in qualsiasi regione usata da Anthropic. Vedere l'Informativa privacy, Sezione 7.
- Chi si iscrive alla newsletter: il suo indirizzo email viene usato da Resend per inviarla. Resend conserva i dati dell'account negli Stati Uniti, sulla base delle Clausole Contrattuali Tipo UE. Nessun dato dell'allevamento arriva a Resend.
- Chi sceglie Continua con Google: Google gestisce quell'accesso come titolare autonomo del trattamento. Non è uno dei nostri sub-responsabili.
2. Cifratura
Tutto ciò che passa tra il browser e AlpacaKeep viaggia cifrato (TLS 1.2 o superiore). Le richieste non cifrate vengono reindirizzate all'indirizzo sicuro, e il sito indica ai browser di usare solo l'indirizzo sicuro (HSTS). I dati conservati sono cifrati con AES-256 dal nostro fornitore del database, Supabase. Foto e documenti caricati sono conservati nella stessa regione di Francoforte del database.
3. Modello di autorizzazione
Ogni richiesta proveniente da una sessione del browser con accesso effettuato passa attraverso la Row-Level Security (RLS) di PostgreSQL: è il database stesso a verificare, riga per riga, se il Suo ruolo in quell'allevamento lo consente. I livelli sono quattro: solo proprietario, accesso finanziario (Proprietario e Co-proprietario), accesso in scrittura (si aggiunge l'Operaio agricolo) e qualsiasi membro (si aggiunge il Visualizzatore). La maggior parte delle policy usa la funzione helper my_farm_ids(tier); l'archiviazione dei file e le funzioni del database usano has_farm_permission(farm_id, tier). Le schermate dell'app non sono il confine di sicurezza: anche una richiesta falsificata non può leggere dati che una policy nega.
Alcune operazioni lato server usano una chiave service role che aggira le RLS, perché agiscono senza una sessione con accesso effettuato oppure tra due allevamenti. Ognuna esegue prima un proprio controllo, ad esempio un segreto condiviso, una firma di pagamento, il ruolo della persona che ha effettuato l'accesso o un limite di frequenza. Sono:
- Job notturni pianificati: pulizia secondo i tempi di conservazione, cancellazione degli account al termine del periodo di attesa, scadenza dei piani con le relative email, manutenzione dell'archiviazione e un riepilogo giornaliero per l'operatore.
- Fatturazione: il webhook di pagamento Stripe, il collegamento di un allevamento al suo cliente Stripe e la registrazione di una disdetta o di un recesso, compreso il modulo pubblico di recesso.
- Il controllo di stato usato dal nostro monitoraggio della disponibilità.
- Il registro delle email inviate, attraverso cui passa ogni email in uscita, per far rispettare i limiti di invio.
- Richieste degli acquirenti: la ricezione di una richiesta da un visitatore, la conversazione dell'acquirente tramite link via email o account acquirente, l'indirizzo di notifica del venditore e la visualizzazione su richiesta del numero di telefono di un allevamento.
- Pagine pubbliche per visitatori senza accesso: link firmati a breve scadenza per i documenti che un venditore ha pubblicato su una pagina di vendita, e la pagina pubblica della mandria, il widget per siti web e l'API pubblica in sola lettura.
- Trasferimenti di animali tra due allevamenti: la copia dei file trasferiti dall'archivio del venditore e l'aggiornamento delle pagine pubbliche del venditore.
- Funzioni IA: la registrazione del risultato della lettura dei certificati e di Chiedi al gregge, dopo che la richiesta della persona con accesso effettuato è stata verificata.
- Iscrizioni alla newsletter e all'accesso anticipato.
- La console di amministrazione dell'operatore, che richiede un codice da un'app di autenticazione (vedere la sezione 7).
La chiave esiste solo sul server e non viene mai inviata al browser.
4. Registro delle attività
Ogni modifica salvata nell'app scrive una voce nella tabella activity_log: chi ha fatto cosa e quando, con i campi modificati o il contesto della modifica. Le voci di routine sono conservate per 24 mesi; tutte le altre (sicurezza, aspetti legali, finanze, membri e registro degli animali) sono conservate finché esiste l'allevamento e vengono eliminate insieme a esso. La maggior parte dei dati che elimina (animali, eventi, attività e simili) viene rimossa definitivamente 24 mesi dopo, con queste eccezioni: le voci finanziarie, e gli animali ancora collegati a dati finanziari o di riproduzione, sono conservati fino alla cancellazione dell'allevamento; un animale con una movimentazione degli ultimi 3 anni resta finché quella movimentazione non compie 3 anni; un animale con un trattamento farmacologico degli ultimi 5 anni resta finché quel trattamento non compie 5 anni. Documenti e movimentazioni sono conservati finché non li elimina o finché l'allevamento non viene cancellato.
5. Backup e ripristino
Il progetto Supabase è sul piano Pro, che esegue ogni giorno un backup del database e conserva quelli degli ultimi 7 giorni. Questi backup riguardano il database, non i file caricati (foto e documenti). Il ripristino point-in-time è un componente aggiuntivo a pagamento separato, oggi non attivo: un ripristino riporta quindi all'ultimo backup giornaliero. Oggi non esiste alcun backup off-site al di fuori di Supabase. Se le garanzie di backup sono rilevanti per la Sua valutazione, ce lo chieda e Le diremo esattamente cosa è in essere quel giorno.
6. Posizione GDPR
Trattiamo il GDPR come requisito di prodotto di base, non come funzionalità. Ogni membro di un allevamento può esportarne in CSV animali, eventi, concorsi, risultati della fibra e registro di stalla; Proprietario e Co-proprietario possono esportare anche le voci finanziarie. Chiunque può chiederci una copia completa dei propri dati, chiedere una rettifica o chiedere la cancellazione del proprio account. La cancellazione prevede un periodo di attesa di 30 giorni, durante il quale si può cambiare idea. Dopodiché, un allevamento di Sua proprietà viene cancellato con tutti i suoi dati (se altre persone ci lavorano ancora, prima ne passa la proprietà a una di loro); in un allevamento di proprietà altrui, i dati che ha inserito restano, senza il Suo nome. Alcuni dati sono conservati per legge o come prova, come indicato nell'Informativa privacy, Sezione 8. L'Informativa privacy contiene anche le informazioni complete ai sensi degli artt. 13/14 GDPR e come gestiamo le Sue richieste.
7. Account e protezioni del sito
Come sono protetti gli account, l'accesso e il sito stesso:
- Le password devono avere almeno 10 caratteri, tra cui un numero.
- Un nuovo account deve confermare il proprio indirizzo email prima del primo accesso, e anche un cambio di indirizzo email va confermato. Aprire un link in una delle nostre email non lo consuma da solo, quindi i controlli automatici della posta non possono usarlo: si conferma con un pulsante sulla pagina, e ogni email contiene anche un codice.
- Le sessioni di accesso sono conservate in cookie che gli script della pagina non possono leggere.
- I moduli pubblici (richieste degli acquirenti, visualizzazione del numero di telefono di un allevamento, modulo di recesso) hanno limiti di frequenza.
- La console di amministrazione dell'operatore richiede, oltre alla password, un codice da un'app di autenticazione, chiesto di nuovo ogni 12 ore. Non sono previsti codici via SMS.
- Quando l'operatore apre un allevamento nella console di amministrazione, ad esempio per una richiesta di assistenza, l'accesso viene registrato e il registro è conservato per almeno 24 mesi.
- Il sito invia le intestazioni di sicurezza standard per i browser: altri siti non possono mostrare le nostre pagine in un riquadro (tranne il widget per siti web, pensato per questo), i browser non possono indovinare il tipo di file, e gli altri siti non ricevono da noi gli indirizzi completi delle pagine. Per ora non c'è una Content Security Policy valida per tutto il sito. È una scelta deliberata: l'inserimento in riquadri da parte di altri siti, il rischio principale che una tale policy coprirebbe qui, è già bloccato.
- Gli errori vengono segnalati automaticamente all'operatore, e queste segnalazioni non contengono dati dei clienti.
8. Programma di responsible disclosure
Se ritiene di aver trovato una vulnerabilità di sicurezza, La preghiamo di segnalarcela prima di divulgarla pubblicamente. Ci impegniamo a confermare la ricezione della Sua segnalazione entro sette giorni di calendario e a fornire una risposta sostanziale (fix, piano di mitigazione o motivazione dettagliata) entro novanta giorni di calendario. I ricercatori che agiscono in buona fede (restando entro lo scope, senza accedere ai dati di altri utenti, senza degradare il servizio) non saranno oggetto di azioni legali da parte nostra; collaboreremo con Lei per risolvere il problema e La accrediteremo pubblicamente se lo desidera.
9. Ambito
Nello scope:
- alpacakeep.com e qualsiasi versione linguistica o sotto-percorso servito dal dominio (ad es. /it/...).
- Le pagine pubbliche e le funzioni leggibili in anonimo che le alimentano: pagine di vendita, pagina pubblica della mandria, widget per siti web e API pubblica in sola lettura (in particolare get_public_animal).
- I flussi di registrazione, login, reset password e accettazione invito.
- La gestione dei dati dei clienti: RLS, IDOR, bypass del finance-access e simili.
Fuori dallo scope:
- Infrastruttura dei sub-responsabili (Supabase, Vercel, Cloudflare, Mailbox.org, Resend, Anthropic): La preghiamo di segnalare direttamente al fornitore.
- Vulnerabilità che richiedono accesso fisico al dispositivo dell'utente.
- Problemi di buone pratiche senza un chiaro impatto sulla sicurezza (ad es. header di sicurezza mancanti su una pagina statica, CSRF teorico su una GET senza effetti collaterali).
- Denial of service tramite puro volume di richieste. La preghiamo di evitarlo.
- Social engineering di personale, clienti o consulenti.
10. Come segnalare
Invii un'email a security@alpacakeep.com con:
- Una descrizione chiara della vulnerabilità e del suo impatto.
- I passi di riproduzione, idealmente un proof of concept minimo.
- Il Suo nome e un modo per contattarLa per i follow-up. Le segnalazioni anonime sono accettate ma più lente da gestire.
Al momento non offriamo un bug bounty monetario. Saremo lieti di accreditarLa pubblicamente in un security advisory o nelle note di rilascio se lo desidera.