Skip Headers

Oracle® Label Security Administrator's Guide
10g Release 1 (10.1)

Part Number B10774-01
Go to Documentation Home
Home
Go to Book List
Book List
Go to Table of Contents
Contents
Go to Index
Index
Go to Master Index
Master Index
Go to Feedback page
Feedback

Go to previous page
Previous
Go to next page
Next
View PDF

3
Understanding Access Controls and Privileges

Chapter 2 introduced the concept of labels (with thei r levels, compartments, and groups) and the basic notion of access control based on the row's data label and the user's label. The pr esent chapter examines the access controls and privileges that determine the type of access users can have to labeled rows.

This chapter contains these sections:

Introducing Access Mediation

Understanding Session Label and Row Label

This section introduces the basic user labels.

The Session Label

Ea ch Oracle Label Security user has a set of authorizations that include:

The administrator also specifies the user's initial session label when setting up these authorizations for the user.

The session label is the particular combination of level, compartments, and group s at which a user works at any given time. The user can change the session label to any combination of components for which he is aut horized.

See Also: < a name="1010821">

Changing Your Session and Row Labels with SA_SESSION

The Row Label

When a user writes data without specifying its label, a row label is assigned automatically, using the user's session lab el. However, the user can set the label for the written row, within certain restrictions on the components of the label he specifies.

The level of this label can be set to any level within the range specified by the administ rator. For example, it can be set to the level of the user's current session label down to the user's minimum level. However, the com partments and groups for this row's new label are more restricted. The new label can include only those compartments and groups conta ined in the current session label and, among those, only the ones for which the user has write access.

When the administrator sets up the user authorizations, he or she also specifies an initial default row label.

See Also:

Session La bel Example

The session label and the row label can fall anywhere wi thin the range of the user's level, compartment, and group authorizations. In Figure 3-2, the user's maximum level is SENSITIVE, and his minimum level is UNCLASSIFIED. However, his default session label is C:FIN,OP:WR. In this example, the administrator has set the user's session label so that the user connects to the database at the CONFIDENTIAL level.

Similarly, even though the user is authorized for compartments FIN and OP, and group WR, the ad ministrator could set the session label so that the user connects with only compartment FIN, and group WR.

See Also:

Figure 3-2 User Session Label

Text desc
ription of olsag012.gif follows

Text description of the illustration olsag012.gif

< a name="1007441">

Understanding User Authorizations

There are two types of user authorizations:

Authorizations Set by the Administrator

The administrator explicitly sets a number of user authorizations:

Authorized Levels

The administrator explicitly sets the following level authorizations:

Table 3-1 Authorized Levels Se t by the Administrator
Authorization Meaning

User Max Level

The maximum ranking of sensitivity that a user can access during read and write operations

User Min Level

The minimum ranking of s ensitivity that a user can access during write operations. The User Max Level must be equal to or greater than the User Min Level.

User Default Level

The level that is assumed by default when connecting to Oracle9i

User Default Row Level

The level that is used by default whe n inserting data into Oracle9i

For exampl e, in Oracle Policy Manager, the administrator might set the following authorizations:

Figure 3-3 Setting Up Authorized Levels

Text description of olslvl.gif follows

Text description of the illustration olslv l.gif

Authorized Compartments

The administrator specifies the list of com partments that a user can place in her session label. Write access must be explicitly given for each compartment. A user cannot direc tly insert, update, or delete a row that contains a compartment that she does not have authorization to write. For example, in Oracle Policy Manager, the administrator might set the following authorizations:

Figure 3-4 Setting Up Authorized Compartments

Text description of olscmp.gif follows

Text description of the illustration olscmp.gif< /a>

In Figure 3-4, the Row designation indicates whe ther the compartment should be used as part of the default row label for newly inserted data. Note also that the LABEL_DEFAULT policy option must be in effect for this setting to be valid.

Authorized Groups

The administrator specifies the list of groups that a user can place in her session label. Write access must be explicitly given for eac h group listed. For example, in Oracle Policy Manager, the administrator might set the following authorizations:

Figure 3-5 Setting Up Authorized Groups

Text description of olsgrp.gif follows

Text description of the illustration olsgrp.gif

In Figure 3-5, t he Row designation indicates whether the group should be used as part of the default row label for newly inserted data. Note also tha t the LABEL_DEFAULT policy option must be in effect for this setting to be valid.

See Also:

Computed Session Labels

Oracle Label Security automatically computes a number of labels based on the value of the session label. These include:

Table 3-2 Computed Session Labels
Computed La bel Definition

Maximum Read Label

The user's maximum level combined with any combination of compartments and groups for which the user is authorized.

Maximum Write Label

The user's maximum level combined with the compartments and groups for which the user has been granted write access.

Minimum Write Label

The user's minimum level.< /p>

Default Read Lab el

The single default level combined with compartments and groups t hat have been designated as default for the user.

Default Write Label

A subset of t he default read label, containing the compartments and groups to which the user has been granted write access. The level component is equal to the level default in the read label. This label is automatically derived from the read label based on the user's write auth orizations.

Defa ult Row Label

The combination of components between the user's mini mum write label and the maximum write label, which has been designated as the default value for the data label for inserted data.

See Also:

"Computed Labels with Inverse Groups"

Evaluating Labels for Access Mediation

When a table is protected by an Oracle Label Security policy, the user's label components are compa red to the row's label components to determine whether the user can access the data. In this way, Oracle Label Security evaluates whe ther the user is authorized to perform the requested operation on the data in the row. This section explains the rules and options by which user access is mediated. It contains these topics:

Introducing Read/Write Access

Although data labels are stored in a column within data records, information about user authoriza tions is stored in relational tables. When a user logs on, the tables are used to dynamically generate user labels for use during the session.

Difference Between Read and Write Operations

Two fundamental types of access mediation on DML operations exist, within protected tables:

  • Read access
  • Write access

The user has a maximum authorization for the data he or she can read; the user's write authorization is a subset of that. The mini mum write level controls the user's ability to disseminate data by lowering its sensitivity. The user cannot write data with a level lower than the minimum level the administrator assigned to this user.

In addition, there ar e separate lists of compartments and groups for which the user is authorized; that is, for which the user has at least read access. A n access flag indicates whether the user can also write individual compartments or groups.

Propagation of Read/Write Authorizations on Groups< /font>

When groups are organized hierarchically, a user's assigned groups i nclude all subgroups that are subordinate to the group to which she belongs. In this case, the user's read/write authorizations on a parent group flow down to all the subgroups.

Consider the parent group WESTERN_REGION, with three subgroups as illustrated in Figure 3-6. If the user has read access to WESTERN_REGION, she also has read access to the three subgroups. The administrator can give the user write access to subgroup WR_FINANCE, without gra nting her write access to the WESTERN_REGION parent group (or to the other subgroups). On the other hand, if the user has read/write access on WESTERN_REGION, then she also has read/write access on all of the subgroups subordinate to it in the tree.

Write authorization on a group does not give a user write authorization on the parent group. If a user has read-only access to WESTERN_REGION and WR_FINANCE, the administrator can grant her write access to WR_ACCOUNTS_RECEIVABLE, without af fecting her read-only access to the higher-level groups.

Figure 3-6 Subgroup Inheritance of Read/Write Access

Tex
t description of olsag016.gif follows

Text description of the illustration olsag016.gif

See Also:

The Oracle Label Security Algo rithm for Read Access

READ_CONTROL enforcement determines the abilit y to read data in a row. The following rules are used, in the sequence listed, to determine a user's read access to a row of data:

  1. The user's level must be grea ter than or equal to the level of the data.
  2. The user's label must include at least one of the groups that belong to the data (or the parent group of one such subgroup).
  3. < li class="LN1" type="1" value="3">The user's label must include all the compartments th at belong to the data.

If the user's label passes these tests, it is said to "dominat e" the row's label.

Note that there is no notion of read or write access connected with lev els. This is because the administrator specifies a range of levels (minimum to maximum) within which a user can potentially read and write. At any time, the user can read all data equal to or less than her current session level. No privileges (other than FULL) allow the user to write below her minimum authorized level.

The label evaluation process proceed s from levels to groups to compartments, as illustrated in Figure 3-7. Note that if the data l abel is null or invalid, then the user is denied access.

Figure 3-7 Label Evaluation Process for Read Access

Tex
t description of olsag028.gif follows

Text description of the illustration olsag028.gif

As a read access request comes in, Oracle Label Security evaluates each row to determine:< /p>

  1. Is the user's level equal to, or greater than, the level of the data?
  2. If so, does the user have access to at least on e of the groups present in the data label?
  3. If so, does the user have ac cess to all the compartments present in the data label? (That is, are the data's compartments a subset of the user's compartments?)

If the answer is no at any stage in this evaluation process, then Oracle Label Securit y denies access to the row, and moves on to evaluate the next row of data.

Oracle Label Sec urity policies allow user sessions to read rows at their label and below, which is called reading down. Sessi ons cannot read rows at labels that they do not dominate.

For example, if you are logged in at SENSITIVE:ALPHA,BETA, you can read a row labeled SENSITIVE:ALPHA because your label dominates that of the row. However, you canno t read a row labeled SENSITIVE:ALPHA,GAMMA because your label does not dominate that of the row.

Note that the user can gain access to the rows otherwise denied, if she or he possesses special Oracle Label Security privilege s.

See Also:

The Oracle Label Security Algorithm for Write Access

In the context of Oracle Label Security, WRITE_CONTROL enforcement determines the ability to inse rt, update, or delete data in a row.

WRITE_CONTROL enables you to control data access with ever finer granularity. Granularity increases when compartments are added to levels; it increases again when groups are added to comp artments. Access control becomes even more fine grained when you can manage the user's ability to write the data that he can read.

To determine whether a user can write a particular row of data, Oracle Label Security evaluat es the following rules, in the order given:

  1. Th e level in the data label must be greater than or equal to the user's minimum level and less than or equal to the user's session leve l.
  2. When groups are present, the user's label must include at least one of the groups with write access that appear in the data label (or the parent of one such subgroup). In additi on, the user's label must include all the compartments in the data label.
  3. When no groups are present, the user's label must have write access on all of the compa rtments in the data label.

To state tests 2 and 3 another way:

  • If the label has no groups, then the user must have wri te access on all the compartments in the label, in order to write the data.
  • If the label does have groups, and the user has write access to one of the groups, she only needs read access t o the compartments, in order to write the data.

Just as with read operations, the lab el evaluation process proceeds from levels to groups to compartments. Note that the user cannot write any data below her authorized m inimum level, nor above her current session level. The user can always read below her minimum level.

The following figure illustrates how the process works with INSERT, UPDATE, and DELETE operations. Note that if the data la bel is null or invalid, then the user is denied access.

Figure 3-8 Label Evaluation Process for Write Access

Tex
t description of olsag030.gif follows

Text description of the illustration olsag030.gif

As an access request comes in, Oracle Label Security evaluates each row to determine:

  1. Is the data's level equal to, or less than, the le vel of the user?
  2. Is the data's level equal to, or greater than, the use r's minimum level?
  3. If the data's level falls within the foregoing bound s, does the user have write access to at least one of the groups present in the data label?
  4. < a name="1007800">If so, does the user have access to all the compartments with at least read access that are present in the data label?
  5. If there are no groups, but there are compartments, then does th e user have write access to all of the compartments?

If the answer is no at any stage in this evaluation process, then Oracle Label Security denies access to the row, and moves on to evaluate the next row of data.

Consider a situation in which your session label is S:ALPHA,BETA but you only have write access to compartment ALPHA. In this case you can read a row with the label S:ALPHA,BETA, but you cannot update it.

< /a>

In summary, write access is enforced on INSERT, UPDATE and DELETE operations upon the data in the row.

In addition, each user may have an associated minimum level below which she cannot write. She cannot u pdate or delete any rows labeled with levels below her minimum, nor can she insert a row with a row label containing a level less tha n her minimum.

See Also:

Using Or acle Label Security Privileges

This sectio n introduces the Oracle Label Security database and row label privileges:

Privileges Defined by Oracle Label Security Policies < a name="OLSAG03003">

Oracle Label Security supports special priv ileges that allow authorized users to bypass certain parts of the policy. Table  3-3 summarizes the full set of privileges that can be granted to users or trusted stored program units. Each privilege is m ore fully discussed after the table.

Table 3-3 Oracle Label Security Privileges
< td class="Formal">

READ

PROFILE_ACCESS

Security Privilege Explanation

Allows read access to all data protected by the policy

FULL

Allows full read and write ac cess to all data protected by the policy

COMPACCESS

Allows a session access to data authorized by the row's compartments, independent of the row's groups

Allows a session to change its labels and privileges to those of a different user

WRITEUP

Allows users to set or raise only the level, within a row label, up to the maximum level authorized for the user. (Active o nly if LABEL_UPDATE is active.)

WRITEDOWN

Allows users to set or lower the level, w ithin a row label, to any level equal to or greater than the minimum level authorized for the user. (Active only if LABEL_UPDATE is a ctive.)

WRITEACR OSS

Allows a user to set or change groups and compartments of a row label, but does not allow changes to the level. (Active only if LABEL_UPDATE is active.)

Special Access Privileges

A user's authorizations can be modified wi th any of four privileges:

READ

A user with READ privilege can read all data protected by the policy, regardless of his authorizations or session label. The user does not even need to have label authorizations. Note, in addition, that a user with READ privilege can write to any data rows for which he or she has write access, based on any label authorizations.

This privilege is useful for system administrators who need to export data, but who should not be allowed to change d ata. It is also useful for people who must run reports and compile information, but not change data. The READ privilege enables optim al performance on SELECTs, since the system behaves as though the Oracle Label Security policy were not even present.

FULL

The FULL privilege has the same effect and benefits as the READ privilege, with one dif ference: a user with FULL privilege can also write to all the data. For a user with the FULL privilege, the R EAD and WRITE algorithms are not enforced.

Note that Oracle SYSTEM and OBJECT authorization s are still enforced. For example, a user must still have SELECT on the application table. The FULL authorization turns off the acces s mediation check at the individual row level.

COMPACCESS

The COMPACCESS priv ilege allows a user to access data based on the row label's compartments, independent of the row label's groups. If a row label has n o compartments, then access is determined by the group authorizations. However, when compartments do exist, and access to them is aut horized, then the group authorization is bypassed. This allows a privileged user whose label matches all the compartments of the data to access any data in any particular compartment, independent of what groups may own or otherwise be allowed access to the data.

Figure 3-9 shows the label evaluation process for read access with COMPACCESS privilege. Note that if the data label is null or invalid, then the user is denied access.

Figure 3-9 Label Evaluation Process for Read Access with COMPA CCESS Privilege

Text description of olsag029.gif follows

Text description of the illustration olsag029.gif

Figure 3-10 shows the label evaluation process for write access with COMPACCESS privilege. Note that if the data label is null or invalid, then the user is denied access.

Figure 3-10 Label Evaluation Process for Write Access with COMPACCESS Privilege

Text description of olsag027.gif follows

Text descrip tion of the illustration olsag027.gif

PROFILE_ACCESS

The PROFILE_ACCESS p rivilege allows a session to change its session labels and session privileges to those of a different user. This is a very powerful p rivilege, since the user can potentially become a user with FULL privileges. This privilege cannot be granted to a trusted stored pro gram unit.

Special Row Label Privileges

Once the la bel on a row has been set, Oracle Label Security privileges are required to modify the label. These privileges include WRITEUP, WRITE DOWN, and WRITEACROSS.

Note that the LABEL_UPDATE enforcement option must be on for these l abel modification privileges to be enforced. When a user updates a row label, the new label and old label are compared, and the requi red privileges are determined.

WRITEUP

The WRITEUP privilege enables the user to raise the level of data within a row, without compromising the compartments or groups. The user can raise the level up to his or her maximum authorized level.

For example, an authorized user can raise the level of a data row that has a level lower than his own minimum level. If a row is UNCLASSIFIED and the user's maximum level is SENSITIVE, he can ra ise the row's level to SENSITIVE. He can raise the level above his current session level, but cannot change the compartments.

WRITEDOWN

The WRITEDOWN privilege enables the user to lower the level of data within a row, without compromising the compartments or groups. The user can lower the level to any level equal to or greater than his or he r minimum authorized level.

WRITEACROSS

The WRITEACROSS privilege allows the user to change the compartments and groups of data, without altering its sensitivity level. This guarantees, for example, that SENSIT IVE data remains at the SENSITIVE level, but at the same time enables the data's dissemination to be managed.

< /a>

It lets the user change compartments and groups to anything that is currently defined as a valid compartment or gr oup within the policy, while maintaining the level. With the WRITEACROSS privilege, a user with read access to one group (or more) ca n write to a different group without explicitly being given access to it.

System Privileges, Object Privileges, and Policy Privileges

Remember that Oracle Label Security privileges are different from the standa rd Oracle9i system and object privileges.

Table 3-4 Types of Privilege
Source Privileges Definition

Oracle9i

System Privileges

The right to execute a particular type of SQL statement

 

Object Pr ivileges

The right to access another user's object

Oracle Label Security

< td class="Formal">

Policy Privileges

The ability to bypass certain parts of the label security policy

Oracle9i enforces the discretionary access control privileges that a user has been granted. By default, a user has no privileges except those granted to the PUBLIC user group. A user must explicitly be granted t he appropriate privilege to perform an operation.

For example, to read an object in Oracle9 i, you must either be the object's owner, or be granted the SELECT privilege on the object, or be granted the SELECT ANY TABLE system privilege. Similarly, to update an object, you must either be the object's owner, or be granted the UPDATE p rivilege on the object, or be granted the UPDATE ANY TABLE privilege.

See Also:

For more information about which Or acle9i privileges are required to perform a certain operation, and how to grant and revoke these discretionar y access control privileges, see Oracle Database Administrator's Guide.

Access Mediation and Views

Prior to accessing data through a view, end users must have the appropriate system and object privileges on the view. If the un derlying table (upon which the view is based) is protected by Oracle Label Security, then the end user of the view must have authoriz ation from Oracle Label Security to access specific rows of labeled data.

Access Mediation and Program Unit Execution

Access Mediation and Policy Enforcement Options

An administrator can choose among a set of policy enforcement options when applying an Oracle Label Security policy to individual tables. These options enable enforcement to be tailored differently for each database table. In addition to the access controls based on the labels, a SQL predicate can also be associated with ea ch table. The predicate can further define which rows in the table are accessible to the user. Policy enforcement options and predica tes are discussed in Chapter 8, "Implementing Policy Enforcement Options and Labeling Functions".

In cases where the label to be associated with a new or updated row should be automatic ally computed, an administrator can specify a labeling function when applying the policy. That function will thereafter always be invoked to provide the data labels written under that policy, because active labeling functions take precedence over any alternative means of supplying a label.

Except where noted, this guide assumes tha t all enforcement options are in effect.

Working with Multiple Oracle Label Security Policies

This section describes aspects of using multiple policies.

Multiple Oracle Label Security Policies in a Single Database

Several Oracle Label Security policie s may be protecting data in a single database. Each defined policy is associated with a set of labels used only by that policy. Data labels are constrained by the set of defined labels for each policy.

Each policy may protec t a different table, but multiple policies can also apply to a single table. To access data, you must have label authorizations for a ll policies protecting that data. To access any particular row, you must be authorized by all policies protec ting the table containing your desired rows. If you require privileges, then you may need privileges for all of the policies affectin g your work.

Multiple Oracle Label Security Policies in a Distributed Environment

If you work in a distributed environment, where multiple databases may be protected by the same or different Oracle Label Securi ty policies, your remote connections will also be controlled by Oracle Label Security.