Skip to main content

Command Palette

Search for a command to run...

Borrar master keys antiguas de la TDE keystore

Published
3 min readView as Markdown
Borrar  master keys antiguas de la TDE keystore
C

Mi nombre es Carla y me defino como una apasionada de conocer, compartir ideas, divertirme y aprender todo lo relacionado con Oracle.

Alegre y creativa, con un alto grado de autoexigencia, que busca, incluso sin querer, una forma diferente de ver un mismo problema o solución. Defensora del trabajo en equipo en todas las facetas de la vida y de disfrutar todo lo que haces, siempre con humildad.

Actualmente cuento con más de 15 años de experiencia como administradora de Oracle, habiendo ocupado previamente posiciones como desarrolladora en la rama de Inteligencia de Negocios. Fue en ese momento que me di cuenta de que no quería centrarme en el desarrollo, sino participar en todas las capas que involucraban los datos, desde el despliegue de la base de datos hasta su explotación final.

Siempre estoy dispuesta a ayudar y compartir conocimientos. Creo firmemente que con la tecnología hay que divertirse y no verla como una competencia. La persona con la que tienes que ser el mejor es contigo mismo.

Después de un ciclo de pruebas de configuración y testing he dejado la keystore en situación no deseable cuando la desorganización te produce TOC.

Listamos previamente las master keys.

Master Key ID                                           Tag                  PDB Name        KEYSTORE_TYPE     Origin     Key Creation Time  Key Act. Time     
------------------------------------------------------- -------------------- --------------- ----------------- ---------- ------------------ ------------------
AcxxxxxxxxxxxxxxxxxxxxQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA                         CDB$ROOT        SOFTWARE KEYSTORE LOCAL      01/14/2025 18:34   01/14/2025 18:34  
Adyyyyyyyyyyyyyyyyyyyy0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA                         CDB$ROOT        SOFTWARE KEYSTORE LOCAL      01/14/2025 19:16   01/14/2025 19:16  
AbooooooooooooooooooooEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA                         PDB_PRUEBA      SOFTWARE KEYSTORE LOCAL      01/14/2025 19:16   01/14/2025 19:16  
AcccccccccccccccccccccwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA                         CDB$ROOT        SOFTWARE KEYSTORE LOCAL      01/14/2025 19:20   01/14/2025 19:20  
Aqqqqqqqqqqqqqqqqqqqqq0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA                         PDB_PRUEBA      SOFTWARE KEYSTORE LOCAL      01/14/2025 19:20   01/14/2025 19:20  
AppppppppppppppppppppppAAAAAAAAAAAAAAAAAAAAAAAAAAAAA                         CDB$ROOT        SOFTWARE KEYSTORE LOCAL      01/14/2025 19:49   01/14/2025 19:49  
AmmmmmmmmmmmmmmmmmmmmmmAAAAAAAAAAAAAAAAAAAAAAAAAAAAA                         PDB_PRUEBA      SOFTWARE KEYSTORE LOCAL      01/14/2025 19:49   01/14/2025 19:49  
AssssssssssssssssssssssAAAAAAAAAAAAAAAAAAAAAAAAAAAAA                         CDB$ROOT        SOFTWARE KEYSTORE LOCAL      01/14/2025 19:56   01/14/2025 19:56  
AzzzzzzzzzzzzzzzzzzzzzzAAAAAAAAAAAAAAAAAAAAAAAAAAAAA                         PDB_PRUEBA      SOFTWARE KEYSTORE LOCAL      01/14/2025 19:56   01/14/2025 19:56  
AWjjjjjjjjjjjjjjjjjjjjjAAAAAAAAAAAAAAAAAAAAAAAAAAAAA                         CDB$ROOT        SOFTWARE KEYSTORE LOCAL      01/14/2025 22:46   01/14/2025 22:46  
ASfffffffffffffffffffffAAAAAAAAAAAAAAAAAAAAAAAAAAAAA                         PDB_PRUEBA      SOFTWARE KEYSTORE LOCAL      01/14/2025 22:46   01/14/2025 22:46

Pongámonos manos a la obra para deshacer esta faena y tener el entorno limpio.

Primer paso: cuales estoy utilizando?

set linesize 170
set pagesize 50
column pdb_name heading "PDB Name" format a15
column masterkeyid_base64 heading "Master Key ID" format a25
column mkid heading "Key ID" format a35
break

select name pdb_name,
        mkid, 
        utl_raw.cast_to_varchar2( utl_encode.base64_encode('01'||substr(mkeyid,1,4))) || utl_raw.cast_to_varchar2( utl_encode.base64_encode(substr(mkeyid,5,length(mkeyid)))) masterkeyid_base64 
      FROM (select con_id,
             mkid, 
             RAWTOHEX(mkid) mkeyid from x$kcbdbk) a,v$containers b
      where a.con_id=b.con_id;


PDB Name        Key ID                           Master Key ID                                     
--------------- -------------------------------- --------------------------------------------------
CDB$ROOT        6D0WWWWWWWWWWWWWWWWWWWWWWWWWWW38 AWjjjjjjjjjjjjjjjjjjjjj
PDB$SEED        00000000000000000000000000000000 AQAAAAAAAAAAAAAAAAAAAAA                          
PDB_PRUEBA      2CWWWWWWWWWWWWWWWWWWWWWWWWWWWWW9 ASfffffffffffffffffffff

Perfecto, no existe procedimiento para borrarlas. Para realizar la limpieza primero vamos a exportarlas.

SYS@cdbxxx> ADMINISTER KEY MANAGEMENT EXPORT KEYS WITH SECRET "xxxxxxxxxxx" TO '/home/oracle/export_old_wallet.exp'  force keystore IDENTIFIED BY "xxxxxxxxxxxxxxx"
WITH IDENTIFIER IN
'AWjjjjjjjjjjjjjjjjjjjjjAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',
'ASfffffffffffffffffffffAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
;

Genial. Ahora moveremos los ficheros relacionados con la wallet del path antiguo a uno nuevo del que haremos backup seguro verdad?


[oracle@rxxxxx-001 ~]$ mv /u01/app/oracle/wallets/cdbxxx/tde/*wallet* /home/oracle/old_wallet

Reiniciamos la base de datos, creamos una keystore nueva e importamos las claves:

SYS@cdbxxx> administer key management create keystore '/u01/app/oracle/wallets/cdbxxx/tde' identified by "xxxxxxxxxx";
SYS@cdbxxx> administer key management set keystore open identified by "xxxxxxxxxxxxx";
SYS@cdbxxx> ADMINISTER KEY MANAGEMENT IMPORT KEYS WITH SECRET "xxxxxxxxxxx" FROM '/home/oracle/export_old_wallet.exp' IDENTIFIED BY "xxxxxxxxxxxxxxx" WITH BACKUP;

Activamos master encryption key para CDB$ROOT:

SYS@cdbxxx> administer key management use key 'AWjjjjjjjjjjjjjjjjjjjjjAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' identified by "xxxxxxxxxxxxxxx" WITH BACKUP;

Conectamos a la PDB y repetimos el paso pero con su clave.

SYS@cdbxxx> administer key management set keystore open identified by "xxxxxxxxxxxxx"; 
SYS@cdbxxx> administer key management use key 'ASfffffffffffffffffffffAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' identified by "xxxxxxxxxxxxx" WITH BACKUP;

Reiniciamos BBDD y comprobamos.

set linesize 170
set pagesize 50
column pdb_name heading "PDB Name" format a15
column masterkeyid_base64 heading "Master Key ID" format a25
column mkid heading "Key ID" format a35
break

select name pdb_name,
        mkid, 
        utl_raw.cast_to_varchar2( utl_encode.base64_encode('01'||substr(mkeyid,1,4))) || utl_raw.cast_to_varchar2( utl_encode.base64_encode(substr(mkeyid,5,length(mkeyid)))) masterkeyid_base64 
      FROM (select con_id,
             mkid, 
             RAWTOHEX(mkid) mkeyid from x$kcbdbk) a,v$containers b
      where a.con_id=b.con_id;


PDB Name        Key ID                           Master Key ID                                     
--------------- -------------------------------- --------------------------------------------------
CDB$ROOT        6D0WWWWWWWWWWWWWWWWWWWWWWWWWWW38 AWjjjjjjjjjjjjjjjjjjjjj
PDB$SEED        00000000000000000000000000000000 AQAAAAAAAAAAAAAAAAAAAAA                          
PDB_PRUEBA      2CWWWWWWWWWWWWWWWWWWWWWWWWWWWWW9 ASfffffffffffffffffffff

Si todo ha ido ok volvemos a habilitar el autologing en nuestro caso.

SYS@cdbxxx> ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM KEYSTORE IDENTIFIED BY "xxxxxxxxxxxxx";

   INST_ID PDB Name   Type       WRL_PARAMETER                                      Status                         WALLET_TYPE          KEYSTORE Backed Up 
---------- ---------- ---------- -------------------------------------------------- ------------------------------ -------------------- -------- ----------
         1 CDB$ROOT   FILE       /u01/app/oracle/wallets/cdbxxx/tde/                OPEN                           AUTOLOGIN            NONE     NO        
           PDB$SEED   FILE                                                          OPEN                           AUTOLOGIN            UNITED   NO        
           PDB_PRUEBA FILE                                                          OPEN                           AUTOLOGIN            UNITED   NO        

         2 CDB$ROOT   FILE       /u01/app/oracle/wallets/cdbxxx/tde/                OPEN                           AUTOLOGIN            NONE     NO        
           PDB$SEED   FILE                                                          OPEN                           AUTOLOGIN            UNITED   NO        
           PDB_PRUEBA FILE                                                          OPEN                           AUTOLOGIN            UNITED   NO

More from this blog

Carla Muñoz López

65 posts

Soy DBA senior de bases de datos Oracle y me defino como una persona alegre y creativa. Apasionada por conocer, compartir ideas, divertirme y seguir aprendiendo todo lo relacionado con Oracle.