Controllo dell'accesso per dati sensibili nei pacchettiAccess Control for Sensitive Data in Packages

Per proteggere i dati in un pacchetto di Integration ServicesIntegration Services , è possibile impostare un livello di protezione in modo da proteggere i dati sensibili o tutti i dati all'interno del pacchetto.To protect the data in an Integration ServicesIntegration Services package, you can set a protection level that helps protect just sensitive data or all the data in the package. Inoltre, è possibile crittografare questi dati con una password o una chiave utente o utilizzare il sistema di crittografia del database.Furthermore, you can encrypt this data with a password or a user key, or rely on the database to encrypt the data. Inoltre, il livello di protezione che si utilizza per un pacchetto non è necessariamente statico, ma cambia durante tutto il ciclo di vita del pacchetto.Also, the protection level that you use for a package is not necessarily static, but changes throughout the life cycle of the package. Spesso si imposta un livello di protezione durante lo sviluppo e un altro appena si distribuisce il pacchetto.You often set one protection level during development and another as soon as you deploy the package.

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 ServicesIntegration Services .In addition to the protection levels described in this topic, you can use fixed database-level roles to protect packages that are saved to the Integration ServicesIntegration Services server.

Definizione di informazioni riservateDefinition of Sensitive Information

In un pacchetto di Integration ServicesIntegration Services le informazioni seguenti sono definite riservate:In an Integration ServicesIntegration Services package, the following information is defined as sensitive:

  • La password di una stringa di connessione.The password part of a connection string. Se, tuttavia, si seleziona un'opzione che implica la crittografia dell'intero pacchetto, viene considerata riservata l'intera stringa di connessione.However, if you select an option that encrypts everything, the whole connection string will be considered sensitive.

  • I nodi XML generati dall'attività contrassegnati come riservati.The task-generated XML nodes that are tagged as sensitive. L'aggiunta di tag ai nodi XML viene controllata da Integration ServicesIntegration Services e non può essere modificata dagli utenti.The tagging of XML nodes is controlled by Integration ServicesIntegration Services and cannot by changed by users.

  • Qualsiasi variabile contrassegnata come riservata.Any variable that is marked as sensitive. Le variabili vengono contrassegnate come riservate da Integration ServicesIntegration Services.The marking of variables is controlled by Integration ServicesIntegration Services.

    In Integration ServicesIntegration Services una proprietà viene considerata riservata a seconda se lo sviluppatore del componente di Integration ServicesIntegration Services , ad esempio una gestione connessione o un'attività, abbia definito la proprietà come riservata.Whether Integration ServicesIntegration Services considers a property sensitive depends on whether the developer of the Integration ServicesIntegration Services component, such as a connection manager or task, has designated the property as sensitive. Gli utenti non possono aggiungere proprietà all'elenco di proprietà considerate riservate, né possono rimuoverle.Users cannot add properties to, nor can they remove properties from, the list of properties that are considered sensitive.

CrittografiaEncryption

La crittografia applicata con i livelli di protezione dei pacchetti viene eseguita tramite l'API MicrosoftMicrosoft Data Protection (DPAPI), che fa parte dell'API Cryptography (CryptoAPI).Encryption, as used by package protection levels, is performed by using the MicrosoftMicrosoft Data Protection API (DPAPI), which is part of the Cryptography API (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.The package protection levels that encrypt packages by using passwords require that you provide a password also. 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.If you change the protection level from a level that does not use a password to one that does, you will be prompted for a password.

Inoltre, per i livelli di protezione che prevedono una password, Integration ServicesIntegration Services usa l'algoritmo di crittografia Triple DES con lunghezza di chiave di 192 bit, disponibile nella libreria di classi .NET Framework.NET Framework (FCL).Also, for the protection levels that use a password, Integration ServicesIntegration Services uses the Triple DES cipher algorithm with a key length of 192 bits, available in the .NET Framework.NET Framework Class Library (FCL).

Livelli di protezioneProtection Levels

Nella tabella seguente vengono descritti i livelli di protezione disponibili in Integration ServicesIntegration Services .The following table describes the protection levels that Integration ServicesIntegration Services provides. I valori tra parentesi derivano dall'enumerazione DTSProtectionLevel .The values in parentheses are values from the DTSProtectionLevel enumeration. 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)SQL Server Data Tools (SSDT).These values appear in the Properties window that you use to configure the properties of the package when you work with packages in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT).

Livello di protezioneProtection level DescrizioneDescription
Non salva i dati sensibili (DontSaveSensitive)Do not save sensitive (DontSaveSensitive) Quando si salva il pacchetto, i valori delle proprietà riservate vengono eliminati.Suppresses the values of sensitive properties in the package when the package is saved. 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,This protection level does not encrypt, but instead it prevents properties that are marked sensitive from being saved with the package and therefore makes the sensitive data unavailable to other users. i quali dovranno specificarli quando aprono il pacchetto.If a different user opens the package, the sensitive information is replaced with blanks and the user must provide the sensitive information.

Se usato con l'utilità dtutil (dtutil.exe), questo livello di protezione corrisponde al valore 0.When used with the dtutil utility (dtutil.exe), this protection level corresponds to the value of 0.
Crittografa tutti i dati con una password (EncryptAllWithPassword)Encrypt all with password (EncryptAllWithPassword) Viene utilizzata una password per crittografare l'intero pacchetto.Uses a password to encrypt the whole package. Il pacchetto viene crittografato con una password specificata dall'utente in fase di creazione o di esportazione del pacchetto.The package is encrypted by using a password that the user supplies when the package is created or exported. Per aprire il pacchetto in Progettazione SSISSSIS o per eseguirlo con l'utilità del prompt dei comandi dtexec , l'utente deve specificare la password del pacchetto.To open the package in SSISSSIS Designer or run the package by using the dtexec command prompt utility, the user must provide the package password. Se non specifica la password corretta, l'utente non può né aprire né eseguire il pacchetto.Without the password the user cannot access or run the package.

Se usato con l'utilità dtutil , questo livello di protezione corrisponde al valore 3.When used with the dtutil utility, this protection level corresponds to the value of 3.
Crittografa tutti i dati con una chiave utente (EncryptAllWithUserKey)Encrypt all with user key (EncryptAllWithUserKey) Viene utilizzata una chiave basata sul profilo utente corrente per crittografare l'intero pacchetto.Uses a key that is based on the current user profile to encrypt the whole package. Il pacchetto può essere aperto in Progettazione SSISSSIS o eseguito con l'utilità del prompt dei comandi dtexec solo dall'utente che lo ha creato o esportato.Only the user who created or exported the package can open the package in SSISSSIS Designer or run the package by using the dtexec command prompt utility.

Se usato con l'utilità dtutil , questo livello di protezione corrisponde al valore 4.When used with the dtutil utility, this protection level corresponds to the value of 4.

Nota: per i livelli di protezione che prevedono una chiave utente, Integration ServicesIntegration Services usa gli standard DPAPI.Note: For protection levels that use a user key, Integration ServicesIntegration Services uses DPAPI standards. Per altre informazioni su DPAPI, vedere il sito MSDN Library all'indirizzo http://msdn.microsoft.com/library.For more information about DPAPI, see the MSDN Library at http://msdn.microsoft.com/library.
Crittografa tutti i dati sensibili con una password (EncryptSensitiveWithPassword)Encrypt sensitive with password (EncryptSensitiveWithPassword) Viene utilizzata una password per crittografare solo i valori delle proprietà riservate nel pacchetto.Uses a password to encrypt only the values of sensitive properties in the package. Per la crittografia viene utilizzato DPAPI.DPAPI is used for this encryption. 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.Sensitive data is saved as a part of the package, but that data is encrypted by using a password that the current user supplies when the package is created or exported. Per poter aprire il pacchetto in Progettazione SSISSSIS , l'utente deve specificare la password.To open the package in SSISSSIS Designer, the user must provide the package 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.If the password is not provided, the package opens without the sensitive data and the current user must provide new values for sensitive data. I tentativi di esecuzione del pacchetto senza specificare la password hanno esito negativo.If the user tries to execute the package without providing the password, package execution fails. Per altre informazioni sulle password e sull'esecuzione dell'utilità della riga di comando, vedere Utilità dtexec.For more information about passwords and command line execution, see dtexec Utility.

Se usato con l'utilità dtutil , questo livello di protezione corrisponde al valore 2.When used with the dtutil utility, this protection level corresponds to the value of 2.
Crittografa tutti i dati sensibili con una chiave utente (EncryptSensitiveWithPassword)Encrypt sensitive with user key (EncryptSensitiveWithUserKey) Viene utilizzata una chiave basata sul profilo utente corrente per crittografare solo i valori delle proprietà riservate nel pacchetto.Uses a key that is based on the current user profile to encrypt only the values of sensitive properties in the package. Il pacchetto può essere caricato solo da uno stesso utente in base allo stesso profilo.Only the same user who uses the same profile can load the package. Gli altri utenti che aprono il pacchetto dovranno immettere le informazioni riservate.If a different user opens the package, the sensitive information is replaced with blanks and the current user must provide new values for the sensitive data. I tentativi di esecuzione del pacchetto hanno esito negativo.If the user attempts to execute the package, package execution fails. Per la crittografia viene utilizzato DPAPI.DPAPI is used for this encryption.

Se usato con l'utilità dtutil , questo livello di protezione corrisponde al valore 1.When used with the dtutil utility, this protection level corresponds to the value of 1.

Nota: per i livelli di protezione che prevedono una chiave utente, Integration ServicesIntegration Services usa gli standard DPAPI.Note: For protection levels that use a user key, Integration ServicesIntegration Services uses DPAPI standards. Per altre informazioni su DPAPI, vedere il sito MSDN Library all'indirizzo http://msdn.microsoft.com/library.For more information about DPAPI, see the MSDN Library at http://msdn.microsoft.com/library.
Usa l'archiviazione su server per la crittografia (ServerStorage)Rely on server storage for encryption (ServerStorage) Protegge l'intero pacchetto tramite ruoli del database di SQL ServerSQL Server .Protects the whole package using SQL ServerSQL Server database roles. Questa opzione è supportata quando i pacchetti vengono salvati nel database msdb di SQL ServerSQL Server .This option is supported when a package is saved to the SQL ServerSQL Server msdb database. Anche il catalogo SSISDB usa il livello di protezione ServerStorage .In addition, the SSISDB catalog uses the ServerStorage protection level

Questa opzione non è supportata quando un pacchetto viene salvato nel file system da SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT).This option is not supported when a package is saved to the file system from SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT).

Impostazione del livello di protezione e catalogo SSISDBProtection Level Setting and the SSISDB Catalog

Il catalogo SSISDB usano il livello di protezione ServerStorage .The SSISDB catalog uses the ServerStorage protection level. Quando si distribuisce un progetto di Integration ServicesIntegration Services nel server Integration ServicesIntegration Services , il catalogo crittografa automaticamente i dati e i valori sensibili del pacchetto.When you deploy an Integration ServicesIntegration Services project to the Integration ServicesIntegration Services server, the catalog automatically encrypts the package data and sensitive values. Il catalogo inoltre decrittografa automaticamente i dati quando viene recuperato.The catalog also automatically decrypts the data when you retrieve it.

Se si esporta il progetto (file con estensione ispac) dal server Integration ServicesIntegration Services al file system, il sistema modifica automaticamente il livello di protezione in EncryptSensitiveWithUserKey.If you export the project (.ispac file) from the Integration ServicesIntegration Services server to the file system, the system automatically changes the protection level to EncryptSensitiveWithUserKey. Se si importa il progetto usando Importazione guidata progetto di Integration Services in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT), la proprietà ProtectionLevel nella finestra Proprietà mostra il valore EncryptSensitiveWithUserKey.If you import the project by using the Integration Services Import Project Wizard in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT), the ProtectionLevel property in the Properties window shows a value of EncryptSensitiveWithUserKey.

Impostazione del livello di protezione sulla base del ciclo di vita del pacchettoProtection Level Setting Based on Package Life Cycle

Il livello di protezione di un pacchetto di SQL ServerSQL Server Integration ServicesIntegration Services viene impostato quando il pacchetto viene sviluppato per la prima volta in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT).You set the protection level of a SQL ServerSQL Server Integration ServicesIntegration Services package when you first develop it in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT). È possibile aggiornarlo successivamente quando il pacchetto viene distribuito, importato o esportato da Integration ServicesIntegration Services a SQL Server Management StudioSQL Server Management Studiooppure copiato da SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT) a SQL ServerSQL Server, nell'archivio pacchetti SSISSSIS o nel file system.Later, when the package is deployed, imported or exported from Integration ServicesIntegration Services in SQL Server Management StudioSQL Server Management Studio, or copied from SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT) to SQL ServerSQL Server, the SSISSSIS Package Store, or the file system, you can update the package protection level. 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.For example, if you create and save packages on your computer with one of the user key protection level options, you likely would want to change the protection level when you give the package to other users; otherwise they cannot open the package.

In genere, il livello di protezione viene modificato come spiegato nei passaggi seguenti:Typically, you change the protection level as listed in the following steps:

  1. Durante lo sviluppo, lasciare il livello di protezione dei pacchetti impostato sul valore predefinito EncryptSensitiveWithUserKey.During development, leave the protection level of packages set to the default value, EncryptSensitiveWithUserKey. Con questa impostazione si avrà la certezza che solo lo sviluppatore veda i valori riservati nel pacchetto.This setting helps ensure that only the developer sees sensitive values in the package. In alternativa, è possibile provare a usare EncryptAllWithUserKeyo DontSaveSensitive.Or, you can consider using EncryptAllWithUserKey, or DontSaveSensitive.

  2. Al momento di distribuire i pacchetti, è necessario impostare un livello di protezione che non dipenda dalla chiave utente dello sviluppatore.When it is time to deploy the packages, you have to change the protection level to one that does not depend on the developer's user key. Di conseguenza, in genere è necessario selezionare EncryptSensitiveWithPasswordo EncryptAllWithPassword.Therefore you typically have to select EncryptSensitiveWithPassword, or EncryptAllWithPassword. Crittografare i pacchetti assegnando una password complessa temporanea che è nota anche dal team di gestione nell'ambiente di produzione.Encrypt the packages by assigning a temporary strong password that is also known to the operations team in the production environment.

  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.After the packages have been deployed to the production environment, the operations team can re-encrypt the deployed packages by assigning a strong password that is known only to them. In alternativa, può crittografare i pacchetti distribuiti selezionando EncryptSensitiveWithUserKey o EncryptAllWithUserKeye usando le credenziali locali dell'account per l'esecuzione dei pacchetti.Or, they can encrypt the deployed packages by selecting EncryptSensitiveWithUserKey or EncryptAllWithUserKey, and using the local credentials of the account that will run the packages.

Impostazione o modifica del livello di protezione dei pacchetti Set or Change the Protection Level of Packages

Per controllare l'accesso al contenuto dei pacchetti e ai valori sensibili contenuti, ad esempio password, impostare il valore della proprietà ProtectionLevel .To control access to the contents of packages and to the sensitive values that they contain, such as passwords, set the value of the ProtectionLevel property. Per poter compilare il progetto, ai pacchetti contenuti in un progetto deve essere assegnato lo stesso livello di protezione del progetto.The packages contained in a project need to have the same protection level as the project, to build the project. Se si modifica l'impostazione della proprietà ProtectionLevel nel progetto, è necessario aggiornare manualmente l'impostazione delle proprietà per i pacchetti.If you change the ProtectionLevel property setting on the project, you need to manually update the property setting for the packages.

Per informazioni generali sulle funzionalità di sicurezza in Integration ServicesIntegration Services, vedere Panoramica della sicurezza (Integration Services).For an overview of security features in Integration ServicesIntegration Services, see Security Overview (Integration Services).

Le procedure presenti in questo argomento descrivono come usare SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT) o l'utilità della riga di comando dtutil per modificare la proprietà ProtectionLevel.The procedures in this topic describe how to use either SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT) or the dtutil command prompt utility to change the ProtectionLevel property.

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.In addition to the procedures in this topic, you can typically set or change the ProtectionLevel property of a package when you import or export the package. È anche possibile modificare la proprietà ProtectionLevel di un pacchetto quando si usa l'Importazione/Esportazione guidata SQL ServerSQL Server per salvare un pacchetto.You can also change the ProtectionLevel property of a package when you use the SQL ServerSQL Server Import and Export Wizard to save a package.

Per impostare o modificare il livello di protezione di un pacchetto in SQL Server Data ToolsTo set or change the protection level of a package in SQL Server Data Tools

  1. Controllare i valori disponibili per la proprietà ProtectionLevel nell'argomento Impostazione del livello di protezione dei pacchettie determinare il valore appropriato per il pacchetto.Review the available values for the ProtectionLevel property in the topic, Setting the Protection Level of Packages, and determine the appropriate value for your package.

  2. In SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT)aprire il progetto di Integration ServicesIntegration Services contenente il pacchetto.In SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT), open the Integration ServicesIntegration Services project that contains the package.

  3. Aprire il pacchetto nella finestra di progettazione SSISSSIS .Open the package in the SSISSSIS designer.

  4. Se nella finestra Proprietà non sono riportate le proprietà del pacchetto, fare clic sull'area di progettazione.If the Properties window does not show the properties of the package, click the design surface.

  5. Selezionare il valore adatto per la proprietà ProtectionLevel nel gruppo Sicurezza della finestra Proprietà.In the Properties window, in the Security group, select the appropriate value for the ProtectionLevel property.

    Se si seleziona un livello di protezione che richiede una password, immettere la password come valore della proprietà PackagePassword .If you select a protection level that requires a password, enter the password as the value of the PackagePassword property.

  6. Per salvare il pacchetto modificato, scegliere Salva elementi selezionati dal menu File .On the File menu, select Save Selected Items to save the modified package.

Per impostare o modificare il livello di protezione dei pacchetti dal prompt dei comandiTo set or change the protection level of packages at the command prompt

  1. Esaminare i valori disponibili per il ProtectionLevel proprietà nella sezione impostando il livello di protezione dei pacchettie determinare il valore appropriato per il pacchetto.Review the available values for the ProtectionLevel property in the section, Setting the Protection Level of Packages, and determine the appropriate value for your package.

  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.Review the mappings for the Encrypt option in the topic, dtutil Utility, and determine the appropriate integer to use as the value of the selected ProtectionLevel property.

  3. Aprire la finestra del prompt dei comandi.Open a Command Prompt window.

  4. Al prompt dei comandi, passare alla cartella contenente il pacchetto o i pacchetti per cui si vuole impostare la proprietà ProtectionLevel .At the command prompt, navigate to the folder that contains the package or packages for which you want to set the ProtectionLevel property.

    Negli esempi di sintassi illustrati nel passaggio seguente si presuppone che questa cartella sia la cartella corrente.The syntax examples shown in the following step assume that this folder is the current folder.

  5. Impostare o modificare il livello di protezione del pacchetto o dei pacchetti utilizzando un comando simile a quello degli esempi seguenti:Set or change the protection level of the package or packages by using a command similar to the one of the following examples:

    • 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":The following command sets the ProtectionLevel property of an individual package in the file system to level 2, "Encrypt sensitive with password", with the 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":The following command sets the ProtectionLevel property of all packages in a particular folder in the file system to level 2, "Encrypt sensitive with password", with the 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.If you use a similar command in a batch file, enter the file placeholder, "%f", as "%%f" in the batch file.

Progetto protezione livello dialogo pacchetto Package Project Protection Level Dialog Box

Utilizzare la finestra di dialogo Livello di protezione pacchetto per aggiornare il livello di protezione di un pacchetto.Use the Package Protection Level dialog box to update the protection level of a package. Il livello di protezione determina il metodo di protezione, la password o chiave utente e l'ambito di protezione del pacchetto.The protection level determines the protection method, the password or user key, and the scope of package protection. La protezione può includere tutti i dati o solo i dati sensibili.Protection can include all data or sensitive data only.

Per comprendere i requisiti e le opzioni per la protezione del pacchetto, può risultare utile visualizzare Cenni preliminari sulla sicurezza ( Integration Services ).To understand the requirements and options for package security, you may find it useful to see Security Overview (Integration Services).

OpzioniOptions

Package protection levelPackage protection level
Selezionare un livello di protezione dall'elenco.Select a protection level from the list.

PasswordPassword
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.If using the Encrypt sensitive data with password or Encrypt all data with password protection level, type a password.

Conferma passwordRetype password
Digitare di nuovo la password.Type the password again.

Finestra di dialogo Password pacchetto Package Password Dialog Box

Utilizzare la finestra di dialogo Password pacchetto per specificare la password del pacchetto per un pacchetto crittografato con una password.Use the Package Password dialog box to provide the package password for a package that is encrypted with a 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 .You must provide a password if the package uses the Encrypt sensitive with password or Encrypt all with password protection level.

OpzioniOptions

PasswordPassword
Consente di immettere la password.Enter the password.

Vedere ancheSee Also

Pacchetti di Integration Services (SSIS) Integration Services (SSIS) Packages
Cenni preliminari sulla sicurezza ( Integration Services )Security Overview (Integration Services)
Utilità DTUtildtutil Utility