Procedure consigliate per la firma del codice con Controllo app per le aziende

Nota

Alcune funzionalità di Controllo delle applicazioni per le aziende sono disponibili solo in versioni specifiche di Windows. Altre informazioni sulla disponibilità della funzionalità Controllo app.

La firma del codice consente a Windows di verificare che un file non sia stato modificato dopo la firma e di associare il file a un'identità di autore. Controllo applicazioni per le aziende può combinare tale identità con i metadati dei file firmati per creare regole più specifiche e più facili da gestire rispetto alle singole regole hash.

Usare queste procedure come requisiti di accettazione delle applicazioni e come linee guida per i team di sviluppo interni. L'approccio più efficace consiste nel firmare il codice nella pipeline di compilazione. La firma del catalogo fornisce un percorso di migrazione per le applicazioni esistenti che non possono essere ricompilate immediatamente.

Richiedere firme per ogni artefatto eseguibile

Non limitare i requisiti di firma all'eseguibile o al programma di installazione principale. Inventariare e firmare ogni file supportato compilato, installato, scaricato o eseguito da un'applicazione, tra cui:

  • File eseguibili, DLL, driver e controlli ActiveX.
  • Programmi di installazione, eseguibili di bootstrap, azioni personalizzate e programmi di disinstallazione.
  • Script, moduli e manifesti di PowerShell.
  • JavaScript, VBScript, Windows Script Files e altri script supportati.
  • Plug-in, componenti aggiuntivi, estensioni, strumenti helper, agenti di aggiornamento e strumenti di riparazione.
  • Contenuto eseguibile temporaneo o generato usato durante l'installazione, l'aggiornamento o la rimozione.

Controllo app valuta i file quando vengono caricati o eseguiti. Un programma di installazione firmato non stabilisce automaticamente l'attendibilità per ogni file separato inserito nel dispositivo.

Richiedere ai fornitori di software esterni di fornire un inventario degli artefatti e una dichiarazione di copertura delle firme. Offri ai team di sviluppo line-of-business (LOB) interni l'accesso a un servizio o certificato di firma controllato dall'organizzazione e rendi la firma un gate di rilascio.

Preferire la firma incorporata per le applicazioni gestite attivamente

Una firma incorporata viaggia con il file quando il file viene copiato o spostato. Integrare l'accesso incorporato nella pipeline di compilazione o di rilascio per le applicazioni che l'organizzazione sviluppa o può ricompilare.

Usa identità degli editori coerenti e timestamp RFC 3161. La marca temporale mantiene la prova che una firma è stata creata mentre il certificato di firma era valido. Verificare le firme dopo la firma, dopo la creazione di pacchetti e dopo l'installazione per rilevare i processi di creazione di pacchetti o di post-compilazione che modificano i file firmati.

Proteggere le chiavi private usando un servizio di firma gestita, un modulo di sicurezza hardware o un altro meccanismo di protezione delle chiavi approvato dall'organizzazione. Limita chi e cosa può richiedere firme, registra le operazioni di firma e definisci un processo per revocare l'attendibilità dopo una compromissione della chiave.

Aggiungere metadati autenticati a script e file non PE

I file eseguibili portabili (PE) in genere forniscono informazioni sull'identità e sulla versione dei file tramite le risorse della versione. Gli script e altri file non PE in genere non contengono tali risorse. SignTool può aggiungere informazioni equivalenti alla firma dei file non PE come attributi di metadati autenticati.

Fornire almeno valori stabili per:

  • Nome originale del file.
  • Nome interno.
  • Descrizione del file.
  • Versione file.
  • Nome del prodotto.
  • Versione prodotto.

Controllo app può usare gli attributi firmati supportati quando crea il nome file, la versione firmata e le regole dell'editore di file. I metadati coerenti consentono a una policy di autorizzare un prodotto o uno script specifico anziché tutti gli elementi firmati dallo stesso editore.

Per i campi supportati, i comandi SignTool e le considerazioni sulle regole di Controllo delle app, vedere Utilizzo di metadati firmati per script e file non PE.

Usa le regole per i firmatari più ristrette e pratiche

Una regola di certificazione ampia può consentire più software del previsto. Ad esempio, una regola dell'autore per un importante fornitore di software potrebbe consentire tutti i prodotti firmati dal fornitore. Preferire FilePublisher le regole quando sono disponibili metadati dei file affidabili. Queste regole combinano il firmatario, un attributo di file e una versione minima.

Esaminare le regole generate prima della distribuzione e confermare:

  • La catena di certificati rappresenta l'editore previsto.
  • L'attributo file selezionato è stabile e specifico dell'applicazione.
  • Le versioni minime e massime corrispondono alla strategia di manutenzione.
  • Le regole hash di fallback non autorizzano inavvertitamente file non correlati.

Per altre informazioni, vedere Informazioni sulle regole dei file e i criteri di Controllo delle app.

Usare i cataloghi per correggere le applicazioni esistenti e parzialmente firmate

Un catalogo firmato contiene hash per uno o più file. Un file coperto può usare la firma del catalogo senza modificare il file. I cataloghi sono utili per:

  • Applicazioni non firmate esistenti.
  • Applicazioni in cui solo alcuni componenti sono firmati.
  • Applicazioni legacy che non possono essere ricompilate.
  • Applicazioni di terze parti in cui considerare attendibile ogni file del certificato dell'autore del fornitore sarebbe troppo ampio.
  • Files che non supportano le firme incorporate.

I cataloghi sono associati a hash. Rigenerare, firmare, testare e distribuire il catalogo ogni volta che viene modificato un file coperto. Presta particolare attenzione alle applicazioni e ai file che si aggiornano automaticamente generati durante l'installazione o il primo utilizzo.

L'attendibilità del catalogo dipende sia dal certificato di firma che dalla distribuzione del catalogo in ogni endpoint gestito. La firma del catalogo non sostituisce universalmente la firma incorporata nei dispositivi non gestiti.

Per la procedura end-to-end, vedere Distribuire file di catalogo per supportare Controllo applicazioni per le aziende.

Integrare la firma con l'aspirazione dell'applicazione e CI/CD

Controllo app funziona meglio quando le applicazioni sono firmate e includono informazioni sull'identità dei file e sulla versione. Richiedere la firma e i metadati della versione come parte dei processi di compilazione e assunzione delle applicazioni.

  1. Inventariare ogni artefatto eseguibile e identificare se usa una firma incorporata o di catalogo.

  2. Applicare i metadati di identità e versione stabili prima di firmare.

  3. Artefatti di firma e marca temporale in una pipeline controllata.

  4. Verificare le firme e l'appartenenza al catalogo dopo la creazione del pacchetto e l'installazione.

  5. Testare l'applicazione completa in un criterio di controllo di Controllo delle app, inclusi installazione, aggiornamento, riparazione, funzionalità facoltative e rimozione.

  6. Conservare il manifesto dell'artefatto, i risultati della verifica della firma, la versione del catalogo e l'identità di firma con il record di rilascio.

  7. Blocca la promozione quando un artefatto previsto non è firmato, è stato modificato dopo la firma o è mancante nel relativo catalogo.

Firmare i criteri di Controllo delle app

I criteri di Controllo app iniziano come XML e vengono convertiti in criteri binari prima della distribuzione. La firma dei criteri binari consente di proteggerli da modifiche o rimozioni non autorizzate, anche da parte di un amministratore locale.

Per altre informazioni, vedere Usare i criteri firmati per proteggere Controllo app per le aziende da manomissioni.

Ottenere certificati di firma del codice per uso personale

Usare uno di questi approcci:

Le regole basate su firmatari di Controllo app supportano i certificati di firma RSA con una lunghezza massima della chiave di 4.096 bit. Per le attuali limitazioni di crittografia, vedere Livelli delle regole del file di controllo delle applicazioni.