Impostazione del livello di protezione dei 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, per la protezione dei pacchetti salvati nel database msdb è inoltre possibile utilizzare i ruoli predefiniti a livello di database. In Integration Services sono disponibili tre ruoli predefiniti a livello di database per l'assegnazione delle autorizzazioni ai pacchetti, ovvero db_ssisadmin, db_ssisltduser e db_ssisoperator. Per ulteriori informazioni, vedere Utilizzo dei ruoli di 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.
Utilizzo della 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).
Informazioni sui 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 Business Intelligence Development Studio.
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à della riga di comando 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à della riga di comando 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 (strumento di SSIS). 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 solo quando i pacchetti vengono salvati nel database msdb di SQL Server, mentre non è supportata quando i pacchetti vengono salvati nel file system in Business Intelligence Development Studio. |
Modifica 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 Business Intelligence Development Studio. È possibile aggiornarlo successivamente quando il pacchetto viene distribuito, importato o esportato da Integration Services a SQL Server Management Studio oppure copiato da Business Intelligence Development Studio 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:
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.
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.
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.
|