Search This Blog

Thursday, October 13, 2022

 


Enabling TDE in New PDB database.
----------------------------------------------


1. Check if the keystore is already open in the PDB.


a)  set lines 200

        col DATABASE_HOST for a30;
        col HOST_NAME for a15;
        col DATABASE_ROLE for a10
        col OPEN_MODE for a10
        col STARTUP_TIME for a20

        SELECT i.HOST_NAME "DATABASE_HOST" ,i.INSTANCE_NAME "DB_NAME", .DATABASE_ROLE " DATABASE_ROLE", d.OPEN_MODE " OPEN_MODE ", STARTUP_TIME        from GV$DATABASE d, gv$instance i where i.INST_ID=d.INST_ID;


DATABASE_HOST     DB_NAME   DATABASE_ROLE    OPEN_MODE         STARTUP_TIME
--------------------------    ---------------- ------------------------     ------------ -----         ---------------------
vm19rac1.localdomain           wallcdb1         PRIMARY          READ WRITE           10-FEB-21
vm19rac2.localdomain           wallcdb2         PRIMARY          READ WRITE           10-FEB-21


b) Connect to PDB and check the keystore status 

SQL> alter session set container=EVAAPDB;
Session altered.

SQL> show con_name;

CON_NAME
------------------------------
EVAAPDB


set lines 200
col wrl_parameter for a25
col wrl_type for a19
select * from v$encryption_wallet;

WRL_TYPE    WRL_PARAMETER     STATUS     WALLET_TYPE          WALLET_OR KEYSTORE FULLY_BAC CON_ID

------------------- ------------------------- --------------------------------- -------------------- --------- -------- ------ASM      OPEN_NO_MASTER_KEY   AUTOLOGIN            SINGLE    UNITED   UNDEFINED      4


2. If its not open, you can Open the keystore in that PDB 

ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY Welcome1;

3. Now generate master encryption key for the PDB


SQL> ADMINISTER KEY MANAGEMENT SET KEY FORCE  IDENTIFIED BY Welcome1 WITH BACKUP;

SQL> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY Welcome1 WITH BACKUP;

ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY Welcome1 WITH BACKUP
*
ERROR at line 1:
ORA-28417: password-based keystore is not open


So use FORCE KEYSTORE 


SQL> ADMINISTER KEY MANAGEMENT SET KEY FORCE KEYSTORE IDENTIFIED BY Welcome1 WITH BACKUP;

keystore altered.


Check the status again.


set lines 200

col wrl_parameter for a25

col wrl_type for a19

select * from v$encryption_wallet;


WRL_TYPE            WRL_PARAMETER             STATUS                         WALLET_TYPE          WALLET_OR KEYSTORE FULLY_BAC     CON_ID
-------- ------------------------- ------------------------------ -------------------- --------- -------- --------- ----------
ASM        OPEN                           AUTOLOGIN            SINGLE    UNITED   NO                 4


4. Now Create a Encrypted tablespace

SQL> CREATE TABLESPACE ENCRYPTED_TS_ENCRYPTED DATAFILE '+DATA' SIZE 100M AUTOEXTEND ON  maxsize 1G ENCRYPTION USING 'AES256' DEFAULT STORAGE(ENCRYPT);

Tablespace created.


SQL>  select tablespace_name, encrypted from dba_tablespaces;

TABLESPACE_NAME          ENCRYPTED
------------------------------         ------------------
SYSTEM                                                NO
SYSAUX                                                NO
UNDOTBS1                                           NO
TEMP                                                     NO
USERS                                                   NO
UNDOTBS2                                           NO
ENCRYPTED_TS                                  NO
ENCRYPTED_TS_ENCRYPTED        YES

8 rows selected.

5. Check and change the parameter, encrypt_new_tablespaces to ALWAYS.


SQL> show parameter encrypt;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
encrypt_new_tablespaces              string      CLOUD_ONLY

SQL> alter system set encrypt_new_tablespaces=always scope=both sid='*';

System altered.


SQL>  show parameter encrypt;

NAME                                     TYPE            VALUE
------------------------------------ -----------     ------------------------------
encrypt_new_tablespaces        string              ALWAYS


6.  Check the tablesapces and ENCRYPT ONLINE


 6a) Check the current encrypted tablespaces as below


SQL> select tablespace_name, encrypted from dba_tablespaces;

    TABLESPACE_NAME                 ENCRYPTED
------------------------------          ------------------
SYSTEM                                                NO
SYSAUX                                                NO
UNDOTBS1                                           NO
TEMP                                                     NO
USERS                                                    NO
UNDOTBS2                                           NO
ENCRYPTED_TS                                  NO
ENCRYPTED_TS_ENCRYPTED         YES

8 rows selected.


 6b) Encrypt the tablespace ONLINE as below.

SQL > alter tablespace  ENCRYPTED_TS ENCRYPTION ONLINE USING 'AES256'  ENCRYPT;
Tablespace altered.


 6c) Check the current encrypted tablespaces again as below


SQL> select tablespace_name, encrypted from dba_tablespaces;


TABLESPACE_NAME      ENCRYPTED

------------------------------      ------------------
SYSTEM                                                NO
SYSAUX                                                NO
UNDOTBS1                                           NO
TEMP                                                     NO
USERS                                                    NO
UNDOTBS2                                           NO
ENCRYPTED_TS                                 YES
ENCRYPTED_TS_ENCRYPTED       YES


8 rows selected.




No comments:

Post a Comment