Aller au contenu principal

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.

Cockpit v2

L'intégration repose sur un jeton porteur access_guid unique, un fichier de configuration pkcs11.toml et le fournisseur libdke_pkcs11.so.

Concepts et configuration canonique

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 SYSDBA et le privilège système ADMINISTER KEY MANAGEMENT
Correctif Oracle 11g

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)
Cible de compilation de la bibliothèque

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​

  1. Connectez-vous à l'URL de votre Cockpit v2 DuoKey.
  2. 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.
  3. 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 bon server_url et le bon access_guid),
    • les exports d'environnement (dont DKE_PKCS11_CONF),
    • les scripts SQL Oracle.
Identifiant unique

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.

Gardez le répertoire du fournisseur propre

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;
Le PIN est indicatif

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.

Multitenant (CDB / PDB)

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 : HSM
  • STATUS : 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​

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​