Controllo dell'accesso per dati sensibili nei pacchetti

Per proteggere i dati in un pacchetto Integration Services, è possibile impostare un livello di protezione che consente di proteggere solo dati sensibili o tutti i dati nel pacchetto. Inoltre, è possibile crittografare questi dati con una password o una chiave utente o utilizzare il sistema di crittografia del database. Inoltre, il livello di protezione che si utilizza per un pacchetto non è necessariamente statico, ma cambia durante tutto il ciclo di vita del pacchetto. Spesso si imposta un livello di protezione durante lo sviluppo e un altro appena si distribuisce il pacchetto.

[!NOTA]

Oltre ai livelli di protezione descritti in questo argomento, è possibile utilizzare i ruoli predefiniti a livello di database per proteggere i pacchetti salvati nel server Integration Services.

Definizione di informazioni riservate

In un pacchetto Integration Services, le informazioni seguenti sono definite come riservate:

  • La password di una stringa di connessione. Se, tuttavia, si seleziona un'opzione che implica la crittografia dell'intero pacchetto, viene considerata riservata l'intera stringa di connessione.

  • I nodi XML generati dall'attività contrassegnati come riservati. I nodi XML vengono contrassegnati come riservati da Integration Services. L'attributo di riservatezza pertanto non può essere modificato dagli utenti.

  • Qualsiasi variabile contrassegnata come riservata. Le variabili vengono contrassegnate come riservate da Integration Services.

In Integration Services una proprietà viene considerata riservata a seconda se lo sviluppatore del componente di Integration Services, ad esempio una gestione connessione o un'attività, abbia definito la proprietà come riservata. Gli utenti non possono aggiungere proprietà all'elenco di proprietà considerate riservate, né possono rimuoverle.

Crittografia

La crittografia applicata con i livelli di protezione dei pacchetti viene eseguita in base all'API Microsoft Data Protection (DPAPI), che fa parte di Cryptography API (Crypto API).

Con i livelli di protezione dei pacchetti che implicano la crittografia con password anche l'utente autorizzato a modificare l'origine deve specificare una password. Se tale utente sostituisce un livello di protezione che non richiede la password con un livello che la richiede, verrà richiesto di specificare una password.

Inoltre, in Integration Services per i livelli di protezione che prevedono una password viene utilizzato l'algoritmo di crittografia Triple DES con lunghezza di chiave di 192 bit, disponibile nella libreria di classi .NET Framework (FCL).

Livelli di protezione

Nella tabella seguente vengono descritti i livelli di protezione disponibili in Integration Services. I valori tra parentesi derivano dall'enumerazione DTSProtectionLevel e sono visualizzati nella finestra Proprietà utilizzata per la configurazione delle proprietà del pacchetto quando si utilizzano i pacchetti in SQL Server Data Tools (SSDT).

Livello di protezione

Descrizione

Non salva i dati riservati (DontSaveSensitive)

Quando si salva il pacchetto, i valori delle proprietà riservate vengono eliminati. Con questo livello di protezione i dati non vengono crittografati, ma le proprietà contrassegnate come riservate non vengono salvate insieme al pacchetto. Di conseguenza i dati riservati non sono disponibili ad altri utenti, i quali dovranno specificarli quando aprono il pacchetto.

Se utilizzato con l'utilità dtutil (dtutil.exe), questo livello di protezione corrisponde al valore di 0.

Crittografa tutti i dati con una password (EncryptAllWithPassword)

Viene utilizzata una password per crittografare l'intero pacchetto. Il pacchetto viene crittografato con una password specificata dall'utente in fase di creazione o di esportazione del pacchetto. Per poter aprire il pacchetto in Progettazione SSIS o per eseguirlo tramite l'utilità del prompt dei comandi dtexec, l'utente deve specificare la password. Se non specifica la password corretta, l'utente non può né aprire né eseguire il pacchetto.

Se utilizzato con l'utilità dtutil, questo livello di protezione corrisponde al valore di 3.

Crittografa tutti i dati con una chiave utente (EncryptAllWithUserKey)

Viene utilizzata una chiave basata sul profilo utente corrente per crittografare l'intero pacchetto. Il pacchetto può essere aperto in Progettazione SSIS o eseguito tramite l'utilità del prompt dei comandi dtexec solo dall'utente che ha creato o esportato il pacchetto.

Se utilizzato con l'utilità dtutil, questo livello di protezione corrisponde al valore di 4.

[!NOTA]

Per i livelli di protezione che prevedono una chiave utente, in Integration Services vengono utilizzati gli standard DPAPI. Per ulteriori informazioni su DPAPI, vedere il sito MSDN Library all'indirizzo https://msdn.microsoft.com/library.

Crittografa con una password tutti i dati riservati (EncryptSensitiveWithPassword)

Viene utilizzata una password per crittografare solo i valori delle proprietà riservate nel pacchetto. Per la crittografia viene utilizzato DPAPI. I dati riservati vengono salvati come parte del pacchetto, ma crittografati tramite una password specificata dall'utente corrente in fase di creazione o di esportazione del pacchetto. Per poter aprire il pacchetto in Progettazione SSIS, l'utente deve specificare la password. Se non specifica la password, il pacchetto viene aperto senza i dati riservati e l'utente corrente deve specificare nuovi valori per questi dati. I tentativi di esecuzione del pacchetto senza specificare la password hanno esito negativo. Per ulteriori informazioni sulle password e sull'esecuzione delle utilità della riga di comando, vedere Utilità dtexec.

Se utilizzato con l'utilità dtutil, questo livello di protezione corrisponde al valore di 2.

Crittografa tutti i dati riservati con una chiave utente (EncryptSensitiveWithUserKey)

Viene utilizzata una chiave basata sul profilo utente corrente per crittografare solo i valori delle proprietà riservate nel pacchetto. Il pacchetto può essere caricato solo da uno stesso utente in base allo stesso profilo. Gli altri utenti che aprono il pacchetto dovranno immettere le informazioni riservate. I tentativi di esecuzione del pacchetto hanno esito negativo. Per la crittografia viene utilizzato DPAPI.

Se utilizzato con l'utilità dtutil, questo livello di protezione corrisponde al valore di 1.

[!NOTA]

Per i livelli di protezione che prevedono una chiave utente, in Integration Services vengono utilizzati gli standard DPAPI. Per ulteriori informazioni su DPAPI, vedere il sito MSDN Library all'indirizzo https://msdn.microsoft.com/library.

Usa l'archiviazione su server per la crittografia (ServerStorage)

L'intero pacchetto viene protetto con i ruoli del database di SQL Server. Questa opzione è supportata quando un pacchetto viene salvato nel database SQL Server msdb. Inoltre, il catalogo SSISDB utilizza il livello di protezione ServerStorage.

Questa opzione non è supportata quando un pacchetto viene salvato nel file system in SQL Server Data Tools (SSDT).

Impostazione del livello di protezione e catalogo SSISDB

Il catalogo SSISDB utilizza il livello di protezione ServerStorage. Quando si distribuisce un progetto Integration Services nel server Integration Services, il catalogo crittografa automaticamente i dati del pacchetto e i valori sensibili. Il catalogo inoltre decrittografa automaticamente i dati quando viene recuperato.

Se si esporta il progetto (file con estensione ispac) dal server Integration Services nel file system, il livello di protezione viene automaticamente modificato in EncryptSensitiveWithUserKey dal sistema. Se si importa il progetto utilizzando Importazione guidata progetto di Integration Services in SQL Server Data Tools (SSDT), la proprietà ProtectionLevel nella finestra Proprietà mostra un valore di EncryptSensitiveWithUserKey.

Impostazione del livello di protezione sulla base del ciclo di vita del pacchetto

Il livello di protezione di un pacchetto di SQL Server Integration Services viene impostato in fase di sviluppo del pacchetto in SQL Server Data Tools (SSDT). È possibile aggiornarlo successivamente quando il pacchetto viene distribuito, importato o esportato da Integration Services a SQL Server Management Studio oppure copiato da SQL Server Data Tools (SSDT) a SQL Server, nell'archivio pacchetti SSIS o nel file system. Si supponga, ad esempio, che nei computer in uso vengano creati e salvati pacchetti in base a una delle opzioni di livello di protezione con chiave utente. Se successivamente i pacchetti vengono distribuiti ad altri utenti, sarà necessario modificarne il livello di protezione in modo che possano essere aperti dagli altri utenti.

In genere, il livello di protezione viene modificato come spiegato nei passaggi seguenti:

  1. Durante lo sviluppo, lasciare il livello di protezione dei pacchetti impostato sul valore predefinito, EncryptSensitiveWithUserKey. Con questa impostazione si avrà la certezza che solo lo sviluppatore veda i valori riservati nel pacchetto. In alternativa, è possibile utilizzare EncryptAllWithUserKey o DontSaveSensitive.

  2. Al momento di distribuire i pacchetti, è necessario impostare un livello di protezione che non dipenda dalla chiave utente dello sviluppatore. Pertanto, in genere s seleziona EncryptSensitiveWithPassword o EncryptAllWithPassword. Crittografare i pacchetti assegnando una password complessa temporanea che è nota anche dal team di gestione nell'ambiente di produzione.

  3. Dopo che i pacchetti sono stati distribuiti all'ambiente di produzione, il team di gestione può crittografare nuovamente i pacchetti distribuiti assegnando una password complessa nota solo dal team stesso. In alternativa, può crittografare i pacchetti distribuiti selezionando EncryptSensitiveWithUserKey o EncryptAllWithUserKey e utilizzando le credenziali locali dell'account utilizzato per eseguire i pacchetti.

Attività correlate

Contenuto correlato

Icona di Integration Services (piccola) Rimanere aggiornati con Integration Services

Per i download, gli articoli, gli esempi e i video Microsoft più recenti, oltre alle soluzioni selezionate dalla community, visitare la pagina Integration Services sul sito MSDN:


Per ricevere una notifica automatica su questi aggiornamenti, sottoscrivere i feed RSS disponibili nella pagina.

Vedere anche

Attivitá

Importare ed esportare pacchetti (servizio SSIS)

Concetti

Pacchetti di Integration Services (SSIS)

Panoramica sulla sicurezza (Integration Services)