Cryptage de bases de données InterBase

De RAD Studio
Aller à : navigation, rechercher

Remonter à Développement d'applications de bases de données


InterBase Encryption, la fonction de cryptage ou de chiffrement des bases de données est supportée depuis InterBase 2009. InterBase vous permet de crypter des informations à l'un des deux niveaux suivants ou aux deux niveaux à la fois :

  • Cryptage de niveau base de données (InterBase crypte toutes les pages de bases de données contenant des informations relatives à utilisateur).
  • Cryptage de niveau colonne (le cryptage de niveau colonne est plus souple et spécifique).

En utilisant le cryptage de base de données InterBase, vous pouvez également crypter des fichiers de sauvegarde de base de données. Pour de plus amples informations sur le cryptage de vos données avec InterBase, voir Data Definition Guide.

Créer des tâches de cryptage avec InterBase

Pour créer des tâches de cryptage spécifiques dans InterBase, vous devez créer le SYSDSO (System Data Security Owner). Les deux utilisateurs, le SYSDSO et le SYSDBA (le propriétaire de base de données), ont des responsabilités relatives au cryptage InterBase. Le tableau ci-dessous montre les différences entre les tâches relatives à l'utilisateur :

Permissions Propriétaire de  
bases de données
SYSDSO

Créer les clés de cryptage

NON OUI

Définir le SEP

NON OUI

Accorder des privilèges de cryptage

NON OUI

Crypter la base de données

OUI NON

Crypter les colonnes

OUI NON

Accorder des privilèges de décryptage

OUI NON

Par ailleurs, les tâches de cryptage peuvent être réalisées par n'importe quel propriétaire de table particulière ayant la permission de crypter les colonnes d'une table.

Crypter une base de données avec IBConsole

Il existe deux façons de crypter une base de données dans InterBase. Vous pouvez activer et implémenter le cryptage en utilisant isql ou vous pouvez crypter une base de données avec IBConsole. Dans cette rubrique, nous utiliserons la deuxième option - Encrypt a Database with IBConsole (cryptage d'une base de données avec IBconsole).

Pour que le cryptage s'effectue lors de la création d'une nouvelle base de données, effectuez les étapes suivantes :

  1. Ouvrez IBConsole.
  2. Sélectionnez Server > Login depuis le menu.
  3. Connectez-vous en tant que SYSDBA ou en tant que propriétaire de base de données.
  4. Sélectionnez Database > Create Database dans le menu.
  5. Dans le champ Save In, sélectionnez le dossier dans lequel vous voulez sauvegarder la base de données.
  6. Spécifiez un nom de fichier puis cliquez sur Save. La boîte de dialogue se ferme.
  7. Changez la valeur du champ Embedded User Authentication par Yes.
    Remarque : Le champ Use Encryption est maintenant visible.
  8. Changez la valeur du champ Use Encryption par Yes.
    CreateDatabase-Encryption.png
  9. Cliquez sur le bouton OK pour créer une base de données.
  10. Entrez vos informations de connexion et cliquez sur le bouton Connect.
  11. Dans l'expert Encryption Wizard, cliquez sur le bouton Next.
  12. Tapez le mot de passe SYSDSO et cliquez sur le bouton Next.
  13. Tapez le mot de passe SEP et cliquez sur le bouton Next.
    ExternalOptionEnc.png
    Remarque : L'option External complique pour les utilisateurs non autorisés l'accès à une base de données cryptée sur un périphérique mobile comme un ordinateur portable ou sur un ordinateur de bureau faiblement sécurisé.
  14. Tapez un nom pour Encryption Key.
  15. Sélectionnez DES pour l'option Cipher.
  16. Cliquez sur le bouton OK.
    EncryptionKeyWiz.png
  17. Tapez le nom et le mot de passe BackupKey.
    Remarque : Pour préserver la sécurité et la confidentialité des bases de données cryptées, vous devez aussi crypter les fichiers de sauvegarde des bases de données.
  18. Cliquez sur le bouton OK.
    EncDBCompleted.png
  19. Dans la boîte de dialogue ouverte, cliquez sur le bouton OK.

Paramètre System Encryption Password dans InterBase

Lorsqu'une base de données est cryptée dans InterBase, SEP peut être défini comme internal (par défaut, aucun mot-clé n'est utilisé) ou external (mot-clé utilisé).

  • Le SEP interne permet que la base de données soit accessible à des utilisateurs de base de données lorsqu'elle a été utilisée une fois avec SEP sur la machine. Les connexions consécutives ou les connexions faisant suite à un redémarrage d'ordinateur n'ont pas besoin de fournir la valeur SEP. Si l'application RAD Studio est déployée sur un Mac ou un périphérique mobile, la première connexion requiert la valeur du paramètre SEP.
  • La base de données définie avec un SEP externe requiert que la première connexion ait la valeur du paramètre SEP. Après avoir redémarré l'ordinateur, l'application doit fournir la valeur de SEP à la première connexion. Le mot de pase de cryptage système, System Encryption Password présente plus de sécurité pour les périphériques mobiles.
    Remarque : Pour définir le SEP externe, cochez l'option External dans l'expert Encryption ou utilisez la commande alter database set system encryption password <255-character string> [external].

Mot de passe de cryptage système dans dbExpress

Avec dbExpress, vous pouvez définir la valeur SEP dans la collection TSQLConnection Params ou définir la valeur de SEP par programmation.

ValueListEditorDBX.png

 procedure TForm10.BtnConnectClick(Sender: TObject);
 begin
   try
     SQLConnection1.Params.Values['SEP']:='password';
     SQLConnection1.Connected:=true;
   except
     on E:Exception do
         ShowMessage(E.ClassName + ' ' + E.Message);
   end;
 end;

Mot de passe de cryptage système dans FireDAC

Avec FireDAC, vous pouvez définir le paramètre SEPassword dans TFDConnection les paramètres de définition de connexion.

FDConnectionEdt.png

 procedure TForm10.BtnConnectClick(Sender: TObject);
 begin
   try
     FDConnection1.Params.Values['SEPasword']:='password';
     FDConnection1.Connected:=true;
   except
     on E:Exception do
         ShowMessage(E.ClassName + ' ' + E.Message);
   end;
 end;

Mot de passe de cryptage système dans InterBase Express

Avec InterBase Express (IBX), le paramètre SysEncryptPassword TIBDatabase est défini par programmation.

 procedure TForm10.BtnConnectClick(Sender: TObject);
 begin
   try
      IBDatabase1.SysEncryptPassword:='password';
      IBDatabase1.Open;
   except
     on E:Exception do
         ShowMessage(E.ClassName + ' ' + E.Message);
   end;
 end;

Voir aussi