Partager via


Contrôle d'accès pour les données sensibles présentes dans les packages

Pour protéger les données d'un package Integration Services, vous pouvez définir un niveau de protection qui permet de 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.

[!REMARQUE]

Outre les niveaux de protection décrits dans cette rubrique, vous pouvez utiliser des rôles fixes au niveau de la base de données pour protéger les packages enregistrés sur le serveur 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.

Chiffrement

Le chiffrement, tel qu'il est utilisé par les niveaux de protection des packages, est effectué au moyen de l'API de protection des données (DPAPI) Microsoft, 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).

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 Outils de données SQL Server (SSDT).

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.

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 est prise en charge lorsque le package est enregistré dans la base de données SQL Server msdb. En outre, le catalogue SSISDB utilise le niveau de protection ServerStorage

Cette option n'est pas prise en charge lorsqu'un package est enregistré dans le système de fichiers à partir de Outils de données SQL Server (SSDT).

Paramètre de niveau de protection et catalogue SSISDB

Le catalogue SSISDB utilise le niveau de protection ServerStorage. Lorsque vous déployez un projet Integration Services sur le serveur Integration Services, le catalogue chiffre automatiquement les données du package et les valeurs sensibles. Le catalogue déchiffre automatiquement les données lorsque vous les récupérez.

Si vous exportez le projet (.ispac) du serveur de Integration Services dans le système de fichiers, le système modifie automatiquement le niveau de protection en EncryptSensitiveWithUserKey. Si vous importez un projet à l'aide de l'Assistant Importation de projet Integration Services dans Outils de données SQL Server (SSDT), la propriété ProtectionLevel dans la fenêtre Propriétés indique une valeur de EncryptSensitiveWithUserKey.

Définition du niveau de protection en fonction du cycle de vie du package

Vous définissez le niveau de protection d'un package SQL Server Integration Services lorsque vous commencez son développement dans Outils de données SQL Server (SSDT). Plus tard, lorsque le package est déployé, importé ou exporté à partir de Integration Services dans SQL Server Management Studio, ou copié à partir de Outils de données SQL Server (SSDT) 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 :

  1. 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.

  2. 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.

  3. 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.

Tâches associées

Contenu connexe

Icône Integration Services (petite) Rester à jour avec Integration Services

Pour obtenir les derniers téléchargements, articles, exemples et vidéos de Microsoft, ainsi que des solutions sélectionnées par la communauté, visitez la page Integration Services sur MSDN :


Pour recevoir une notification automatique de ces mises à jour, abonnez-vous aux flux RSS disponibles sur la page.

Voir aussi

Tâches

Importer et exporter des packages (Service SSIS)

Concepts

Packages Integration Services (SSIS)

Vue d'ensemble de la sécurité (Integration Services)