Oracle Database Security

About Oracle Database Security

Note that depending on the version you are running and how you arrived at that version, some of these settings may have been set by default. All you have to do in that case is verify that the settings are as described here. This chapter contains security recommendations for the database.

Hardening

Hardening Operating Environment

Follow the hardening instructions for Operating Environment Security.

Disabling XDB

To support XDB, the TNS listener process listens on two additional TCP ports: 2100 for FTP access and 8080 for http access. Oracle E-Business Suite does not require these services; they should be disabled.

To disable XDB, remove or comment out the line in init.ora that reads:

*.dispatchers='(PROTOCOL=TCP) (SERVICE=sidXDB)'

Review Database Links

Review database links in both production and development environments and drop those that are not required in your environment.

Optional Secure Configurations

Security policy must balance risk of attack, cost of defense and value of data protected. This section contains recommendations that improve security, but may not be appropriate for every deployment.

Transparent Data Encryption (TDE)

Transparent data encryption (TDE) protects the data at rest by encrypting the data stored in the database data files. Oracle E-Business Suite Release 12.2 is certified with Column Encryption and Tablespace Encryption. See the following My Oracle Support knowledge documents for details:

Column level TDE has a number of restrictions related to data types and indexed columns. Tablespace TDE does not have these restrictions and does not increase the storage requirement.

Authentication

Applications found on the application tier log on to the database through application schemas rather than end-user accounts. Some individuals (IT Administrators) may require direct access to the application database using their own schema.

Removing Operating System Trusted Remote Logon

This setting prevents the database from using an insecure logon protocol. Make sure init.ora contains:

REMOTE_OS_AUTHENT=FALSE

Changing Default Installation Passwords

Following an installation, the application database instance contains default, open schemas with default passwords. These accounts and corresponding passwords are well-known, and they should be changed, especially for a database to be used in a production environment. Default schemas come from different sources:

  1. Default database administration schemas

  2. Schemas belonging to optional database features neither used nor patched by Oracle E-Business Suite

  3. Schemas belonging to optional database features used but not patched by Oracle E-Business Suite

  4. Schemas belonging to optional database features used and patched by Oracle E-Business Suite

  5. Schemas common to all Oracle E-Business Suite products

  6. Schemas associated with specific Oracle E-Business Suite products

Note: Starting in Oracle E-Business Suite Release 12.1.2, a new command-line utility named AFPASSWD is available to replace FNDCPASS. The new utility does not require passwords on the command line. Just like FNDCPASS, AFPASSWD is installed on the application tier and requires the libraries from the Tools Oracle home.

For the schemas in categories 1, 2, and 3, use standard database commands to change a password:

SQL> alter user <SCHEMA> identified by <NEW_PASSWORD>;

For the schemas in categories 4, 5, and 6 where Oracle E-Business Suite is "managing" the passwords, use the application password change tool AFPASSWD (or FNDCPASS):

$ AFPASSWD -c apps -o <SCHEMA>

You will be prompted for the APPS password and the new password (twice).

To save time, category six (6) schema passwords may be changed en masse using AFPASSWD. This is really handy as there are more than 200 schema passwords. AFPASSWD takes the -a option which will change all category 6 passwords to the new password (this works the same as the ALLORACLE mode in FNDCPASS).

$ AFPASSWD -c apps -a

You will be prompted for the APPS password and the new password (twice).

To determine which schemas are managed by Oracle E-Business Suite (categories 4, 5, and 6), run the AD adutconf.sql script.

Appendix B: Database Schemas Found in Oracle E-Business Suite contains a list of the schemas by category, instructions, and notes for managing schema passwords.

AFPASSWD only prompts for the passwords required for the current operation, allowing separation of duties between application administrators and database administrators. This also improves interoperability with Oracle Database Vault.

AFPASSWD is documented in the Oracle E-Business Suite Maintenance Guide.

Implementing Two Profiles for Password Management

The database provides parameters to enforce password management policies. However, some of the database password policy parameters could lock out the Oracle E-Business Suite. Because of this, we make specific recommendations for or against using certain management features depending upon schema type.

Database "profiles" contain limits on database resources and password policies. Create two database profiles: one for application schemas on the application tier ("managed schemas") and one for human beings. Assign application schemas on the application tier to the first profile and all accounts used by individual database administrators to the second profile.

Application and Administrator Profile Password Parameters
Password Parameters Application Profile Administrator Profile
FAILED_LOGIN_ATTEMPTS UNLIMITED 5
PASSWORD_LIFE_TIME UNLIMITED 90
PASSWORD_REUSE_TIME 180 180
PASSWORD_REUSE_MAX UNLIMITED UNLIMITED
PASSWORD_LOCK_TIME UNLIMITED 7
PASSWORD_GRACE_TIME UNLIMITED 14
PASSWORD_VERIFY_FUNCTION Recommended Recommended

For more information on profiles, see CREATE PROFILE in the Oracle SQL reference documentation.

See Appendix B: Database Schemas Found in Oracle E-Business Suite for a list of all default database users and whether it is a managed schema.

Authorization

Restricting Access to SQL Trace Files

The init.ora parameter _TRACE_FILES_PUBLIC grants file system read access to anyone who has activated SQL tracing. Set this to its default value of False.

_TRACE_FILES_PUBLIC=FALSE

Removing Operating System Trusted Remote Roles

Set the init.ora parameter REMOTE_OS_ROLES to False to prevent insecure remote roles.

REMOTE_OS_ROLES=FALSE

Limiting File System Access Within PL/SQL

The parameter UTL_FILE_DIR limits file system access for all database accounts using the PL/SQL API UTL_FILE. Oracle E-Business Suite requires the UTL_FILE_DIR database initialization parameter to be set when you are using Oracle Database 11g Release 2 or Oracle Database 12c Release 1. See My Oracle Support Knowledge Document 2525754.1, Using UTL_FILE_DIR or Database Directories for PL/SQL File I/O in Oracle E-Business Suite Releases 12.1 and 12.2.

UTL_FILE_DIR=<dir1>,<dir2>,<dir3>...

Avoid:

UTL_FILE_DIR=*

Limiting Dictionary Access

Set O7_DICTIONARY_ACCESSIBILITY to False to prevent users with the 'Select ANY' privilege from reading data dictionary tables. False is the default for the 10g database.

O7_DICTIONARY_ACCESSIBILITY = FALSE

Revoking Unnecessary Grants Given to APPLSYSPUB

The following table lists the privileges that should be granted to the APPLSYSPUB schema. These can be set by <FND_TOP>/patch/115/sql/afpub.sql or fixed by <FND_TOP>/patch/115/sql/afpubfix.sql.

Privileges to be Granted to the APPLSYSPUB Schema
EXECUTE ON FND_DISCONNECTED
EXECUTE ON FND_MESSAGE
EXECUTE ON FND_PUB_MESSAGE
EXECUTE ON FND_SECURITY_PKG
EXECUTE ON FND_WEBFILEPUB
INSERT ON FND_SESSIONS
INSERT ON FND_UNSUCCESSFUL_LOGINS
SELECT ON FND_APPLICATION
SELECT ON FND_APPLICATION_TL
SELECT ON FND_APPLICATION_VL
SELECT ON FND_LANGUAGES_TL
SELECT ON FND_LANGUAGES_VL
SELECT ON FND_LOOKUPS
SELECT ON FND_PRODUCT_GROUPS
SELECT ON FND_PRODUCT_INSTALLATIONS
SELECT ON FND_NEW_MESSAGES

The following table lists privileges required for online patching in Oracle E-Business Suite Release 12.2:

Privileges Required for Oracle E-Business Suite Release 12.2 Online Patching
INSERT ON FND_SESSIONS#
INSERT ON FND_UNSUCCESSFUL_LOGINS#
SELECT ON FND_APPLICATION#
SELECT ON FND_APPLICATION_TL#
SELECT ON FND_LANGUAGES_TL#
SELECT ON FND_PRODUCT_GROUPS#
SELECT ON FND_PRODUCT_INSTALLATIONS#
SELECT ON FND_NEW_MESSAGES#

To check permissions, log in as APPS and issue the following query:

SELECT * FROM dba_tab_privs WHERE grantee ='APPLSYSPUB';