Changes in This Release for Oracle Database Advanced Security Guide

This preface contains:

Changes in Oracle Database Advanced Security 18c

The following are changes in Oracle Database Advanced Security Guide for Oracle Database 18c.

Ability to Create a Keystore for Each Pluggable Database

Each pluggable database (PDB) can now have its own keystore instead of there only being one keystore for the entire container database (CDB).

In previous releases, PDBs shared the keystore with the entire container database (CDB), which included the CDB root and all the PDBs. This keystore stored the master encryption keys for the CDB as well as all the PDBs. In this release, a PDB can either continue to share the same keystore with the entire CDB as before, or have a separate keystore. This design offers greater isolation between PDBs, because each separate keystore can be administered independently. For example, each keystore can be protected by a different password


This feature can only be used in an Oracle Cloud environment, and with engineered systems on premises, including Oracle Exadata, Exadata Cloud at Customer (ExaC@C), as well as Autonomous Database Dedicated on Exadata Cloud at Customer (ADB on ExaC@C).

The additional advantage of this feature is that it enables independent key management operations to be performed by each tenant (PDB) in a multitenant environment rather than having to share a keystore at the CDB root level.

This feature provides the following new functionality:

  • For multitenant environments, the following two modes:

    • United mode, in which the keystores and master encryption keys are primarily managed from the CDB root, and can be accessed from the united mode PDB. Within the PDB, the keystore can be opened and closed just for that PDB. Each PDB has its own set of master encryption keys in the shared keystore.

    • Isolated mode, in which the keystore and encryption keys are managed in an individual PDB. This way, each PDB can configure its own keystore type independently, and create and manage this keystore after configuring it.

    You can mix these two modes. For example, suppose you have 1 CDB and 10 PDBs. You can run 3 of these PDBs in united mode and the remaining 7 in isolated mode. This design offers the highest flexibility depending on your environment and site requirements.

    To accommodate these modes, the ADMINISTER KEY MANAGEMENT SQL statement has been enhanced to behave differently in the two modes.

  • For both non-multitenant and multitenant environments, the following new features:

    • Addition of the WALLET_ROOT static instance initialization parameter, to specify the keystore path. In this guide, WALLET_ROOT refers to the configuration of software keystores or Oracle Key Vault, but this parameter can be used to designate the wallet location for other products as well: Enterprise User Security, Secure Sockets Layer, Oracle XML DB, and Secure External Password Store.

    • Addition of the TDE_CONFIGURATION dynamic instance initialization parameter, to specify the type of keystore to use. You can set this parameter for TDE software keystores, external keystores, and Oracle Key Vault.

    • When the WALLET_ROOT parameter has been set, then WALLET_ROOT overrides SQLNET.ENCRYPTION_WALLET_LOCATION. If WALLET_ROOT has not been set, then SQLNET.ENCRYPTION_WALLET_LOCATION is the default.

Ability to Create a User-Defined Master Encryption Key

This release introduces the ability to create a user-defined master encryption key, also known as “bring your own key.”

Instead of requiring that TDE master encryption keys always be generated in the database, Oracle Database now supports the use of master encryption keys that have been generated outside the database.

To create the user-defined key, you supply your own master key identification value when you create the master encryption key by using the ADMINISTER KEY MANAGEMENT SET [ENCRYPTION] KEY or ADMINISTER KEY MANAGEMENT CREATE [ENCRYPTION] KEY statements. This enhancement applies to master encryption keys that are used in software keystores only, not PKCS#11-compatible key managers. However, Oracle Key Vault introduced "bring your own key" from Oracle Key Vault release, and all database versions starting from Oracle Database release can activate those keys.

Ability to Use Encrypted Passwords for Database Links with Oracle Data Pump

The behavior for handling database link passwords has changed in this release.

Passwords in database links are now encrypted. Oracle Data Pump handles the export and import of these passwords. Import operations from older versions and export operations to older versions can still be used.

The benefit of this feature is that it prevents an intruder from decrypting an encrypted database link password.

Changes in Oracle Database Advanced Security 12c Release 2 (12.2)

The following are changes in Oracle Database Advanced Security Guide for Oracle Database 12c release 2 (12.2).

Ability to Encrypt Existing Tablespaces and Fully Encrypt Databases

Starting with this release, you can encrypt existing tablespaces and fully encrypt databases.

In previous releases, you could only encrypt new application tablespaces. However, this new feature enables you to encrypt existing application tablespaces in an offline or online method. To encrypt a database, you encrypt the Oracle-supplied tablespaces, such as SYSTEM and SYSAUX with the online method. Offline tablespace encryption can be used for tablespaces in Oracle Database 11g release 2 ( and Oracle Database 12g release 1 ( You can perform encryption and decryption operations in parallel and perform the encryption in an Oracle Data Guard environment to minimize the application downtime to the time it takes to perform a Data Guard switchover. You can configure all future tablespaces to be automatically encrypted, which is beneficial for an Oracle Cloud environment.

Additional Supported Encryption Algorithms

You now can use the ARIA, GOST, and SEED encryption algorithms for column and tablespace encryption, in addition to the AES and DES encryption standards.

The main benefit of these new encryption standards is that they meet the national standards for their respective countries.

  • ARIA uses the same block sizes as AES. It is designed for lightweight environments and the implementation in hardware. ARIA meets the standards used in Korea.

  • GOST is very similar to DES except that it has a large number of rounds and secret S-boxes. GOST meets the standards used in Russia.

  • SEED is used by several standard protocols: S/MIME, TLS/SSL, IPSec, and ISO/IEC. SEED meets the standards used in Korea.

Ability to Force Software Keystore Operations

You now can force a keystore operation that is prevented because of an in-use auto-login keystore or a closed software or an external keystore.

In previous releases, for many keystore operations, you had to manually open the software or external keystore before performing the operation. In this release, you can perform these two actions in one ADMINISTER KEY MANAGEMENT statement execution by including the FORCE KEYSTORE clause.

The operations that you can use the FORCE KEYSTORE clause on are as follows: changing 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.

Ability to Use an External Store for Software Keystore Passwords

You can now configure the database to use an external keystore to hide the password to a TDE software keystore or an external keystore from the SQL*Plus command line.

This feature enables you to hide the keystore password from the SQL*Plus command line. That increases separation of duties between database administrators and keystore administrators. To use this functionality, you first create an auto-login wallet in an existing directory with this new syntax: ADMINISTER KEY MANAGEMENT ADD SECRET 'Oracle_Key_Vault_password' FOR CLIENT 'OKV_PASSWORD' TO [LOCAL] AUTO_LOGIN KEYSTORE '/existing/directory'. Then you set the EXTERNAL_KEYSTORE_CREDENTIAL_LOCATION initialization parameter to an existing directory where the software or external keystore password will be stored. Afterward, you can you can replace the password in the ADMINISTER KEY MANAGEMENT .... IDENTIFIED BY password statement with EXTERNAL STORE for the following operations: opening, closing, backing up the keystore; adding, updating, or deleting a secret; creating, using, rekeying, tagging, importing, exporting encryption keys.

New Way to Specify Oracle Key Vault as a Keystore

As an alternative to third-party hardware security modules, you now can specify Oracle Key Vault as a keystore.

To configure Oracle Key Vault as a keystore, you can edit the sqlnet.ora file METHOD setting in the ENCRYPTION_WALLET_LOCATION parameter to point to OKV.

Ability to Redact Data Based on Different Runtime Conditions

You now can define and associate different Data Redaction policy expressions with different columns within the same table or view.

This feature provides greater flexibility for anyone who creates Data Redaction policies.

For example, this feature enables you to share a single Data Redaction policy expression with multiple Data Redaction policies.

When you create the policy expression, you can apply it to any table or view column that is included in an existing Data Redaction policy. If you change the policy expression, the change is reflected in all Data Redaction policies that redact the associated table or view columns.

Ability to Centrally Manage Data Redaction Policy Expressions within a Database

This new feature applies to named Oracle Data Redaction policy expressions.

This feature facilitates the maintenance and administration of policy expressions. When you modify the named policy expression, the changes are automatically applied to all tables and views in the database that use the expression.

Ability to Use NULL as the Redacted Value

Starting with this release, the redacted value can be NULL.

For example, you can use this feature to hide data.

When you define an Oracle Data Redaction policy, you can set the function_type parameter to DBMS_REDACT.NULLIFY to ensure that the redacted value to always be NULL.

Enhanced Support for Redacting Unstructured Data

You now can define regular expression-based redaction (DBMS_REDACT.REGEXP) policies on columns of the CLOB and NCLOB data types.