Identificazione dell'origine dei pacchetti con firme digitali

Si applica a:SQL Server SSIS Integration Runtime in Azure Data Factory

Un pacchetto di Integration Services può essere firmato con un certificato digitale per identificarne l'origine. Dopo la firma di un pacchetto con un certificato digitale, è possibile configurare Integration Services per controllare o verificare la firma digitale prima del caricamento del pacchetto. Per fare in modo che Integration Services controlli la firma, impostare un'opzione in SQL Server Data Tools (SSDT) o nell'utilità dtexec (dtexec.exe) oppure impostare un valore facoltativo del Registro di sistema.

Firma di un pacchetto con un certificato digitale

Prima di poter firmare un pacchetto con un certificato digitale, è necessario ottenere o creare il certificato. Dopo aver ottenuto il certificato, è possibile utilizzarlo per la firma del pacchetto. Per altre informazioni su come ottenere un certificato e usarlo per firmare un pacchetto, vedere Firmare un pacchetto con un certificato digitale.

Impostazione di un'opzione per la verifica della firma del pacchetto

Sia SQL Server Data Tools (SSDT) che l'utilità dtexec includono un'opzione per configurare Integration Services per la verifica della firma digitale dei pacchetti firmati. È possibile usare SQL Server Data Tools (SSDT) o l'utilità dtexec a seconda che si vogliano controllare tutti i pacchetti o solo alcuni pacchetti specifici:

  • Per controllare la firma digitale di tutti i pacchetti prima del caricamento in fase di progettazione, impostare l'opzione Controlla firma digitale al caricamento di un pacchetto in SQL Server Data Tools (SSDT). Questa opzione è un'impostazione globale per tutti i pacchetti in SQL Server Data Tools (SSDT).

  • Per controllare la firma digitale di un singolo pacchetto, specificare l'opzione /VerifyS[igned] quando si usa l'utilità dtexec per eseguire il pacchetto. Per altre informazioni, vedere dtexec Utility.

Impostazione di un valore del Registro di sistema per la verifica della firma del pacchetto

Integration Services supporta anche un valore facoltativo del Registro di sistema, BlockedSignatureStates, che può essere usato per gestire i criteri di un'organizzazione per il caricamento di pacchetti firmati e non firmati. Il valore del Registro di sistema consente di impedire il caricamento di pacchetti non firmati o con firme non valide o non attendibili. Per altre informazioni su come impostare questo valore del Registro di sistema, vedere Implementare criteri per le firme tramite l'impostazione di un valore del Registro di sistema.

Nota

Il valore facoltativo BlockedSignatureStates del Registro di sistema può specificare un'impostazione più restrittiva rispetto all'opzione per la firma digitale impostata in SQL Server Data Tools (SSDT) o nella riga di comando dtexec. In questo caso, l'impostazione del Registro di sistema più restrittiva ha la precedenza rispetto ad altre impostazioni.

Implementazione di criteri per le firme impostando un valore del Registro di sistema

È possibile utilizzare un valore facoltativo del Registro di sistema per gestire i criteri dell'organizzazione per il caricamento dei pacchetti firmati o non firmati. Se si usa questo valore del Registro di sistema, è necessario crearlo in ogni computer in cui verranno eseguiti i pacchetti di Integration Services e in cui si vogliono applicare i criteri. Dopo l'impostazione del valore del Registro di sistema, Integration Services controllerà o verificherà le firme prima di caricare i pacchetti.

La procedura in questo articolo descrive come aggiungere il valore facoltativo DWORD BlockedSignatureStates alla chiave del Registro di sistema HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\150\SSIS\Setup\DTSPath.

Nota

Un percorso del Registro di sistema sotto 150 rappresenta SQL Server 2019, sotto 140 rappresenta SQL Server 2017, sotto 130 rappresenta SQL Server 2016, sotto 120 rappresenta SQL Server 2014 e sotto 110 rappresenta SQL Server 2012.

Il valore dei dati in BlockedSignatureStates determina se un pacchetto debba essere bloccato se contiene una firma non attendibile o non valida oppure se non è firmato.

Per lo stato delle firme usate per firmare i pacchetti, il valore del Registro di sistema BlockedSignatureStates usa le definizioni seguenti:

  • Per firma valida si intende una firma che può essere letta.

  • Per firma non valida si intende una firma il cui checksum decrittografato, ovvero l'hash unidirezionale del codice del pacchetto crittografato mediante una chiave privata, non corrisponde al checksum decrittografato calcolato nell'ambito del processo di caricamento dei pacchetti di Integration Services.

  • Per firma attendibile si intende una firma creata tramite un certificato digitale firmato da un'autorità di certificazione radice attendibile. Con questa impostazione non è necessario che il firmatario sia contenuto nell'elenco degli autori attendibili.

  • Per firma non attendibile si intende una firma che non può essere verificata in riferimento al rilascio da parte di un'autorità di certificazione radice attendibile o una firma non corrente.

Nella tabella seguente sono elencati i valori validi dei dati DWORD e i criteri associati.

Valore Descrizione
0 Nessuna restrizione amministrativa.
1 Blocco delle firme non valide.

Con questa impostazione non vengono bloccati i pacchetti non firmati.
2 Blocco delle firme non valide e non attendibili.

Con questa impostazione non vengono bloccati i pacchetti non firmati, ma vengono bloccate le firme a generazione automatica.
3 Blocco delle firme non valide e non attendibili e dei pacchetti non firmati

Con questa impostazione vengono bloccate anche le firme a generazione automatica.

Nota

L'impostazione consigliata per BlockedSignatureStates è 3. Questa impostazione garantisce la massima protezione da pacchetti non firmati o firme non valide o non attendibili, ma potrebbe non essere appropriata per tutte le circostanze. Per altre informazioni su come firmare elementi digitali, vedere l'argomento "Introduzione alla firma di codice" in MSDN Library.

Per implementare criteri per le firme per i pacchetti

  1. Fare clic sul menu Start e scegliere Esegui.

  2. Nella finestra di dialogo Esegui digitare regedite quindi fare clic su OK.

  3. Individuare la chiave del Registro di sistema: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\SSIS

  4. Fare clic con il pulsante destro del mouse su MSDTS, scegliere Nuovoe quindi Valore DWORD.

  5. Aggiornare il nome del nuovo valore impostandolo su BlockedSignatureStates.

  6. Fare clic con il pulsante destro del mouse su BlockedSignatureStates e quindi scegliere Modifica.

  7. Nella finestra di dialogo Modifica valore DWORD digitare il valore 0, 1, 2 o 3.

  8. Fare clic su OK.

  9. Scegliere Esci dal menu File.

Firma di un pacchetto tramite certificato digitale

Questo argomento illustra come firmare un pacchetto di Integration Services con un certificato digitale. È possibile utilizzare una firma digitale, insieme ad altre impostazioni, per evitare il caricamento e l'esecuzione di pacchetti non validi.

Prima di poter firmare un pacchetto di Integration Services, è necessario eseguire le attività seguenti:

  • Creare o ottenere una chiave privata da associare al certificato e archiviarla nel computer locale.

  • Ottenere un certificato a scopo di firma del codice da un'autorità di certificazione attendibile. Per ottenere o creare un certificato, è possibile utilizzare uno dei metodi seguenti:

    • Ottenere un certificato da un'autorità di certificazione commerciale pubblica che emette certificati.

    • Ottenere un certificato da un server dei certificati che consente alle organizzazioni di emettere certificati internamente. È necessario aggiungere il certificato radice usato per firmare il certificato nell'archivio Autorità di certificazione radice disponibili nell'elenco locale . Per aggiungere il certificato radice, è possibile usare lo snap-in Certificati per Microsoft Management Console (MMC). Per altre informazioni, vedere l'argomento "Certificate Services" (Servizi certificati) in MSDN Library.

    • Creare un certificato solo a scopo di testing. Il comando di PowerShell New-SelfSignedCertificate può creare un nuovo certificato autofirmato con algoritmo hash sicuro a scopo di test. Ad esempio:

        $params = @{
            Type = 'CodeSigningCert'
            Provider = 'Microsoft Enhanced RSA and AES Cryptographic Provider'
            Subject = 'CN=PS code signing Certificate 2'
            TextExtension = @(
                '2.5.29.37={text}1.3.6.1.5.5.7.3.3',
                '2.5.29.17={text}upn=yourupn' )
            KeyExportPolicy = 'NonExportable'
            KeyUsage = 'DigitalSignature'
            KeyAlgorithm = 'RSA'
            KeyLength = 2048
            CertStoreLocation = 'Cert:\CurrentUser\My'
                     HashAlgorithm = 'sha512'
        }
        New-SelfSignedCertificate @params
    

    Se viene visualizzato il messaggio di errore "La firma del pacchetto non è riuscita con errore 0x80090008 "Algoritmo non valido specificato". Indica che l'algoritmo hash del certificato non è sicuro, modificare il certificato in un algoritmo hash più sicuro, ad esempio SHA512 e usare un provider di servizi di crittografia. Poiché .NET Framework viene aggiornato alla versione 4.7.2 per SQL Server 2022 e l'algoritmo SignedXML predefinito viene modificato in SHA256 perché SHA1 non è più considerato sicuro. I dettagli fanno riferimento a questo articolo.

    Per ulteriori informazioni sui certificati, vedere la Guida relativa allo snap-in Certificati. Per altre informazioni sulla firma di risorse digitali, vedere l'argomento "Signing and Checking Code with Authenticode" (Firma e verifica del codice con Authenticode) in MSDN Library.

  • Verificare che il certificato sia stato abilitato per la firma di codice. Per determinare se un certificato è abilitato per la firma di codice, controllare le proprietà del certificato nello snap-in Certificati.

  • Archiviare il certificato nell'archivio personale.

Dopo avere completato le attività precedenti, è possibile utilizzare la procedura descritta di seguito per firmare un pacchetto.

Per firmare un pacchetto

  1. In SQL Server Data Tools (SSDT) aprire il progetto di Integration Services che contiene il pacchetto da firmare.

  2. In Esplora soluzioni fare doppio clic sul pacchetto per aprirlo.

  3. In Progettazione SSIS scegliere Firma digitale dal menu SSIS.

  4. Nella finestra di dialogo Firma digitale fare clic su Firma.

  5. Nella finestra di dialogo Seleziona certificato selezionare un certificato.

  6. (Facoltativo) Fare clic su Visualizza certificatoper visualizzare informazioni sul certificato.

  7. Fare clic su OK per chiudere la finestra di dialogo Seleziona certificato .

  8. Fare clic su OK per chiudere la finestra di dialogo Firma digitale .

  9. Per salvare il pacchetto aggiornato, scegliere Salva elementi selezionati dal menu File .

    Anche se il pacchetto è stato firmato, è necessario configurare Integration Services per controllare o verificare la firma digitale prima del caricamento del pacchetto.

Riferimento all'interfaccia utente della finestra di dialogo Firma digitale

Utilizzare la finestra di dialogo Firma digitale per apporre una firma digitale a un pacchetto o rimuovere quella esistente. Per accedere alla finestra di dialogo Firma digitale, scegliere l'opzione Firma digitale dal menu SSIS in SQL Server Data Tools (SSDT).

Per altre informazioni, vedere Firmare un pacchetto con un certificato digitale.

Opzioni

Firma
Fare clic per aprire la finestra di dialogo Seleziona certificato e selezionare il certificato da usare.

Rimuovi
Fare clic su questo pulsante per rimuovere la firma digitale.

Vedi anche

Pacchetti di Integration Services (SSIS)
Panoramica sulla sicurezza (Integration Services)