Gestion des clés
Ce guide couvre les opérations sur les clés maîtres pour Oracle TDE avec DuoKey KMS, notamment la rotation des clés, les scénarios de migration et la gestion du cycle de vie des clés.
Rotation des clés
La rotation périodique des clés est une bonne pratique de sécurité essentielle. DuoKey KMS simplifie la rotation des clés maîtres de chiffrement TDE.
Pourquoi effectuer une rotation des clés ?
- Conformité de sécurité : répondez aux exigences réglementaires (généralement de 6 à 12 mois)
- Limiter l'exposition : réduisez le risque en cas de compromission d'une clé
- Bonne pratique : standard du secteur pour la gestion des clés cryptographiques
Fréquence de rotation
Calendrier recommandé :
- Bases de données de production : tous les 6 à 12 mois
- Environnements à haute sécurité : tous les 3 à 6 mois
- Exigences de conformité : selon les mandats réglementaires
Rotation des clés maîtres
Sans wallet à ouverture automatique
Pour une base de données conteneur (CDB) :
-- Rotate master key for all containers
ADMINISTER KEY MANAGEMENT SET KEY
IDENTIFIED BY "<DKE_APP_PASSWORD>"
CONTAINER = ALL;
Pour une base de données non conteneur :
-- Rotate master key
ADMINISTER KEY MANAGEMENT SET KEY
IDENTIFIED BY "<DKE_APP_PASSWORD>";
Avec wallet à ouverture automatique
Pour une base de données conteneur (CDB) :
-- Rotate master key with auto-login
ADMINISTER KEY MANAGEMENT SET KEY
FORCE KEYSTORE
IDENTIFIED BY "<DKE_APP_PASSWORD>"
CONTAINER = ALL;
Dans certaines versions de base de données, vous devrez peut-être effectuer la rotation des clés individuellement dans chaque base de données enfichable (PDB).
Pour une base de données non conteneur :
-- Rotate master key with auto-login
ADMINISTER KEY MANAGEMENT SET KEY
FORCE KEYSTORE
IDENTIFIED BY "<DKE_APP_PASSWORD>";
Vérifier la rotation des clés
-- Check master key history
SELECT key_id, creation_time, activation_time
FROM v$encryption_keys
ORDER BY creation_time DESC;
-- Verify current key
SELECT * FROM v$encryption_wallet;
Considérations post-rotation
Après la rotation des clés, l'ancienne clé maître peut être consultée par le processus Gen0 de la base de données pour les opérations de battement (heartbeat). La nouvelle clé sera utilisée après le prochain redémarrage de la base de données.
Redémarrez la base de données pour utiliser la nouvelle clé :
SHUTDOWN IMMEDIATE;
STARTUP;
Migration d'un wallet local vers DuoKey KMS
Si vous disposez de bases de données TDE existantes utilisant des wallets locaux, vous pouvez migrer vers DuoKey KMS.
Prérequis
- Base de données Oracle existante avec TDE configuré
- Wallet TDE local (ewallet.p12)
- DuoKey KMS configuré selon le guide de Prise en main
- Bibliothèque PKCS#11 installée et configurée
Étapes de migration
Étape 1 : sauvegarder le wallet actuel
# Backup existing wallet
cp $ORACLE_BASE/admin/$ORACLE_SID/wallet/tde/ewallet.p12 \
$ORACLE_BASE/admin/$ORACLE_SID/wallet/tde/ewallet.p12.backup
Étape 2 : déplacer le wallet à ouverture automatique (s'il existe)
# Rename auto-login wallet
cd $ORACLE_BASE/admin/$ORACLE_SID/wallet/tde
mv cwallet.sso cwallet.sso_backup
Étape 3 : modifier le mot de passe du wallet local
Modifiez le mot de passe du wallet local pour qu'il corresponde au mot de passe de l'application DuoKey :
-- Change wallet password
ADMINISTER KEY MANAGEMENT ALTER KEYSTORE PASSWORD
IDENTIFIED BY "<old_wallet_password>"
SET "<DKE_APP_PASSWORD>"
WITH BACKUP;
Pour Oracle 11g R2 :
# Use orapki utility
orapki wallet change_pwd \
-wallet $ORACLE_BASE/admin/$ORACLE_SID/wallet/tde \
-oldpwd old_password \
-newpwd DKE_APP_PASSWORD
Étape 4 : configurer la méthode du wallet
Pour Oracle 18c et versions antérieures :
-- Set wallet method to both FILE and HSM
ALTER SYSTEM SET ENCRYPTION_WALLET_LOCATION=
'(SOURCE=(METHOD=HSM)(METHOD_DATA=(DIRECTORY=<wallet_location>)))'
SCOPE=SPFILE;
-- Restart database
SHUTDOWN IMMEDIATE;
STARTUP;
Pour Oracle 19c et versions ultérieures :
-- Set TDE configuration for HSM and FILE
ALTER SYSTEM SET TDE_CONFIGURATION='KEYSTORE_CONFIGURATION=HSM|FILE'
SCOPE=BOTH;
Étape 5 : ouvrir les deux wallets
-- Open both HSM and local wallets
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN
IDENTIFIED BY "<DKE_APP_PASSWORD>";
-- Verify both wallets are open
SELECT * FROM V$ENCRYPTION_WALLET;
Résultat attendu : FILE et HSM devraient tous deux afficher le statut OPEN.
Étape 6 : migrer les clés vers DuoKey KMS
-- Migrate master key from local wallet to DuoKey KMS
ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY
IDENTIFIED BY "<DKE_APP_PASSWORD>"
MIGRATE USING "<DKE_APP_PASSWORD>"
WITH BACKUP USING 'LocalWalletMigration';
Pour Oracle 11g R2 :
-- Migrate key
ALTER SYSTEM SET ENCRYPTION KEY
IDENTIFIED BY "<DKE_APP_PASSWORD>"
MIGRATE USING "<DKE_APP_PASSWORD>";
Étape 7 : vérifier la migration
-- Check that keys are in DuoKey KMS
SELECT key_id, creation_time, activation_time
FROM v$encryption_keys
ORDER BY creation_time DESC;
Consultez les journaux d'audit de DuoKey Cockpit pour les événements de migration de clés.
Étape 8 : configurer l'ouverture automatique (facultatif)
Suivez les étapes de configuration de l'ouverture automatique du guide de Prise en main.
Migration inverse : DuoKey KMS vers un wallet local
Si vous devez effectuer une migration inverse de DuoKey KMS vers un wallet local :
Oracle 11g R2 ne prend pas en charge la migration inverse. La migration inverse n'est disponible qu'en cas de mise à niveau de 11g R2 vers 12c ou une version supérieure.
Prérequis
- Oracle Database 12c ou version supérieure
- TDE configuré avec DuoKey KMS
- Accès aux wallets HSM et local
Étapes de migration inverse
Étape 1 : déplacer le wallet à ouverture automatique
# Backup auto-login wallet
cd $ORACLE_BASE/admin/$ORACLE_SID/wallet/tde
mv cwallet.sso cwallet.sso_backup
Étape 2 : ouvrir les deux wallets
-- Open both HSM and local wallets manually
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN
IDENTIFIED BY "<DKE_APP_PASSWORD>"
CONTAINER=ALL;
-- Verify both are open
SELECT * FROM V$ENCRYPTION_WALLET;
Étape 3 : basculer vers la méthode FILE
Pour Oracle 18c et versions antérieures :
-- Change to FILE method only
ALTER SYSTEM SET ENCRYPTION_WALLET_LOCATION=
'(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=<wallet_location>)))'
SCOPE=SPFILE;
-- Restart database
SHUTDOWN IMMEDIATE;
STARTUP;
Pour Oracle 19c et versions ultérieures :
-- Change to FILE method
ALTER SYSTEM SET TDE_CONFIGURATION='KEYSTORE_CONFIGURATION=FILE'
SCOPE=BOTH;
Étape 4 : migration inverse des clés
-- Reverse migrate from HSM to local wallet
ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY
IDENTIFIED BY "<DKE_APP_PASSWORD>"
REVERSE MIGRATE USING "<DKE_APP_PASSWORD>"
WITH BACKUP USING 'ReverseMigration';
Étape 5 : vérifier la migration inverse
-- Verify wallet status
SELECT * FROM V$ENCRYPTION_WALLET;
-- Should show FILE wallet only
Intégration avec Oracle Data Guard
Pour les environnements Oracle Data Guard, suivez ces étapes pour intégrer les bases de données de secours avec DuoKey KMS.
Prérequis
- Base de données principale intégrée à DuoKey KMS
- Base de données de secours configurée dans Data Guard
- Bibliothèque PKCS#11 installée sur le serveur de secours
Étapes d'intégration
Étape 1 : copier les fichiers du wallet
Copiez les fichiers du wallet de la base de données principale vers la base de secours :
# On primary server
cd $ORACLE_BASE/admin/$ORACLE_SID/wallet/tde
# Copy to standby server
scp cwallet.sso standby_server:$ORACLE_BASE/admin/$ORACLE_SID/wallet/tde/
scp ewallet.p12 standby_server:$ORACLE_BASE/admin/$ORACLE_SID/wallet/tde/
Étape 2 : installer PKCS#11 sur la base de secours
Sur le serveur de secours :
# Copy PKCS#11 library
sudo mkdir -p /opt/oracle/extapi/64/hsm/DuoKey/1.0
sudo cp /path/to/libdke_pkcs11.so \
/opt/oracle/extapi/64/hsm/DuoKey/1.0/libdke_pkcs11.so
# Set permissions
sudo chown -R oracle:oinstall /opt/oracle
sudo chmod -R 775 /opt/oracle
Étape 3 : copier la configuration PKCS#11
# Copy pkcs11.toml from primary to standby
scp /etc/duokey/pkcs11.toml \
standby_server:/etc/duokey/pkcs11.toml
# On standby, set permissions
sudo chown oracle:oinstall /etc/duokey/pkcs11.toml
sudo chmod 600 /etc/duokey/pkcs11.toml
Étape 4 : configurer la base de données de secours
Sur la base de données de secours :
-- Point to both HSM and FILE
ALTER SYSTEM SET TDE_CONFIGURATION='KEYSTORE_CONFIGURATION=HSM|FILE'
SCOPE=BOTH;
Étape 5 : vérifier l'ouverture automatique
Le wallet à ouverture automatique devrait ouvrir automatiquement le wallet sur la base de secours.
-- Check wallet status on standby
SELECT * FROM V$ENCRYPTION_WALLET;
Résultat attendu :
WRL_TYPE: HSMSTATUS: OPEN (avec ouverture automatique)WALLET_TYPE: AUTO_LOGIN
Sauvegarde et restauration
Considérations sur la sauvegarde TDE
Lors de la sauvegarde de bases de données chiffrées avec TDE :
Chiffrement de tablespace :
- Les sauvegardes sont chiffrées par défaut
- Les sauvegardes RMAN conservent le chiffrement
Chiffrement de colonne :
- Les sauvegardes ne sont pas chiffrées par défaut
- Les données des exports (expdp) ne sont pas chiffrées
Sauvegardes RMAN chiffrées
# RMAN backups of encrypted tablespaces are encrypted automatically
rman target /
RMAN> BACKUP DATABASE;
Export chiffré (Data Pump)
Pour le chiffrement de colonne, activez explicitement le chiffrement dans les exports :
# Encrypted export
expdp hr DIRECTORY=dpump_dir1 \
DUMPFILE=hr_enc.dmp \
ENCRYPTION=all \
ENCRYPTION_ALGORITHM=AES256 \
ENCRYPTION_MODE=TRANSPARENT
Restauration des bases de données TDE
Pour restaurer des bases de données TDE sur un système cible :
Prérequis
- DuoKey KMS configuré sur le système cible
- Mêmes fichiers de wallet ou accès à la même application DuoKey
- Bibliothèque PKCS#11 installée
Étapes de restauration
- Copier les fichiers du wallet (si vous n'utilisez pas la même application DuoKey) :
# Copy from source to target
scp cwallet.sso target_server:$ORACLE_BASE/admin/$ORACLE_SID/wallet/tde/
scp ewallet.p12 target_server:$ORACLE_BASE/admin/$ORACLE_SID/wallet/tde/
- Installer la configuration PKCS#11 :
# Copy pkcs11.toml
scp /etc/duokey/pkcs11.toml target_server:/etc/duokey/
- Configurer la base de données cible :
-- Set TDE configuration
ALTER SYSTEM SET TDE_CONFIGURATION='KEYSTORE_CONFIGURATION=HSM|FILE'
SCOPE=BOTH;
- Restaurer la base de données :
# RMAN restore
rman target /
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN;
- Vérifier le statut du wallet :
-- Check wallet is open
SELECT * FROM V$ENCRYPTION_WALLET;
Clonage de bases de données enfichables
Vous pouvez cloner des bases de données enfichables (PDB) avec des clés de chiffrement TDE stockées dans DuoKey KMS.
Prérequis
- Bases de données source et cible intégrées à DuoKey KMS
- Les deux bases de données utilisent des applications dans le même groupe DuoKey
- Clés maîtres accessibles par les deux bases de données
Clone à chaud à partir de la PDB source
Sur la base de données source
- Créer un clone à chaud :
-- Connect as SYSDBA
sqlplus / as sysdba
-- Create hot clone of encrypted PDB
CREATE PLUGGABLE DATABASE PDB2_CLONE
FROM PDB2
FILE_NAME_CONVERT = (
'/u01/app/oracle/oradata/ORCLDB/pdb2',
'/u01/app/oracle/oradata/ORCLDB/pdb2_clone'
)
KEYSTORE IDENTIFIED BY "<DKE_APP_PASSWORD>";
- Vérifier le statut du wallet :
-- Check wallet status for all PDBs
SELECT con_id, wrl_type, status, wallet_type
FROM v$encryption_wallet;
- Vérifier les données chiffrées :
-- Switch to source PDB
ALTER SESSION SET CONTAINER=PDB2;
-- Check encrypted columns
SELECT * FROM dba_encrypted_columns;
-- Verify data is accessible
SELECT * FROM schema.encrypted_table;
- Débrancher la PDB clonée :
-- Connect as SYSDBA
conn / as sysdba
-- Unplug the cloned PDB
ALTER PLUGGABLE DATABASE PDB2_CLONE UNPLUG INTO
'/u01/app/oracle/pdb2_clone.pdb';
Sur la base de données cible
- Copier le fichier PDB :
# Copy .pdb file to target server
scp /u01/app/oracle/pdb2_clone.pdb \
target_server:/u01/app/oracle/oradata/ORCLDB/
La base de données cible doit :
- Être chiffrée et intégrée à DuoKey KMS
- Avoir accès au même groupe DuoKey contenant les clés de la PDB source
- Disposer d'une clé maître définie dans le conteneur racine (CDB)
- Brancher la PDB :
-- Connect to target database as SYSDBA
sqlplus / as sysdba
-- Create PDB from .pdb file
CREATE PLUGGABLE DATABASE PDB2 USING
'/u01/app/oracle/oradata/ORCLDB/pdb2_clone.pdb'
COPY FILE_NAME_CONVERT=(
'/u01/app/oracle/oradata/ORCLDB/pdb2_clone',
'/u01/app/oracle/oradata/ORCLDB/pdb2'
)
KEYSTORE IDENTIFIED BY "<DKE_APP_PASSWORD>";
- Ouvrir la PDB et le wallet :
-- Switch to new PDB
ALTER SESSION SET CONTAINER=PDB2;
-- Check wallet status
SELECT * FROM V$ENCRYPTION_WALLET;
-- Open wallet if needed (external keystore; the PIN is advisory —
-- the access_guid bearer token in pkcs11.toml authenticates the request)
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN
IDENTIFIED BY "<DKE_APP_PASSWORD>";
- Vérifier l'accès aux données :
-- Verify encrypted columns
SELECT * FROM dba_encrypted_columns;
-- Test data access
SELECT * FROM schema.encrypted_table;
Mise à niveau de la bibliothèque PKCS#11
Les mises à jour régulières de la bibliothèque PKCS#11 apportent de nouvelles fonctionnalités et des améliorations de sécurité.
La mise à niveau de la bibliothèque PKCS#11 nécessite une interruption de service de la base de données.
Étapes de mise à niveau
Étape 1 : obtenir la nouvelle bibliothèque
Obtenez la dernière version de la bibliothèque DuoKey PKCS#11 (libdke_pkcs11.so) auprès du support DuoKey et copiez-la sur l'hôte de la base de données.
Étape 2 : sauvegarder la bibliothèque actuelle
# Backup current library
cd /opt/oracle/extapi/64/hsm/DuoKey/1.0
cp libdke_pkcs11.so libdke_pkcs11.so.backup
Étape 3 : arrêter la base de données
-- Shutdown database
sqlplus / as sysdba
SHUTDOWN IMMEDIATE;
Étape 4 : remplacer la bibliothèque
# Copy the new library into place (overwriting the backed-up copy)
sudo cp libdke_pkcs11.so \
/opt/oracle/extapi/64/hsm/DuoKey/1.0/libdke_pkcs11.so
# Set permissions
sudo chown -R oracle:oinstall \
/opt/oracle/extapi/64/hsm/DuoKey/1.0
sudo chmod -R 775 \
/opt/oracle/extapi/64/hsm/DuoKey/1.0
Étape 5 : démarrer la base de données
-- Start database
sqlplus / as sysdba
STARTUP;
Étape 6 : vérifier les opérations
# Check PKCS#11 logs
tail -f /var/log/dke-pkcs11/*.log
Recherchez :
- Une connexion réussie à DuoKey KMS
- Les opérations d'accès aux clés
Procédure de restauration
Si des problèmes surviennent après la mise à niveau :
# Shutdown database
sqlplus / as sysdba
SHUTDOWN IMMEDIATE;
exit
# Restore previous version
cd /opt/oracle/extapi/64/hsm/DuoKey/1.0
mv libdke_pkcs11.so.backup libdke_pkcs11.so
# Restart database
sqlplus / as sysdba
STARTUP;
Pour toute aide ou tout problème lié à la mise à niveau, contactez le support DuoKey à [email protected].
Récapitulatif des bonnes pratiques
Rotation des clés
- Effectuez une rotation des clés tous les 6 à 12 mois
- Documentez le calendrier de rotation
- Testez d'abord la rotation en dehors de la production
- Redémarrez la base de données après la rotation
Stratégie de sauvegarde
- Sauvegardes RMAN régulières des bases de données chiffrées
- Sauvegardez les fichiers du wallet séparément
- Testez les procédures de restauration
- Documentez les procédures de récupération
Haute disponibilité
- Utilisez des wallets à ouverture automatique
- Distribuez les fichiers du wallet dans RAC/Data Guard
- Surveillez la disponibilité de DuoKey KMS
- Configurez les délais de nouvelle tentative de manière appropriée
Sécurité
- Séparez les tâches : DBA et administrateurs de sécurité
- Restreignez l'accès à pkcs11.toml
- Surveillez les journaux d'audit dans DuoKey Cockpit
- Utilisez des applications uniques par base de données
Opérations
- Documentez toutes les configurations
- Testez les mises à niveau en dehors de la production
- Surveillez les journaux PKCS#11
- Maintenez une version à jour de PKCS#11
Assistance
Pour obtenir de l'aide concernant les opérations de gestion des clés :
- E-mail : [email protected]
- Documentation : Support DuoKey
- Statut : status.duokey.com