Prise en main
Ce guide constitue le démarrage rapide Cockpit v2 pour intégrer Oracle Transparent Data Encryption (TDE) avec DuoKey. À la fin, Oracle utilisera DuoKey comme keystore HSM externe pour sa clé maître TDE, la clé maître ne résidant jamais sur l'hôte de la base de données.
L'intégration repose sur un jeton porteur access_guid unique, un fichier de configuration pkcs11.toml et le fournisseur libdke_pkcs11.so.
Pour le modèle conceptuel, consultez le Guide d'installation. La référence de configuration faisant autorité est Configuration du fournisseur PKCS#11 (pkcs11.toml).
Comment les éléments s'articulent
Oracle continue d'assurer lui-même le chiffrement en masse des tables et des tablespaces, en matériel, avec AES-NI. DuoKey n'intervient que sur le chemin de la clé maître — ouverture du keystore, SET KEY, et enveloppement/désenveloppement des clés de tablespace sous la clé maître de chiffrement (MEK).
┌─────────────────────────────────────┐
│ Oracle Database Server │
│ │
│ Oracle TDE │
│ (bulk AES table/tablespace │
│ crypto stays local, AES-NI) │
│ │ PKCS#11 (master-key path) │
│ ▼ │
│ DuoKey PKCS#11 provider │
│ libdke_pkcs11.so / dke_pkcs11.dll │
│ │ HTTPS (one call per op) │
└────────┼────────────────────────────┘
▼
DuoKey Cockpit (v2 proxy endpoint)
│
▼
Tenant vault / HSM
(Securosys HSM in production)
Prérequis
Oracle Database
- Oracle Database 11g R2, 12c, 18c, 19c, 21c ou 23ai
- Option Oracle Advanced Security sous licence
- Accès DBA avec le privilège
SYSDBAet le privilège systèmeADMINISTER KEY MANAGEMENT
Pour Oracle 11g R2, assurez-vous que le correctif 18948524 est appliqué.
DuoKey
- Accès à votre interface web Cockpit v2 de DuoKey
- La bibliothèque du fournisseur PKCS#11 de DuoKey, fournie par DuoKey
- Connectivité réseau du serveur de base de données vers l'hôte Cockpit en HTTPS (port 443)
Le fournisseur doit être compilé pour Oracle Linux 8 / glibc 2.28. Une bibliothèque compilée avec une version plus récente de glibc ne se chargera pas, et Oracle signale ORA-28353 sans journal supplémentaire. Utilisez la version fournie par DuoKey pour votre plateforme.
Système
- Serveur Linux (Oracle Linux 8 recommandé)
- Accès root ou sudo, et le compte propriétaire de l'instance Oracle (
oracle)
Étape 1 : Créer l'app Oracle TDE dans Cockpit
- Connectez-vous à l'URL de votre Cockpit v2 DuoKey.
- Créez (ou activez) une app Oracle TDE pour cette base de données. L'app provisionne une clé maître active initiale (AES-256) et émet un
access_guid. - Ouvrez l'app et téléchargez le bundle de déploiement. Le Cockpit génère tout ce dont vous avez besoin pour cette base de données :
- le fichier
pkcs11.toml(avec le bonserver_urlet le bonaccess_guid), - les exports d'environnement (dont
DKE_PKCS11_CONF), - les scripts SQL Oracle.
- le fichier
Cockpit v2 utilise un jeton porteur access_guid unique, intégré dans le chemin du server_url. Il n'y a pas d'OAuth2, pas de client ID/secret, pas de nom d'utilisateur/mot de passe et pas d'en-tête de tenant — le tenant est résolu côté serveur. Traitez le bundle comme une donnée sensible et ne le versionnez jamais dans un système de contrôle de version.
Étape 2 : Vérifier la connectivité
Depuis le serveur de base de données, vérifiez que l'hôte Cockpit est joignable en HTTPS :
curl -v https://<cockpit-host>
Un GET sur l'URL du proxy de l'app fait office de sonde de disponibilité. Si la connexion échoue, vérifiez que le port 443 est ouvert, que le DNS se résout et que les certificats TLS sont approuvés (pour un Cockpit sur site, ajoutez son autorité de certification au magasin de confiance du système d'exploitation).
Étape 3 : Installer le fournisseur PKCS#11 de DuoKey
Placez la bibliothèque telle quelle dans le répertoire du fournisseur PKCS#11 d'Oracle. Oracle charge le premier objet partagé qu'il trouve dans le répertoire vendor/version, quel que soit son nom — ne la renommez pas en libpkcs11.so.
# Standard Oracle Database location
sudo mkdir -p /opt/oracle/extapi/64/hsm/DuoKey/1.0
sudo cp libdke_pkcs11.so /opt/oracle/extapi/64/hsm/DuoKey/1.0/
# Set ownership for the Oracle user
sudo chown -R oracle:oinstall /opt/oracle/extapi/64/hsm/DuoKey
sudo chmod -R 755 /opt/oracle/extapi/64/hsm/DuoKey
Sous Windows, l'artefact est dke_pkcs11.dll. Sur Oracle Key Vault, le chemin du fournisseur est /usr/local/okv/hsm/generic/ à la place.
Oracle charge le premier .so dans /opt/oracle/extapi/64/hsm/DuoKey/1.0/ quel que soit son nom. Ne conservez que la bibliothèque DuoKey dans ce répertoire afin que le bon fournisseur soit chargé.
Étape 4 : Placer le fichier de configuration
Copiez le pkcs11.toml du bundle de déploiement vers un emplacement protégé et faites-y pointer le fournisseur au moyen de la variable d'environnement DKE_PKCS11_CONF (définie dans le profil de l'utilisateur Oracle). Restreignez le fichier à l'utilisateur Oracle :
sudo chown oracle:oinstall /etc/dke/pkcs11.toml
sudo chmod 600 /etc/dke/pkcs11.toml
export DKE_PKCS11_CONF=/etc/dke/pkcs11.toml
Le pkcs11.toml du bundle contient déjà le server_url de [http_config] (avec app_id et access_guid), l'access_token, timeout_secs, verify_tls, ainsi que le slot_id, le logging_level et le logging_folder de [pkcs11]. Les champs individuels peuvent être surchargés par hôte au moyen de variables d'environnement DKE_PKCS11_*. Consultez Configuration du fournisseur PKCS#11 (pkcs11.toml) pour le schéma complet.
Étape 5 : Configurer Oracle pour un TDE basé sur HSM
Connectez-vous en tant que SYSDBA et exécutez le SQL du bundle de déploiement. Le type de keystore est HSM.
5.1 Définir la racine du wallet et la configuration TDE
ALTER SYSTEM SET WALLET_ROOT='<oracle-base>/admin/<sid>/wallet' SCOPE=SPFILE;
-- Restart to apply WALLET_ROOT
SHUTDOWN IMMEDIATE;
STARTUP;
ALTER SYSTEM SET TDE_CONFIGURATION='KEYSTORE_CONFIGURATION=HSM' SCOPE=BOTH;
5.2 Ouvrir le keystore HSM
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN
IDENTIFIED BY "<pin>"
CONTAINER = ALL;
Pour le fournisseur DuoKey, l'identifiant réel est l'access_guid du pkcs11.toml ; la valeur IDENTIFIED BY est indicative. Vous pouvez aussi ouvrir le keystore avec IDENTIFIED BY EXTERNAL STORE lorsque l'identifiant est conservé dans un magasin externe.
5.3 Définir la clé maître TDE
ADMINISTER KEY MANAGEMENT SET KEY
IDENTIFIED BY "<pin>"
WITH BACKUP
CONTAINER = ALL;
La clé maître est en AES-256.
Créez d'abord la clé de la racine, puis créez la clé de chaque PDB dans sa propre session. Une PDB qui n'est pas OPEN READ WRITE lors d'un renouvellement de clé CONTAINER=ALL déclenche ORA-46664.
ALTER SESSION SET CONTAINER = <pdb_name>;
ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY "<pin>" WITH BACKUP;
Étape 6 : Vérifier
SELECT wrl_type, status, wallet_type FROM V$ENCRYPTION_WALLET;
Résultat attendu :
WRL_TYPE: HSMSTATUS: OPEN
Créez un tablespace chiffré pour confirmer le bon fonctionnement de bout en bout :
CREATE TABLESPACE encrypted_ts
DATAFILE '<oradata-path>/encrypted_ts01.dbf' SIZE 128M
ENCRYPTION USING 'AES256' DEFAULT STORAGE(ENCRYPT);
Confirmez ensuite que les opérations sur les clés apparaissent dans le journal d'audit du Cockpit pour cette app.
Rotation des clés
Effectuez la rotation de la clé maître depuis le Cockpit. La rotation rend une nouvelle clé active et désactive mais conserve la clé précédente, de sorte que les clés de tablespace enveloppées sous l'ancienne MEK restent déchiffrables. Le Cockpit renvoie le SQL de rotation Oracle (ADMINISTER KEY MANAGEMENT SET KEY … WITH BACKUP).
Étapes suivantes
- Gestion des clés — rotation, migration, RAC et Data Guard, sauvegarde et restauration.
- Bonnes pratiques — recommandations de sécurité, de performance et d'exploitation.
- Intégration Oracle TDE (Cockpit v2) — les opérations Cryptoki et le cycle de vie de la MEK en détail.
Dépannage
La bibliothèque ne se charge pas (ORA-28353, aucun journal) — la bibliothèque a été compilée avec une version plus récente de glibc. Utilisez la version Oracle Linux 8 / glibc 2.28 fournie par DuoKey.
ORA-28365: wallet is not open — rouvrez le keystore :
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN
IDENTIFIED BY "<pin>" CONTAINER = ALL;
ORA-46664 lors d'un renouvellement de clé multitenant — une PDB cible n'était pas OPEN READ WRITE. Ouvrez la PDB (ou créez sa clé individuellement) et réessayez.
Connectivité — vérifiez le port 443 vers <cockpit-host>, le server_url dans pkcs11.toml et (sur site) la confiance de l'autorité de certification. Les journaux du fournisseur sont écrits dans le logging_folder (par défaut /var/log/dke-pkcs11).
Assistance
- E-mail : [email protected]
- Documentation : Support DuoKey
- Statut : status.duokey.com