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

S’applique à : SQL Server SSIS Integration Runtime dans Azure Data Factory

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.

Notes

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 classes .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 SQL Server Data Tools (SSDT).

Niveau de protection Description
Ne pas enregistrer les informations 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.

Utilisé avec l’utilitaire dtutil (dtutil.exe), ce niveau de protection correspond à la valeur 0.
Chiffrer avec 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 tout avec la 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 ce dernier dans le concepteur SSIS ou l’exécuter à l’aide de l’utilitaire d’invite de commandes dtexec .

Avec l’utilitaire dtutil , ce niveau de protection correspond à la valeur 4.

Remarque : pour les niveaux de protection s’appuyant sur une clé utilisateur, Integration Services se base sur les normes DPAPI. Pour plus d’informations sur DPAPI, consultez la bibliothèque MSDN à l’adresse https://msdn.microsoft.com/library.
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 dtexec Utility.

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.

Avec l’utilitaire dtutil , ce niveau de protection correspond à la valeur 1.

Remarque : pour les niveaux de protection s’appuyant sur une clé utilisateur, Integration Services se base sur les normes DPAPI. Pour plus d’informations sur DPAPI, consultez la bibliothèque MSDN à l’adresse https://msdn.microsoft.com/library.
Se fier au stockage du 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 quand un package est enregistré dans la base de données msdb SQL Server . 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 SQL Server Data Tools (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 Integration Services vers le système de fichiers, le système change automatiquement le niveau de protection en EncryptSensitiveWithUserKey. Si vous importez un projet à l'aide de l' Assistant Importation de projet Integration Services dans SQL Server Data Tools (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 SQL Server Data Tools (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 SQL Server Data Tools (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 EncryptAllWithUserKeyou 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 EncryptSensitiveWithPasswordou 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.

Définir ou modifier le niveau de protection des packages

Pour contrôler l’accès au contenu des packages et aux valeurs sensibles qu’ils contiennent, telles que les mots de passe, définissez la valeur de la propriété ProtectionLevel . Les packages contenus dans un projet doivent avoir le même niveau de protection que le projet pour permettre sa génération. Si vous modifiez le paramètre de propriété ProtectionLevel du projet, vous devez mettre à jour manuellement le paramètre de propriété des packages.

Pour obtenir une vue d’ensemble des fonctionnalités de sécurité dans Integration Services, consultez Vue d’ensemble de la sécurité (Integration Services).

Les procédures dans cette rubrique décrivent comment utiliser SQL Server Data Tools (SSDT) ou l’utilitaire en ligne de commande dtutil pour modifier la propriété ProtectionLevel .

Notes

En plus des procédures dans cette rubrique, vous pouvez en général définir ou modifier la propriété ProtectionLevel d’un package quand vous importez ou exportez le package. Vous pouvez également modifier la propriété ProtectionLevel d’un package quand vous utilisez l’Assistant Importation et exportation SQL Server pour enregistrer un package.

Pour définir ou modifier le niveau de protection d'un package dans les outils de données SQL Server

  1. Examinez les valeurs disponibles pour la propriété ProtectionLevel dans la section Niveaux de protection, puis déterminez la valeur appropriée pour votre package.

  2. Dans SQL Server Data Tools (SSDT), ouvrez le projet Integration Services qui contient le package.

  3. Ouvrez le package dans le Concepteur SSIS .

  4. Si la fenêtre Propriétés n'affiche pas les propriétés du package, cliquez sur l'aire de conception.

  5. Dans la fenêtre Propriétés, dans le groupe Sécurité , sélectionnez la valeur appropriée pour la propriété ProtectionLevel .

    Si vous sélectionnez un niveau de protection qui requiert un mot de passe, entrez le mot de passe comme valeur de la propriété PackagePassword .

  6. Dans le menu Fichier , sélectionnez Enregistrer les éléments sélectionnés pour enregistrer le package modifié.

Pour définir ou modifier le niveau de protection de package à l'invite de commandes

  1. Examinez les valeurs disponibles pour la propriété ProtectionLevel dans la section Niveaux de protection, puis déterminez la valeur appropriée pour votre package.

  2. Examinez les mappages pour l’option Encrypt dans la rubrique Utilitaire dtutilet déterminez l’entier approprié à utiliser comme valeur de la propriété ProtectionLevel sélectionnée.

  3. Ouvrez une fenêtre d’invite de commandes.

  4. À l’invite de commandes, naviguez jusqu’au dossier qui contient le ou les packages pour lesquels vous souhaitez définir la propriété ProtectionLevel .

    Les exemples de syntaxe affichés à l'étape suivante supposent que ce dossier est le dossier actif.

  5. Définissez ou modifiez le niveau de protection des packages en utilisant une commande semblable à celle des exemples suivants :

    • La commande suivante définit la propriété ProtectionLevel d’un package dans le système de fichiers au niveau 2, « Chiffrer les données sensibles avec un mot de passe », avec le mot de passe « strongpassword » :

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

    • La commande suivante définit la propriété ProtectionLevel de tous les packages dans un dossier spécifique dans le système de fichiers au niveau 2, « Chiffrer les données sensibles avec un mot de passe », avec le mot de passe « strongpassword » :

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

      Si vous utilisez une commande semblable dans un fichier de commandes, entrez l'espace réservé de fichier, « % f », comme « %% f » dans le fichier de commandes.

Boîte de dialogue Niveau de protection du package

Utilisez la boîte de dialogue Niveau de protection du package pour mettre à jour le niveau de protection d'un package. Le niveau de protection détermine la méthode de protection (par mot de passe ou par clé utilisateur) et l'étendue de la protection du package. La protection peut inclure toutes les données ou uniquement les données sensibles.

Pour comprendre les exigences et les options de la sécurité du package, il peut être utile de consulter Vue d’ensemble de la sécurité (Integration Services).

Options

Niveau de protection du package
Sélectionnez un niveau de protection dans la liste.

Mot de passe
Si vous utilisez le niveau de protection Chiffrer les données sensibles avec un mot de passe ou Chiffrer toutes les données avec un mot de passe , tapez un mot de passe.

Retapez le mot de passe
Entrez à nouveau le mot de passe.

Boîte de dialogue Mot de passe du package

Utilisez la boîte de dialogue Mot de passe du package pour fournir le mot de passe d'un package qui est chiffré par un mot de passe. Vous devez fournir un mot de passe si le package utilise le niveau de protection Chiffrer les données sensibles avec un mot de passeou Chiffrer toutes les données avec un mot de passe .

Options

Mot de passe
Entrez le mot de passe.

Voir aussi

Packages Integration Services (SSIS)
Vue d’ensemble de la sécurité (Integration Services)
Utilitaire dtutil