PK
#9Aoa, mimetypeapplication/epub+zipPK #9A iTunesMetadata.plistD
The Oracle Database 11g Release 2 (11.2) security features and enhancements described in this section comprise the overall effort to provide superior access control, privacy, and accountability with this release of Oracle Database.
The following sections describe new security features of Oracle Database 11g Release 2 (11.2) and provide pointers to additional information:
Oracle Database 11g Release 2 (11.2.0.2) New Security Features
Oracle Database 11g Release 2 (11.2.0.1) New Security Features
This section contains:
Enhancements to Fine-Grained Access to External Services and Wallets
Support for MERGE INTO Statements for Virtual Private Database Policies
BY ACCESS Audit Trail Option Now the Default for AUDIT Statements
New DBMS_SCHEDULER PL/SQL Package Global Scheduler Attributes
In this release, when you use fine-grained access control to configure external network services and wallets, you now can control access to the DBMS_LDAP
PL/SQL package. In a default database installation, this package is created with the EXECUTE
privilege granted to PUBLIC
users. This release enhances the security of this package by enabling you to control access to applications in the database that use this package. As part of this enhancement, the DBMS_LDAP
package is now an invoker's rights package. Before a user can connect to a remote network host, he or she must be granted the connect
privilege in the access control list that was assigned to the remote network host.
See Oracle Database PL/SQL Packages and Types Reference for more information about the DBMS_LDAP
package.
In previous releases of Oracle Database, when you created an Oracle Virtual Private Database policy on an application that included the MERGE INTO
statement, the MERGE INTO
statement would be prevented with an ORA-28132: Merge into syntax does not support security policies
error, due to the presence of the Virtual Private Database policy. In this release, you can create policies on applications that include MERGE INTO
operations. To do so, in the DBMS_RLS.ADD_POLICY
statement_types
parameter, include the INSERT
, UPDATE
, and DELETE
statements, or just omit the statement_types
parameter altogether.
See "Enforcing Policies on Specific SQL Statement Types" for more information.
Starting with this release, the standard audit records will by default be generated using the BY ACCESS
clause functionality of the AUDIT
statement. Both the BY ACCESS
and BY SESSION
clauses write an individual audit record for each audited event, but BY ACCESS
captures more detail about the audited event.
See "Benefits of Using the BY ACCESS Clause in the AUDIT Statement" for more information.
Starting with this release, the UTL_SMTP
PL/SQL package has the following new functionality:
You now can configure the UTL_SMTP
PL/SQL package for use on both Transport Layer Security (TLS) and Secure Sockets Layer (SSL) servers.
UTL_SMTP
now provides support for the PLAIN
, LOGON
and CRAM_MD5
password authentication schemes.
See Oracle Database PL/SQL Packages and Types Reference for more information about the UTL_SMTP
package.
The DBMS_SCHEDULER
PL/SQL package the following two new global scheduler attributes, which are used to control encryption for connections to a mail server:
email_server_credential
, which enables you to specify the schema and name of an existing credential object on which user SYS
has the EXECUTE
object privilege
email_server_encryption
, which enables you to set one of three encryption settings for your mail server:
ssl_tls
, which uses SSL or TLS to encrypt the connection to the mail server form the beginning of the connection
starttls
, in which the connection to the mail server starts as unencrypted but switches to an encrypted connection
none
, in which no encryption is used to connect to the mail server
See Oracle Database Administrator's Guide for more information about Scheduler preferences.
1n previous releases, when you revoked the UNLIMITED TABLESPACE
system privilege from users, then the explicit quotas again took effect. Starting with this release, after you revoke the UNLIMITED TABLESPACE
system privilege, you must explicitly grant quotas to individual tablespaces.
See "Granting Users the UNLIMITED TABLESPACE System Privilege" for more information about the UNLIMITED TABLESPACE
system privilege.
This section contains:
Enhancements to Fine-Grained Access to External Services and Wallets
Support for MERGE INTO Statements for Virtual Private Database Policies
Global Application Contexts Available Across Oracle RAC Instances
The previous release of Oracle Database introduced the ability to create fine-grained access control to external network services and wallets. In this release, the following enhancements are available:
Updates to the UTL_HTTP PL/SQL package. You now can configure network services to use the Amazon Simple Storage Service (S3) scheme, which configures access to the Amazon.com Web site. In addition, an individual application can make HTTP requests by using its private wallet and HTTP cookie table that will not be shared with other applications in the same database session. This feature also offers protection of the wallet using the access control list (ACL) privileges in place of the password credential.
Support for IP Version 6 (IPv6) addresses. The DBMS_NETWORK_ACL_ADMIN
and DBMS_NETWORK_ACL_UTILTIY
packages, and the PL/SQL network utility packages (such as UTL_TCP
, UTL_SMTP
, UTL_MAIL
, UTL_HTTP
, and UTL_INADDR
), now support both IP Version 4 (IPv4) and IPv6 addresses.
See "Managing Fine-Grained Access in PL/SQL Packages and Types" for more information.
In this release, changes to global application context values are automatically accessible across all Oracle Real Application Clusters (Oracle RAC) instances.
See "Using Global Application Contexts" for more information about creating a global application context.
Starting with Oracle Database 11g Release 2 (11.2), SSL version 2 is no longer included in the default list of default supported protocols. If your applications must use SSL version 2, then you can do so by explicitly setting SSL version 2 while maintaining the connection.
See Oracle Database Advanced Security Administrator's Guide for more information.
This section contains:
You now can grant users the EXECUTE
privilege on directory objects that contain a user-supplied preprocessor program for use by the ORACLE_LOADER
access driver. This prevents the user from accidentally or maliciously corrupting the preprocessor program. The SQL statements that are affected by the EXECUTE
privilege are GRANT
and REVOKE
. The ORACLE_LOADER
access parameters now include the PREPROCESSOR
clause, which you can use to specify the name and location of a preprocessor program that modifies the contents of a data file so that the ORACLE_LOADER
access driver can read it.
For more information about using the ORACLE_LOADER
access driver preprocessor, see the following:
Oracle Database Utilities for more information about the ORACLE_LOADER
access driver
"Granting System Privileges and Roles" for the syntax of granting the EXECUTE
privilege for a directory object
Oracle Database SQL Language Reference for updates to the GRANT
and REVOKE
SQL statements
You now can audit the EXECUTE
privilege on directory objects. This enables you to monitor users who run a preprocessor program (which is used by the ORACLE_LOADER
access driver) that has been added to a directory object.
See "Auditing Directory Objects" for more information.
This section contains:
In this release, the master encryption key for transparent tablespace encryption and transparent column encryption are now combined to one unified master encryption key. Combining these keys enables transparent re-key operations for both of these transparent data encryption features, regardless of whether the master encryption key is stored in the Oracle Wallet or in one of the certified Hardware Security Modules offered by RSA, SafeNet, Thales (including nCipher), and Utimaco.
For more information about transparent data encryption, see Oracle Database Advanced Security Administrator's Guide.
In this release, Oracle Advanced Security enables you to change the master key that protects the encryption keys used to encrypt Oracle Database tablespaces. Industry initiatives, such as the Payment Card Industry Data Security Standard (PCI DSS), mandate periodic rotation of encryption keys associated with credit card data.
For more information about tablespace encryption, see Oracle Database Advanced Security Administrator's Guide.
Starting with this release, the master encryption key is copied to the intelligent storage cells, where data encrypted with transparent tablespace encryption or transparent column encryption is now decrypted before the pre-filtering of the result set takes place. This feature improves performance in databases that use transparent data encryption.
For more information about Oracle Exadata, see Oracle Database High Availability Overview.
When you now open or close an Oracle wallet or re-key the master encryption key on one Oracle RAC instance, then the changes you make automatically are propagated to all other Oracle RAC instances.
For more information, see Oracle Database Advanced Security Administrator's Guide.
Oracle Database 11g Release 2 (11.2) introduces several enhancements to the audit trail cleanup process. In this release, you can:
Timestamp audit trail records based on their archive date. Later on, you can purge all records that were created before this archive date.
See "Step 4: Optionally, Set an Archive Timestamp for Audit Records" for more information.
Purge audit trail records in one operation or create a purge job. You can purge all audit trail records in the system, or audit trail records of an individual type, such as all fine-grained audit trail records within the database audit trail. The purge operation will either remove audit trail records that were created before their timestamped archive date, or it will remove all audit trail records of the specified audit trail type. The purge job enables you to purge records based on a time interval, and also can remove records based on their timestamped archive date.
See the following sections:
Move the database audit trail table from the SYSTEM tablespace to a different tablespace. You can move the standard audit trail table, the fine-grained audit trail table, or both standard and fine-grained audit trail tables together. Consider moving the database audit trail from the SYSTEM
tablespace if it is too busy.
See "Moving the Database Audit Trail to a Different Tablespace" for more information.
Set a batch size for the database audit trail records so that when they are purged, the purge operation deletes each batch. In a purge operation, you remove all or some of the audit trail records. Typically, you do this after you archive the audit trail. Afterwards, the audit trail will resume collecting audit data. The batching process enables you remove the records in groups, for example, 10,000 records at a time, rather than deleting all records at a time.
See "Step 6: Optionally, Configure the Audit Trail Records to be Deleted in Batches" for more information.
Set a maximum size and age for the operating system audit trail. When the current audit file reaches this maximum, Oracle Database stops populating the current file and creates a new file for the subsequent audit trail records.
See the following sections:
DB_EXTENDED Setting for the AUDIT_TRAIL Parameter Deprecated
Database Configuration Assistant No Longer Provides Default Security Settings
The DB_EXTENDED
setting in the AUDIT_TRAIL
initialization parameter has been deprecated. Instead, use the DB, EXTENDED
setting in its place.
See "Configuring Standard Auditing with the AUDIT_TRAIL Initialization Parameter" for more information.
The WKUSER
role and the WKSYS
, WKTEST
, WKPROXY
schemas have been deprecated. For more information about Oracle Ultra Search, see Oracle Ultra Search Administrator's Guide.
In the previous release of Oracle Database, you could use Database Configuration Assistant (DBCA) to add password security and audit options to a new database. This option is not available in this release. In this release, DBCA automatically adds audit options and password policies to new databases.
See the following sections for more information:
The AUTHENTICATED USING PASSWORD
clause of the ALTER USER
statement has been deprecated for this release. If you use this clause, Oracle Database converts it to the AUTHENTICATION REQUIRED
clause. If you do not specify the AUTHENTICATION REQUIRED
clause, then Oracle Database uses either the AUTHENTICATED USING CERTIFICATE
clause or the AUTHENTICATED USING DISTINGUISHED NAME
clause.
See Oracle Database SQL Language Reference for more information about the ALTER USER
statement options.
Setting a password for the listener.ora
file has been deprecated for this release, because it is no longer needed. In the next release, the listener password will not be supported.
This section contains:
When you create a new database, you can use Database Configuration Assistant (DBCA) to automatically create a more secure configuration than in previous releases of Oracle Database. You can enable the following secure configuration settings in one operation:
Password-specific settings in the default profile. This feature enables you to enforce password expiration and other password policies. See "Configuring Password Settings in the Default Profile" for more information.
Auditing. This feature enables auditing for specific events such as database connections. See "Using Default Auditing for Security-Relevant SQL Statements and Privileges" for more information.
To configure your database for greater security, follow the guidelines in Chapter 10, "Keeping Your Oracle Database Secure."
Oracle Database now includes the following new password protections:
Easy ability to find default passwords. If you have upgraded from an earlier release of Oracle Database, you may have user accounts that still have default passwords. For greater security, you should find and change these passwords. See "Finding User Accounts That Have Default Passwords" for more information.
Password complexity verification. Password complexity verification ensures that users set complex passwords when setting or resetting passwords. You can enforce password complexity by using the default settings provided by Oracle Database, or create custom requirements to further secure the password complexity requirements for your site.
"Enforcing Password Complexity Verification" describes built-in password verification.
Enforced case sensitivity. See "Enabling or Disabling Password Case Sensitivity" for more information.
Stronger password hashing algorithm. This enhancement enables users to create passwords that contain mixed case or special characters. See "Ensuring Against Password Security Threats by Using the SHA-1 Hashing Algorithm" for more information.
You can now use the Secure Sockets Layer (SSL) and Kerberos strong authentication methods to authenticate users who have the SYSDBA
and SYSOPER
privileges.
See "Strong Authentication and Centralized Management for Database Administrators" for more information.
The SYSASM
system privilege has been added to Oracle Database 11g Release 2 (11.2), to be used exclusively to administer Automatic Storage Management (ASM). Use the SYSASM
privilege instead of the SYSDBA
privilege to connect to and administer ASM instances.
See Oracle Automatic Storage Management Administrator's Guide for more information about the SYSASM
privilege.
This section describes the following enhancements in encryption:
Intelligent LOB Compression, Deduplication, and Encryption with SecureFiles
Transparent Data Encryption with Hardware Security Module Integration
Oracle Database supports a new, faster, and scalable Large Object (LOB) storage paradigm called SecureFiles. SecureFiles, in addition to performance, supports efficient compression, deduplication (that is, coalescing duplicate data), and encryption. LOB data can now be encrypted with Oracle Database, and is available for random reads and writes.
For more information about SecureFiles, see Oracle Database SecureFiles and Large Objects Developer's Guide. See also Oracle Database SQL Language Reference for updates in the CREATE TABLE
and ALTER TABLE
statements to support this feature.
In this release, you can use Oracle Data Pump to compress and encrypt an entire dump file set. You can optionally compress and encrypt the data, metadata, or complete dump file set during an Oracle Data Pump export.
For more information, see Oracle Database Utilities.
Transparent data encryption (TDE) stores the master key in an encrypted software wallet and uses this key to encrypt the column keys, which in turn encrypt column data. While this approach to key management is sufficient for many applications, it may not be sufficient for environments that require stronger security. TDE has been extended to use hardware security modules (HSMs). This enhancement provides high assurance requirements of protecting the master key.
This release enables you to store the TDE master encryption key within a hardware security module (HSM) at all times, leveraging its key management capabilities. Only the table keys (for TDE column encryption) and tablespace keys (for TDE tablespace encryption) are decrypted on the HSM, before they are returned to the database; the encryption and decryption of application data remains with the database. Oracle recommends that you encrypt the traffic between HSM device and databases. This new feature provides additional security for transparh#ent data encryption, because the master encryption key cannot leave the HSM, neither in clear text nor in encrypted format. Furthermore, it enables the sharing of the same key between multiple databases and instances in an Oracle Real Applications Clusters (Oracle RAC) or Data Guard environment.
To configure transparent data encryption with hardware security module integration, see Oracle Database Advanced Security Administrator's Guide.
Transparent tablespace encryption enables you to encrypt entire application tablespaces, encrypting all the data within these tablespaces. When a properly authorized application accesses the tablespace, Oracle Database transparently decrypts the relevant data blocks for the application.
Transparent tablespace encryption provides an alternative to TDE column encryption: It eliminates the need for granular analysis of applications to determine which columns to encrypt, especially for applications with a large number of columns containing personally identifiable information (PII), such as Social Security numbers or patient health care records. If your tables have small amounts of data to encrypt, then you can continue to use the TDE column encryption solution.
For an introduction to transparent encryption, see Oracle Database 2 Day + Security Guide. For detailed information about transparent tablespace encryption, see Oracle Database Advanced Security Administrator's Guide.
Oracle Database provides a set of PL/SQL utility packages, such as UTL_TCP
, UTL_SMTP
, UTL_MAIL
, UTL_HTTP
, and UTL_INADDR
, that are designed to enable database users to access network services on the database. Oracle Database PL/SQL Packages and Types Reference describes the PL/SQL utility packages in detail.
In a default database installation, these packages are created with EXECUTE
privileges granted to PUBLIC
users. This release enhances the security of these packages by providing database administrators the ability to control access to applications in the database that use these packages.
See "Managing Fine-Grained Access in PL/SQL Packages and Types" for more information.
The BY SESSION
clause of the AUDIT
statement now writes one audit record for every audited event. In previous releases, BY SESSION
wrote one audit record for all SQL statements or operations of the same type that were executed on the same schema objects in the same user session. Now, both BY SESSION
and BY ACCESS
write one audit record for each audit operation. In addition, there are separate audit records for LOGON
and LOGOFF
events. If you omit the BY ACCESS
clause, then BY SESSION
is used as the default.
The audit record that BY SESSION
generates is different from the BY ACCESS
audit record. Oracle recommends that you include the BY ACCESS
clause for all AUDIT
statements, which results in a more detailed audit record. In the case of LOGOFF
events, the timestamp for the audit record has a greater precision than in previous releases.
Be aware that this change applies to schema object audit options, statement options, and system privileges that audit SQL statements other than data definition language (DDL) statements. Oracle Database has always audited using the BY ACCESS
clause on all SQL statements and system privileges that audit a DDL statement.
See the following sections for more information:
This section contains:
Security objects are now stored in the Oracle XML DB repository as XMLType objects. These security objects can contain strings that need to be translated to different languages so that they can be searched or displayed in those languages. Developers can store translated strings with the XMLType and retrieve and operate on these strings depending on the language settings of the user. The advantage of this feature is that it reduces the costs associated with developing applications that are independent of the target preferred language of the user.
To configure security for XMLType objects, see Oracle XML DB Developer's Guide.
You can now use the Oracle XML DB HTTP server for service-oriented architecture (SOA) operations. This allows the database to be treated as simply another service provider in an SOA environment. Security administrators can control user access to Oracle Database Web services and their associated database objects by using the XDB_WEBSERVICES
, XDB_WEBSERVICES_OVER_HTTP
, and XDB_WEBSERVICES_WITH_PUBLIC
predefined roles.
To configure Oracle Database Web services, see Oracle XML DB Developer's Guide.For information on this feature's predefined roles, see Table 4-3, "Oracle Database Predefined Roles".
In this release, administrators can now disallow anonymous access to database service information in a directory and require clients to authenticate when performing LDAP directory-based name look-ups. If you are using Microsoft Active Directory-based name lookups, then Oracle Database uses the native operating system-based authentication. If you are using Oracle Internet Directory (OID)-based name lookups, then Oracle Database performs authentication by using wallets.
To configure directory security, see Oracle Database Net Services Reference.
The following security enhancements are available for Oracle Call Interface (OCI):
Reporting bad packets that may come from malicious users or intruders
Terminating or resuming the client or server process on receiving a bad packet
Configuring the maximum number of authentication attempts
Controlling the display of the Oracle database version banner, to prevent intruders from finding information about the security vulnerabilities present in the database software based on the version
Adding banner information, such as "Unauthorized Access" and "User Actions Audited," to server connections so that clients can display this information
Database administrators can manage these security enhancements for Oracle Call Interface developers by configuring a set of new initialization parameters. See Parameters for Enhanced Security of Database Communication for more information. See also Oracle Call Interface Programmer's Guide for detailed information on Oracle Call Interface.
Security Guide
11g Release 2 (11.2)
E16543-14
December 2012
Oracle Database Security Guide 11g Release 2 (11.2)
E16543-14
Copyright © 2006, 2012, Oracle and/or its affiliates. All rights reserved.
Primary Author: Patricia Huey
Contributors: Tammy Bednar, Naveen Gopal, Don Gosselin, Sumit Jeloka, Peter Knaggs, Sergei Kucherov, Nina Lewis, Bryn Llewellyn, Rahil Mir, Narendra Manappa, Gopal Mulagund, Janaki Narasinghanallur, Paul Needham, Deb Owens, Robert Pang, Preetam Ramakrishna, Vipin Samar, Digvijay Sirmukaddam, Richard Smith, Sachin Sonawane, James Spiller, Ashwini Surpur, Srividya Tata, Kamal Tbeileh, Rodney Ward, Daniel Wong
This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.
The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.
If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable:
U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.
This software or hardware is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications that may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications.
Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.
Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group.
This software or hardware and documentation may provide access to or information on content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services.
The information contained in this document is for informational sharing purposes only and should be considered in your capacity as a customer advisory board member or pursuant to your beta trial agreement only. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described in this document remains at the sole discretion of Oracle.
This document in any form, software or printed matter, contains proprietary information that is the exclusive property of Oracle. Your access to and use of this confidential material is subject to the terms and conditions of your Oracle Software License and Service Agreement, which has been executed and with which you agree to comply. This document and information contained herein may not be disclosed, copied, reproduced, or distributed to anyone outside Oracle without prior written consent of Oracle. This document is not part of your license agreement nor can it be incorporated into any contractual agreement with Oracle or its subsidiaries or affiliates.
This chapter contains:
You can use the default Oracle Database features to configure security in the following areas for your Oracle Database installation:
User accounts. When you create user accounts, you can secure them in a variety of ways. You can also create password profiles to better secure password policies for your site. Chapter 2, "Managing Security for Oracle Database Users," describes how to manage user accounts.
Authentication methods. Oracle Database provides several ways to configure authentication for users and database administrators. For example, you can authenticate users on the database level, from the operating system, and on the network. Chapter 3, "Configuring Authentication," describes how authentication in Oracle Database works.
Privileges and roles. You can use privileges and roles to restrict user access to data. Chapter 4, "Configuring Privilege and Role Authorization," describes how to create and manage user privileges and roles.
Application security. The first step to creating a database application is to ensure that it is properly secure. Chapter 5, "Managing Security for Application Developers," discusses how to incorporate application security into your application security policies.
User session information using application context. An application context is a name-value pair that holds the session information. You can retrieve session information about a user, such as the user name or terminal, and restrict database and application access for that user based on this information. Chapter 6, "Using Application Contexts to Retrieve User Information," describes how to use application context.
Database access on the row and column level using Virtual Private Database. A Virtual Private Database policy dynamically imbeds a WHERE
predicate into SQL statements the user issues. Chapter 7, "Using Oracle Virtual Private Database to Control Data Access," describes how to create and manage Virtual Private Database policies.
Encryption. You can disguise data on the network to prevent unauthorized access to that data. Chapter 8, "Developing Applications Using the Data Encryption API," explains how to use the DBMS_CRYPTO
and DBMS_SQLHASH
PL/SQL packages to encrypt data.
Auditing database activities. You can audit database activities in general terms, such as auditing all SQL statements, SQL privileges, schema objects, and network activity. Or, you can audit in a granular manner, such as when the IP addresses from outside the corporate network is being used. This chapter also explains how to purge the database audit trail. Chapter 9, "Verifying Security Access with Auditing," describes how to enable and configure database auditing.
In addition, Chapter 10, "Keeping Your Oracle Database Secure," provides guidelines that you should follow when you secure your Oracle Database installation.
In addition to the security resources described in this guide, Oracle Database provides the following database security products:
Advanced security features. See Oracle Database Advanced Security Administrator's Guide for information about advanced features such as transparent data encryption, wallet management, network encryption, and the RADIUS, Kerberos, Secure Sockets Layer authentication.
Oracle Label Security. Oracle Label Security secures database tables at the row level, allowing you to filter user access to row data based on privileges. See Oracle Label Security Administrator's Guide for detailed information about Oracle Label Security.
Oracle Database Vault. Oracle Database Vault provides fine-grained access control to your sensitive data, including protecting data from privileged users. Oracle Database Vault Administrator's Guide describes how to use Oracle Database Vault.
Oracle Audit Vault. Oracle Audit Vault collects database audit data from sources such as Oracle Database audit trail tables, database operating system audit files, and database redo logs. Using Oracle Audit Vault, you can create alerts on suspicious activities, and create reports on the history of privileged user changes, schema modifications, and even data-level access. Oracle Audit Vault Administrator's Guide explains how to administer Oracle Audit Vault.
Oracle Enterprise User Security. Oracle Enterprise User Security enables you to manage user security at the enterprise level. Oracle Database Enterprise User Security Administrator's Guide explains how to configure Oracle Enterprise User Security.
In addition to these products, you can find the latest information about Oracle Database security, such as new products and important information about security patches and alerts, by visiting the Security Technology Center on Oracle Technology Network at
http://www.oracle.com/technetwork/topics/security/whatsnew/index.html
Authorization includes primarily two processes:
Permitting only certain users to access, process, or alter data.
Applying varying limitations on user access or actions. The limitations placed on (or removed from) users can apply to objects such as schemas, tables, or rows or to resources such as time (CPU, connect, or idle times).
A user privilege is the right to run a particular type of SQL statement, or the right to access an object that belongs to another user, run a PL/SQL package, and so on. The types of privileges are defined by Oracle Database.
Roles are created by users (usually administrators) to group together privileges or other roles. They are a way to facilitate the granting of multiple privileges or roles to users.
This section describes the following general categories:
System privileges. These privileges allow the grantee to perform standard administrator tasks in the database. Restrict them only to trusted users. "Managing System Privileges" describes system privileges in detail.
User roles. A role groups several privileges and roles, so that they can be granted to and revoked from users simultaneously. You must enable the role for a user before the user can use it. See "Managing User Roles" for more information.
Object privileges. Each type of object has privileges associated with it. "Managing Object Privileges" describes how to manage privileges for different types of objects.
You grant privileges to users so they can accomplish tasks required for their jobs. You should grant a privilege only to a user who requires that privilege to accomplish the necessary work. Excessive granting of unnecessary privileges can compromise security. For example, you never should grant SYSDBA
or SYSOPER
privilege to users who do not perform administrative tasks.
A user can receive a privilege in two ways:
You can grant privileges to users explicitly. For example, you can explicitly grant to user psmith
the privilege to insert records into the employees
table.
You can grant privileges to a role (a named group of privileges), and then grant the role to one or more users. For example, you can grant the privileges to select, insert, update, and delete records from the employees
table to the role named clerk
, which in turn you can grant to users psmith
and robert
.
Because roles allow for easier and better management of privileges, you should usually grant privileges to roles and not to specific users.
See Also:
|
This section contains:
A system privilege is the right to perform a particular action or to perform an action on any schema objects of a particular type. For example, the privileges to create tablespaces and to delete the rows of any table in a database are system privileges.
There are over 100 distinct system privileges. Each system privilege allows a user to perform a particular database operation or class of database operations. Remember that system privileges are very powerful. Only grant them when necessary to roles and trusted users of the database. You can find a complete list of system privileges and their descriptions in Oracle Database SQL Language Reference. To find the system privileges that have been granted to a user, you can query the DBA_SYS_PRIVS
data dictionary view.
Because system privileges are so powerful, by default the database is configured to prevent typical (non-administrative) users from exercising the ANY
system privileges (such as UPDATE ANY TABLE
) on the data dictionary. See "Guidelines for Securing User Accounts and Privileges" for additional guidelines about restricting system privileges.
To secure the data dictionary, set the O7_DICTIONARY_ACCESSIBILITY
initialization parameter to FALSE
, which is the default value. This feature is called the dictionary protection mechanism.
The O7_DICTIONARY_ACCESSIBILITY
initialization parameter controls restrictions on system privileges when you upgrade from Oracle Database release 7 to Oracle8i and later releases. If the parameter is set to TRUE
, then access to objects in the SYS
schema is allowed (Oracle Database release 7 behavior). Because the ANY
privilege applies to the data dictionary, a malicious user with ANY
privilege could access or alter data dictionary tables.
To set the O7_DICTIONARY_ACCESSIBILTY
initialization parameter, modify it in the init
SID
.ora
file. Alternatively, you can log on to SQL*Plus as user SYS
with the SYSDBA
privilege and then enter an ALTER SYSTEM
statement, assuming you have started the database using a server parameter file (SPFILE).
Example 4-1 shows how to set the O7_DICTIONARY_ACCESSIBILTY
initialization parameter to FALSE
by issuing an ALTER SYSTEM
statement in SQL*Plus.
Example 4-1 Setting O7_DICTIONARY_ACCESSIBILITY to FALSE
ALTER SYSTEM SET O7_DICTIONARY_ACCESSIBILITY=FALSE SCOPE=SPFILE;
When you set O7_DICTIONARY_ACCESSIBILITY
to FALSE
, system privileges that enable access to objects in any schema (for example, users who have ANY
privileges, such as CREATE ANY PROCEDURE
) do not allow access to objects in the SYS
schema. This means that access to the objects in the SYS
schema (data dictionary objects) is restricted to users who connect using the SYSDBA
privilege. Remember that the SYS
user must log in with either the SYSDBA
or SYSOPER
privilege; otherwise, an ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
error is raised. If you set O7_DICTIONARY_ACCESSIBILITY
to TRUE
, then you would be able to log in to the database as user SYS
without having to specify the SYSDBA
or SYSOPER
privilege.
System privileges that provide access to objects in other schemas do not give other users access to objects in the SYS
schema. For example, the SELECT ANY TABLE
privilege allows users to access views and tables in other schemas, but does not enable them to select dictionary objects (base tables of dynamic performance views, regular views, packages, and synonyms). You can, however, grant these users explicit object privileges to access objects in the SYS
schema.
See Oracle Database Reference for more information about the O7_DICTIONARY_ACCESSIBILITY
initialization parameter.
Users with explicit object privileges or those who connect with administrative privileges (SYSDBA
) can access objects in the SYS
schema.
Table 4-1 lists roles that you can grant to users who need access to objects in the SYS
schema.
Table 4-1 Roles to Allow Access to SYS Schema Objects
Role | Description |
---|---|
Grant this role to allow users | |
Grant this role to allow users | |
Grant this role to allow users to delete records from the system audit tables |
Additionally, you can grant the SELECT ANY DICTIONARY
system privilege to users who require access to tables created in the SYS
schema. This system privilege allows query access to any object in the SYS
schema, including tables created in that schema. It must be granted individually to each user requiring the privilege. It is not included in GRANT ALL PRIVILEGES
, but it can be granted through a role.
Caution: You should grant these roles and theSELECT ANY DICTIONARY system privilege with extreme care, because the integrity of your system can be compromised by their misuse. |
You can grant or revoke system privileges to users and roles. If you grant system privileges to roles, then you can use the roles to exercise system privileges. For example, roles permit privileges to be made selectively available. Ensure that you follow the separation of duty guidelines described in "Guidelines for Securing Roles".
Use either of the following methods to grant or revoke system privileges to or from users and roles:
GRANT
and REVOKE
SQL statements
Oracle Enterprise Manager Database Control
See Also: |
Only two types of users can grant system privileges to other users or revoke those privileges from them:
Users who were granted a specific system privilege with the ADMIN
OPTION
Users with the system privilege GRANT
ANY
PRIVILEGE
For this reason, only grant these privileges to trusted users.
System privileges that use the ANY
keyword enable you to set privileges for an entire category of objects in the database. For example, the CREATE ANY PROCEDURE
system privilege permits a user to create a procedure anywhere in the database. The behavior of an object created by users with the ANY
privilege is not restricted to the schema in which it was created. For example, if user JSMITH
has the CREATE ANY PROCEDURE
privilege and creates a procedure in the schema JONES
, then the procedure will run as JONES
. However, JONES
may not be aware that the procedure JSMITH
created is running as him (JONES
). If JONES
has DBA
privileges, letting JSMITH
run a procedure as JONES
could pose a security violation.
The PUBLIC
role is a special role that every database user account automatically has when the account is created. By default, it has no privileges granted to it, but it does have numerous grants, mostly to Java objects. You cannot drop the PUBLIC
role, and a manual grant or revoke of this role has no meaning, because the user account will always assume this role. Because all database user accounts assume the PUBLIC
role, it does not appear in the DBA_ROLES
and SESSION_ROLES
data dictionary views.
You can grant privileges to the PUBLIC
role, but remember that this makes the privileges available to every user in the Oracle database. For this reason, be careful about granting privileges to the PUBLIC
role, particularly powerful privileges such as the ANY
privileges and system privileges. For example, if JSMITH
has the CREATE PUBLIC SYNONYM
system privilege, he could redefine an interface that he knows everyone else uses, and then point to it with the PUBLIC SYNONYM
that he created. Instead of accessing the correct interface, users would access the interface of JSMITH
, which could possibly perform illegal activities such as stealing the login credentials of users.
These types of privileges are very powerful and could pose a security risk if given to the wrong person. Be careful about granting privileges using ANY
or PUBLIC
. As with all privileges, you should follow the principles of "least privilege" when granting these privileges to users.
To protect the data dictionary (the contents of the SYS
schema) against users who have one or more of the powerful ANY
system privileges, set the O7_DICTIONARY_ACCESSIBILITY
initialization parameter to FALSE
. You can set this parameter by using an ALTER SYSTEM
statement (see Example 4-1, "Setting O7_DICTIONARY_ACCESSIBILITY to FALSE") or by modifying the init
SID
.ora
file. See "Guidelines for Securing a Database Installation and Configuration" for additional guidelines.
Managing and controlling privileges is easier when you use roles, which are named groups of related privileges that you grant as a group to users or other roles. Within a database, each role name must be unique, different from all user names and all other role names. Unlike schema objects, roles are not contained in any schema. Therefore, a user who creates a role can be dropped with no effect on the role.
This section contains:
Roles are useful for quickly and easily granting permissions to users. Although you can use Oracle Database-defined roles, you have more control and continuity if you create your own roles that contain only the privileges pertaining to your requirements. Oracle may change or remove the privileges in an Oracle Database-defined role, as it has with the CONNECT
role, which now has only the CREATE SESSION
privilege. Formerly, this role had eight other privileges.
Roles have the following functionality:
A role can be granted system or object privileges.
Any role can be granted to any database user.
Each role granted to a user is, at a given time, either enabled or disabled. A user's security domain includes the privileges of all roles currently enabled for the user and excludes the privileges of any roles currently disabled for the user. Oracle Database allows database applications and users to enable and disable roles to provide selective availability of privileges.
A role can be granted to other roles. However, a role cannot be granted to itself and cannot be granted circularly. For example, role role1
cannot be granted to role role2
if role role2
has previously been granted to role role1
.
If a role is not password authenticated or a secure application role, then you can grant the role indirectly to the user. An indirectly granted role is a role granted to the user through another role that has already been granted to this user. For example, suppose you grant user psmith
the role1
role. Then you grant the role2
and role3
roles to the role1
role. Roles role2
and role3
are now under role1
. This means psmith
has been indirectly granted the roles role2
and role3
, in addition to the direct grant of role1
. Enabling the direct role1
for psmith
enables the indirect roles role2
and role3
for this user as well.
Optionally, you can make a directly granted role a default role. You enable or disable the default role status of a directly granted role by using the DEFAULT ROLE
clause of the ALTER USER
statement. Ensure that the DEFAULT ROLE
clause refers only to roles that have been directly granted to the user. To find the directly granted roles for a user, query the DBA_ROLE_PRIVS
data dictionary view. This view does not include the user's indirectly granted roles. To find roles that are granted to other roles, query the ROLE_ROLE_PRIVS
view.
If the role is password authenticated or a secure application role, then you cannot grant it indirectly to the user, nor can you make it a default role. You only can grant this type of role directly to the user. Typically, you enable password authenticated or secure application roles by using the SET ROLE
statement.
Table 4-2 describes the properties of roles that enable easier privilege management within a database.
Table 4-2 Properties of Roles and Their Description
Property | Description |
---|---|
Reduced privilege administration |
Rather than granting the same set of privileges explicitly to several users, you can grant the privileges for a group of related users to a role, and then only the role must be granted to each member of the group. |
Dynamic privilege management |
If the privileges of a group must change, then only the privileges of the role need to be modified. The security domains of all users granted the group's role automatically reflect the changes made to the role. |
Selective availability of privileges |
You can selectively enable or disable the roles granted to a user. This allows specific control of a user's privileges in any given situation. |
Application awareness |
The data dictionary records which roles exist, so you can design applications to query the dictionary and automatically enable (or disable) selective roles when a user attempts to execute the application by way of a given user name. |
Application-specific security |
You can protect role use with a password. Applications can be created specifically to enable a role when supplied the correct password. Users cannot enable the role if they do not know the password. |
Database administrators often create roles for a database application. You should grant a secure application role all privileges necessary to run the application. You then can grant the secure application role to other roles or users. An application can have several different roles, each granted a different set of privileges that allow for more or less data access while using the application.
The DBA can create a role with a password to prevent unauthorized use of the privileges granted to the role. Typically, an application is designed so that when it starts, it enables the proper role. As a result, an application user does not need to know the password for an application role.