Condividi tramite


Controllo dell'accesso per dati sensibili nei pacchetti

Per proteggere i dati in un pacchetto di Integration Services, è possibile impostare un livello di protezione in modo da proteggere solo i dati sensibili o tutti i dati all'interno del 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 usare i ruoli predefiniti a livello di database per proteggere i pacchetti salvati nel server Integration Services.

Definizione di informazioni riservate

In un pacchetto di Integration Services le informazioni seguenti sono definite sensibili:

  • 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. L'aggiunta di tag ai nodi XML viene controllata da Integration Services e non può essere modificata dagli utenti.

  • Qualsiasi variabile contrassegnata come riservata. Il contrassegno delle variabili è controllato da Integration Services.

Integration Services considera una proprietà sensibile se è stata definita come tale dallo sviluppatore del componente di Integration Services, ad esempio una gestione connessione o un'attività. 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 tramite l'API Microsoft Data Protection (DPAPI), che fa parte dell'API Cryptography (CryptoAPI).

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, per i livelli di protezione che prevedono una password, Integration Services usa 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 . Questi valori 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 usato con l'utilità dtutil (dtutil.exe), questo livello di protezione corrisponde al valore 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 aprire il pacchetto in Progettazione SSIS o per eseguirlo con l'utilità del prompt dei comandi dtexec, l'utente deve specificare la password del pacchetto. Se non specifica la password corretta, l'utente non può né aprire né eseguire il pacchetto.

Se usato con l'utilità dtutil , questo livello di protezione corrisponde al valore 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 con l'utilità del prompt dei comandi dtexec solo dall'utente che lo ha creato o esportato.

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

Nota: per i livelli di protezione che prevedono una chiave utente, Integration Services usa gli standard DPAPI. Per altre informazioni su DPAPI, vedere 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 altre informazioni sulle password e sull'esecuzione dell'utilità della riga di comando, vedere Utilità dtexec.

Se usato con l'utilità dtutil , questo livello di protezione corrisponde al valore 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 usato con l'utilità dtutil , questo livello di protezione corrisponde al valore 1.

Nota: per i livelli di protezione che prevedono una chiave utente, Integration Services usa gli standard DPAPI. Per altre informazioni su DPAPI, vedere MSDN Library all'indirizzo https://msdn.microsoft.com/library.
Usa l'archiviazione su server per la crittografia (ServerStorage) Protegge l'intero pacchetto tramite ruoli del database di SQL Server. Questa opzione è supportata quando un pacchetto viene salvato nel database msdb di SQL Server. Inoltre, il catalogo SSISDB utilizza il livello di protezione ServerStorage.

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

Impostazione del livello di protezione e catalogo SSISDB

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

Se si esporta il progetto (file ispac) dal server Integration Services al file system, il sistema modifica automaticamente il livello di protezione su EncryptSensitiveWithUserKey. Se si importa il progetto usando l'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 quando viene sviluppato per la prima volta in SQL Server Data Tools (SSDT). In seguito, quando il pacchetto viene distribuito, importato o esportato da Integration Services in SQL Server Management Studio o copiato da SQL Server Data Tools (SSDT) a SQL Server, nell'archivio pacchetti SSIS o nel file system, è possibile aggiornare il livello di protezione del pacchetto. 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.

Vedere anche

Importare ed esportare pacchetti (servizio SSIS)
Pacchetti di Integration Services (SSIS)
Panoramica sulla sicurezza (Integration Services)