6 Using Transparent Data Encryption with Other Oracle Features
You can use Oracle Data Encryption with other Oracle features, such as Oracle Data Guard or Oracle Real Application Clusters.
- How Transparent Data Encryption Works with Export and Import Operations
Oracle Data Pump can export and import tables that contain encrypted columns, as well as encrypt entire dump sets. - How Transparent Data Encryption Works with Oracle Data Guard
An Oracle Data Guard primary database and secondary secondary database can share both a software keystore and an external keystore. - How Transparent Data Encryption Works with Oracle Real Application Clusters
Oracle Real Application Clusters (Oracle RAC) nodes can share both a software keystore and an external keystore. - How Transparent Data Encryption Works with SecureFiles
SecureFiles, which stores LOBS, has three features: compression, deduplication, and encryption. - How Transparent Data Encryption Works in a Multitenant Environment
In a multitenant environment, the TDE operations that you can perform depend on whether you are in the root or a PDB. - How Transparent Data Encryption Works with Oracle Call Interface
Transparent Data Encryption does not have any effect on the operation of Oracle Call Interface (OCI). - How Transparent Data Encryption Works with Editions
Transparent Data Encryption does not have any effect on the Editions feature of Oracle Database. - Configuring Transparent Data Encryption to Work in a Multidatabase Environment
Each Oracle database on the same server (such as databases sharing the same Oracle binary but using different data files) must access its own TDE keystore.
Parent topic: Using Transparent Data Encryption
6.1 How Transparent Data Encryption Works with Export and Import Operations
Oracle Data Pump can export and import tables that contain encrypted columns, as well as encrypt entire dump sets.
- About Exporting and Importing Encrypted Data
You can use Oracle Data Pump to export and import tables that have encrypted columns. - Exporting and Importing Tables with Encrypted Columns
You can export and import tables with encrypted columns using theENCRYPTION=ENCRYPTED_COLUMNS_ONLYsetting. - Using Oracle Data Pump to Encrypt Entire Dump Sets
Oracle Data Pump can encrypt entire dump sets, not just Transparent Data Encryption columns.
6.1.1 About Exporting and Importing Encrypted Data
You can use Oracle Data Pump to export and import tables that have encrypted columns.
For both software and external keystores, the following points are important when you must export tables containing encrypted columns:
-
Sensitive data should remain unintelligible during transport.
-
Authorized users should be able to decrypt the data after it is imported at the destination.
When you use Oracle Data Pump to export and import tables containing encrypted columns, it uses the ENCRYPTION parameter to enable encryption of data in dump file sets. The ENCRYPTION parameter allows the following values:
-
ENCRYPTED_COLUMNS_ONLY: Writes encrypted columns to the dump file set in encrypted format -
DATA_ONLY: Writes all of the data to the dump file set in encrypted format -
METADATA_ONLY: Writes all of the metadata to the dump file set in encrypted format -
ALL: Writes all of the data and metadata to the dump file set in encrypted format -
NONE: Does not use encryption for dump file sets
6.1.2 Exporting and Importing Tables with Encrypted Columns
You can export and import tables with encrypted columns using the ENCRYPTION=ENCRYPTED_COLUMNS_ONLY setting.
-
Ensure that the keystore is open before you attempt to export tables containing encrypted columns.
In a multitenant environment, if you are exporting data in a pluggable database (PDB), then ensure that the wallet is open in the PDB. If you are exporting into the root, then ensure that the wallet is open in the root.
To find if the keystore is open, query the
STATUScolumn of theV$ENCRYPTION_WALLETview. If you must open the keystore, then run the following SQL statement:ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY software_keystore_password [CONTAINER = ALL | CURRENT];The
software_keystore_passwordsetting is the password for the keystore. The keystore must be open because the encrypted columns must be decrypted using the TDE table keys, which requires access to the TDE master encryption key. The columns are reencrypted using a password, before they are exported. -
Run the
EXPDPcommand, using theENCRYPTION_PASSWORDparameter to specify a password that is used to encrypt column data in the export dump file set.The following example exports the
employee_datatable. TheENCRYPTION_PWD_PROMPT = YESsetting enables you to prompt for the password interactively, which is a recommended security practice.expdp hr TABLES=employee_data DIRECTORY=dpump_dir DUMPFILE=dpcd2be1.dmp ENCRYPTION=ENCRYPTED_COLUMNS_ONLY ENCRYPTION_PWD_PROMPT = YES Password: password_for_hr -
To import the exported data into the target database, ensure that you specify the same password that you used for the export operation, as set by the
ENCRYPTION_PASSWORDparameter.The password is used to decrypt the data. Data is reencrypted with the new TDE table keys generated in the target database. The target database must have the keystore open to access the TDE master encryption key. The following example imports the
employee_datatable:impdp hr TABLES=employee_data DIRECTORY=dpump_dir DUMPFILE=dpcd2be1.dmp ENCRYPTION_PWD_PROMPT = YES Password: password_for_hr
6.1.3 Using Oracle Data Pump to Encrypt Entire Dump Sets
Oracle Data Pump can encrypt entire dump sets, not just Transparent Data Encryption columns.
While importing, you can use either the password or the keystore TDE master encryption key to decrypt the data. If the password is not supplied, then the TDE master encryption key in the keystore is used to decrypt the data. The keystore must be present and open at the target database. The open keystore is also required to reencrypt column encryption data at the target database.
You can use the ENCRYPTION_MODE=TRANSPARENT setting to transparently encrypt the dump file set with the TDE master encryption key stored in the keystore. A password is not required in this case. The keystore must be present and open at the target database, and it must contain the TDE master encryption key from the source database for a successful decryption of column encryption metadata during an import operation.
The open keystore is also required to reencrypt column encryption metadata at the target database. If a keystore already exists on the target database, then you can export the current TDE master encryption key from the keystore of the source database and import it into the keystore of the target database.
-
Use the
ENCRYPTION_MODEparameter to specify the encryption mode.ENCRYPTION_MODE=DUALencrypts the dump set using the TDE master encryption key stored in the keystore and the password provided.
For example, to use dual encryption mode to export encrypted data:
expdp hr DIRECTORY=dpump_dir1 DUMPFILE=hr_enc.dmp ENCRYPTION=all ENCRYPTION_PASSWORD=encryption_password ENCRYPTION_ALGORITHM=AES256 ENCRYPTION_MODE=dual Password: password_for_hr
See Also:
-
Oracle Database Utilities for details on using Oracle Data Pump and the associated encryption parameters
6.2 How Transparent Data Encryption Works with Oracle Data Guard
An Oracle Data Guard primary database and secondary secondary database can share both a software keystore and an external keystore.
- About Using Transparent Data Encryption with Oracle Data Guard
For both software keystores and external keystores, Oracle Data Guard supports Transparent Data Encryption (TDE). - Configuring TDE and Oracle Key Vault in an Oracle Data Guard Environment
You can configure Oracle Data Guard in a multitenant environment so that it can work with TDE and Oracle Key Vault.
6.2.1 About Using Transparent Data Encryption with Oracle Data Guard
For both software keystores and external keystores, Oracle Data Guard supports Transparent Data Encryption (TDE).
If the primary database uses TDE, then each standby database in a Data Guard configuration must have a copy of the encryption keystore from the primary database. If you reset the TDE master encryption key in the primary database, then you must copy the keystore from the primary database that contains the TDE master encryption key to each standby database.
Note the following:
-
Re-key operations with wallet-based TDE will cause the Managed Recovery Process (MRP) on the standby databases to fail because the new TDE master encryption key is not yet available. In order to circumvent this problem, use the
ADMINISTER KEY MANAGEMENT CREATE KEYstatement on the primary database to insert new TDE master encryption keys into the wallet. Copy the wallet to the standby databases, and then execute aADMINISTER KEY MANAGEMENT USE KEYstatement on the primary. -
Encrypted data in log files remains encrypted when data is transferred to the standby database. Encrypted data also stays encrypted during transit.
Related Topics
6.2.2 Configuring TDE and Oracle Key Vault in an Oracle Data Guard Environment
You can configure Oracle Data Guard in a multitenant environment so that it can work with TDE and Oracle Key Vault.
6.3 How Transparent Data Encryption Works with Oracle Real Application Clusters
Oracle Real Application Clusters (Oracle RAC) nodes can share both a software keystore and an external keystore.
- About Using Transparent Data Encryption with Oracle Real Application Clusters
Oracle requires a shared software keystore for Oracle Real Application Clusters (Oracle RAC), or a shared common virtual wallet in Oracle Key Vault among cluster instances. - Configuring TDE in Oracle Real Application Clusters for Oracle Key Vault
You can configure TDE in Oracle Real Application Clusters (Oracle RAC) on Oracle Exadata Cloud at Customer (ExaCC) and other servers for centralized key management provided by Oracle Key Vault.
6.3.1 About Using Transparent Data Encryption with Oracle Real Application Clusters
Oracle requires a shared software keystore for Oracle Real Application Clusters (Oracle RAC), or a shared common virtual wallet in Oracle Key Vault among cluster instances.
A TDE configuration with Oracle Key Vault uses a network connection from each instance of the database to the external key manager. In Oracle Key Vault, you must create one endpoint for each instance of the Oracle RAC-enabled database, and one virtual wallet for each Oracle RAC-enabled database. Then, make that virtual wallet the default wallet of all endpoints that belong to that database. In an Oracle RAC-enabled Data Guard configuration, all instances (primary and all standby databases) share that one virtual wallet. With this configuration, set key and re-key operations are completely transparent because all participating instances are automatically synchronized. This eliminates the need to manually copy the software keystore to each of the other nodes in the cluster.
Oracle does not support the use of individual TDE wallets for each Oracle RAC node. Instead, use shared wallets for TDE in the Oracle RAC environment. This enables all of the instances to access the same shared software keystore. If your site uses Oracle Automatic Storage Management Cluster File System (Oracle ACFS), then this is the preferred location for a shared wallet. Directly sharing the wallet in Oracle Automatic Storage Management (Oracle ASM) (for example, +DATA/$ORACLE_UNQNAME/WALLETS) is an alternative if Oracle ACFS is not available.
Keystore operations (such as opening or closing the keystore, or rekeying the TDE master encryption key) can be issued on any one Oracle RAC instance. Internally, the Oracle database takes care of synchronizing the keystore context on each Oracle RAC node, so that the effect of the keystore operation is visible to all of the other Oracle RAC instances in the cluster. Similarly, when a TDE master encryption key rekey operation takes place, the new key becomes available to each of the Oracle RAC instances. You can perform other keystore operations, such as exporting TDE master encryption keys, rotating the keystore password, merging keystores, or backing up keystores, from a single instance only.
When using a shared file system, ensure that the ENCRYPTION_WALLET_LOCATION parameter setting in the sqlnet.ora file for all of the Oracle RAC instances point to the same shared software keystore location. You also must ensure security of the shared software keystore by assigning the appropriate directory permissions.
Note:
Storing TDE master encryption keys in individual wallets per Oracle Real Application Clusters (Oracle RAC) instance is not supported. As an alternative, use Oracle Key Vault for centralized key management across your on-premises or Cloud-based database deployments, or Oracle Automatic Storage Management (Oracle ASM), or Oracle ASM Cluster File System (Oracle ACFS) to provide local shared wallets.6.3.2 Configuring TDE in Oracle Real Application Clusters for Oracle Key Vault
You can configure TDE in Oracle Real Application Clusters (Oracle RAC) on Oracle Exadata Cloud at Customer (ExaCC) and other servers for centralized key management provided by Oracle Key Vault.
provision command of the RESTful API requires a symbolic link in /usr/bin/java that points to the Java home in the Oracle database. For example: # ln -sv $ORACLE_HOME/jdk/jre/java /usr/bin/java
Related Topics
6.4 How Transparent Data Encryption Works with SecureFiles
SecureFiles, which stores LOBS, has three features: compression, deduplication, and encryption.
- About Transparent Data Encryption and SecureFiles
SecureFiles encryption uses TDE to provide the encryption facility for LOBs. - Example: Creating a SecureFiles LOB with a Specific Encryption Algorithm
TheCREATE TABLEstatement can create a SecureFiles LOB with encryption specified. - Example: Creating a SecureFiles LOB with a Column Password Specified
TheCREATE TABLEstatement can create a SecureFiles LOB with a column password.
6.4.1 About Transparent Data Encryption and SecureFiles
SecureFiles encryption uses TDE to provide the encryption facility for LOBs.
When you create or alter tables, you can specify the SecureFiles encryption or LOB columns that must use the SecureFiles storage. You can enable the encryption for a LOB column by either using the current Transparent Data Encryption (TDE) syntax or by using the ENCRYPT clause as part of the LOB parameters for the LOB column. The DECRYPT option in the current syntax or the LOB parameters turn off encryption.
Parent topic: How Transparent Data Encryption Works with SecureFiles
6.4.2 Example: Creating a SecureFiles LOB with a Specific Encryption Algorithm
The CREATE TABLE statement can create a SecureFiles LOB with encryption specified.
Example 6-1 shows how to create a SecureFiles LOB in a CREATE TABLE statement.
Example 6-1 Creating a SecureFiles LOB with a Specific Encryption Algorithm
CREATE TABLE table1 ( a BLOB ENCRYPT USING 'AES256')
LOB(a) STORE AS SECUREFILE (
CACHE
);
Parent topic: How Transparent Data Encryption Works with SecureFiles
6.4.3 Example: Creating a SecureFiles LOB with a Column Password Specified
The CREATE TABLE statement can create a SecureFiles LOB with a column password.
Example 6-2 shows an example of creating a SecureFiles LOB that uses password protections for the encrypted column.
All of the LOBS in the LOB column are encrypted with the same encryption specification.
Example 6-2 Creating a SecureFiles LOB with a Column Password Specified
CREATE TABLE table1 (a VARCHAR2(20), b BLOB)
LOB(b) STORE AS SECUREFILE (
CACHE
ENCRYPT USING 'AES192' IDENTIFIED BY password
);
Parent topic: How Transparent Data Encryption Works with SecureFiles
6.5 How Transparent Data Encryption Works in a Multitenant Environment
In a multitenant environment, the TDE operations that you can perform depend on whether you are in the root or a PDB.
- About Using Transparent Data Encryption in a Multitenant Environment
TDE can be used for both columns and tablespaces in a multitenant environment. - Operations That Must Be Performed in Root
You must perform specificADMINISTER KEY MANAGEMENTkeystore operations only in the root. - Operations That Can Be Performed in Root or in a PDB
You can perform the some keystore operations in either the root or a PDB. - Moving PDBs from One CDB to Another
You can clone or relocate encrypted PDBs within the same container database, or across container databases. - Exporting and Importing TDE Master Encryption Keys for a PDB
TheEXPORTandIMPORTclauses ofADMINISTER KEY MANAGEMENT EXPORTcan export or import TDE master encryption keys for a PDB. - Unplugging and Plugging a PDB with Encrypted Data in a CDB
You can add or remove PDBs that have encrypted data to and from a CDB. - Managing Cloned PDBs with Encrypted Data
You can clone a PDB that has encrypted data in a CDB. - How Keystore Open and Close Operations Work in a Multitenant Environment
You should be aware of how keystore open and close operations work in a multitenant environment. - Finding the Keystore Status for All of the PDBs in a Multitenant Environment
You can create a convenience function that uses theV$ENCRYPTION_WALLETview to find the status for keystores in all PDBs in a CDB.
6.5.1 About Using Transparent Data Encryption in a Multitenant Environment
TDE can be used for both columns and tablespaces in a multitenant environment.
Note the following:
-
The keystore that you create resides in the host multitenant environment, not within any particular PDB. Multiple PDBs can access a single keystore while running on this host. Each PDB that uses encryption has a Transparent Data Encryption TDE master encryption key stored in this keystore.
-
Each PDB has its own TDE master encryption key. You must manage the TDE master encryption key for each PDB from within the PDB only, using the PDB-specific key management
ADMINISTER KEY MANAGEMENTstatements. From the root or a PDB, you can query the appropriate views to find information about the TDE master encryption keys of the PDBs in a CDB. For example, thePDBIDcolumn of theV$ENCYRYPTION_KEYSview indicates the PDBs to which a TDE master encryption key belongs. -
You can manage the Transparent Data Encryption TDE master encryption keys independently within the keystore for each PDB. You can rotate the TDE master encryption keys for each PDB individually. See Exporting and Importing the TDE Master Encryption Key for more information.
-
You perform most of the keystore operations from the root. Keystore operations such as rotating a keystore password, merging keystores, and so on must be performed in the root. There are a few key management operations that you can perform within a PDB, such as opening, closing, resetting, and creating keys. The operations can also be performed for all of the PDBs from the root. Where applicable, the
ADMINISTER KEY MANAGEMENTstatement has theCONTAINERclause. SettingCONTAINER=ALLperforms the action on all of the PDBs. -
An auto-login keystore is open (for example, in the root) or if the keystore is closed. In this scenario, include the
FORCE KEYSTOREclause in theADMINISTER KEY MANAGEMENTstatement for the following operations: rotating a keystore password; creating, using, rekeying, tagging, importing, exporting, migrating, or reverse migrating encryption keys; opening or backing up keystores; adding, updating, or deleting secret keystores. -
You can use an external store for passwords in a multitenant environment. If you have configured the password-based software keystore to use an external store, then include the
IDENTIFIED BY EXTERNAL STOREclause in theADMINISTER KEY MANAGEMENTstatement for the following operations: backing up, opening, or closing keystores; adding, updating, or deleting secret keystores; creating, using, rekeying, tagging, importing, or exporting encryption keys. -
If you plan to move a PDB that uses Transparent Data Encryption to a new host computer, then you must move its TDE master encryption key as well. To move the TDE master encryption key from one host computer to another, use the procedures described in Exporting and Importing the TDE Master Encryption Key.
6.5.2 Operations That Must Be Performed in Root
You must perform specific ADMINISTER KEY MANAGEMENT keystore operations only in the root.
These operations are as follows:
-
Creating password-based software keystores, using the
ADMINISTER KEY MANAGEMENT CREATE KEYSTOREstatement -
Creating auto-login software keystores, using the
ADMINISTER KEY MANAGEMENT CREATE [LOCAL] AUTO_LOGIN KEYSTORE FROM KEYSTOREstatement -
Changing the software keystore password, using the
ADMINISTER KEY MANAGEMENT ALTER KEYSTORE PASSWORDstatement -
Merging software keystores, using the
ADMINISTER KEY MANAGEMENT MERGE KEYSTOREstatement -
Backing up software keystores, using the
ADMINISTER KEY MANAGEMENT BACKUP KEYSTOREkeystore -
Migrating from a software keystore to an external keystore, using the
ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY ... MIGRATE USINGstatement -
Reverse migrating from an external keystore to a software keystore, using the
ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY ... REVERSE MIGRATEstatement -
Adding, updating, and deleting secrets, using the
ADMINISTER KEY MANAGEMENT ADD|UPDATE|DELETE SECRETstatement -
Selectively exporting and importing keys, based on a query or identifier list
How the CONTAINER=ALL Setting Works for Key and Keystore Operations
You can specify the CONTAINER=ALL setting for the key and keystore operations described in this section. Specifying the CONTAINER=ALL setting performs the same operation on all of the PDBs within the CDB. Remember that you can only use the CONTAINER=ALL setting in the root. The CONTAINER clause is optional. If you omit the CONTAINER clause, then the default is CONTAINER = CURRENT.
The permitted CONTAINER=ALL operations are as follows:
-
Opening a keystore. If you open the keystore using the
CONTAINER=ALLsetting, then the keystores on all of the associated PDBs open. -
Closing a keystore. Closing a keystore using the
CONTAINER=ALLsetting closes the keystores on all of the associated PDBs. -
Creating a TDE master encryption key. Creating a TDE master encryption key using the
CONTAINER=ALLsetting creates the key on all of the PDBs that are open. You can check the keys that were created recently by querying theCREATION_TIMEcolumn in theV$ENCRYPTION_KEYSview. You can also specify a tag withCONTAINER=ALLoperation, but be aware that this operation creates the keys in all of the PDBs with the same tag. You should have individual tags for each TDE master encryption key, because the tags can help identify PDBs on which the create key operation succeeded in case of an error. You can modify the tag by using theADMINISTER KEY MANAGEMENT SET TAGstatement later on. -
Performing a rekey operation. Performing a rekey operation with the
CONTAINER=ALLsetting creates and then activates the key on all of the PDBs that are open. You can check the keys that were created recently by querying theCREATION_TIMEcolumn in theV$ENCRYPTION_KEYSview. To find the keys that were activated recently, query theACTIVATION_TIMEcolumn in theV$ENCRYPTION_KEYSview. You can also specify a tag withCONTAINER=ALLoperation, but be aware that this operation creates the keys in all of the PDBs with the same tag. The tag can also help identify PDBs on which the create key operation succeeded in case of an error. You can modify the tag by using theADMINISTER KEY MANAGEMENT SET TAGstatement later on.
6.5.3 Operations That Can Be Performed in Root or in a PDB
You can perform the some keystore operations in either the root or a PDB.
These operations are as follows:
-
Opening keystores, using the
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPENstatement -
Closing keystores, using the
ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSEstatement
You can perform the following key management operations either in the root or a PDB:
-
Creating a tag for the TDE master encryption key, using the
ADMINISTER KEY MANAGEMENT SET TAGstatement -
Creating a TDE master encryption key, using the
ADMINISTER KEY MANAGEMENT CREATE KEYstatement -
Resetting or rotating the TDE master encryption key, using the
ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEYstatement -
Activating a TDE master encryption key, using the
ADMINISTER KEY MANAGEMENT USE KEYstatement -
Exporting TDE master encryption keys, using the
ADMINISTER KEY MANAGEMENT EXPORT ENCRYPTION KEYSstatement -
Importing TDE master encryption keys, using the
ADMINISTER KEY MANAGEMENT IMPORT ENCRYPTION KEYSstatement
6.5.4 Moving PDBs from One CDB to Another
You can clone or relocate encrypted PDBs within the same container database, or across container databases.
If you are trying to move a non-CDB or a PDB in which the SYSTEM, SYSAUX, UNDO, or TEMP tablespace is encrypted, and using the manual export or import of keys, then you must first import the keys for the non-CDB or PDB in the target database's CDB$ROOT before you create the PDB. Import of the keys are again required inside the PDB to associate the keys to the PDB.
6.5.5 Exporting and Importing TDE Master Encryption Keys for a PDB
The EXPORT and IMPORT clauses of ADMINISTER KEY MANAGEMENT EXPORT can export or import TDE master encryption keys for a PDB.
- About Exporting and Importing TDE Master Encryption Keys for a PDB
You can export and import TDE master encryption keys from the root in the same way that you export and import this key for a non-CDB database. - Exporting or Importing a TDE Master Encryption Key for a PDB
TheADMINISTER KEY MANAGEMENTstatement can export or import a TDE master encryption key for a PDB. - Example: Exporting a TDE Master Encryption Key from a PDB
TheADMINISTER KEY MANAGEMENT EXPORT ENCRYPTION KEYSstatement can export TDE master encryption keys for a PDB. - Example: Importing a TDE Master Encryption Key into a PDB
TheADMINISTER KEY MANAGEMENT IMPORT ENCRYPTION KEYSstatement can import a TDE master encryption key into a PDB.
6.5.5.1 About Exporting and Importing TDE Master Encryption Keys for a PDB
You can export and import TDE master encryption keys from the root in the same way that you export and import this key for a non-CDB database.
You can export and import all of the TDE master encryption keys that belong to the PDB by exporting and importing the TDE master encryption keys from within a PDB. Export and import of TDE master encryption keys in a PDB supports the PDB unplug and plug operations. During a PDB unplug and plug, all of the TDE master encryption keys that belong to a PDB, as well as the metadata, are involved. Therefore, the WITH IDENTIFIER clause of the ADMINISTER KEY MANAGEMENT EXPORT statement is not allowed when you export keys from within a PDB. The WITH IDENTIFIER clause is only permitted in the root.
You should include the FORCE KEYSTORE clause if the root has an auto-login keystore or if the keystore is closed. If the keystore has been configured to use an external store for the password, then use the IDENTIFIED BY EXTERNAL STORE clause. For example, to perform an export operation for this scenario:
ADMINISTER KEY MANAGEMENT EXPORT KEYS WITH SECRET "my_secret" TO '/etc/TDE/export.exp' FORCE KEYSTORE IDENTIFIED BY EXTERNAL STORE;
This ADMINISTER KEY MANAGEMENT EXPORT operation exports not only the keys but creates metadata that is necessary for PDB environments (as well as for cloning operations).
Inside a PDB, the export operation of TDE master encryption keys exports the keys that were created or activated by a PDB with the same GUID as the PDB where the keys are being exported. Essentially, all of the keys that belong to a PDB where the export is being performed will be exported.
The importing of TDE master encryption keys from an export file within a PDB takes place only if the TDE master encryption key was exported from another PDB with the same GUID. To support the plug-in of a PDB into a CDB, the import will also import the TDE master encryption keys from an export file that contains the TDE master encryption keys of a non-CDB exported without the WITH IDENTIFIER clause. Because the PDB-specific details, such as the PDB name and database ID, can change from one CDB to the next, the PDB-specific information is modified during the import to reflect the updated PDB information.
Note:
Within a PDB, you can only export the keys of a PDB as a whole. The ability to export them selectively based on a query or an identifier is restricted to the root.
6.5.5.2 Exporting or Importing a TDE Master Encryption Key for a PDB
The ADMINISTER KEY MANAGEMENT statement can export or import a TDE master encryption key for a PDB.
-
Log in to the PDB as a user who was granted the
ADMINISTER KEY MANAGEMENTorSYSKMprivilege.For example:
sqlplus sec_admin@hr_pdb as syskm Enter password: password Connected.To find the available PDBs, query the
DBA_PDBSdata dictionary view. To check the current PDB, run theshow con_namecommand. -
Ensure that the keystore is open.
You can query the
STATUScolumn of theV$ENCRYPTION_WALLETview to find if the keystore is open. If you find that you must open the software keystore, then you can optionally include theFORCE KEYSTOREclause in theADMINISTER KEY MANAGEMENTstatement when you perform the export or import operation. This clause enables you to open a software keystore during the operation without having to separately open the auto-login keystore or the password-based keystore.For example:
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN FORCE KEYSTORE IDENTIFIED BY keystore_password; -
Perform the export or import operation.
6.5.5.3 Example: Exporting a TDE Master Encryption Key from a PDB
The ADMINISTER KEY MANAGEMENT EXPORT ENCRYPTION KEYS statement can export TDE master encryption keys for a PDB.
Example 6-3 shows how to export a TDE master encryption key from the PDB hr_pdb1. In this example, the FORCE KEYSTORE clause is included in case the auto-login keystore is in use, or if the keystore is closed.
Example 6-3 Exporting a TDE Master Encryption Key from a PDB
sqlplus sec_admin@hr_pdb1 as syskm Enter password: password Connected. ADMINISTER KEY MANAGEMENT EXPORT ENCRYPTION KEYS WITH SECRET "my_secret" TO '/export.p12' FORCE KEYSTORE IDENTIFIED BY password_cdb1;
6.5.5.4 Example: Importing a TDE Master Encryption Key into a PDB
The ADMINISTER KEY MANAGEMENT IMPORT ENCRYPTION KEYS statement can import a TDE master encryption key into a PDB.
Example 6-4 shows how to import a TDE master encryption key into the PDB hr_pdb2.
Example 6-4 Importing a TDE Master Encryption Key into a PDB
sqlplus sec_admin@hr_pdb2 as syskm Enter password: password Connected. ADMINISTER KEY MANAGEMENT IMPORT ENCRYPTION KEYS WITH SECRET "my_secret" FROM '/tmp/export.p12' FORCE KEYSTORE IDENTIFIED BY password_cdb2 WITH BACKUP;
6.5.6 Unplugging and Plugging a PDB with Encrypted Data in a CDB
You can add or remove PDBs that have encrypted data to and from a CDB.
- Unplugging a PDB That Has Encrypted Data
You can unplug a PDB from one CDB and then plug it into another CDB. - Plugging a PDB That Has Encrypted Data into a CDB
To plug a PDB that has encrypted data into a CDB, you first plug in the PDB and then configure its encryption key. - Unplugging a PDB That Has Master Keys Stored in an External Keystore
You can unplug a PDB from one CDB that has been configured with an external keystore and then plug it into another CDB also configured with an external keystore. - Plugging a PDB That Has Master Keys Stored in an External Keystore
TheADMINISTER KEY MANAGEMENTstatement can import an external keystore master key to a PDB that has been moved to another CDB.
6.5.6.1 Unplugging a PDB That Has Encrypted Data
You can unplug a PDB from one CDB and then plug it into another CDB.
- Unplug the PDB as you normally unplug PDBs, as described in Oracle Database Administrator’s Guide.
6.5.6.2 Plugging a PDB That Has Encrypted Data into a CDB
To plug a PDB that has encrypted data into a CDB, you first plug in the PDB and then configure its encryption key.
0 because this operation invalidates the history of the previous keys. You can check the key version by querying the KEY_VERSION column of the V$ENCRYPTED_TABLESPACES dynamic view. Similarly, if a control file is lost and recreated, then the previous history of the keys is reset to 0.
-
Create the PDB by plugging the unplugged PDB into the CDB, as described in Oracle Database Administrator’s Guide.
During the open operation of the PDB after the plug operation, Oracle Database determines if the PDB has encrypted data. If so, it opens the PDB in the
RESTRICTEDmode. See Oracle Database Administrator’s Guide for more information about the Open Mode of a PDB.If you want to create the PDB by cloning another PDB or from a non-CDB, and if the source database has encrypted data or a keystore set, then you must provide the keystore password by including the
keystore identified by keystore_passwordclause in theCREATE PLUGGABLE DATABASE ... FROMSQL statement. You must provide this password even if the source database is using an auto-login software keystore. You can find if the source database has encrypted data or a keystore by querying theDBA_ENCRYPTED_COLUMNSdata dictionary view. -
Import the TDE master encryption key into the PDB.
See Exporting and Importing TDE Master Encryption Keys for a PDB.
-
Close the PDB and then re-open the PDB, as described in Oracle Database Administrator’s Guide.
-
Open the keystore.
See the following sections:
-
Set the TDE master encryption key for the PDB.
See the following topics:
6.5.6.3 Unplugging a PDB That Has Master Keys Stored in an External Keystore
You can unplug a PDB from one CDB that has been configured with an external keystore and then plug it into another CDB also configured with an external keystore.
- Unplug the PDB.
- Move the master keys of the unplugged PDB in the external keystore that was used at the source CDB to the external keystore that is in use at the destination CDB.
See Also:
Oracle Database Administrator’s Guide for information about unplugging PDBs6.5.6.4 Plugging a PDB That Has Master Keys Stored in an External Keystore
The ADMINISTER KEY MANAGEMENT statement can import an external keystore master key to a PDB that has been moved to another CDB.
See Also:
Oracle Database Administrator’s Guide for information about plugging PDBs6.5.7 Managing Cloned PDBs with Encrypted Data
You can clone a PDB that has encrypted data in a CDB.
- About Managing Cloned PDBs That Have Encrypted Data
When you clone a PDB, you must make the master key of the source PDB available to cloned PDB. - Cloning a PDB with Encrypted Data in a CDB
TheCREATE PLUGGABLE DATABASEstatement with theKEYSTORE IDENTIFIED BYclause can clone a PDB that has encrypted data. - TDE Academy Videos: Remotely Cloning and Upgrading Encrypted PDBs
The Oracle TDE Academy provides videos on how to remotely clone and upgrade encrypted pluggable databases (PDBs).
6.5.7.1 About Managing Cloned PDBs That Have Encrypted Data
When you clone a PDB, you must make the master key of the source PDB available to cloned PDB.
This allows a cloned PDB to operate on the encrypted data. To perform the clone, you do not need to export and import the keys because Oracle Database transports the keys for you even if the cloned PDB is in a remote CDB. However, you will need to provide the keystore password of the CDB where you are creating the clone.
Parent topic: Managing Cloned PDBs with Encrypted Data
6.5.7.2 Cloning a PDB with Encrypted Data in a CDB
The CREATE PLUGGABLE DATABASE statement with the KEYSTORE IDENTIFIED BY clause can clone a PDB that has encrypted data.
See Also:
-
Oracle Database Administrator’s Guide for information about cloning a PDB
Parent topic: Managing Cloned PDBs with Encrypted Data
6.5.7.3 TDE Academy Videos: Remotely Cloning and Upgrading Encrypted PDBs
The Oracle TDE Academy provides videos on how to remotely clone and upgrade encrypted pluggable databases (PDBs).
Parent topic: Managing Cloned PDBs with Encrypted Data
6.5.8 How Keystore Open and Close Operations Work in a Multitenant Environment
You should be aware of how keystore open and close operations work in a multitenant environment.
For each PDB in a multitenant environment, you must explicitly open the password-based software keystore or external keystore in the PDB to enable the Transparent Data Encryption operations to proceed. (Auto-login and local auto-login software keystores open automatically.) Closing a keystore on a PDB blocks all of the Transparent Data Encryption operations on that PDB.
In a CDB, the open and close keystore operations in a PDB depends on the open and close status of the keystore in the root.
Note the following:
-
You can create a separate keystore password for each PDB in the multitenant environment.
-
Before you can manually open a software password-based or external keystore in an individual PDB, you must open the keystore in the root.
-
If an auto-login keystore is in use, or if the keystore is closed, then include the
FORCE KEYSTOREclause in theADMINISTER KEY MANAGEMENTstatement when you open or close the keystore. -
If the keystore is a password-based software keystore that uses an external store for passwords, then set the
IDENTIFIED BYclause toEXTERNAL STORE. -
Before you can set a TDE master encryption key in an individual PDB, you must set the key in the root.
-
Auto-login and local auto-login software keystores open automatically. You do not need to manually open these from the root first, or from the PDB.
-
If you close a keystore in the root, then the keystores in the dependent PDBs also close. A keystore close operation in the root is the equivalent of performing a keystore close operation with the
CONTAINERclause set toALL. -
If you open a keystore in the root and set the
CONTAINERclause toALL, then the keystores in the dependent PDBs also open.
6.5.9 Finding the Keystore Status for All of the PDBs in a Multitenant Environment
You can create a convenience function that uses the V$ENCRYPTION_WALLET view to find the status for keystores in all PDBs in a CDB.
The V$ENCRYPTION_WALLET view displays the status of the keystore in a PDB, whether it is open, closed, uses a software or external keystore, and so on.
-
To create a function that uses the
V$ENCRYPTION_WALLETview to find the keystore status, use theCREATE PROCEDUREPL/SQL statement.
Example 6-5 shows how to create this function.
Example 6-5 Function to Find the Keystore Status of All of the PDBs in a CDB
CREATE OR REPLACE PROCEDURE all_pdb_v$encryption_wallet
IS
err_occ BOOLEAN;
curr_pdb VARCHAR2(30);
pdb_name VARCHAR2(30);
wrl_type VARCHAR2(20);
status VARCHAR2(30);
wallet_type VARCHAR2(20);
wallet_order VARCHAR2(12);
fully_backed_up VARCHAR2(15);
wrl_parameter VARCHAR2(4000);
cursor sel_pdbs IS SELECT NAME FROM V$CONTAINERS
WHERE NAME <> 'PDB$SEED' order by con_id desc;
BEGIN
-- Store the original PDB name
SELECT sys_context('userenv', 'con_name') INTO curr_pdb FROM DUAL;
IF curr_pdb <> 'CDB$ROOT' THEN
dbms_output.put_line('Operation valid in ROOT only');
END IF;
err_occ := FALSE;
dbms_output.put_line('---');
dbms_output.put_line('PDB_NAME WRL_TYPE STATUS ');
dbms_output.put_line('------------------------------ -------- ------------------------------');
dbms_output.put_line('WALLET_TYPE WALLET_ORDER FULLY_BACKED_UP');
dbms_output.put_line('-------------------- ------------ ---------------');
dbms_output.put_line('WRL_PARAMETER');
dbms_output.put_line('--------------------------------------------------------------------------');
FOR pdbinfo IN sel_pdbs LOOP
pdb_name := DBMS_ASSERT.ENQUOTE_NAME(pdbinfo.name, FALSE);
EXECUTE IMMEDIATE 'ALTER SESSION SET CONTAINER = ' || pdb_name;
BEGIN
pdb_name := rpad(substr(pdb_name,1,30), 30, ' ');
EXECUTE IMMEDIATE 'SELECT wrl_type from V$ENCRYPTION_WALLET' into wrl_type;
wrl_type := rpad(substr(wrl_type,1,8), 8, ' ');
EXECUTE IMMEDIATE 'SELECT status from V$ENCRYPTION_WALLET' into status;
status := rpad(substr(status,1,30), 30, ' ');
EXECUTE IMMEDIATE 'SELECT wallet_type from V$ENCRYPTION_WALLET' into wallet_type;
wallet_type := rpad(substr(wallet_type,1,20), 20, ' ');
EXECUTE IMMEDIATE 'SELECT wallet_order from V$ENCRYPTION_WALLET' into wallet_order;
wallet_order := rpad(substr(wallet_order,1,9), 12, ' ');
EXECUTE IMMEDIATE 'SELECT fully_backed_up from V$ENCRYPTION_WALLET' into fully_backed_up;
fully_backed_up := rpad(substr(fully_backed_up,1,9), 15, ' ');
EXECUTE IMMEDIATE 'SELECT wrl_parameter from V$ENCRYPTION_WALLET' into wrl_parameter;
wrl_parameter := rpad(substr(wrl_parameter,1,79), 79, ' ');
dbms_output.put_line(pdb_name || ' ' || wrl_type || ' ' || status);
dbms_output.put_line(wallet_type || ' ' || wallet_order || ' ' || fully_backed_up);
dbms_output.put_line(wrl_parameter);
EXCEPTION
WHEN OTHERS THEN
err_occ := TRUE;
END;
END LOOP;
IF err_occ = TRUE THEN
dbms_output.put_line('One or more PDB resulted in an error');
END IF;
END;
.
/
set serveroutput on
exec all_pdb_v$encryption_wallet;6.6 How Transparent Data Encryption Works with Oracle Call Interface
Transparent Data Encryption does not have any effect on the operation of Oracle Call Interface (OCI).
For most practical purposes, TDE is transparent to OCI except for the row shipping feature. You cannot use the OCI row shipping feature with TDE because the key to make the row usable is not available at the receipt-point.
6.7 How Transparent Data Encryption Works with Editions
Transparent Data Encryption does not have any effect on the Editions feature of Oracle Database.
For most practical purposes, TDE is transparent to Editions. Tables are always noneditioned objects. TDE Column Encryption encrypts columns of the table. Editions are not affected by TDE tablespace encryption.
6.8 Configuring Transparent Data Encryption to Work in a Multidatabase Environment
Each Oracle database on the same server (such as databases sharing the same Oracle binary but using different data files) must access its own TDE keystore.
Keystores are not designed to be shared among databases. By design, there must be one keystore per database. You cannot use the same keystore for more than one database.
-
To configure the
sqlnet.orafile for a multidatabase environment, use one of the following options:-
Option 1: If the databases share the same Oracle home, then keep the
sqlnet.orafile in the default location, which is in theORACLE_HOME/network/admindirectory.In this case, it is ideal to use the default location. Ensure that the
sqlnet.orafile has noWALLET_LOCATIONorENCRYPTION_WALLET_LOCATIONentries. Transparent Data Encryption accesses the keystore from the defaultsqlnet.oralocation if these two entries are not in thesqlnet.orafile. -
Option 2: If Option 1 is not feasible for your site, then you can specify the keystore location based on an environment variable setting, such as
ORACLE_SID.For example:
ENCRYPTION_WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /home/oracle/wallet/$ORACLE_SID) -
Option 3: If Options 1 and 2 are not feasible, then use separate
sqlnet.orafiles, one for each database. Ensure that you correctly set theTNS_ADMINenvironment variable to point to the correct database configuration.
-
Caution:
Using a keystore from another database can cause partial or complete data loss.
See Also:
SQL*Plus User's Guide and Reference for more information and examples of setting theTNS_ADMIN variable