Définition du niveau de protection des packages
Pour protéger les données dans un package Integration Services, vous pouvez définir un niveau de protection qui aide à protéger uniquement les données sensibles ou toutes les données du package. En outre, vous pouvez chiffrer ces données avec un mot de passe ou une clé utilisateur ou vous fier à la base de données pour chiffrer les données. De plus, le niveau de protection que vous utilisez pour un package n'est pas nécessairement statique, mais change tout au long du cycle de vie du package. On définit souvent un niveau de protection pendant le développement et un autre dès le déploiement du package.
Notes
Outre les niveaux de protection décrits dans cette rubrique, les packages enregistrés dans la base de données msdb peuvent être protégés à l'aide des rôles de base de données fixes. Integration Services inclut trois rôles de base de données fixes pour attribuer des autorisations aux packages : db_ssisadmin, db_ssisltduser et db_ssisoperator. Pour plus d'informations, consultez Utilisation des rôles Integration Services.
Définition des informations sensibles
Dans un package Integration Services, les informations suivantes sont définies comme sensibles :
La partie mot de passe d'une chaîne de connexion. Cependant, si vous sélectionnez une option qui chiffre toutes les données, la chaîne de connexion toute entière sera considérée comme sensible.
Les nœuds XML générés par la tâche qui sont marqués comme sensibles. Le marquage des nœuds XML est contrôlé par Integration Services et ne peut pas être modifié par les utilisateurs.
Toute variable marquée comme sensible. Le marquage des variables est contrôlé par Integration Services.
Le fait qu'Integration Services considère une propriété comme sensible repose sur le fait que le développeur du composant Integration Services, tel qu'un gestionnaire de connexions ou une tâche, l'a désignée comme sensible. Les utilisateurs ne peuvent pas ajouter de propriétés à la liste des propriétés considérées sensibles, ni en supprimer.
Utilisation du chiffrement
Le chiffrement, tel qu'il est utilisé par les niveaux de protection des packages, est effectué au moyen de DPAPI (Microsoft Data Protection API), qui fait partie de l'API de chiffrement (CryptoAPI).
Les niveaux de protection de package qui chiffrent les packages à l'aide de mots de passe nécessitent que vous fournissiez également un mot de passe. Si vous changez de niveau de protection en passant d'un niveau qui n'utilise pas de mot de passe à un niveau qui en utilise, un mot de passe vous sera demandé.
En outre, pour les niveaux de protection utilisant un mot de passe, Integration Services utilise l'algorithme de chiffrement Triple DES avec une longueur de clé de 192 bits, disponible dans la bibliothèque de classe .NET Framework (FCL).
Fonctionnement des niveaux de protection
Le tableau suivant décrit les niveaux de protection fournis par Integration Services. Les valeurs entre parenthèses sont des valeurs de l'énumération DTSProtectionLevel. Ces valeurs apparaissent dans la fenêtre Propriétés que vous utilisez pour configurer les propriétés du package lorsque vous travaillez avec des packages dans Business Intelligence Development Studio.
Niveau de protection |
Description |
---|---|
Ne pas enregistrer les données sensibles (DontSaveSensitive). |
Supprime les valeurs des propriétés sensibles dans le package lors de son enregistrement. Ce niveau de protection n'effectue pas de chiffrement, mais empêche les propriétés marquées comme sensibles d'être enregistrées avec le package, rendant de ce fait les données sensibles inaccessibles aux autres utilisateurs. Si un utilisateur différent ouvre le package, les informations sensibles sont remplacées par des espaces et l'utilisateur doit fournir les informations sensibles. En cas d'utilisation avec l'utilitaire dtutil (dtutil.exe), ce niveau de protection correspond à la valeur 0. |
Chiffrer toutes les données avec un mot de passe (EncryptAllWithPassword). |
Utilise un mot de passe pour chiffrer l'ensemble du package. Le package est chiffré à l'aide d'un mot de passe fourni par l'utilisateur lorsque le package est créé ou exporté. Pour ouvrir le package dans le concepteur SSIS ou exécuter le package à l'aide de l'utilitaire d'invite de commandes dtexec, l'utilisateur doit fournir le mot de passe du package. Sans le mot de passe, l'utilisateur ne peut pas accéder au package ni l'exécuter. En cas d'utilisation avec l'utilitaire dtutil, ce niveau de protection correspond à la valeur 3. |
Chiffrer toutes les données avec une clé utilisateur (EncryptAllWithUserKey). |
Utilise une clé basée sur le profil utilisateur actuel pour chiffrer l'ensemble du package. Seul l'utilisateur qui a créé ou exporté le package peut ouvrir celui-ci dans le concepteur SSIS ou l'exécuter à l'aide de l'utilitaire d'invite de commandes dtexec. En cas d'utilisation avec l'utilitaire dtutil, ce niveau de protection correspond à la valeur 4.
Remarque
Pour les niveaux de protection utilisant une clé utilisateur, Integration Services utilise les normes DPAPI. Pour plus d'informations sur DPAPI, consultez la bibliothèque MSDN à l'adresse https://msdn.microsoft.com/library (en anglais).
|
Chiffrer les données sensibles avec un mot de passe (EncryptSensitiveWithPassword). |
Utilise un mot de passe pour chiffrer uniquement les valeurs des propriétés sensibles dans le package. DPAPI est utilisé pour ce chiffrement. Les données sensibles sont enregistrées en tant que partie du package, mais ces données sont chiffrées à l'aide d'un mot de passe fourni par l'utilisateur actuel lorsque le package est créé ou exporté. Pour ouvrir le package dans le concepteur SSIS, l'utilisateur doit fournir le mot de passe du package. Si le mot de passe n'est pas fourni, le package est ouvert sans les données sensibles et l'utilisateur actuel doit fournir de nouvelles valeurs pour les données sensibles. Si l'utilisateur tente d'exécuter le package sans fournir de mot de passe, l'exécution du package échoue. Pour plus d'informations sur les mots de passe et l'exécution de lignes de commande, consultez Utilitaire dtexec (outil SSIS). En cas d'utilisation avec l'utilitaire dtutil, ce niveau de protection correspond à la valeur 2. |
Chiffrer les données sensibles avec une clé utilisateur (EncryptSensitiveWithUserKey). |
Utilise une clé basée sur le profil utilisateur actuel pour chiffrer uniquement les valeurs des propriétés sensibles dans le package. Seul le même utilisateur qui utilise le même profil peut charger le package. Si un utilisateur différent ouvre le package, les informations sensibles sont remplacées par des espaces et l'utilisateur actuel doit fournir de nouvelles valeurs pour les informations sensibles. Si l'utilisateur tente d'exécuter le package, l'exécution du package échoue. DPAPI est utilisé pour ce chiffrement. En cas d'utilisation avec l'utilitaire dtutil, ce niveau de protection correspond à la valeur 1.
Remarque
Pour les niveaux de protection utilisant une clé utilisateur, Integration Services utilise les normes DPAPI. Pour plus d'informations sur DPAPI, consultez la bibliothèque MSDN à l'adresse https://msdn.microsoft.com/library (en anglais).
|
Se fier au serveur pour le chiffrement (ServerStorage) |
Protège le package entier à l'aide des rôles de base de données SQL Server. Cette option n'est prise en charge que lorsque le package est enregistré dans la base de données SQL Server msdb. Elle n'est pas prise en charge lorsqu'un package est enregistré dans le système de fichiers à partir de Business Intelligence Development Studio. |
Modification du niveau de protection en fonction du cycle de vie de package
Vous définissez le niveau de protection d'un package SQL Server Integration Services lorsque vous commencez son développement dans Business Intelligence Development Studio. Plus tard, lorsque le package est déployé, importé ou exporté à partir de Integration Services dans SQL Server Management Studio, ou copié à partir de Business Intelligence Development Studio vers SQL Server, le magasin de packages SSIS ou le système de fichiers, vous pouvez mettre à jour le niveau de protection du package. Par exemple, si vous créez et enregistrez des packages sur votre ordinateur avec une des options de niveau de protection à clé utilisateur, vous souhaiterez sans doute modifier le niveau de protection lorsque vous donnerez le package à d'autres utilisateurs, pour qu'ils puissent l'ouvrir.
En général, vous modifiez le niveau de protection selon les étapes suivantes :
Pendant le développement, laissez le niveau de protection de packages défini à la valeur par défaut, EncryptSensitiveWithUserKey. Ce paramètre aide à s'assurer que seul le développeur peut afficher les valeurs sensibles dans le package. Ou vous pouvez envisager d'utiliser EncryptAllWithUserKey ou DontSaveSensitive.
Lorsqu'il est temps de déployer les packages, vous devez affecter un niveau de protection qui ne dépend pas de la clé utilisateur du développeur. Par conséquent, vous devez sélectionner en général EncryptSensitiveWithPassword ou EncryptAllWithPassword. Chiffrez les packages en assignant un mot de passe fort temporaire également connu de l'équipe d'exploitation dans l'environnement de production.
Une fois que les packages ont été déployés dans l'environnement de production, l'équipe d'exploitation peut rechiffrer les packages déployés en assignant un mot de passe fort connu uniquement d'eux. Ils peuvent également chiffrer les packages déployés en sélectionnant EncryptSensitiveWithUserKey ou EncryptAllWithUserKey, et en utilisant les informations d'identification locales du compte qui exécutera les packages.
|