Bases de données

Sécuriser vos données avec Actian Vector, 1ère partie

Martin Fuerderer

3 décembre 2024

image montrant une personne sécurisant des données avec actian vector

La nécessité de protéger les données contre les accès non autorisés n'est pas nouvelle. Elle est exigée depuis longtemps par les lois relatives au traitement des informations personnelles identifiables (PII). Mais l'utilisation croissante de services de données dans le nuage pour toutes sortes de données propriétaires qui ne sont pas des IPI fait désormais de la sécurité des données un élément important de la plupart des stratégies en matière de données.

Voici le début d'une série d'articles de blogue qui examinent en détail comment Actian Vector peut assurer la sécurité des données. Le premier article explique le concept de base du chiffrement au repos et la façon dont la fonctionnalité de chiffrement des bases de données d'Actian Vector le met en œuvre.

Comprendre le chiffrement au repos

Le chiffrement au repos fait référence au chiffrement des données au reposc'est-à-dire des données qui sont conservées, généralement sur un disque ou dans un système de stockage en nuage. Ce chiffrement peut être utilisé dans un système de base de données qui est principalement constitué de données utilisateur dans des tables et des index, mais qui comprend également les métadonnées décrivant l'organisation des données utilisateur . L'objectif principal du chiffrement au repos est de sécuriser les données persistantes contre un accès direct non autorisé sur le disque ou dans le stockage en nuage, c'est-à-dire sans connexion au système de base de données.

Le cryptage peut être transparent pour les applications de base de données. Dans ce cas, le cryptage et le décryptage sont gérés par l'administrateur, généralement au niveau des bases de données. L'application n'a alors pas besoin d'être informée du cryptage. Elle se connecte à la base de données pour accéder aux données et les utiliser comme s'il n'y avait pas de cryptage du tout. Dans Actian Vector, ce type de cryptage au repos est appelé cryptage de la base de données.

Le cryptage au niveau de l'application, quant à lui, exige que l'application gère le cryptage et le décryptage. Cela signifie souvent que l'utilisateur l'application doit fournir une clé de chiffrement pour le chiffrement (par exemple, lorsque des données sont insérées) et le déchiffrement (par exemple, lorsque des données sont sélectionnées). Bien que plus compliquée, cette solution offre davantage de contrôle à l'application et à l'utilisateur.

Par exemple, le cryptage peut être appliqué de manière plus fine à des tableaux spécifiques, à des colonnes de tableaux ou même à des valeurs d'enregistrement individuelles dans des colonnes de tableaux. Il peut être possible d'utiliser des clés de chiffrement individuelles pour des valeurs de données différentes. Ainsi, les utilisateurs peuvent chiffrer leurs données privées avec leur propre clé de chiffrement et être sûrs que sans cette clé de chiffrement, aucun autre utilisateur ne peut voir les données en clair. Dans Actian Vector, le chiffrement au niveau de l'application est appelé chiffrement basé sur les fonctions.

Utilisation du cryptage des bases de données dans Actian Vector

Dans Actian Vector, le chiffrement transparent pour l'application fonctionne au niveau de la base de données et est donc appelé chiffrement de la base de données. Le fait qu'une base de données soit cryptée ou non est déterminé lors de la création de la base de données et ne peut pas être modifié ultérieurement. Lorsqu'une base de données est créée avec un cryptage de base de données, toutes les données persistantes dans les tables et les index, ainsi que les métadonnées de la base de données, sont cryptées.

La méthode de cryptage est l'AES 256 bits, qui nécessite une clé de cryptage symétrique de 32 octets. Symétrique signifie que la même clé est utilisée pour crypter et décrypter les données. Cette clé est générée individuellement pour chaque base de données cryptée et est appelée clé (de cryptage) de la base de données.

Pour que la clé de la base de données soit disponible, elle est stockée dans une file interne du système du serveur de base de données, où elle est protégée par une phrase de passe. Cette phrase de passe est fournie par l'utilisateur lors de la création de la base de données. Cependant, la clé de la base de données n'est pas utilisée pour crypter directement les données de l utilisateur . Elle sert plutôt à crypter, c'est-à-dire à protéger, un autre ensemble de clés de cryptage qui, à leur tour, sont utilisées pour crypter les données de utilisateur dans les tables et les index. Cet ensemble de clés de chiffrement est appelé clés (de chiffrement) de table.

Une fois la base de données créée, l'administrateur peut utiliser la phrase de passe choisie pour "verrouiller" la base de données. Lorsque la base de données est verrouillée, il est impossible d'accéder aux données cryptées. De même, l'administrateur utilise également la phrase de passe pour "déverrouiller" une base de données verrouillée et permettre à nouveau l'accès aux données cryptées. Lorsque la base de données est déverrouillée, l'administrateur peut modifier la phrase d'authentification. S'il le souhaite, il est également possible d'effectuer une rotation de la clé de la base de données lors du changement de la phrase de passe.

La rotation de la clé de la base de données est facultative, car cela signifie que l'ensemble du conteneur des clés de tables doit être décrypté avec l'ancienne clé de la base de données, puis recrypté avec la nouvelle clé de la base de données. Comme ce conteneur de clés de tables contient également d'autres métadonnées, il peut être assez volumineux et la rotation de la clé de base de données peut donc devenir une opération lente et coûteuse en termes de calcul. La rotation de la clé de la base de données n'est donc recommandée que si l'on a de bonnes raisons de penser que la clé de la base de données a été compromise. La plupart du temps, il suffit de modifier la phrase d'authentification. Et cela se fait rapidement.

Avec Actian Vector, il est également possible d'effectuer une rotation des clés de chiffrement des tables. Cette opération s'effectue indépendamment de la modification de la phrase de passe et de la clé de la base de données, et peut être effectuée sur une base de données complète ainsi que sur des tables individuelles. Pour chaque clé renouvelée, les données doivent être décryptées avec l'ancienne clé et recryptées avec la nouvelle. Dans ce cas, il s'agit de données utilisateur dans les tables et les index. Si ces données sont très volumineuses, la rotation des clés peut être très coûteuse et prendre beaucoup de temps. C'est particulièrement vrai lorsqu'il s'agit de faire pivoter toutes les clés des tables d'une base de données.

Flux de travail typique de l'utilisation du cryptage des bases de données dans Actian Vector :

  • Créer une base de données avec cryptage :
      1. createdb -encrypt <database_name>

Cette commande demande deux fois à l'utilisateur de saisir la phrase de passe, puis crée la base de données en la chiffrant. La nouvelle base de données reste déverrouillée, c'est-à-dire qu'elle est facilement accessible, jusqu'à ce qu'elle soit explicitement verrouillée ou jusqu'à l'arrêt du système de base de données.

Il est important que le créateur de la base de données se souvienne de la phrase de passe fournie, car elle est nécessaire pour déverrouiller la base de données et la rendre accessible, par exemple après un redémarrage du système de base de données.

  • Verrouiller la base de données cryptée :
      1. Connectez-vous à la base de données déverrouillée à l'aide de Terminal Monitor :
        sql <database_name>
      2. SQL pour verrouiller la base de données :
        DISABLE PASSPHRASE '<user supplied passphrase>'; \g

L'instruction SQL verrouille la base de données. Les nouvelles tentatives de connexion à la base de données sont rejetées avec une erreur correspondante. Les sessions qui se sont connectées précédemment peuvent encore accéder aux données jusqu'à ce qu'elles se déconnectent.

Pour que le verrouillage de la base de données soit également immédiatement effective pour les sessions déjà connectées, émettez en outre l'instruction SQL suivante :

      1. CALL X100(TERMINATE) ; \g
  • Déverrouiller la base de données cryptée :
      1. Connectez-vous à la base de données verrouillée avec le Terminal Monitor et l'option "-no_x100" :
        sql -no_x100 <database_name>
      2. SQL pour déverrouiller la base de données :
        ENABLE PASSPHRASE '<user supplied passphrase>'; \g

La connexion avec l'option "-no_x100" se connecte sans accès aux données de l'entrepôt, mais permet à l'instruction SQL administrative de déverrouiller la base de données.

  • Modifier la phrase d'authentification de la base de données cryptée :
      1. Connectez-vous à la base de données déverrouillée à l'aide de Terminal Monitor :
        sql <database_name>
      2. SQL pour modifier la phrase d'authentification :
        ALTER PASSPHRASE '<old user supplied passphrase>' TO
        '<new passphrase>'; \g

Là encore, il est important que l'administrateur se souvienne de la nouvelle phrase d'authentification.

Après avoir modifié la phrase de passe d'une base de données cryptée, il est recommandé d'effectuer une nouvelle sauvegarde de la base de données (également appelée "point de contrôle de la base de données") afin de garantir la possibilité de récupérer l'intégralité de la base de données.

  • Lorsque la base de données n'est plus nécessaire, détruisez-la :
      1. destroydb <database_name>

Notez que la phrase de passe de la base de données cryptée n'est pas nécessaire pour la détruire. La commande ne peut être exécutée que par les utilisateurs disposant des privilèges appropriés, c'est-à-dire le propriétaire de la base de données et les administrateurs.

Ce premier article de blog de la série sur la sécurité des bases de données expliquait le concept de chiffrement au repos et la manière dont le chiffrement transparent - appelé chiffrement des bases de données dans Actian Vector - est utilisé.

Le prochain billet de cette série portera sur le chiffrement basé sur les fonctions dans Actian Vector.

Portrait de Martin Fuerderer

À propos de Martin Fuerderer

Martin Fuerderer est ingénieur logiciel principal chez HCLSoftware. Au cours des 25 dernières années, il a travaillé dans de nombreux domaines du développement de serveurs de bases de données. Ces dernières années, il s'est intéressé à la sécurité des serveurs de base de données.