Architettura
Policy firmata e applicazione
Le regole vengono scritte nella console, pubblicate come un’unica versione firmata, verificate da ogni browser e applicate nella pagina prima che un modulo venga inviato. Se un browser non riesce a dimostrare che la sua policy è aggiornata, va in fail-closed (in caso di errore blocca).
Descrive LayerT così come realizzato al 3 ottobre 2026. Tutto ciò che non è ancora realizzato è indicato come tale.
Il ciclo di vita di una policy
- ConsoleBozzaL’IT scrive o modifica le regole come bozze. Nulla raggiunge ancora un browser.
- ConsolePubblicazioneLa pubblicazione applica tutte le bozze in sospeso come un’unica nuova versione. La revisione facoltativa a due autori impedisce di pubblicare le proprie bozze.
- Cloud di LayerTFirmaLa versione viene serializzata come JSON canonico e firmata con Ed25519.
- BrowserScaricamentoOgni 15 minuti, all’avvio e dopo la navigazione, con richieste condizionali.
- BrowserVerificaFirma, chiave, organizzazione, versione e scadenza vengono tutte verificate prima che venga usata anche una sola regola.
- La paginaApplicazioneLe regole agiscono sugli invii dei moduli e sulle operazioni di incolla prima che venga eseguito il codice del sito. Anche le regole per i file e per il testo digitato agiscono nella pagina.
Che cos’è una regola
Una regola indica quando agisce, dove si applica, quali campi osserva, quale valore la fa scattare e cosa succede.
| Parte | Opzioni |
|---|---|
| Quando | Uno di cinque trigger, elencati nella tabella successiva |
| Dove | Un pattern di sito: URL esatto, un glob come https://*.postbox.example/*, oppure un’espressione regolare |
| Quali campi | Selettori CSS per i campi di quella pagina. Gli amministratori possono costruirli indicando gli elementi della pagina con il selettore dell’estensione |
| Quale valore | Condizioni sul valore letto dal trigger: uguale a, corrisponde a un pattern, dominio email, presente in un elenco, e combinazioni con and/or/not. Le condizioni possono anche fare un confronto con l’identità della persona nella directory, come “solo il proprio indirizzo di lavoro” |
| A chi si applica | Una condizione può riguardare la persona invece del valore: è vera quando la persona che ha effettuato l’accesso a LayerT in quel browser fa parte di un gruppo della directory che indicate, qualunque cosa abbia digitato. Sotto “not”, è vera per tutti quelli che sono fuori dal gruppo |
| Cosa succede | Monitora (solo registrazione nel log), blocca, blocca con richiesta (la persona può chiedere l’accesso), oppure forza il logout (cancella i cookie e lo storage del sito, poi mostra una pagina di logout avvenuto) |
Per una regola sui moduli o sull’incolla c’è un’azione in più, blocca, le persone possono proseguire con un motivo. È descritta in Proseguire con un motivo.
LayerT non osserva nulla in una pagina finché una regola non lo indica. I cinque trigger, e cosa legge ciascuno:
| Trigger | Cosa legge LayerT |
|---|---|
| Invio di un modulo (l’evento submit, un pulsante di invio, il tasto Invio in un campo) | Le caselle di testo e le caselle a più righe indicate dalla regola |
| Operazione di incolla | Le caselle di testo a riga singola indicate dalla regola |
| Digitazione in un campo | Le caselle di testo, le caselle a più righe e gli editor di testo formattato indicati dalla regola. LayerT legge il campo un attimo dopo che la persona ha smesso di digitare, e di nuovo quando il testo sta per essere inviato |
| Caricamento di un file, in base al nome | Il nome del file, quando un file viene consegnato alla pagina tramite una casella di selezione file, un trascinamento o un’operazione di incolla |
| Caricamento di un file, in base al testo | Il testo contenuto in un file di testo semplice fino a 1 MB, letto nel browser |
Un file che corrisponde a una regola di blocco non raggiunge mai la pagina. Una regola sul testo di un file ferma anche un file che LayerT non può leggere (un’immagine, un PDF, un documento di Office, un archivio, una cartella, qualsiasi file oltre 1 MB) e dice di non averlo potuto controllare.
Le regole integrate coprono i login personali a Google, Telegram Web e WhatsApp Web. L’editor delle regole offre solo i trigger, i controlli e le azioni che l’estensione esegue, e una regola salvata che usa qualcos’altro lo dice nella propria pagina.
Cosa una regola non può vedere
- I caricamenti che un sito fa da solo in background. I dati che una pagina invia da sola, senza un modulo, un’operazione di incolla, un campo digitato o un file consegnato tramite una casella di selezione file, un trascinamento o un’operazione di incolla, sono fuori da ogni regola.
- L’interno dei file che non sono testo semplice. LayerT non guarda dentro PDF, file di Office o immagini. Una regola sul testo dei file li ferma; non li legge.
- Il testo che è già partito. Il testo digitato è nella pagina fin dal primo tasto premuto, e una pagina che invia mentre si digita (suggerimenti di ricerca, bozze salvate automaticamente) lo ha già. Una regola sulla digitazione avvisa la persona e impedisce che il testo venga inviato con un modulo, un pulsante di invio o il tasto Invio. Non può riprendersi il testo.
- Gli appunti. Le regole sull’incolla agiscono sulle operazioni di incolla nelle caselle di testo a riga singola indicate da una regola. LayerT non legge né controlla gli appunti.
- Una password o un codice compilati da LayerT. Nessuna regola, con nessun trigger, legge una password, un codice monouso o un campo di login segreto compilati da LayerT, quindi la password di un account condiviso non può finire in ciò che una regola registra.
- Per una regola sulla digitazione: qualsiasi casella della password. Una regola sulla digitazione non legge mai una casella della password, una casella del codice monouso o un campo compilato da LayerT. Una regola sui moduli o sull’incolla legge i campi che indica, e tra questi può esserci una casella della password in cui una persona ha digitato da sé.
- Rilevatori già pronti. Non c’è una libreria di controlli per numeri di carta o numeri di documento. Le regole usano i pattern scritti da un amministratore.
Le regole sui file e sulla digitazione sono semplici blocchi, avvisi o monitoraggi: la richiesta di un’eccezione e il proseguire con un motivo non sono disponibili per esse.
La firma
Ogni versione pubblicata viene serializzata in modo deterministico (chiavi ordinate, campi della firma esclusi) e firmata con Ed25519. La policy riporta un numero di versione, l’organizzazione a cui appartiene, quando è stata emessa e quando scade.
- Le versioni possono solo crescere. Ogni pubblicazione prende il numero successivo per la vostra organizzazione sotto un lock, così due amministratori non possono pubblicare la stessa versione.
- Il rollback pubblica le vecchie regole come una versione nuova e più alta. Le eccezioni approvate nel frattempo vengono mantenute, a meno che le regole ripristinate non le consentano più.
- La chiave di firma è custodita in un servizio di gestione delle chiavi e non può essere esportata: i server di LayerT chiedono al servizio ogni singola firma. La chiave è protetta via software. Il servizio offre questo tipo di chiave (Ed25519) solo in software, quindi non è custodita in un modulo di sicurezza hardware. Questo è realizzato e in uso nell’ambiente di test di LayerT. Per la produzione, che custodirà la chiave in Google Cloud KMS, non c’è alcun deploy. Le build di sviluppo firmano con una chiave locale, di cui le build di produzione dell’estensione non si fidano.
La versione firmata che ricevono i vostri browser si chiama pacchetto di policy. Cosa contiene (comprese le allowlist e le eccezioni approvate di altre persone), dove viene archiviato sul laptop e cosa può farne chi controlla il laptop è spiegato in Pacchetti di policy e compromissione del dispositivo.
La verifica nel browser
L’estensione verifica ogni policy con l’implementazione Web Crypto del browser prima di usarla. Nell’ordine, rifiuta una policy se:
- la sua versione non è più recente di quella che ha già,
- appartiene a un’organizzazione diversa,
- è stata firmata con una chiave che l’estensione non conosce,
- la firma non risulta valida rispetto alla chiave pubblica integrata nell’estensione, oppure
- è scaduta, secondo l’orologio del laptop.
Una policy rifiutata viene scartata e il browser mantiene quella che aveva. Nell’estensione possono essere integrate più chiavi pubbliche contemporaneamente, così una chiave di firma può essere ruotata senza interruzioni.
Il comportamento fail-closed
Un browser che non riesce a ottenere una policy aggiornata e autentica non smette in silenzio di applicarla.
- La policy scade 7 giorni dopo l’emissione, e LayerT la firma di nuovo automaticamente 48 ore prima. Un browser vede una policy scaduta solo se non è riuscito a raggiungere LayerT per giorni.
- Su una pagina coperta da una regola blocca o forza il logout, una policy scaduta ferma ogni invio di moduli e ogni operazione di incolla nei campi della regola, con una scheda “Connectivity required” (connessione necessaria). La scheda spiega cosa è successo e offre solo l’opzione per tornare indietro.
- Ferma anche un file consegnato ai campi di una regola sui file, e il tasto Invio in un campo osservato da una regola sulla digitazione, senza leggere nulla.
- Le regole Monitora continuano a registrare nel log.
- Anche un’appartenenza ai gruppi sconosciuta va in fail-closed. Ogni browser riceve una risposta firmata sui gruppi della directory della propria persona, valida per 24 ore. Un browser senza una risposta aggiornata ferma l’azione nelle pagine in cui una regola di blocco indica un gruppo, come fa quando la sua policy non è aggiornata, e interroga subito di nuovo LayerT.
- Quando il browser si riconnette, la scheda scompare da sola entro circa 30 secondi, senza ricaricare la pagina.
L’arresto di emergenza
L’Owner può disattivare l’applicazione di tutte le regole per l’intera organizzazione. L’arresto è esso stesso una versione firmata della policy, quindi nessuno può inviarne uno falso a un browser. Viene registrato nel log, e Owner e IT Admin vengono avvisati. Serve solo a disattivare l’applicazione delle regole: non esiste un interruttore che invece blocchi tutto.
I browser lo recepiscono alla sincronizzazione successiva: entro 15 minuti, prima se la persona naviga. Un arresto è contrassegnato come urgente nella policy, ma oggi l’estensione non lo scarica prima delle altre modifiche. La revoca di un browser e il rollback arrivano nello stesso modo.
L’applicazione nella pagina
Il content script di LayerT intercetta gli invii e le operazioni di incolla prima che li veda il codice del sito. Quando una regola trova una corrispondenza, LayerT annulla l’evento, quindi la richiesta del sito non viene mai inviata. I test end-to-end verificano che non venga inviata.
Un file viene trattato allo stesso modo: LayerT ferma la casella di selezione file, il trascinamento o l’operazione di incolla prima che li veda il codice della pagina, e un file che corrisponde a una regola di blocco non raggiunge mai la pagina. La digitazione è diversa, perché il testo è già nella pagina. In quel caso LayerT mostra il blocco e impedisce che il testo venga inviato con un modulo, un pulsante di invio o il tasto Invio.
I prompt di LayerT sono costruiti in modo che una pagina non possa interferire:
- Sono disegnati in shadow root chiuse, che gli script della pagina non possono raggiungere.
- I loro pulsanti rispondono solo a clic e pressioni di tasti reali, non a eventi creati da uno script.
- Non mostrano mai il nome interno della regola. Mostrano il messaggio scritto dall’amministratore.
- Non chiedono mai una password e non contengono mai un campo password. Un test verifica ogni prompt.
- Mentre un prompt è sulla pagina, l’icona di LayerT nella barra degli strumenti mostra un puntino ambra che la pagina non può falsificare.
Chiedere l’accesso
Una persona bloccata può chiedere l’accesso, se la regola lo consente.
- BrowserRichiestaLa persona spiega il motivo. La richiesta ha una scadenza, 30 minuti di default.
- Console o popupDecisioneUn approvatore sceglie: un singolo tentativo (cinque minuti), 15 minuti, 1, 8 o 24 ore, oppure permanente.
- Cloud di LayerTApplicazioneL’approvazione diventa un’eccezione in una policy firmata di nuovo, in un unico passaggio atomico.
- BrowserNuovo tentativoIl prompt si aggiorna da solo. Se la persona si è allontanata, una notifica desktop la avvisa.
- Nessuno può approvare la propria richiesta. Il server la rifiuta.
- Le eccezioni permanenti possono essere concesse solo dal Compliance Officer o dall’Owner, mai dall’IT.
- Una richiesta su cui nessuno decide scade automaticamente.
- Gli approvatori vengono informati delle richieste nell’Inbox della console, nell’estensione e via email, Slack o notifica del browser, secondo la scelta di ciascuno. Possono decidere nella console o direttamente da Slack, e una decisione presa da Slack viene registrata come tale.
Proseguire con un motivo
Per una regola sui moduli o sull’incolla, un amministratore può scegliere Blocca (le persone possono proseguire con un motivo). La persona vede il blocco con una casella per il proprio motivo. LayerT lascia passare l’azione solo dopo che il server ha registrato il motivo.
- Niente a registro, nessun modo per proseguire. Se il motivo non può essere registrato, perché il browser è offline o LayerT non è raggiungibile, l’azione resta bloccata e la scheda conserva ciò che è stato digitato.
- Non interviene alcun approvatore, e nessuno riceve una notifica. Il motivo viene registrato con il nome della persona prima che qualsiasi cosa prosegua. Compare in Regole attivate sotto Motivo indicato, nel registro di audit e nelle esportazioni.
- Non è disponibile per le regole sui file o sulla digitazione. Finché la policy di un browser non è aggiornata, la regola va in fail-closed come qualsiasi altro blocco, senza casella per il motivo.
Cosa viene registrato
Ogni blocco, ogni avviso, ogni corrispondenza di una regola Monitora e ogni uso di un’eccezione crea un evento di audit con la regola, l’indirizzo della pagina, il campo, il valore corrispondente e la persona. Quando una regola trova una corrispondenza, LayerT registra ciò che corrispondeva e, per una regola sulla digitazione, il testo del campo, così che un auditor possa verificare la decisione. Una regola può mascherare o nascondere i propri valori.
- Una regola sui moduli o sull’incolla registra il testo del campo, o il testo incollato.
- Una regola sulla digitazione registra l’intero campo com’era quando la regola ha trovato la corrispondenza, non solo la parte che corrispondeva, fino a 10.000 caratteri. Un testo più lungo viene troncato lì, e la voce registrata lo dice.
- Una regola sui file registra il nome, il tipo e la dimensione del file, il modo in cui è stato consegnato alla pagina e se LayerT ha potuto leggerlo. Il testo di un file viene letto nel browser per decidere. Non viene mai inviato né archiviato.
- Un motivo indicato per proseguire oltre un blocco viene registrato con le parole della persona. Se la persona ha digitato il valore bloccato nel proprio motivo e la regola nasconde o maschera i valori, il valore viene nascosto o mascherato anche lì.
- Una password o un codice compilati da LayerT non vengono mai letti da alcuna regola, quindi non viene registrato nulla. Una regola sulla digitazione non legge mai, in nessun caso, una casella della password o una casella del codice monouso.
- Una password che una persona ha digitato da sé viene letta da una regola sui moduli o sull’incolla che ne indica la casella, e viene registrata in forma leggibile a meno che la regola non sia impostata per mascherare o nascondere i propri valori.
- Il nome utente che LayerT compila per un account condiviso viene comunque valutato da una regola sui login che copre la pagina. La regola lascia passare il login e lo registra come eccezione, con il nome utente. Se la persona lo sostituisce con un proprio indirizzo, quello è testo suo, e una regola sui moduli lo legge.
I valori sono mantenuti leggibili di default, così un auditor può vedere che il login bloccato riguardava un indirizzo personale. Ogni regola sceglie cosa il registro di audit conserva dei propri valori: come sono stati digitati, parzialmente mascherati, oppure nulla. Il browser invia sempre il valore, e l’impostazione della regola viene applicata sul server prima che qualsiasi cosa venga archiviata. Gli eventi di audit sono conservati per 365 giorni di default, e ogni organizzazione può modificare questo valore.