WP Dbsec Ols
WP Dbsec Ols
DISCLAIMER
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 is not part of
your license agreement nor can it be incorporated into any contractual agreement with Oracle or its subsidiaries or affiliates.
This document is for informational purposes only and is intended solely to assist you in planning for the implementation
and upgrade of the product features described. 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.
BEST PRACTICES 12
Mapping Application Users to Database Users 12
Labeling Existing Data 12
Performance Considerations 12
CONCLUSION 14
Over the past 40 years, Oracle has been the industry leader in building innovative data security solutions that make it
possible to protect sensitive information. Oracle Label Security (OLS) is part of Oracle’s defense-in-depth approach to
security and is the industry’s most advanced solution for controlling access to data based on data classification. While this
technology was designed to meet US government, military and intelligence agency standards, OLS is also applicable to
commercial organizations that have data separation requirements for their users. Both government and commercial
organizations use OLS to consolidate multiple databases to reduce operational costs as well as simplifying data analysis and
decision-making. Government agencies align their data classification standards and then use OLS to share data across
agencies. Commercial companies use OLS to separate data from different nationalities, allowing users from different
countries to access data and meet local privacy and compliance requirements. Other companies are consolidating similar
databases from subsidiaries and retail outlets and require limits on what is visible to each group. Oracle Label Security has
out of the box features to enable these and similar use cases.
Oracle Label Security mediates access based on data sensitivity labels (referred to in this document as data labels) and user
label authorizations (referred to in this document as user labels). Oracle Label Security has consistently been evaluated as
part of the Oracle Database to the Common Criteria for Information Technology Security Evaluation (ISO15408) as part of
the Oracle Database. Oracle Label Security is easily managed by using either the API calls or Oracle Enterprise Manager.
Oracle Label Security is an option available with Oracle Database Enterprise Edition, and it is included with the High
Performance and Extreme Performance Editions of Oracle Database Cloud Service, on the Autonomous Cloud Databases
and on Oracle Exadata Cloud Service.
Figure 1: Oracle Label Security leverages user labels and data labels to control data access
Oracle Label Security is a mature product and can address simple to complex requirements. As with any other sophisticated
security product, proper analysis and planning are key to a successful Oracle Label Security deployment. The steps below
provide a basic guideline for deploying Oracle Label Security. The implementation can be performed using Oracle Enterprise
Manager or the Oracle Label Security API. It may be useful to work with a sample demonstration table first to get a firm
understanding of how data labels mediate access control as well as the various enforcement options available in Oracle
Label Security.
STEPS
Define necessary data label components including levels, compartments, and groups
Create the data labels for the policy using the components (levels, compartments, and groups)
already defined
This paper focuses on the core components (data labels, user labels) before we discuss policies and data analysis steps.
Figure 2. Oracle Label Security data levels can include levels, compartments and groups
Level The level is a component that denotes the sensitivity of the data.
Every data and user label must have a level. An organization might
define levels such as Confidential, Sensitive and Highly Sensitive. If
an organization does not need multiple levels, a single default level
needs to be defined.
Retail Financials Default* None Each Store, Country, Region, Financial Group
* While levels are not used to determine access for this use case, a level is required to be set.
Compartment User must be authorized to all compartments listed in the data label.
For example, in order for a user to access data labeled “Sensitive:
Alpha, Beta”, the user must have been authorized to at least the
“Sensitive” level and to both the “Alpha” and “Beta” compartments.
Unlike levels, the number assigned to a compartment has no
meaning other than determining the display order of multiple
compartments when using internal functions.
Group User must be authorized to at least one of the groups listed in the
data label or be authorized to a parent group. For example, for a
user to access data labeled “Default::Canada”, the user must have
been authorized to the Default level and the Canada group. But the
parent of the Canada group is North America group so the North
America group can also access the data. Note the colon separating
the level, compartment and group sections in the label. Unlike
levels, the number assigned to a group has no meaning other than
determining the display order of multiple groups when using the
label_to_char function or similar functions.
If the application has an entity-relationship (ER) diagram, it may be useful to annotate on the diagram the range of data
labels for each entity.
User Labels
User labels determine whether a user can access information protected with a data label. User labels are comprised of a
minimum and maximum level, a default level and a row level. In addition, user labels can have compartments and groups.
For example, a user can be assigned a maximum level of Sensitive and a minimum level of Public. Database users also have
a default label that is initialized when the user connects to the database. This is sometimes referred to as the active session
label. The session label is simply the user’s current level combined with compartments and groups. The session label may
differ from the user label based on rules that change it due to the connection. For example, even if a user has a Highly
Sensitive level as part of their user label, if the connection is a remote session through VPN the session label may be
restricted to the Sensitive level.
Oracle Label Security user labels must be established by the security administrator before an application user can access an
application table protected by Oracle Label Security. Note that when multiple policies are present in the database, separate
user authorizations must be established for each policy.
Label Strategy
Defining a label strategy requires understanding the various roles and responsibilities of the user population. For example, a
user might be designated as an analyst, highly privileged user, or administrative user. Understanding the various roles and
responsibilities may require the assistance of managers and security administrators. After the user population has been
separated into one or more roles or functional areas, a comparison needs to be performed between the data labels and the
user label requirements. These need to correspond correctly for each of the tables identified earlier. This step is important to
prevent data from being assigned a sensitivity label that no user has access to. In other words, the information required to
perform a specific job responsibility might be out of reach to the application user due to his or her user label. In the worst
case, data might be assigned a data label that no user can access, effectively hiding the data.
Sample Oracle Label Security authorization analysis
C S S:A:US S:A,B:US,UK
Installation Guidance
Oracle Label Security is installed by default with the Oracle Database, but it is not configured or enabled. You can configure
and enable Oracle Label Security using the Oracle Database Configuration Assistant (DBCA) or through the command line.
You should follow the steps provided in the documentation to create OLS policies, levels, compartments and/or groups.
If you are using a multitenant environment, only enable Oracle Label Security in the pluggable databases (PDBs) in which
you plan to create OLS policies. Because OLS is not designed to protect data dictionary objects, you cannot create policies in
the root.
The following exceptions are important to understand when using Oracle Label Security policies.
Oracle Label Security enforcement exemptions
EXCEPTION DESCRIPTION
SYS objects Label Security policies cannot be applied to objects in SYS schema.
SYSDBA role Any user that connects with the AS SYSDBA role is exempt from Label Security policies.
DIRECT path export Label Security policies are not enforced during DIRECT path export.
EXEMPT ACCESS POLICY Any user granted the Oracle Database EXEMPT ACCESS POLICY privilege directly, or
through a database role, is exempt from Label Security policies.
2. Use a database user with the session label required and populate the table with the data. If the OLS-controlled table
has an active policy, the session label will be applied to the data as it is loaded. Oracle Data Pump could also be
used with this method to import data from other databases.
3. Write a PL/SQL function to label the rows based on characteristics of the data and the context of the session.
Performance Considerations
Performance is important to all applications. Adding new functionality to existing applications requires careful planning, and
due diligence to minimize the performance impact. Oracle Label Security enforces a security check on each row prior to
allowing access, as well as during login authentication to initialize additional security contexts. The amount of delay will vary
depending on the number of Oracle policies and the number of label components defined. The performance overhead will
depend on a variety of factors including:
• Number of Oracle Label Security policies in place
• Number and size of tables protected by Oracle Label Security
• Oracle Label Security enforcement options used
• Complexity of existing or new application PL/SQL logic
Identifying the tables that require a Label Security policy is an important part of the upfront analysis. If all rows in a table are
always accessed, applying a Label Security policy that assigns a data label to each row is not recommended and is probably
redundant. Careful consideration of where to apply Label Security policies will result in an efficient use of the technology. In
some cases, other Oracle Database security features may be more appropriate for addressing a given requirement than
assigning a data label to each row. For example, if all rows are always accessed, using Oracle Database Vault to control when,
where, why, and how a table is accessed may be more efficient than labeling every row. Regardless of the feature or
functionality used, each additional security check performed will add additional performance overhead.
Oracle also recommends defining the associated label tags so that they fall within the range associated with the level of the
data label. For example, suppose the levels Confidential and Sensitive have been defined along with two compartments,
Alpha and Beta. The number associated with Confidential is 5000 and the number associated with Sensitive is 10000. When
the valid data labels are defined the associated label tags associated with the level of Confidential and compartments Alpha
and Beta should be between 5000 and 10000. For example, the data label Confidential:Alpha might have a label tag of 5050
and the data label Sensitive:Alpha,Beta might have a label tag of 10055.
Oracle Partitioning can be used with Oracle Label Security to physically partition data based on data classification. For
example, data with a classification of Highly Sensitive can be located in a separate partition from data with a classification of
Sensitive. Partitioning can also provide performance benefits through partition pruning, enabling Oracle Label Security to
quickly skip data that resides outside of the users’ security clearance. Partitioning is widely used in data warehouse
CONNECT WITH US
Call +1.800.ORACLE1 or visit oracle.com.
Outside North America, find your local office at oracle.com/contact.
Copyright © 2020, Oracle and/or its affiliates. All rights reserved. This document is provided for information purposes only, and the contents hereof are subject to change without
notice. This document is not warranted to be error-free, nor subject to any other warranties or conditions, whether expressed orally or implied in law, including implied warranties
and conditions of merchantability or fitness for a particular purpose. We specifically disclaim any liability with respect to this document, and no contractual obligations are formed
either directly or indirectly by this document. This document may not be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose, without
our prior written permission.
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. 0120