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

  1. ConsoleBozzaL’IT scrive o modifica le regole come bozze. Nulla raggiunge ancora un browser.
  2. 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.
  3. Cloud di LayerTFirmaLa versione viene serializzata come JSON canonico e firmata con Ed25519.
  4. BrowserScaricamentoOgni 15 minuti, all’avvio e dopo la navigazione, con richieste condizionali.
  5. BrowserVerificaFirma, chiave, organizzazione, versione e scadenza vengono tutte verificate prima che venga usata anche una sola regola.
  6. 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.
Una versione della policy dura 7 giorni. LayerT la firma di nuovo automaticamente 48 ore prima che scada.

Che cos’è una regola

Una regola indica quando agisce, dove si applica, quali campi osserva, quale valore la fa scattare e cosa succede.

ParteOpzioni
QuandoUno di cinque trigger, elencati nella tabella successiva
DoveUn pattern di sito: URL esatto, un glob come https://*.postbox.example/*, oppure un’espressione regolare
Quali campiSelettori CSS per i campi di quella pagina. Gli amministratori possono costruirli indicando gli elementi della pagina con il selettore dell’estensione
Quale valoreCondizioni 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 applicaUna 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 succedeMonitora (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:

TriggerCosa 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 incollaLe caselle di testo a riga singola indicate dalla regola
Digitazione in un campoLe 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 nomeIl 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 testoIl 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.

Avviso. Una regola di tipo “avvisa” mostra alla persona un avviso nella pagina e le permette di procedere o di tornare indietro. La scelta di procedere viene registrata, quindi un avviso è una spinta accompagnata da una traccia, non un blocco.

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:

  1. la sua versione non è più recente di quella che ha già,
  2. appartiene a un’organizzazione diversa,
  3. è stata firmata con una chiave che l’estensione non conosce,
  4. la firma non risulta valida rispetto alla chiave pubblica integrata nell’estensione, oppure
  5. è 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.

Verificata all’arrivo. Il browser verifica una policy quando arriva, poi la salva come JSON in chiaro nel profilo del browser e applica ciò che ha salvato senza verificarlo di nuovo. Chi può scrivere in quello storage, o ha diritti di amministratore sul laptop, può aggirare lì l’applicazione delle regole. Pacchetti di policy e compromissione del dispositivo esamina ogni caso e i controlli sul dispositivo che lo chiudono.

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.
Perché fail-closed. Se un laptop potesse sottrarsi alla policy andando offline, o bloccando un dominio, la policy sarebbe solo decorativa. Le regole di ingegneria scritte di LayerT rendono il comportamento fail-closed non negoziabile.

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.

  1. BrowserRichiestaLa persona spiega il motivo. La richiesta ha una scadenza, 30 minuti di default.
  2. Console o popupDecisioneUn approvatore sceglie: un singolo tentativo (cinque minuti), 15 minuti, 1, 8 o 24 ore, oppure permanente.
  3. Cloud di LayerTApplicazioneL’approvazione diventa un’eccezione in una policy firmata di nuovo, in un unico passaggio atomico.
  4. 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.

Una regola sulla digitazione registra più della corrispondenza. Una regola sulla digitazione su una casella di chat registra ciò che la persona ha scritto attorno alla corrispondenza, perché conserva l’intero campo. Consideratelo un monitoraggio del vostro personale: dite alle vostre persone cosa registrano le vostre regole e valutatelo, come fareste prima di attivare la registrazione delle sessioni. Impostare la regola per mascherare o nascondere i propri valori è il modo per conservare meno.