Chiffrer vos données de votre base de données Oracle avec Oracle Advanced Security (Transparent Encryption)

Introduction

Imaginez une situation où vous avez une base de données très sécurisée : règles de Firewall briquées, authentification par clé en SSH, limitation des privilèges par utilisateur etc… LA TOTALE !
Et là subitement, vous vous faites voler votre serveur, ou le stagiaire que vous avez embauché cet été copie vos datafiles et les mis à disposition sur Internet.
Tout le monde peut voir vos données ! Il suffit simplement d’aller jeter un coup d’oeil dans vos datafiles et une bonne partie de vos données apparaîtront en clair dedans.
Comment pallier à ça ? Oracle a mis en place une fonctionnalité dont il a largement fait la publicité pour Oracle Database : La Transparent Encryption (Chiffrement transparent pour les anglophones).
Grâce à ceci, nous allons pouvoir nous éviter ce genre de catastrophes !

Créer vos répertoires nécessaires

Tout d’abord, il va vous falloir créer vos répertoires pour implémenter votre porte-feuille. Vous pouvez le créer là où vous le désirez.

Avec l’utilisateur Oracle :


mkdir $ORACLE_HOME/network/wallet
chmod -R 0700 $ORACLE_HOME/network/wallet

Créer votre porte-feuille
Une fois que vous avez créé votre répertoire pour mettre votre porte-feuille, il vous faudra créer votre porte-feuille.
Pour cela, toujours ouvrir un terminal en tant que l’utilisateur Oracle :

cd $ORACLE_HOME/network/wallet
$ORACLE_HOME/bin/mkstore -wrl . -create

Vérifiez que des fichiers viennent d’être créé ;-)

Intégrer votre porte-feuille dans votre instance

Après, il va falloir intégrer ce fameux porte-feuille dans votre base de données. Pour cela, il vous faudra modifier le fichier sqlnet.ora . Toujours en tant que l’utilisateur Oracle :

vi $ORACLE_HOME/network/admin/sqlnet.ora

Et vous rajoutez cette ligne à la fin du fichier :

ENCRYPTION_WALLET_LOCATION=
(SOURCE=

(METHOD=FILE)(METHOD_DATA=

(DIRECTORY=VotreOracleHome/network/wallet/)

)

)

Fermez et sauvegardez le fichier.

Mettre en oeuvre le chiffrement

Maintenant, connectez-vous sur votre base de données en tant que sys avec les privilèges SYSDBA :

$ORACLE_HOME/bin/sqlplus / as sysdba
SQL > ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "votremotdepasse"
SQL > ALTER SYSTEM SET ENCRYPTION WALLET OPEN AUTHENTICATED BY  "votremotdepasse"

Création de votre premier tablespace chiffré

Vous êtes donc maintenant prêt à créer votre premier tablespace chiffré. Pour ceci, il suffit de rajouter une clause ENCRYPTION dans votre création de tablespace comme ci-dessous :

SQL > CREATE TABLESPACE crypted

DATAFILE '/u01/app/oracle/oradata/orcl/crypted01.dbf' size 50m

ENCRYPTION DEFAULT STORAGE ( ENCRYPT );

Et voilà ! Toutes les données qui seront contenues dans ce tablespace seront chiffrées et ne seront pas lisibles si on a accès à vos datafiles.

Vérifier le chiffrement

C’est pas le tout d’être arrivé à configuret tout ça, maintenant il faut le vérifier que nous avons bien chiffré notre Tablespace.

Pour cela, nous allons créer un autre tablespace non chiffré et comparer les datafiles de nos deux tablespaces.

SQL > CREATE TABLESPACE noncrypted
DATAFILE '/u01/app/oracle/oradata/orcl/noncrypted01.dbf' size 50m
SQL > CREATE TABLE users TABLESPACE noncrypted

(username VARCHAR2(50), password VARCHAR2(50));

SQL > INSERT INTO users VALUES ('guireg', 'secret');

SQL > INSERT INTO users VALUES ('capitaine','azerty123');

SQL > COMMIT;

SQL > ALTER SYSTEM CHECKPOINT;

Une fois notre table enregistrée, nous allons regarder dans les datafiles ce qui se casse :

$ strings /u01/app/oracle/oradata/orcl/noncrypted01.dbf | grep -i guireg
guireg
$ strings /u01/app/oracle/oradata/orcl/noncrypted01.dbf | grep -i capitaine
capitaine

Grep , nous trouve bien nos deux lignes dans les datafiles. Ce n’est donc pas chiffré. Nous déplacons notre table dans notre tablespace chiffré et comparons la différence

SQL > ALTER TABLE users MOVE TABLESPACE crypted;
SQL > ALTER SYSTEM CHECKPOINT;
$ strings /u01/app/oracle/oradata/orcl/crypted01.dbf | grep -i guireg

$ strings /u01/app/oracle/oradata/orcl/crypted01.dbf | grep -i capitaine

Grep ne trouve pas nos lignes. Nos datafiles sont bien chiffrées et donc illisibles au niveau du système sans notre clé.

Sécurité

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

* Copy this password:

* Type or paste password here:

4,197 Spam Comments Blocked so far by Spam Free Wordpress

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>