Oracle9i Label Security�

Oracle9i Label Security is a new security option for the Oracle9i Enterprise Edition.  Oracle9i Label Security builds on the Oracle9i virtual private database (VPD) technology.  Oracle9i VPD technology gives you the ability write security policies using Oracle PL/SQL and assign them to database tables and views.  For example, an Oracle VPD policy can be written to restrict access outside normal business hours or restrict access to specific database rows based on an organizational identifier.  Oracle9i Label Security is an out-of-the-box solution for restricting access to specific database rows based on sensitivity labels.  Oracle9i Label Security eliminates the task of writing Oracle9i VPD policies to enforce row level security.  The complex nature of restricting access based on sensitivity labels requires a robust database infrastructure and highly optimized algorithms.  Oracle9i Label Security provides both the infrastructure and optimized algorithms as well as a GUI administration tool.  Oracle9i Label Security is highly customizable using an array of enforcement options and built-in features.  Release 2 of Oracle9i Label Security supports releasabilities, adding even more flexibility to the Oracle9i Label Security access control capabilities.


ORACLE LABEL SECURITY POLICIES
Oracle9i Label Security is best suited for row level security enforcement based on sensitivity labels.  Oracle Label Security policies are collections of labels, label authorizations and security enforcement options.  Once created, policies can be applied to entire application schemes or specific application tables.  Oracle Label Security supports multiple policy definitions within a single Oracle database.  Label definitions, user authorizations and enforcement options are defined on a per policy basis.  For example, a policy called DEFENSE might contain labels SECRET, TOP SECRET and CONFIDENTIAL.  A policy called SALES might contain labels NORTH AMERICA, EUROPE, and ASIA.  Both of these policies can exist in the same database and be applied to the same or different application tables.

SENSITIVITY LABELS
Sensitivity labels are central to Oracle9i Label Security.  Sensitivity labels are what determine an application user's ability to view and update application data.  Sensitivity labels provide sophisticated controls which are not possible with traditional object level privileges.  For example, suppose an order entry application has a security policy which states that the application must be capable of limiting access to purchase orders labeled company sensitive?  By default, giving an application user the SELECT privilege on the purchase orders table will allow the user to view all information.  One approach to solving this requirement is to create two database views.  The first view will exclude all the purchase orders deemed company sensitive and the second will include all the purchase orders.  This approach is problematic because the security policy may change to include new levels of sensitivity.  In addition, application users will need to be assigned the correct enterprise role depending on their authorization to view company sensitive information.  Sensitivity labels solve this security requirement and eliminate the need for additional views.

Oracle9i Label Security sensitivity labels contain three components: a single hierarchical level or classification, one or more horizontal compartments or categories and one or more groups. 

Label Components

  • Level -- The level is a hierarchical component which denotes the sensitivity of the data.  A typical government organization might define levels confidential, sensitive and highly sensitive.  However, there is no requirement to define more than one level.  For example, a commercial organization might define a single level for company confidential data or application hosting requirements
  • Compartment - The compartment component is sometimes referred to as a category and is non hierarchical.  Typically one or more compartments are defined to segregate data.  For example, a compartment might be defined for an ongoing strategic initiative or map to a hosted application subscriber.  Data related to the initiative can be labeled with the newly defined compartment.  Oracle Label Security supports up to 9999 unique compartments.
  • Group - The group component is used to record ownership and can be used hierarchically.  For example, two groups called Senior VP and Manager can be created and subsequently assigned as children of the CEO group, creating an ownership tree.  Labels can be composed of a standalone level component or a level component can be combined with compartments, groups or both.
External Representation
The external representation of a label is composed of the three label components, separated by a semicolon.  The label "Confidential : Acquisitions : Asia" is composed of the following three label components:
  • Level = Confidential
  • Compartment = Acquisitions
  • Group = Asia
Example Application Table:
 
Project Location Budget Sensitivity Label
AZ834T Chicago $14500000.00 Public : : Education
WY83R Paris $32600000.00 Confidential : : Europe
PT99X Tokyo $21000000.00 Sensitive : Acquisitions : Asia

Releasabilities
Oracle9i Label Security uses inverse groups to indicate releasability of information: they are used to mark the dissemination of data. When you add an inverse group to a data label, the data becomes less classified.  For example, a user with inverse groups UK, US cannot access data which only has inverse group UK.  Adding US to that data makes it accessible to all users with the inverse groups UK, US.  When you assign releasabilities to a user, you mark the communication channel to the user. For data to flow across the communication channel, the data releasabilities must dominate the releasabilities assigned to the user.  In other words, releasabilities assigned to a data record must contain all the releasabilities assigned to a user.  The advantage of releasabilities lies in their power to broadly disseminate information. Releasing data to the entire marketing organization becomes as simple as adding the Marketing releasability to the data record. 

The term inverse group is used because an administrator can now create an Oracle Label Security policy which uses the access control logic provided by standard groups or decide to create the policy using inverse group access control logic.

Comparing Standard Groups and Inverse Groups
Groups in Oracle Label Security identify organizations which own or access data. Like standard groups, inverse groups control the dissemination of information. However, the behavior of inverse groups differs from Oracle Label Security standard group behavior. By default, all policies created in Oracle Label Security use the standard group behavior.  When you include inverse groups in a data label, the effect is similar to assigning label compartment authorizations to a user. When Oracle Label Security evaluates whether a user can view a row of data assigned a label with inverse groups, it checks to see whether the data, not the user, has the appropriate group authorizations: does the data have all the inverse groups assigned to the user? With standard groups, by contrast, Oracle Label Security checks to see whether a user is authorized for at least one of the groups assigned to a row of data.  Consider a policy which contains 3 standard groups:  Eastern, Western, and Southern.  User1�s label authorizations include the groups Eastern and Western. Assuming User1 has been assigned the appropriate level and compartment authorizations in the policy, then:
 

  • With standard Oracle Label Security groups, User1 can view all data records that have the group Eastern, or the group Western, or both Eastern and Western.
  • With inverse groups, User1 can only view data records that have, at a minimum, all the groups assigned to the user: that is, both Eastern and Western. She cannot view records that have only the Eastern group, only the Western group, or that have no groups at all.
When using standard groups, a hierarchical relationship can be created by designating a parent for each group.  However, designating hierarchical relationships between inverse groups is not practical because of the access control logic associated with the concept of releasabilities.  Therefore when a policy is created and the inverse group option is specified, the ability to designate a parent for a particular group has been disabled.

Label Tags
Label tags are used internally and stored with the data for optimization. The example application table above shows a table with four attributes: Project, Location, and Budget.  The fourth and final component is the label attribute added by Oracle Label Security.  The values listed under the sensitivity label are the external representations of the labels.  The corresponding internal label tags might be 10010, 20005, and 30106. 

ORACLE9i LABEL SECURITY MEDIATION
Oracle9i Label Security mediates access to rows in database tables based on the label contained in the row, a label associated with each database session, and Oracle9i Label Security privileges assigned to the session.  Oracle9i Label Security provides access mediation to application data after a user has been granted the standard Oracle SYSTEM and OBJECT privileges.  For example, if an application user executes a SQL SELECT statement Oracle9i will first verify that the user has the appropriate OBJECT privileges or enterprise roles to access the tables referenced in the statement.  Second, Oracle9i will check if any of the tables referenced in the statement are protected by Oracle9i Label Security.  Oracle9i Label Security will then determine access to individual table rows based on sensitivity labels assigned to the rows and the user's label authorizations.

ORACLE9i LABEL SECURITY USER LABEL AUTHORIZATIONS
Oracle9i Label Security user label authorizations are managed by the database security officer.  Oracle Label Security user label authorizations are defined as follows:

Maximum Level � The maximum sensitivity level a user is authorized to access.  In a hosting environment a single level may only exist.  In government and defense environments four or five levels might be defined.

Minimum Level  � The minimum sensitivity level a user is authorized to write data.  For example, an administrator can prevent users from labeling data as Public or Internet by assigning a minimum level of Company Confidential.

Default Level � The level used by default when a user connects to the database. For example, a user can set his or her default level to Secret.   When he or she connects to the system, the default level will be initialized to Secret. 

Row Level �  The level used to label data inserted into the database by the user through the application or directly through a tool such as SQL*Plus.

Read Compartments  �  The set of compartments assigned to the user and used during READ access mediation.  For example, if a user has compartments A,B and C, he can view data which has compartments A and B but not data which has compartments A,B,C and D.

Write Compartments  � The set of compartments assigned to the user and used during WRITE access mediation.  For example, a user can be given READ and WRITE access to compartments A and B and READ-ONLY access to compartment C.  If an application record is labeled with compartments A,B and C, the user will not be allowed to update the record because he or she does not have WRITE access on compartment C.

Read Groups �  The set of groups assigned to the user and used during READ access mediation.  For example, if a user is given the group Manager, he will be able to view data which has the Manager group but not data which has the Senior VP group.

Write Groups � The set of groups assigned to the user and used during WRITE access mediation.  For example, a user can be given READ and WRITE access to group Senior VP and READ-ONLY access to group Manager.  If an application record is labeled with the single group, Manager, the user will not be allowed to update the record because he or she does not have WRITE access on the Manager group.

ORACLE9i LABEL SECURITY SPECIAL ACCESS PRIVILEGES
Oracle9i Label Security provides a comprehensive set of special access privileges.  The access privileges are designed for special reporting needs and to protect the data label separate from the actual data.  Oracle9i Label Security special access privileges are defined as follows:

READ  �  The READ privilege allows a user to access all data protected by Oracle9i Label Security, however, access mediation is still enforced on UPDATE, INSERT and DELETE operations.  Oracle9i Label Security makes no mediation check on SELECT operations.

FULL  � The FULL privilege turns off all Oracle9i Label Security access mediation.  A user with the FULL privilege can perform SELECT, UPDATE, INSERT and DELETE operations with no label authorizations.  Note that Oracle SYSTEM and OBJECT privileges are still enforced.  For example, a user must still have SELECT on the application table.  The FULL privilege turns off the access mediation check at the individual row level.

WRITEDOWN � The WRITEDOWN privilege allows a user to modify the level component of a label and lower the sensitivity of the label.  For example, application data which is labeled Top Secret: Alpha, Beta could be changed to Secret: Alpha, Beta.

WRITEUP � The WRITEUP privilege allows a user to modify the level component of a label and raise the sensitivity of the label. For example, application data which is labeled  Secret: Alpha, Beta could be changed to Top Secret: Alpha, Beta.  Note that the Maximum Level label authorization assigned to the user would limit modification.

WRITEACROSS  � The WRITEACROSS privilege allows a user to modify the compartments and groups in a label to any valid compartment and group defined in Oracle9i Label Security for the policy.  For example, application data labeled Secret: Alpha, Beta can be modified to Secret: Alpha, Beta, Delta even though the user was is authorized for the Delta compartment.

PROFILEACCESS � The PROFILE ACCESS privilege allows a user to assume the Oracle9i Label Security authorizations of another user.  For example, an application user who has access to compartments A,B, and C can assume the profile of another application user who has access to compartments A,B, C and D. 

POLICY ENFORCEMENT OPTIONS
Oracle9i Label Security enforcement can be customized on a per policy basis.  For example, a Human Resources policy and a Defense policy can exist in the same Oracle database and provide different degrees of protection.  The Oracle9i Label Security enforcement options are as follows:

READ CONTROL � Applies policy enforcement to all queries; only authorized rows are accessible for SELECT, UPDATE, and DELETE operations.

INSERT CONTROL � Applies policy enforcement to INSERT operations, according to the Oracle Label Security algorithm for write access.

UPDATE CONTROL � Applies policy enforcement to UPDATE operations on the data columns within a row, according to the Oracle Label Security algorithm for write access.

DELETE CONTROL � Applies policy enforcement to DELETE operations, according to the Oracle Label Security algorithm for write access.

WRITE CONTROL �  Determines the ability to INSERT, UPDATE, and DELETE data in a row. If this option is set, it enforces INSERT_CONTROL, UPDATE_CONTROL, and DELETE_CONTROL.

LABEL DEFAULT � If the user does not explicitly specify a label on INSERT, the users default row label value is used.  By default, the row label value is computed internally by Oracle9i Label Security using the label authorization values specified for the user.  A user can set the row label independently, but only to: 

  • A level which is less than or equal to the level of the session label, and greater than or equal to the users minimum level.
  • Include a subset of the compartments and groups from the session label, for which the user is authorized to have write access.
LABEL UPDATE � Applies policy enforcement to UPDATE operations that set or change the value of a label attached to a row.  The WRITEUP, WRITEDOWN, and WRITEACROSS privileges are only enforced if the LABEL_UPDATE option is set.

LABEL CHECK �  Applies READ_CONTROL policy enforcement to INSERT and UPDATE statements to assure that the new row label is read accessible by the user after an INSERT or UPDATE statement.

NO CONTROL �  Applies no enforcement options.  A labeling function or a SQL predicate can nonetheless be applied.
 

ORACLE9i LABEL SECURITY LABEL FUNCTIONS
Label functions are defined in the Oracle9i database and referenced in an Oracle9i Label Security policy definition.  Label functions compute label values for application data during INSERT and UPDATE operations.  Labeling functions enable you to consider, in your rules for assigning labels, information drawn from the Oracle virtual private database (VPD) application context.  For example, you can use as a labeling consideration the IP address to which the user is attached.  A labeling function is called in the context of a special before-row trigger.  This enables the label function designer to pass in the old and new values of the data record, as well as the old and new labels.  Label functions can be written in PL/SQL and assigned to Oracle9i Label Security policies through the Oracle9i Policy Manager (OPM) graphical user interface.  Label functions are an extremely powerful feature of Oracle9i Label Security.

ORACLE9i LABEL SECURITY  � SQL PREDICATES
SQL predicates are used to provide extensibility for selective enforcement of data access rules.  Oracle9i Label Security provides an interface for SQL predicates to be easily added to Oracle9i Label Security policies.  For example, the following SQL predicate can be added to the READ algorithm:

AND my_function(col1) = 1
or another example might be:
OR SYS_CONTEXT (�USERENV�,�SESSION_USER�) = employee_name
ORACLE9i LABEL SECURITY API
Oracle9i Label Security has a comprehensive application programmatic interface (API) which can be used by developers and administrators.  The API is documented in the Oracle Label Security administrator�s Guide.

ORACLE9i LABEL SECURITY TRUSTED PROGRAM UNITS
Oracle9i Label Security special access privileges can be assigned to stored program units.  For example, the READ and FULL privileges can be assigned to a stored program unit.  Trusted program units reduce or eliminate the need to grant Oracle9i Label Security special access privileges directly to users.

ORACLE9i LABEL SECURITY POLICY ENFORCEMENT
Oracle9i Label Security policies can be applied to individual tables or entire schemes.  Typically, the number of tables in an application requiring sensitivity labels is small in comparison to the total number of tables in an application.  If Oracle9i Label Security is applied at the schema level, all subsequent table creation statements will automatically have the policy applied.  After Oracle Label Security is applied to a schema, individual table enforcement options can be customized.

ORACLE9i POLICY MANAGER GUI INTERFACE
The Oracle9i Policy Manager is the new GUI tool for administering Oracle9i Label Security.  Oracle9i Policy Manager is part of the Oracle Enterprise Manager framework.  Security administrators can use the interface to create Oracle9i Label Security policies, apply policies, create labels, manage user label authorizations, add SQL predicates and label functions.  Oracle9i Policy Manager can also be used to manage Oracle VPD FGAC policies and Oracle VPD application contexts.
 

Screenshot caption
 
Oracle9i Policy Manager Administrative Interface

 

EVALUATIONS
Oracle9i Label Security will be evaluated under the ISO/IEC 15408 Common Criteria.  Security evaluations provide an independent security assessment of the security protection mechanisms provided with Oracle9i Label Security.
 

SUMMARY
Oracle9i Label Security is a powerful database technology to control access to critical data.  Based on government classification needs and designed for the commercial e-business market, it provides sophisticated and flexible row level database security.
 
 

 
KEY FEATURES
Policy Based Administration
  • Multiple policies per database
  • Multiple policies per table
  • Each policy has its own set of sensitivity labels
  • Enforcement options can be customized on a per policy basis 
  • SQL predicate option per policy
  • Label function option per policy
  • Policies can be assigned to multiple tables or entire schemes
  • Policies can use standard groups or inverse groups 
Mediate Access Using Sensitivity Labels
  • Create sensitivity labels using levels, compartments and groups
  • Assign user read and write compartments
  • Assign user read and write groups
  • Assign maximum user read level
  • Assign minimum user write level
  • User controlled default session label
  • Define up to 10000 levels
  • Define up to 10000 compartments
  • Define up to 10000 groups
  • Define up to 10000 releasabilities
Special Access Privileges
  • READ
  • FULL
  • PROFILE_ACCESS
  • WRITEUP 
  • WRITEDOWN 
  • WRITEACROSS
Customizable Enforcement Options
  • READ CONTROL 
  • INSERT CONTROL 
  • UPDATE CONTROL 
  • DELETE CONTROL 
  • LABEL CHECK
  • LABEL UPDATE
  • NO CONTROL
Auditing
  • Audit apply and remove policy operations
  • Audit Oracle9i Label Security special access privileges


Oracle9i Policy Manager GUI Administration Tool

  • Create policies
  • Define sensitivity labels
  • Apply policies
  • Set user label authorizations
  • Manage trusted program units
  • Add SQL predicates
  • Add label functions
  • Manage Oracle VPD FGAC policies
  • Manage Oracle VPD application contexts
RELATED PRODUCTS AND SERVICES

Oracle9i Advanced Security Database Option

  • Enterprise user security / LDAP directory integration
  • Single sign-on
  • Network encryption
  • Public Key Infrastructure (PKI)
  • Strong authentication
  • Visit http://oraclestore.oracle.com
GETTING STARTED
Oracle9i Label Security is an add-on option available with the Oracle9i Enterprise Edition.  Oracle9i Policy Manage is installed by default with the Oracle9i Enterprise Edition.

Oracle9i Label Security is not installed by default with the Oracle9i Enterprise Edition.  To install Oracle9i Label Security, start the installer, select the custom installation option and then check the box beside Oracle9i Label Security.

Top of Page |Copyright and Corporate Info
E-mail this page
Printer View Printer View
Oracle Is The Information Company About Oracle | Oracle RSS Feeds | Careers | Contact Us | Site Maps | Legal Notices | Terms of Use | Privacy