APHP Mise en Place TDE
APHP Mise en Place TDE
APHP Mise en Place TDE
APHP
Version 1.0
Approvals:
Client
TOC
Introduction................................................................................................. 1
Documentation source....................................................................................................................... 1
Choix de configuration....................................................................................................................... 1
Bonnes pratiques à suivre................................................................................................................. 2
Utilisation de TDE....................................................................................... 7
Rotation des clés de tablespace........................................................................................................ 7
Rotation de la clé maître (rekey)........................................................................................................ 7
Changement du mot de passe du wallet............................................................................................ 8
Arrêt/démarrage de la base de données...........................................................................................8
Sauvegarde/restauration de la base de données..............................................................................9
Import-export de la base de données................................................................................................ 9
Duplication de la base de données.................................................................................................. 10
Annexe...................................................................................................... 11
Exemple de restauration.................................................................................................................. 11
INTRODUCTION
Documentation source
Choix de configuration
Bonnes pratiques à
suivre
Le contenu de chaque tablespace configuré avec TDE est chiffré par une clé
contenue dans le tablespace. Cette clé est stockée chiffrée par un une clé contenue
dans le wallet. Le wallet est chiffré par le mot de passe du wallet.
La perte du wallet implique la perte totale et irrémédiable des données. En effet sans wallet il est impossible de
déchiffrer les tablespaces ainsi que leurs sauvegardes.
Il convient donc :
- De générer le mot de passe du wallet de façon sécurisée (par exemple keepass)
- De stocker le mot de passe du wallet de façon sécurisée (par exemple keepass)
- De ne jamais faire apparaitre en clair le mot de passe du wallet (documentation,
fichiers textes, copier-coller temporaire etc.)
- De sauvegarder le répertoire du wallet à plusieurs endroits et à surtout un
endroit différent de la sauvegarde de la base de données
- De changer régulièrement le mot de passe du wallet
- D’effectuer régulièrement un changement de la « master encryption key »
(rekey)
- D’effectuer régulièrement un changement de la clé du tablespace (tablespace
rekey)
Configuration de la base
de données
WRL_TYPE
--------------------
WRL_PARAMETER
--------------------------------------------------------------------------------
STATUS WALLET_TYPE WALLET_OR KEYSTORE FULLY_BAC
------------------------------ -------------------- --------- -------- ---------
CON_ID
----------
FILE
/app/YYY/XXXXXXX/home/wallet/tde/
NOT_AVAILABLE UNKNOWN SINGLE NONE UNDEFINED
Création du wallet
Pour le créer :
ADMINISTER KEY MANAGEMENT CREATE KEYSTORE IDENTIFIED BY "<mot de passe du wallet>";
On vérifie l’état :
SELECT * FROM V$ENCRYPTION_WALLET;
WRL_TYPE
--------------------
WRL_PARAMETER
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
---------------------------------
STATUS WALLET_TYPE WALLET_OR KEYSTORE FULLY_BAC
CON_ID
------------------------------ -------------------- --------- -------- ---------
----------
FILE
/app/YYY/XXXXXXX/home/wallet/tde/
CLOSED UNKNOWN SINGLE NONE UNDEFINED
0
Ouverture du wallet
Afin de pouvoir utiliser le wallet, il faut que la base de données l’ai ouverte. Pour
cela :
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY "<mot de passe du wallet>";
On vérifie l’état :
SELECT * FROM V$ENCRYPTION_WALLET;
WRL_TYPE
--------------------
WRL_PARAMETER
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
---------------------------------
STATUS WALLET_TYPE WALLET_OR KEYSTORE FULLY_BAC
CON_ID
------------------------------ -------------------- --------- -------- ---------
----------
FILE
/app/YYY/XXXXXXX/home/wallet/tde/
Création de la master
encryption key
On vérifie l’état :
SELECT * FROM V$ENCRYPTION_WALLET;
WRL_TYPE
--------------------
WRL_PARAMETER
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
---------------------------------
STATUS WALLET_TYPE WALLET_OR KEYSTORE FULLY_BAC
CON_ID
------------------------------ -------------------- --------- -------- ---------
----------
FILE
/app/YYY/XXXXXXX/home/wallet/tde/
OPEN PASSWORD SINGLE NONE NO
0
Chiffrement des
tablespaces
TABLESPACE_NAME ENC
-------------------- ---
SYSAUX NO
SYSTEM NO
TEMP NO
UNDOTBS1 NO
USER_DATA YES
USER_INDX YES
UTILISATION DE TDE
SQL> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY "<mot de passe du wallet>" WITH
BACKUP;
TS# ENCRYPT ENC ENCRYPTEDKEY MASTERKEYID BLOCKS_ENCRYPTED BLOCKS_DECRYPTED KEY_VERSION STATUS CON_ID
---------- ------- --- ---------------------------------------------------------------- -------------------------------- ---------------- ---------------- ----------- ---------- ----------
4 AES256 YES 27DE4006ADA780362CD9012C3BEE4DC8F5432732B07F9B9D3D1233E56A78A4C5 CA419CD5A5034FB0BF695BEE831D2D0B 0 0 1 NORMAL 0
5 AES256 YES A0058C91A6698F155953D396931053C862DF65059B643C7E353E47C1236D0972 CA419CD5A5034FB0BF695BEE831D2D0B 0 0 1 NORMAL 0
A noter que le wallet contient l’historique des clés (cela afin de pouvoir déchiffrer les
sauvegardes)
select KEY_ID, CREATION_TIME, ACTIVATION_TIME, KEY_USE from V$ENCRYPTION_KEYS;
KEY_ID
CREATION_TIME
------------------------------------------------------------------------------
---------------------------------------------------------------------------
ACTIVATION_TIME KEY_USE
--------------------------------------------------------------------------- ----------
AYrnn9l8uk9qv9D/FPg7DX0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 05/05/20
11:21:12,422475 +01:00
05/05/20 11:21:12,422484 +01:00 TDE
AcpBnNWlA0+wv2lb7oMdLQsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 05/05/20
14:42:21,685286 +01:00
05/05/20 14:42:21,685290 +01:00 TDE
Changement du mot de
passe du wallet
Arrêt/démarrage de la
base de données
STATUS
------------------------------
CLOSED
SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY "<mot de passe du wallet>";
STATUS
------------------------------
OPEN
COUNT(*)
----------
20
Sauvegarde/restauration
de la base de données
- Les données chiffrées dans les tablespaces sont également chiffrées dans les
sauvegardes
- La sauvegarde compressée déchiffre les données, compresse les données et
chiffre les données
- La restauration compressée déchiffre la sauvegarde, décompresse les données
et chiffre les données
Il faut donc que le wallet soit en état OPEN lors de la sauvegarde et aussi de la
restauration.
Voir en annexe l’exemple de la restauration.
Import-export de la base
de données
ATTENTION : l’export de la base de données sans paramètre « ENCRYPTION » va générer un fichier dump
non crypté.
- Soit l’export se fait à destination d’une base de données qui n’utilise pas le
même wallet que la base source. On peut donc protéger le fichier d’export par
un mot de passe (qui devra être sécurisé évidemment). L’import demandera le
mot de passe de déchiffrement :
ENCRYPTION=ALL
ENCRYPTION_PWD_PROMPT=yes
ENCRYPTION_ALGORITHM=AES256
ENCRYPTION_MODE=password
A noter qu’il faut utiliser les mêmes paramètres pour l’import et l’export.
Duplication de la base de
données
L’utilisation de la commande DUPLICATE (par exemple pour la génération d’une
base standby) nécessite le passage du wallet en mode AUTO_LOGIN.
Attention : le passage en mode AUTO_LOGIN crée un fichier cwallet.sso dans le répertoire du wallet. Ce fichier
contient le mot de passe (masqué seulement) du wallet. Il faut donc désactiver le mode auto_login le plus
rapidement possible et changer le mot de passe du wallet immédiatement après l’opération. Il est conseillé
d’utiliser la méthode de sauvegarde/restauration plutôt que le duplicate.
Pour repasser en mode non auto login, il suffit de supprimer le fichier cwallet.sso
dans le répertoire du wallet.
ANNEXE
Exemple de restauration
$ rman target /
Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.
$ sqlplus
Connecte a :
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0
SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY "<mot de passe du
wallet>";
$ rman target /
Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.
Statement processed