Controllo dell'accesso per dati sensibili nei pacchetti

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

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 sensibili (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 tutti i dati sensibili con una password (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 sensibili con una chiave utente (EncryptSensitiveWithPassword) 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. Anche il catalogo SSISDB usa 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 con estensione ispac) dal server Integration Services al file system, il sistema modifica automaticamente il livello di protezione in EncryptSensitiveWithUserKey. Se si importa il progetto usando Importazione guidata progetto di Integration Services in SQL Server Data Tools (SSDT), la proprietà ProtectionLevel nella finestra Proprietà mostra il valore 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 provare a usare EncryptAllWithUserKeyo DontSaveSensitive.

  2. Al momento di distribuire i pacchetti, è necessario impostare un livello di protezione che non dipenda dalla chiave utente dello sviluppatore. Di conseguenza, in genere è necessario selezionare EncryptSensitiveWithPasswordo 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 EncryptAllWithUserKeye usando le credenziali locali dell'account per l'esecuzione dei pacchetti.

Impostazione o modifica del livello di protezione dei pacchetti

Per controllare l'accesso al contenuto dei pacchetti e ai valori sensibili contenuti, ad esempio password, impostare il valore della proprietà ProtectionLevel . Per poter compilare il progetto, ai pacchetti contenuti in un progetto deve essere assegnato lo stesso livello di protezione del progetto. Se si modifica l'impostazione della proprietà ProtectionLevel nel progetto, è necessario aggiornare manualmente l'impostazione delle proprietà per i pacchetti.

Per una panoramica delle funzionalità di sicurezza in Integration Services, vedere Panoramica della sicurezza (Integration Services)

Le procedure presenti in questo argomento descrivono come usare SQL Server Data Tools (SSDT) o l'utilità della riga di comando dtutil per modificare la proprietà ProtectionLevel.

Nota

Oltre alle procedure di questo argomento, è in genere possibile impostare o modificare la proprietà ProtectionLevel di un pacchetto quando si importa o esporta il pacchetto. È anche possibile modificare la proprietà ProtectionLevel di un pacchetto quando si usa l'Importazione/Esportazione guidata SQL Server per salvare un pacchetto.

Per impostare o modificare il livello di protezione di un pacchetto in SQL Server Data Tools

  1. Controllare i valori disponibili per la proprietà ProtectionLevel nella sezione Livelli di protezione e determinare il valore appropriato per il pacchetto.

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

  3. Aprire il pacchetto nella finestra di progettazione SSIS.

  4. Se nella finestra Proprietà non sono riportate le proprietà del pacchetto, fare clic sull'area di progettazione.

  5. Selezionare il valore adatto per la proprietà ProtectionLevel nel gruppo Sicurezza della finestra Proprietà.

    Se si seleziona un livello di protezione che richiede una password, immettere la password come valore della proprietà PackagePassword .

  6. Per salvare il pacchetto modificato, scegliere Salva elementi selezionati dal menu File .

Per impostare o modificare il livello di protezione dei pacchetti dal prompt dei comandi

  1. Controllare i valori disponibili per la proprietà ProtectionLevel nella sezione Livelli di protezione e determinare il valore appropriato per il pacchetto.

  2. Controllare i mapping per l'opzione Encrypt nell'argomento Utilità dtutile determinare il valore intero appropriato da usare come valore della proprietà ProtectionLevel selezionata.

  3. Aprire una finestra del prompt dei comandi.

  4. Al prompt dei comandi, passare alla cartella contenente il pacchetto o i pacchetti per cui si vuole impostare la proprietà ProtectionLevel .

    Negli esempi di sintassi illustrati nel passaggio seguente si presuppone che questa cartella sia la cartella corrente.

  5. Impostare o modificare il livello di protezione del pacchetto o dei pacchetti utilizzando un comando simile a quello degli esempi seguenti:

    • Il comando seguente imposta la proprietà ProtectionLevel di un pacchetto singolo nel file system sul livello 2, "Crittografa tutti i dati sensibili con una password", con la password "strongpassword":

      dtutil.exe /file "C:\Package.dtsx" /encrypt file;"C:\Package.dtsx";2;strongpassword

    • Il comando seguente imposta la proprietà ProtectionLevel di tutti i pacchetti in una particolare cartella nel file system sul livello 2, "Crittografa tutti i dati sensibili con una password", con la password "strongpassword":

      for %f in (*.dtsx) do dtutil.exe /file %f /encrypt file;%f;2;strongpassword

      Se si utilizza un comando simile in un file batch, immettere il segnaposto del file "% f" come "%% f" nel file batch.

Finestra di dialogo Livello di protezione pacchetto e progetto

Utilizzare la finestra di dialogo Livello di protezione pacchetto per aggiornare il livello di protezione di un pacchetto. Il livello di protezione determina il metodo di protezione, la password o chiave utente e l'ambito di protezione del pacchetto. La protezione può includere tutti i dati o solo i dati sensibili.

Per comprendere i requisiti e le opzioni per la sicurezza dei pacchetti, vedere Panoramica della sicurezza (Integration Services).

Opzioni

Livello di protezione pacchetto
Selezionare un livello di protezione dall'elenco.

Password
Se si usa il livello di protezione Crittografa tutti i dati riservati con una password o Crittografa tutti i dati con una password , digitare una password.

Conferma password
Digitare di nuovo la password.

Finestra di dialogo Password pacchetto

Utilizzare la finestra di dialogo Password pacchetto per specificare la password del pacchetto per un pacchetto crittografato con una password. È necessario specificare una password se il pacchetto utilizza il livello di protezione Crittografa tutti i dati riservati con una passwordoppure Crittografa tutti i dati con una password .

Opzioni

Password
Consente di immettere la password.

Vedi anche

Pacchetti di Integration Services (SSIS)
Panoramica sulla sicurezza (Integration Services)
Utilità dtutil