2263 lines
88 KiB
Plaintext
2263 lines
88 KiB
Plaintext
|
NCSC TECHNICAL REPORT - 005
|
|||
|
|
|||
|
Volume 2/5
|
|||
|
|
|||
|
Library No. S-243,039
|
|||
|
|
|||
|
FOREWARD
|
|||
|
|
|||
|
This report is the second of five companion documents to the Trusted Database Management
|
|||
|
System Interpretation of the Trusted Computer System Evaluation Criteria. The companion
|
|||
|
documents address topics that are important to the design and development of secure database
|
|||
|
management systems, and are written for database vendors, system designers, evaluators, and
|
|||
|
researchers. This report addresses entity and referential integrity issues in multilevel secure
|
|||
|
database management systems.
|
|||
|
|
|||
|
ACKNOWLEDGMENTS
|
|||
|
|
|||
|
The National Computer Security Center extends special recognition to the authors of this
|
|||
|
document. The initial version was written by Vinti Doshi and Sushil Jajodia of the MITRE
|
|||
|
Corporation. The final version was written by Bill Wilson and Stan Wisseman of Arca Systems,
|
|||
|
Inc.
|
|||
|
|
|||
|
The documents in this series were produced under the guidance of Shawn P. O'Brien of the
|
|||
|
National Security Agency, LouAnna Notargiacomo and Barbara Blaustein of the MITRE
|
|||
|
Corporation, and David Wichers of Arca Systems, Inc.
|
|||
|
|
|||
|
We wish to thank the members of the information security community who enthusiastically gave
|
|||
|
of their time and technical expertise in reviewing these documents and in providing valuable
|
|||
|
comments and suggestions.
|
|||
|
|
|||
|
TABLE OF CONTENTS
|
|||
|
|
|||
|
SECTION PAGE
|
|||
|
|
|||
|
1.0 INTRODUCTION 1
|
|||
|
|
|||
|
1.1 BACKGROUND AND PURPOSE 1
|
|||
|
|
|||
|
1.2 SCOPE 1
|
|||
|
|
|||
|
1.3 INTRODUCTION TO ENTITY AND REFERENTIAL INTEGRITY 2
|
|||
|
|
|||
|
1.4 AUDIENCES OF THIS DOCUMENT 3
|
|||
|
|
|||
|
1.5 ORGANIZATION OF THIS DOCUMENT 4
|
|||
|
|
|||
|
2.0 BACKGROUND 5
|
|||
|
|
|||
|
2.1 BASIC CONCEPTS OF ENTITY AND REFERENTIAL INTEGRITY 6
|
|||
|
|
|||
|
2.2 REFERENTIAL INTEGRITY RULES 10
|
|||
|
|
|||
|
2.2.1 DELETE 10
|
|||
|
|
|||
|
2.2.2 UPDATE of Referenced Relation 13
|
|||
|
|
|||
|
2.2.3 NSERT or UPDATE of Referencing Relation 17
|
|||
|
|
|||
|
2.2.4 Additional Rules 17
|
|||
|
|
|||
|
2.3 PROBLEMS WITH REFERENTIAL INTEGRITY CONSTRAINTS 17
|
|||
|
|
|||
|
3.0 ENTITY AND REFERENTIAL INTEGRITY IN MLS DATABASES 18
|
|||
|
|
|||
|
3.1 RELATED TCSEC REQUIREMENTS 18
|
|||
|
|
|||
|
3.2 BASIC CONCEPTS IN MULTILEVEL RELATIONS 19
|
|||
|
|
|||
|
3.3 THE CONCEPT OF PRIMARY KEY IN MULTILEVEL RELATIONS 21
|
|||
|
|
|||
|
3.4 ENTITY INTEGRITY IN MULTILEVEL RELATIONS 21
|
|||
|
|
|||
|
3.5 REFERENTIAL INTEGRITY IN MULTILEVEL RELATIONS 22
|
|||
|
|
|||
|
3.6 ENFORCEMENT OF INTEGRITY CONSTRAINTS 25
|
|||
|
|
|||
|
4.0 COVERT CHANNELS 27
|
|||
|
|
|||
|
4.1 PRIMARY KEY UNIQUENESS 27
|
|||
|
|
|||
|
4.2 ENFORCEMENT OF REFERENTIAL INTEGRITY RULES 28
|
|||
|
|
|||
|
4.2.1 Enforcement of Integrity Rules When C[FK] = C[PK] 29
|
|||
|
|
|||
|
4.2.2 Enforcement of Integrity Rules When C[FK] > C[PK] 30
|
|||
|
|
|||
|
4.3 RELATION TO DBMS ARCHITECTURE 36
|
|||
|
|
|||
|
5.0 SUMMARY 38
|
|||
|
|
|||
|
REFERENCES 39
|
|||
|
|
|||
|
LIST OF FIGURES
|
|||
|
|
|||
|
FIGURE PAGE
|
|||
|
|
|||
|
2.1: RELATION SOD 6
|
|||
|
|
|||
|
2.2: RELATION PS 8
|
|||
|
|
|||
|
2.3: REFERENTIAL CONSTRAINTS IN RELATIONS PR, PS, AND SOD 9
|
|||
|
|
|||
|
2.4: RELATIONS SOD AND PS AFTER STARSHIP = "APOLLO" IS DELETED
|
|||
|
UNDER THE CASCADES-DELETE RULE 11
|
|||
|
|
|||
|
2.5: RELATIONS SOD AND PS AFTER STARSHIP = "APOLLO" IS
|
|||
|
DELETED UNDER THE NULLIFIES-DELETE RULE 12
|
|||
|
|
|||
|
2.6: RELATIONS SOD AND PS AFTER STARSHIP = "ENTERPRISE" IS
|
|||
|
UPDATED TO THE VALUE "USS ENTERPRISE"
|
|||
|
UNDER THE CASCADES-UPDATE RULE 15
|
|||
|
|
|||
|
2.7: RELATIONS SOD AND PS AFTER STARSHIP = "ENTERPRISE" IS
|
|||
|
UPDATED TO THE VALUE "USS ENTERPRISE" UNDER THE
|
|||
|
NULLIFIES-UPDATE RULE 16
|
|||
|
|
|||
|
3.1: DIFFERENT SOD VIEWS BASED ON ACCESS CLASS 21
|
|||
|
|
|||
|
3.2: TYPICAL RELATION INSTANCES FOR SOD AND PS 23
|
|||
|
|
|||
|
3.3: UNCLASSIFIED INSTANCES OF PS AND SOD RELATIONS 24
|
|||
|
|
|||
|
4.1: SOD AFTER INSERTION OF TUPLE CORRESPONDING TO
|
|||
|
STARSHIP = "VOYAGER" BY UNCLASSIFIED USER 28
|
|||
|
|
|||
|
4.2: RELATION PS AND SOD WHEN C[FK] = C[PK] 30
|
|||
|
|
|||
|
4.3: RELATIONS SOD AND PS WITHOUT POLYINSTANTIATION 32
|
|||
|
|
|||
|
4.4: RELATIONS WITH TUPLE-LEVEL GRANULARITY 34
|
|||
|
|
|||
|
4.5: RELATIONS WITH ATTRIBUTE-LEVEL GRANULARITY 35
|
|||
|
|
|||
|
LIST OF TABLES
|
|||
|
|
|||
|
TABLE PAGE
|
|||
|
|
|||
|
4.1: SUMMARY OF COVERT CHANNELS IN REFERENTIAL INTEGRITY
|
|||
|
RULES 36
|
|||
|
|
|||
|
SECTION 1
|
|||
|
|
|||
|
INTRODUCTION
|
|||
|
|
|||
|
This document is the second volume in the series of companion documents to the Trusted Database
|
|||
|
Management System Interpretation of the Trusted Computer System Evaluation Criteria [TDI 91;
|
|||
|
DoD 85]. This document examines entity and referential integrity issues in multilevel secure
|
|||
|
(MLS) database management systems and summarizes the research to date in these areas.
|
|||
|
|
|||
|
1.1 BACKGROUND AND PURPOSE
|
|||
|
|
|||
|
In 1991 the National Computer Security Center published the Trusted Database Management
|
|||
|
System Interpretation (TDI) of the Trusted Computer System Evaluation Criteria (TCSEC). The
|
|||
|
TDI, however, does not address many topics that are important to the design and development of
|
|||
|
secure database management systems (DBMSs). These topics (such as inference, aggregation, and
|
|||
|
database integrity) are being addressed by ongoing research and development. Since specific
|
|||
|
techniques in these topic areas had not yet gained broad acceptance, the topics were considered
|
|||
|
inappropriate for inclusion in the TDI.
|
|||
|
|
|||
|
The TDI is being supplemented by a series of companion documents to address these issues
|
|||
|
specific to secure DBMSs. Each companion document focuses on one topic by describing the
|
|||
|
problem, discussing the issues, and summarizing the research that has been done to date. The intent
|
|||
|
of the series is to make it clear to DBMS vendors, system designers, evaluators, and researchers
|
|||
|
what the issues are, the current approaches, their pros and cons, how they relate to a TCSEC/TDI
|
|||
|
evaluation, and what specific areas require additional research. Although some guidance may be
|
|||
|
presented, nothing contained within these documents should be interpreted as criteria.
|
|||
|
|
|||
|
These documents assume the reader understands basic DBMS concepts and relational database
|
|||
|
terminology. A security background sufficient to use the TDI and TCSEC is also assumed;
|
|||
|
however, fundamentals are discussed whenever a common understanding is important to the
|
|||
|
discussion.
|
|||
|
|
|||
|
1.2 SCOPE
|
|||
|
|
|||
|
This document addresses entity and referential integrity issues in multilevel secure DBMSs. It is
|
|||
|
the second of five volumes in the series of TDI companion documents, which includes the
|
|||
|
following documents:
|
|||
|
|
|||
|
<EFBFBD> Inference and Aggregation Issues in Secure Database Management Systems [Inference
|
|||
|
96]
|
|||
|
|
|||
|
<EFBFBD> Entity and Referential Integrity Issues in Multilevel Secure Database Management
|
|||
|
Systems
|
|||
|
|
|||
|
<EFBFBD> Polyinstantiation Issues in Multilevel Secure Database Management Systems [Poly 96]
|
|||
|
|
|||
|
<EFBFBD> Auditing Issues in Secure Database Management Systems [Audit 96]
|
|||
|
|
|||
|
<EFBFBD> Discretionary Access Control Issues in High Assurance Secure Database Management
|
|||
|
Systems [DAC 96]
|
|||
|
|
|||
|
This series of documents uses terminology from the relational model to provide a common basis
|
|||
|
for understanding the concepts presented. For most of the topics covered in this series the concepts
|
|||
|
presented should apply to most database modeling paradigms, depending on the specifics of each
|
|||
|
model. For the entity and referential integrity constraints discussed in this document, however,
|
|||
|
there are important differences between different models. This is because the primary keys in a
|
|||
|
relational DBMS represent both unique identifiers for tuples and values of attributes in the tuple.
|
|||
|
They must be protected in accordance with the sensitivity of the data they represent and this can
|
|||
|
interfere with their role as a unique identifier of tuples. By contrast, the object identifier (OID) in
|
|||
|
an Object-Oriented DBMS is not a property or attribute of the object it identifies, and does not
|
|||
|
represent a user-visible data value. Khoshafian and Copeland provide a useful taxonomy of
|
|||
|
different ways of specifying object identity including the techniques used in relational and Object-
|
|||
|
Oriented DBMSs [Khoshafian 86]. Similarly, in a relational DBMS, foreign keys represent data
|
|||
|
values and serve as pointers to other tuples. In an Object-Oriented DBMS, pointers to other objects
|
|||
|
are not used to store data values, but rather to represent the inclusion of one object within another.
|
|||
|
As in relational databases, problems may occur if a reference is deleted and some references remain
|
|||
|
in objects. The implications of these distinctions for enforcement of secrecy in an Object-Oriented
|
|||
|
DBMS require further research. This document specifically addresses relational DBMSs.
|
|||
|
|
|||
|
This document is related to the companion documents Inference and Aggregation Issues in Secure
|
|||
|
Database Management Systems and Polyinstantiation Issues in Multilevel Secure Database
|
|||
|
Management Systems. Much of the discussion of the relationship between enforcement of integrity
|
|||
|
constraints and multilevel security centers on the potential inference channels which integrity
|
|||
|
constraints can introduce. One way to avoid these channels for entity integrity is to use
|
|||
|
polyinstantiation. This is discussed later in more detail.
|
|||
|
|
|||
|
1.3 INTRODUCTION TO ENTITY AND REFERENTIAL INTEGRITY
|
|||
|
|
|||
|
Secrecy and integrity are two key concepts in the community of database security researchers and
|
|||
|
users. Secrecy refers to the protection or safety of the data against unauthorized disclosure, and
|
|||
|
integrity refers to the unauthorized alteration or destruction of data. In the wider database research
|
|||
|
community, integrity refers more generally to the correctness, accuracy, and internal consistency
|
|||
|
of data.
|
|||
|
|
|||
|
Preserving the accuracy of information is extremely important rn any database. In the relational
|
|||
|
model, one way in which accuracy of information is preserved is by preventing updates that violate
|
|||
|
integrity constraints. Entity integrity and referential integrity are two of the most important
|
|||
|
integrity constraints. They are defined on relations and are enforced by the DBMS.
|
|||
|
|
|||
|
Entity integrity states that no primary key attribute of a relation is allowed to have null values. In
|
|||
|
addition, the primary key must have a unique value. These properties of a primary key correspond
|
|||
|
to the fact that entities in the real world are distinguishable (i.e., they have a unique identification
|
|||
|
of some kind). In the relational model, the primary key performs the function of unique
|
|||
|
identification. Referential integrity is an interrelation integrity constraint. In general, referential
|
|||
|
integrity defines existence relationships between entities in a database that need to be maintained
|
|||
|
by the DBMS. This document defines these integrity constraints formally and presents their
|
|||
|
importance in the context of security in detail.
|
|||
|
|
|||
|
In multilevel applications, data are classified to control disclosure. It is important to realize the
|
|||
|
necessary trade-off to be made between secrecy and integrity because of the challenges in
|
|||
|
enforcing integrity constraints across multiple secrecy levels without disclosure of information.
|
|||
|
This document defines entity and referential integrity for a standard relational DBMS and then
|
|||
|
presents methods for resolving the inherent integrity/secrecy conflict in an MLS environment.
|
|||
|
|
|||
|
1.4 AUDIENCES OF THIS DOCUMENT
|
|||
|
|
|||
|
This document is targeted at four primary audiences: the security research community, database
|
|||
|
application developers/system integrators, trusted product vendors, and product evaluators. In
|
|||
|
general, this document is intended to present a framework for understanding the nature of entity
|
|||
|
and referential integrity policies or requirements and how they conflict with the need to enforce an
|
|||
|
access control policy. This framework is used to describe the research that has been done to date
|
|||
|
and the approaches they present for providing solutions. Each of the specific audiences should
|
|||
|
expect to get the following from this document:
|
|||
|
|
|||
|
Researcher
|
|||
|
|
|||
|
This document describes the basic problems in simultaneously enforcing integrity constraints and
|
|||
|
MAC. Some important research contributions are discussed as various topics are covered. Related
|
|||
|
research on other aspects of integrity and the relationship to secrecy is discussed in Section 3.6.
|
|||
|
For additional relevant work, the researcher should consult two other companion documents,
|
|||
|
Inference and Aggregation Issues in Secure Database Management Systems [Inference 96] and
|
|||
|
Polyinstantiation Issues in Multilevel Secure Database Management Systems [Poly 96].
|
|||
|
|
|||
|
Database Application Developer/System Integrator
|
|||
|
|
|||
|
This document describes various entity and referential integrity facilities which could be provided
|
|||
|
by an MLS DBMS. It discusses the implications of these facilities relative to the tradeoffs involved
|
|||
|
in meeting a system's requirements for secrecy and integrity.
|
|||
|
|
|||
|
Trusted Product Vendor
|
|||
|
|
|||
|
This document describes the conflicts between Mandatory Access Controls (MAC) and multilevel
|
|||
|
entity and referential integrity constraints. It then discusses approaches to entity and referential
|
|||
|
integrity enforcement in an MLS database and the benefits and drawbacks of these approaches. In
|
|||
|
particular, it considers how the issues with enforcement of entity and referential integrity
|
|||
|
constraints in an MLS database relate to the TCSEC access control and covert channel
|
|||
|
requirements. This is discussed in the context of tuple level as well as element level labeling. This
|
|||
|
document will provide a framework for understanding specific requirements interpretations as they
|
|||
|
are developed by the National Computer Security Center.
|
|||
|
|
|||
|
Evaluator
|
|||
|
|
|||
|
This document describes access control and covert channel issues related to entity and referential
|
|||
|
integrity. It provides a framework for analyzing specific vendor mechanisms and understanding
|
|||
|
Technical Review Board/Interpretations Working Group decisions.
|
|||
|
|
|||
|
1.5 ORGANIZATION OF THIS DOCUMENT
|
|||
|
|
|||
|
The organization of the remainder of this document is as follows:
|
|||
|
|
|||
|
<EFBFBD> Section 2 gives the definitions of entity and referential integrity with respect to single-level
|
|||
|
DBMSs and describes various important concepts related to referential integrity.
|
|||
|
|
|||
|
<EFBFBD> Section 3 defines the basic concepts of entity and referential integrity with respect to
|
|||
|
multilevel relations.
|
|||
|
|
|||
|
<EFBFBD> Section 4 discusses the issues associated with covert channels related to enforcing entity
|
|||
|
and referential integrity constraints.
|
|||
|
|
|||
|
<EFBFBD> Section 5 presents conclusions.
|
|||
|
|
|||
|
SECTION 2
|
|||
|
|
|||
|
BACKGROUND
|
|||
|
|
|||
|
Entity integrity and referential integrity are two basic integrity requirements in a relational DBMS
|
|||
|
(RDBMS). They help prevent incorrect data from being entered into the database. Entity integrity
|
|||
|
guarantees a unique representation of each entity in the database through specification of primary
|
|||
|
key attributes for each relation. Referential integrity assures that if any references exist between
|
|||
|
two or more entities, then the related entities do exist in the database. Referential integrity places
|
|||
|
restrictions on foreign key attributes.
|
|||
|
|
|||
|
Referential integrity is one of the most important interrelation integrity constraints for the
|
|||
|
relational data model. Although its basic concepts have been discussed over the past ten years, a
|
|||
|
successful referential integrity capability for a RDBMS is still a challenging implementation
|
|||
|
problem. While referential integrity appears to be a simple concept, the operational definitions that
|
|||
|
appear in the literature are imprecise and lead to a host of anomalies.
|
|||
|
|
|||
|
A standard relational database can be perceived by its users as a collection of relations. A relation
|
|||
|
has well-defined mathematical properties and is used to store data. Each relation has two parts:
|
|||
|
|
|||
|
1. A state-invariant relation schema R (A1, A2, ..., An), where each Ai is an attribute over
|
|||
|
some domain Di, 1 <20> i <20> n, which is a set of acceptable values for Ai.
|
|||
|
|
|||
|
2. A state-dependent relation R over R, which is a set of distinct tuples of the form (a1, a2...,
|
|||
|
an), where each element ai; is a value in domain di, 1 <20> i <20> n.
|
|||
|
|
|||
|
The following notation and conventions are used throughout this document. In definitions, relation
|
|||
|
schemes are denoted in bold fonts (such as R, R1, R2), and the corresponding relations are denoted
|
|||
|
using plain fonts (such as R, R1, R2). However, when clear in specific examples, the same symbol
|
|||
|
is used to denote the relation schema, as well as the corresponding relation. Let X denote one or
|
|||
|
more attributes of a relation R. If t is a tuple in a relation R, t [X] denotes the projection of t onto X.
|
|||
|
|
|||
|
This section first defines entity and referential integrity, followed by terminology related to these
|
|||
|
concepts. The examples make use of Structured Query Language (SQL) syntax [ANSI 92, 94]. The
|
|||
|
section then gives various rules for enforcing referential integrity and discusses the problems
|
|||
|
associated with referential integrity in single-level relational databases. From this understanding
|
|||
|
of integrity, we can then better discuss the conflict with enforcement of a MAC policy in Section 3.
|
|||
|
|
|||
|
2.1 BASIC CONCEPTS OF ENTITY AND REFERENTIAL INTEGRITY
|
|||
|
|
|||
|
Before defining entity integrity, it is necessary to define the concept of a primary key.
|
|||
|
|
|||
|
In simple terms, the primary key of a relation is just a unique identifier of each tuple in the relation.
|
|||
|
More precisely, a primary key for a relation R is a set of attributes PK with the following
|
|||
|
properties:
|
|||
|
|
|||
|
1. The value of PK uniquely identifies each tuple in the relation R. That is, for any state of
|
|||
|
R, and any tuples t1 and t2, if t1[PK] = t2[PK] then t1 = t2.
|
|||
|
|
|||
|
2. PK is minimal. That is, there is no proper subset of PK satisfying property 1.
|
|||
|
|
|||
|
It is possible there is more than one set of attributes satisfying these properties. Any such set is
|
|||
|
called a candidate key. Precisely one candidate must be chosen and designated as the primary key
|
|||
|
of R.
|
|||
|
|
|||
|
Example 1. Consider the relation schema SOD (Starship, Objective, Destination), which contains
|
|||
|
for each starship its name (Starship), the purpose of the flight (Objective), and its destination
|
|||
|
(Destination). An example relation for relation schema SOD is given in Figure 2.1.
|
|||
|
|
|||
|
STARSHIP
|
|||
|
|
|||
|
OBJECTIVE
|
|||
|
|
|||
|
DESTINATION
|
|||
|
|
|||
|
Enterprise
|
|||
|
|
|||
|
Exploration
|
|||
|
|
|||
|
Talos
|
|||
|
|
|||
|
Voyager
|
|||
|
|
|||
|
Spying
|
|||
|
|
|||
|
Mars
|
|||
|
|
|||
|
Apollo
|
|||
|
|
|||
|
Exploration
|
|||
|
|
|||
|
Moon
|
|||
|
|
|||
|
Saratoga
|
|||
|
|
|||
|
Mining
|
|||
|
|
|||
|
Moon
|
|||
|
|
|||
|
Figure 2.1: Relation SOD
|
|||
|
|
|||
|
Since the attribute Starship uniquely identifies each tuple of the relation SOD, it is a candidate key
|
|||
|
of the relation SOD. As Starship is the only candidate key of the relation SOD, it is also the primary
|
|||
|
key of relation SOD.
|
|||
|
|
|||
|
In SQL syntax, the attribute(s) constituting the primary key can be specified when a relation
|
|||
|
schema is created, as the following shows:
|
|||
|
|
|||
|
CREATE TABLE SOD
|
|||
|
|
|||
|
(Starship CHAR(20) NOT NULL,
|
|||
|
|
|||
|
Objective CHAR(15),
|
|||
|
|
|||
|
Destination CHAR(10),
|
|||
|
|
|||
|
PRIMARY KEY (Starship))
|
|||
|
|
|||
|
Notice that the ANSI syntax uses the term "TABLE" instead of the term "relation" used in this
|
|||
|
document.
|
|||
|
|
|||
|
The entity integrity constraint requires that all attribute values of the primary key be defined for
|
|||
|
each tuple.
|
|||
|
|
|||
|
Entity Integrity: If PK is the primary key for relation R, then for all states of R, for every tuple
|
|||
|
t in R and every attribute A in PK, t[A] is not null.
|
|||
|
|
|||
|
A foreign key provides a basis for a tuple to refer to another tuple. Let R1 and R2 be two relation
|
|||
|
schemas, and let R1 and R2 denote the respective relations corresponding to these schemas.
|
|||
|
|
|||
|
Referential Integrity: Let PK denote the primary key of R2, and let FK denote one or more
|
|||
|
attributes of the relational schema R1. FK is said to be a foreign key of R1 referencing R2 if
|
|||
|
given any tuple t1 in R1, the following two requirements are met:
|
|||
|
|
|||
|
1. t1 [FK] is either wholly null or wholly non-null, and
|
|||
|
|
|||
|
2. Whenever t1[FX] is non-null, there is a tuple t2 in R2 such that t1[FK] = t2[PK].
|
|||
|
|
|||
|
Here R1 is the referencing relation and R2 is the referenced relation. Sometimes PK is referred to
|
|||
|
as the target value of the foreign key FK. Notice that R1 and R2 need not be distinct.
|
|||
|
|
|||
|
Example 2. In addition to the relation schema SOD given in Example 1, consider the relation
|
|||
|
schema PS (Person_Name, Starship), which contains the name of the employee (Person_Name)
|
|||
|
and the name of the ship assigned to the employee (Starship). An example relation for PS is given
|
|||
|
in Figure 2.2.
|
|||
|
|
|||
|
Suppose Person_Name uniquely identifies each employee in the PS relation, then Person_Name
|
|||
|
becomes the primary key for the relation schema PS. If Starship is declared a foreign key for PS
|
|||
|
with the relation schema SOD as the referenced relation, a DBMS that supports referential integrity
|
|||
|
will automatically ensure that whenever an employee is assigned a (non-null) ship, there is a
|
|||
|
matching tuple in the relation schema SOD with an identical value for the attribute Starship.
|
|||
|
|
|||
|
Notice that employee Mr. Spock, given in Figure 2.2, has not been assigned any starship. It seems
|
|||
|
from the definition of the PS relation that nulls are allowed. In some applications it may be
|
|||
|
desirable to prohibit this situation (i.e., every employee must be assigned a starship). The
|
|||
|
referencing relation's schema definition can specify whether or not the foreign key attribute can
|
|||
|
assume a null value.
|
|||
|
|
|||
|
Using SQL syntax, foreign keys can be specified as follows:
|
|||
|
|
|||
|
CREATE TABLE PS
|
|||
|
|
|||
|
Person_Name CHAR(15) NOT NULL,
|
|||
|
|
|||
|
Starship CHAR(20),
|
|||
|
|
|||
|
PRIMARY KEY (Person_Name),
|
|||
|
|
|||
|
FOREIGN KEY (Starship) REFERENCES SOD (Starship)).
|
|||
|
|
|||
|
PERSON_NAME
|
|||
|
|
|||
|
STARSHIP
|
|||
|
|
|||
|
James Kirk
|
|||
|
|
|||
|
Enterprise
|
|||
|
|
|||
|
Mr. Spock
|
|||
|
|
|||
|
<null>
|
|||
|
|
|||
|
Tim McKelley
|
|||
|
|
|||
|
Apollo
|
|||
|
|
|||
|
Figure 2.2: Relation PS
|
|||
|
|
|||
|
It follows from the definition of the foreign key that there is an identical matching primary key
|
|||
|
value in the referenced relation for every foreign key value in the referencing relation. It is
|
|||
|
important to maintain the integrity between the referencing values (foreign key values) and the
|
|||
|
referenced values (primary key values).
|
|||
|
|
|||
|
Example 3. Consider the relation schema PR (Person_Name, Rank), which contains the employee
|
|||
|
name (Person_Name) and the rank of the employee (Rank). Person_Name is the primary key for
|
|||
|
the relation schema. Person_Name is also the foreign key referring to relation schema PS.
|
|||
|
|
|||
|
The relation schema PR can be expressed in SQL as follows:
|
|||
|
|
|||
|
CREATE TABLE PR
|
|||
|
|
|||
|
(Person_Name CHAR(20) NOT NULL,
|
|||
|
|
|||
|
Rank CHAR(15),
|
|||
|
|
|||
|
PRIMARY KEY (Person_Name),
|
|||
|
|
|||
|
FOREIGN KEY (Person_Name) REFERENCES PS (Person Name))
|
|||
|
|
|||
|
Here, the relation schema PR references the relation schema PS given in Example 2. In addition,
|
|||
|
the relation schema PS in Example 2 references the relation schema SOD. Since there is a
|
|||
|
referential constraint from PR to PS, and also from PS to SOD, relation schema PS becomes both
|
|||
|
a referencing relation and a referenced relation, see Figure 2.3.
|
|||
|
|
|||
|
Figure 2.3: Referential Constraints in Relations PR, PS, and SOD
|
|||
|
|
|||
|
This can be depicted as a referential path from PR to SOD as follows:
|
|||
|
|
|||
|
PR > PS > SOD
|
|||
|
|
|||
|
Referential Cycles: Closed referential paths, or referential paths that point back to the starting
|
|||
|
relation, are referred to as referential cycles. In general, the referential cycle including n
|
|||
|
relations (where n > 1) can be represented as follows [Date 86, 90]:
|
|||
|
|
|||
|
Rn > Rn-1 > Rn-2 > ... > R2 > R1 > Rn.
|
|||
|
|
|||
|
Referential cycles are of interest since they can cause insertion problems. In the presence of
|
|||
|
referential cycles, it is necessary that one of the following constraints be true; otherwise, it is
|
|||
|
impossible to insert the first tuple in any or each of the relations:
|
|||
|
|
|||
|
1. One of the foreign keys in the referential cycle must be allowed to have a null value, or
|
|||
|
|
|||
|
2. The constraint check should be done only at the end-of-transaction (i.e., when the
|
|||
|
transaction commits).
|
|||
|
|
|||
|
A self-referencing relation is a special case of a referential cycle that includes exactly one relation:
|
|||
|
a relation can have multiple foreign keys corresponding to different relations.
|
|||
|
|
|||
|
Some important concepts related to the terms defined in this section can be summarized as follows:
|
|||
|
|
|||
|
<EFBFBD> A primary key of a relation cannot have a null value in any tuple within that relation (entity
|
|||
|
integrity) and each primary key must be unique (property of a primary key).
|
|||
|
|
|||
|
<EFBFBD> Foreign keys can have null values. For example, in Figure 2.2 the employee Mr. Spock has
|
|||
|
not been assigned any starship as yet; therefore, the Starship value for Mr. Spock is null.
|
|||
|
(Note: If in a specific instance it is desired to prohibit null values for foreign keys, this can
|
|||
|
be done by using a NOT NULL clause for the attributes in the foreign key when the
|
|||
|
relation is created.)
|
|||
|
|
|||
|
<EFBFBD> For referential integrity, every non-null value of a foreign key must be matched by an
|
|||
|
identical primary key value in the referenced relation. But the converse need not be true;
|
|||
|
for example, starship Saratoga in Figure 2.1 has no employee assigned to it in Figure 2.2.
|
|||
|
|
|||
|
<EFBFBD> A relation can be a referenced relation, as well as a referencing relation.
|
|||
|
|
|||
|
2.2 REFERENTIAL INTEGRITY RULES
|
|||
|
|
|||
|
Whenever two or more relations are related through referential constraints, it is necessary that
|
|||
|
references be kept consistent in the face of insertions, deletions, and updates to these relations. Date
|
|||
|
identifies several actions which can be taken to maintain consistency of references [Date 90].
|
|||
|
Exactly which action is chosen for a particular relation depends on the behavior desired by the
|
|||
|
underlying application. These possible actions are discussed in the following subsections.
|
|||
|
|
|||
|
2.2.1 DELETE
|
|||
|
|
|||
|
When the target of a foreign key is deleted it could result in a dangling reference. Some action is
|
|||
|
needed to make sure this does not happen. Four options that may be specified for the referenced
|
|||
|
relation are RESTRICTED-delete, CASCADES-delete, NULLIFIES-delete, and SET
|
|||
|
DEFALILT-delete. Each of these is explained in turn.
|
|||
|
|
|||
|
RESTRICTED-delete
|
|||
|
|
|||
|
If the RESTRICTED-delete option is specified, the primary key value in the referenced relation
|
|||
|
cannot be deleted as long as there exists at least one matching foreign key value in the referencing
|
|||
|
relation. The deletion of the referenced value is restricted to the case where there is no
|
|||
|
corresponding referencing value in the referencing relation.
|
|||
|
|
|||
|
For instance, suppose an attempt is made to delete the starship Apollo from the relation SOD. Since
|
|||
|
the referencing relation PS refers to the relation SOD through the attribute Starship, under the
|
|||
|
RESTRICTED-delete rule, this deletion cannot be performed as there is a tuple in PS referencing
|
|||
|
starship Apollo. The delete is denied and the two relations would remain unchanged.
|
|||
|
|
|||
|
The syntax for specifying the RESTRICTED-delete rule may be given as follows:
|
|||
|
|
|||
|
CREATE TABLE PS
|
|||
|
|
|||
|
(Person_Name CHAR(20) NOT NULL,
|
|||
|
|
|||
|
Starship CHAR(15),
|
|||
|
|
|||
|
PRIMARY KEY (Person_Name),
|
|||
|
|
|||
|
FOREIGN KEY (Starship) REFERENCES SOD (Starship),
|
|||
|
|
|||
|
ON DELETE RESTRICT)
|
|||
|
|
|||
|
CASCADES-delete
|
|||
|
|
|||
|
Under the CASCADES-delete option, whenever the target tuple of a foreign key is deleted, all
|
|||
|
referencing foreign key tuples are also deleted. In the previous example, if an attempt is made to
|
|||
|
delete the starship Apollo from the relation SOD, the delete would be cascaded to the relation PS
|
|||
|
and the employee tuples referencing the starship Apollo would also be deleted. After such a
|
|||
|
CASCADES-delete operation, the relations SOD and PD would change to the form given in Figure
|
|||
|
2.4.
|
|||
|
|
|||
|
SOD
|
|||
|
|
|||
|
|
|||
|
|
|||
|
STARSHIP
|
|||
|
|
|||
|
OBJECTIVE
|
|||
|
|
|||
|
DESTINATION
|
|||
|
|
|||
|
Enterprise
|
|||
|
|
|||
|
Exploration
|
|||
|
|
|||
|
Talos
|
|||
|
|
|||
|
Voyager
|
|||
|
|
|||
|
Spying
|
|||
|
|
|||
|
Mars
|
|||
|
|
|||
|
Saratoga
|
|||
|
|
|||
|
Mining
|
|||
|
|
|||
|
Rigel
|
|||
|
|
|||
|
PS
|
|||
|
|
|||
|
PERSON_NAME
|
|||
|
|
|||
|
STARSHIP
|
|||
|
|
|||
|
James Kirk
|
|||
|
|
|||
|
Enterprise
|
|||
|
|
|||
|
Mr. Spock
|
|||
|
|
|||
|
<null>
|
|||
|
|
|||
|
Figure 2.4: Relations SOD and PS after Starship = "Apollo" is Deleted under the
|
|||
|
CASCADES-Delete Rule
|
|||
|
|
|||
|
In SQL, the CASCADES-delete rule can be specified as follows:
|
|||
|
|
|||
|
CREATE TABLE PS
|
|||
|
|
|||
|
(Person_Name CHAR(20) NOT NULL,
|
|||
|
|
|||
|
Starship CHAR(15),
|
|||
|
|
|||
|
PRIMARY KEY (Person_Name),
|
|||
|
|
|||
|
FOREIGN KEY (Starship) REFERENCES SOD (Starship),
|
|||
|
|
|||
|
ON DELETE CASCADE)
|
|||
|
|
|||
|
NULLIFIES-delete
|
|||
|
|
|||
|
Whenever the NULLIFIES-delete option is specified for a foreign key, the referencing foreign key
|
|||
|
attribute values will be set to a null value when the tuple containing the referenced value is deleted.
|
|||
|
In the example given earlier, when starship Apollo is deleted, the foreign key value, for all tuples
|
|||
|
referencing Apollo in relation PS, is set to null. The new state of the relations is as shown in Figure
|
|||
|
2.5.
|
|||
|
|
|||
|
SOD
|
|||
|
|
|||
|
|
|||
|
|
|||
|
STARSHIP
|
|||
|
|
|||
|
OBJECTIVE
|
|||
|
|
|||
|
DESTINATION
|
|||
|
|
|||
|
Enterprise
|
|||
|
|
|||
|
Exploration
|
|||
|
|
|||
|
Talos
|
|||
|
|
|||
|
Voyager
|
|||
|
|
|||
|
Spying
|
|||
|
|
|||
|
Mars
|
|||
|
|
|||
|
Saratoga
|
|||
|
|
|||
|
Mining
|
|||
|
|
|||
|
Rigel
|
|||
|
|
|||
|
PS
|
|||
|
|
|||
|
PERSON_NAME
|
|||
|
|
|||
|
STARSHIP
|
|||
|
|
|||
|
James Kirk
|
|||
|
|
|||
|
Enterprise
|
|||
|
|
|||
|
Mr. Spock
|
|||
|
|
|||
|
<null>
|
|||
|
|
|||
|
Tim McKelley
|
|||
|
|
|||
|
<null>
|
|||
|
|
|||
|
Figure 2.5: Relations SOD and PS after Starship = "Apollo" is Deleted under the
|
|||
|
NULLIFIES-Delete Rule
|
|||
|
|
|||
|
Before setting the referencing value to null, it is important to make sure that the relation schema
|
|||
|
allows a null value for the foreign key attribute. Otherwise, there will be a conflict.
|
|||
|
|
|||
|
The NULLIFIES-delete rule can be expressed in SQL as follows:
|
|||
|
|
|||
|
CREATE TABLE PS
|
|||
|
|
|||
|
(Person_Name CHAR(20) NOT NULL,
|
|||
|
|
|||
|
Starship CHAR(15),
|
|||
|
|
|||
|
PRIMARY KEY (Person_Name),
|
|||
|
|
|||
|
FOREIGN KEY (Starship) REFERENCES SOD (Starship),
|
|||
|
|
|||
|
ON DELETE SET NULL)
|
|||
|
|
|||
|
SET DEFAULT-delete
|
|||
|
|
|||
|
The SQL2 [ANSI 92] and SQL3 [ANSI 94] standards provide yet another referential action for the
|
|||
|
delete operation, called SET DEFAULT. This option is similar to the NULLIFIES delete rule
|
|||
|
given above. The only difference is that the SET DEFAULT option contains a default clause that
|
|||
|
specifies the default value for the attribute. The default value may be a null or a non-null value. If
|
|||
|
the referential action specifies the SET DEFAULT option, then each referencing attribute is
|
|||
|
defined by an implicit or explicit default clause. If the default value is null, then SET DEFAULT
|
|||
|
is equivalent to a SET NULL.
|
|||
|
|
|||
|
The SQL syntax for the SET DEFAULT-delete rule is as follows:
|
|||
|
|
|||
|
CREATE TABLE PS
|
|||
|
|
|||
|
(Person_Name CHAR(20) NOT NULL,
|
|||
|
|
|||
|
Starship CHAR(15),
|
|||
|
|
|||
|
PRIMARY KEY (Person_Name),
|
|||
|
|
|||
|
FOREIGN KEY (Starship) REFERENCES SOD (Starship),
|
|||
|
|
|||
|
ON DELETE SET DEFAULT < option>)
|
|||
|
|
|||
|
The default option is specified in the <option> field.
|
|||
|
|
|||
|
2.2.2 UPDATE of Referenced Relation
|
|||
|
|
|||
|
Changing the primary key values in a referenced relation could violate referential integrity unless
|
|||
|
appropriate action is taken. There are different options which can be specified for the referencing
|
|||
|
relation whenever an update is made to the target primary key values of a referenced relation. The
|
|||
|
possible options are RESTRICTED-update, CASCADES-update, NULLIFIES-update, or SET
|
|||
|
DEFAULT-update.
|
|||
|
|
|||
|
RESTRICTED-update
|
|||
|
|
|||
|
Under the RESTRICTED-update option, an update to the target primary key values of a referenced
|
|||
|
relation cannot be made as long as there exists at least one matching foreign key value in the
|
|||
|
referencing relation. The update to the referenced tuple is restricted to the case where there are no
|
|||
|
matching referencing tuples.
|
|||
|
|
|||
|
As an example, suppose an attempt is made to update the name of the starship from Enterprise to
|
|||
|
USS Enterprise in relation SOD shown in Figure 2.1. As there is an employee assigned to the ship,
|
|||
|
the update is rejected. The relations SOD and PS remain unchanged, and look like Figures 2.1 and
|
|||
|
2.2.
|
|||
|
|
|||
|
The syntax for specifying the RESTRICTED-update option may be specified as follows:
|
|||
|
|
|||
|
CREATE TABLE PS
|
|||
|
|
|||
|
(Person_Name CHAR(20) NOT NULL,
|
|||
|
|
|||
|
Starship CHAR(15),
|
|||
|
|
|||
|
PRIMARY KEY (Person_Name),
|
|||
|
|
|||
|
FOREIGN KEY (Starship) REFERENCES SOD (Starship),
|
|||
|
|
|||
|
ON UPDATE RESTRICT)
|
|||
|
|
|||
|
CASCADES-update
|
|||
|
|
|||
|
If the CASCADES-update option is specified for a referencing relation, whenever an update is
|
|||
|
made to the referenced attribute, all changes are cascaded to the matching referencing attributes.
|
|||
|
This means that whenever the target value of a foreign key is modified, all referencing foreign key
|
|||
|
values are also similarly modified. Consider the example where an attempt is made to update the
|
|||
|
name of the starship from Enterprise to USS Enterprise in the relation schema SOD. Under
|
|||
|
CASCADE-update, the update is cascaded to the matching referencing tuples in the relation
|
|||
|
schema PS. For the employee assigned to starship Enterprise, the name is updated to USS
|
|||
|
Enterprise. The new state of the two relations SOD and PS is shown in Figure 2.6.
|
|||
|
|
|||
|
In SQL, the CASCADE-update option can be expressed as follows:
|
|||
|
|
|||
|
CREATE TABLE PS
|
|||
|
|
|||
|
(Person_Name CHAR(20) NOT NULL,
|
|||
|
|
|||
|
Starship CHAR(15),
|
|||
|
|
|||
|
PRIMARY KEY (Person_Name),
|
|||
|
|
|||
|
FOREIGN KEY (Starship) REFERENCES SOD (Starship),
|
|||
|
|
|||
|
ON UPDATE CASCADE)
|
|||
|
|
|||
|
SOD
|
|||
|
|
|||
|
|
|||
|
|
|||
|
STARSHIP
|
|||
|
|
|||
|
OBJECTIVE
|
|||
|
|
|||
|
DESTINATION
|
|||
|
|
|||
|
USS Enterprise
|
|||
|
|
|||
|
Exploration
|
|||
|
|
|||
|
Talos
|
|||
|
|
|||
|
Voyager
|
|||
|
|
|||
|
Spying
|
|||
|
|
|||
|
Mars
|
|||
|
|
|||
|
Apollo
|
|||
|
|
|||
|
Exploration
|
|||
|
|
|||
|
Moon
|
|||
|
|
|||
|
Saratoga
|
|||
|
|
|||
|
Mining
|
|||
|
|
|||
|
Rigel
|
|||
|
|
|||
|
PS
|
|||
|
|
|||
|
PERSON_NAME
|
|||
|
|
|||
|
STARSHIP
|
|||
|
|
|||
|
James Kirk
|
|||
|
|
|||
|
USS Enterprise
|
|||
|
|
|||
|
Mr. Spock
|
|||
|
|
|||
|
Null
|
|||
|
|
|||
|
Tim McKelley
|
|||
|
|
|||
|
Apollo
|
|||
|
|
|||
|
Figure 2.6: Relations SOD and PS after Starship = "Enterprise" is Updated to the Value
|
|||
|
"USS Enterprise" under the CASCADES-Update Rule
|
|||
|
|
|||
|
NULLIFIES-update
|
|||
|
|
|||
|
Under the NULLIFIES-update option, the referencing foreign key attribute values are set to null
|
|||
|
whenever the target primary key values in the referenced relation are updated. In the example given
|
|||
|
earlier, when the name of the starship is updated from Enterprise to USS Enterprise, the Starship
|
|||
|
for the employee assigned to Enterprise is set to null. The new state of the relations is shown in
|
|||
|
Figure 2.7.
|
|||
|
|
|||
|
Before setting the referencing value to null, it is important to make sure that the schema definition
|
|||
|
allows a null value for the foreign key attribute. If the nulls rule does not allow a null value, then
|
|||
|
there will be a conflict between the two integrity rules.
|
|||
|
|
|||
|
The NULLIFIES-update rule is expressed in SQL syntax as follows:
|
|||
|
|
|||
|
CREATE TABLE PS
|
|||
|
|
|||
|
(Person_Name CHAR(20) NOT NULL,
|
|||
|
|
|||
|
Starship CHAR(I5),
|
|||
|
|
|||
|
PRIMARY KEY (Person_Name),
|
|||
|
|
|||
|
FOREIGN KEY (Starship) REFERENCES SOD (Starship),
|
|||
|
|
|||
|
ON UPDATE SET NULL)
|
|||
|
|
|||
|
SOD
|
|||
|
|
|||
|
|
|||
|
|
|||
|
STARSHIP
|
|||
|
|
|||
|
OBJECTIVE
|
|||
|
|
|||
|
DESTINATION
|
|||
|
|
|||
|
USS Enterprise
|
|||
|
|
|||
|
Exploration
|
|||
|
|
|||
|
Talos
|
|||
|
|
|||
|
Voyager
|
|||
|
|
|||
|
Spying
|
|||
|
|
|||
|
Mars
|
|||
|
|
|||
|
Apollo
|
|||
|
|
|||
|
Exploration
|
|||
|
|
|||
|
Moon
|
|||
|
|
|||
|
Saratoga
|
|||
|
|
|||
|
Mining
|
|||
|
|
|||
|
Rigel
|
|||
|
|
|||
|
PS
|
|||
|
|
|||
|
PERSON_NAME
|
|||
|
|
|||
|
STARSHIP
|
|||
|
|
|||
|
James Kirk
|
|||
|
|
|||
|
< null >
|
|||
|
|
|||
|
Mr. Spock
|
|||
|
|
|||
|
< null >
|
|||
|
|
|||
|
Tim McKelley
|
|||
|
|
|||
|
Apollo
|
|||
|
|
|||
|
Figure 2.7: Relations SOD and PS after Starship = "Enterprise" is Updated to the Value
|
|||
|
"USS Enterprise" under the NULLIFIES Update Rule
|
|||
|
|
|||
|
SET DEFAULT-update
|
|||
|
|
|||
|
SQL2 and SQL3 define another referential constraint for update, which is SET DEFAULT. If the
|
|||
|
referential constraint specifies the SET DEFAULT option, then each referencing attribute is
|
|||
|
defined by an implicit or explicit default clause. The default clause specifies the default value for
|
|||
|
the attribute, and the default value may be a null or a non-null value. If the default value is null,
|
|||
|
then the SET DEFAULT option can be considered equivalent to the NULLIFIES update rule.
|
|||
|
|
|||
|
The SQL syntax for the SET DEFAULT-update rule is as follows:
|
|||
|
|
|||
|
CREATE TABLE PS
|
|||
|
|
|||
|
(Person_Name CHAR(20) NOT NULL,
|
|||
|
|
|||
|
Starship CHAR(15),
|
|||
|
|
|||
|
PRIMARY KEY (Person_Name),
|
|||
|
|
|||
|
FOREIGN KEY (Starship) REFERENCES SOD (Starship),
|
|||
|
|
|||
|
ON UPDATE SET DEFAULT <option>)
|
|||
|
|
|||
|
The default option is specified in the <option> field.
|
|||
|
|
|||
|
2.2.3 INSERT or UPDATE of Referencing Relation
|
|||
|
|
|||
|
When a tuple is inserted into a relation with a foreign key or a tuple in the relation is updated, the
|
|||
|
insertion (or update) of a foreign key value should be in accordance with referential integrity. Each
|
|||
|
foreign key value must be NULL or have an identical matching primary key value in the referenced
|
|||
|
relation. This requirement can be enforced by disallowing the insert (or update) unless the
|
|||
|
condition is met or by setting the foreign key to a default value or null (if nulls are allowed) when
|
|||
|
the condition is not met.
|
|||
|
|
|||
|
2.2.4 Additional Rules
|
|||
|
|
|||
|
In spite of the many integrity rules discussed in this section, the rules above are not exhaustive.
|
|||
|
Additional options include conversation with the end user and transferring information to some
|
|||
|
other files. For instance, an additional option in SQL3 is the PENDANT specification, which
|
|||
|
implies that each primary key value in the referenced relation is the same as some foreign key value
|
|||
|
in the referencing relation. For example, if the referential constraint for the relation EMP is as
|
|||
|
shown below, then as soon as the last employee in a particular department is deleted, the
|
|||
|
department will also be deleted.
|
|||
|
|
|||
|
FOREIGN KEY (Starship) REFERENCES [PENDANT] SOD(Starship)
|
|||
|
|
|||
|
2.3 PROBLEMS WITH REFERENTIAL INTEGRITY CONSTRAINTS
|
|||
|
|
|||
|
Referential integrity plays a major role in RDBMSs where it is employed to express existence
|
|||
|
dependencies. The concept of referential integrity seems to be simple, but it has been a topic of
|
|||
|
discussion for the past several years [Markowitz 90; Horowitz 92]. The operational definitions are
|
|||
|
not precise and, therefore, lead to some anomalies. Confusion surrounds both the concept itself and
|
|||
|
its implementation in RDBMSs. There is a need to carefully examine the data manipulation
|
|||
|
problems caused by certain referential integrity structures and to find ways to avoid these
|
|||
|
problems.
|
|||
|
|
|||
|
In a RDBMS, a single update or delete can affect multiple tuples through the application of
|
|||
|
referential integrity rules (e.g., cascading deletes or updates). It is necessary for these processes to
|
|||
|
be deterministic. In other words, the final state of the database should be a function of the initial
|
|||
|
state of the database, and the specific statement to be executed. At times, certain referential
|
|||
|
constraints associated with relations may block update or deletion of some tuples because of
|
|||
|
conflicting referential constraint specifications, thus making the outcome of the update or delete
|
|||
|
statement unpredictable. Some of the problems that have been identified are dependency on the
|
|||
|
order in which referential integrity constraints are applied, referential cycles, and dependency on
|
|||
|
the order in which the tuples are processed in response to a query. Discussion of these problems in
|
|||
|
detail is outside the scope of this document.
|
|||
|
|
|||
|
SECTION 3
|
|||
|
|
|||
|
ENTITY AND REFERENTIAL INTEGRITY IN MLS DATABASES
|
|||
|
|
|||
|
Before entity and referential integrity can be defined for multilevel relations, it is necessary to
|
|||
|
extend the basic concepts of classical (single-level) relations to the multilevel context. In MLS
|
|||
|
databases, data are assigned different security levels and each user is assigned a clearance level.
|
|||
|
Each user can only access data they are cleared for based on the user's security clearance. As a
|
|||
|
consequence the meaning of relations becomes more complicated in the multilevel world, and
|
|||
|
there is no clear consensus regarding the exact definition of a multilevel relational model.
|
|||
|
|
|||
|
To develop an MLS database, it is necessary to (1) define a security policy, (2) develop
|
|||
|
mechanisms that support the policy, and (3) get the necessary assurance that the system developed
|
|||
|
is secure. This section first reviews the basic concepts for the multilevel relational data model, then
|
|||
|
defines entity and referential integrity constraints for multilevel relations.
|
|||
|
|
|||
|
3.1 RELATED TCSEC REQUIREMENTS
|
|||
|
|
|||
|
The TCSEC imposes two types of requirements which affect how entity and referential integrity
|
|||
|
can be enforced in a DBMS targeted to meet the TCSEC requirements at B1 and above. A DBMS
|
|||
|
targeted for Class B1 or above must enforce a MAC policy over all subjects and storage objects it
|
|||
|
controls. This places requirements on the sensitivity labels of elements of primary and foreign keys
|
|||
|
and on the relationships between sensitivity levels of foreign keys and the primary keys they
|
|||
|
reference. For a DBMS targeted at Class B2 or above, the TCSEC requires a thorough search for
|
|||
|
covert channels (storage channels only at Class B2). In the multilevel context, enforcement of the
|
|||
|
uniqueness of primary keys and enforcement of referential integrity can create significant covert
|
|||
|
channels. Guidelines on acceptable bandwidths for covert channels are given in Section 8 of the
|
|||
|
TCSEC. This section specifically addresses the implications of direct enforcement of MAC
|
|||
|
controls (as required at B1 and above). The implications of integrity enforcement on covert
|
|||
|
channels is covered in Section 4. A determination of precisely which approaches to enforcing
|
|||
|
entity and referential integrity will be considered compliant with the TCSEC requirements will
|
|||
|
evolve over time as the Evaluation Community publishes official interpretations on this subject.
|
|||
|
However, with the successful evaluation of Trusted Oracle7 DBMS MAC Mode with an
|
|||
|
unmodified integrity mechanism, precedence has been set for Class B1 DBMSs [Oracle 94].
|
|||
|
|
|||
|
3.2 BASIC CONCEPTS IN MULTILEVEL RELATIONS
|
|||
|
|
|||
|
The basic model for multilevel relations needs to be defined with a MAC policy in mind. The MAC
|
|||
|
policy for MLS databases is often based on the Bell-LaPadula model [Bell 76], which is stated in
|
|||
|
terms of subjects and objects. A subject is an active entity, such as a process that can request access
|
|||
|
to objects, whereas an object is a passive entity, such as a record, a file, or a field within a record.
|
|||
|
Every subject is assigned a clearance level and every object a classification level. Classification
|
|||
|
levels and clearances are collectively referred to as security levels, and form a lattice. Each security
|
|||
|
level has two components: a hierarchical component and a set (possibly empty) of unordered
|
|||
|
categories. A security level c1 is said to dominate security level c2, in the partial order, if (1) the
|
|||
|
hierarchical component of c1 is greater than or equal to that of c2, and (2) all categories in c2 are
|
|||
|
included in those of c1. A security level c1 strictly dominates security level c2, in the partial order,
|
|||
|
if (1) c1 dominates c2, and (2) c1 does not equal c2. The following are two necessary conditions in
|
|||
|
the Bell-LaPadula model [Bell 76; DoD 85]:
|
|||
|
|
|||
|
1. The Simple Security Condition or "No Read Ups": A subject can only read objects at a
|
|||
|
security level dominated by the subject's level, and
|
|||
|
|
|||
|
2. The *-Property (Star Property) or "No Write Downs": A subject can only write objects
|
|||
|
at a security level that dominates the subject's level.
|
|||
|
|
|||
|
To apply these concepts to a DBMS it is necessary to determine the granularity of the objects
|
|||
|
protected by MAC, i.e., the storage objects. Security levels are then associated with these storage
|
|||
|
objects. Work on MLS databases has focused on four choices for assigning security levels to data
|
|||
|
stored in a relation. One can assign security levels to entire relations, to individual tuples (rows) of
|
|||
|
a relation, to individual attributes (columns) of a relation, or to individual elements of a relation.
|
|||
|
In the definitions below, the most general case is considered, in which security levels are assigned
|
|||
|
to individual data elements stored in relations. However, since tuple level labeling is used in all
|
|||
|
DBMS products evaluated to date, the concepts are also considered in the (simplified) context of
|
|||
|
tuple level labeling.
|
|||
|
|
|||
|
A relation schema in the multilevel context not only contains all its data attributes, but also includes
|
|||
|
the corresponding security level for each data attribute. Formal definitions of a multilevel relation
|
|||
|
schema and multilevel relations are as follows [Denning 87]:
|
|||
|
|
|||
|
Relation Schema: A multilevel relation schema has the following form:
|
|||
|
|
|||
|
R(A1, C1, A2, C2, ... , An, Cn).
|
|||
|
|
|||
|
Each Ai is a data attribute over some domain Di and Ci is the classification attribute of Ai. The
|
|||
|
domain of Ci, i = 1, ...,n is some set consisting of security levels.
|
|||
|
|
|||
|
If tuple level labeling is used, there will only be one classification attribute for the entire tuple:
|
|||
|
|
|||
|
R(A1, A2, ... , An, C).
|
|||
|
|
|||
|
For a multilevel logical relation schema R, there is a corresponding relation Rc per security level
|
|||
|
in the security lattice. A user having a clearance at a security level c sees the relation Rc, which
|
|||
|
contains data at security level c or below. More formally,
|
|||
|
|
|||
|
Relations: A relation at a security level c has the following form:
|
|||
|
|
|||
|
Rc(A1, C1, A2, C2, ... , An, Cn)
|
|||
|
|
|||
|
Rc consists of a set of tuples of the form (a1, c1, a2, .2.... ,an, cn), where each ai lies in the domain
|
|||
|
Di or ai is null, c > ci, ci, i = 1 ... ,n. Even if ai is null, its classification attribute ci is never null.
|
|||
|
|
|||
|
When an attribute value ai is null, there are two reasonable possibilities for the corresponding
|
|||
|
security level value: ci could be assigned a value that is identical to c, or the security level of the
|
|||
|
attributes constituting the primary key. In this document, ci would be assigned a value consistent
|
|||
|
with the second possibility.
|
|||
|
|
|||
|
If the security level of the primary key value is not dominated by c in a tuple, then that tuple is not
|
|||
|
shown in Rc at all. If the security level of the primary key value is dominated by c, then that tuple
|
|||
|
is shown in Rc; however, any attribute value with a security level not dominated by c, is shown
|
|||
|
having a null value with the corresponding security level the same as that of the primary key value.
|
|||
|
|
|||
|
For tuple level labeling, Rc consists of those tuples whose security level is dominated by c.
|
|||
|
|
|||
|
These concepts can be better explained with the help of an example taken from [Jajodia 91].
|
|||
|
|
|||
|
Example 4. Consider the relation schema SOD given in Example 1. Starship is the primary key of
|
|||
|
the relation schema SOD, and the security levels are assigned at the granularity of individual data
|
|||
|
elements. The hierarchical order usually followed is Top Secret (TS), Secret (S), Confidential (C),
|
|||
|
and Unclassified (U). A user with a Secret clearance will see the entire multilevel relation SODS,
|
|||
|
while a user with an Unclassified clearance will see the Unclassified instance SODU as shown in
|
|||
|
Figure 3.1.
|
|||
|
|
|||
|
SODS
|
|||
|
|
|||
|
|
|||
|
|
|||
|
STARSHIP
|
|||
|
|
|||
|
OBJECTIVE
|
|||
|
|
|||
|
DESTINATION
|
|||
|
|
|||
|
Enterprise U
|
|||
|
|
|||
|
Exploration U
|
|||
|
|
|||
|
Talos U
|
|||
|
|
|||
|
Voyager U
|
|||
|
|
|||
|
Spying S
|
|||
|
|
|||
|
Mars S
|
|||
|
|
|||
|
SODU
|
|||
|
|
|||
|
STARSHIP
|
|||
|
|
|||
|
OBJECTIVE
|
|||
|
|
|||
|
DESTINATION
|
|||
|
|
|||
|
Enterprise U
|
|||
|
|
|||
|
Exploration
|
|||
|
|
|||
|
Talos U
|
|||
|
|
|||
|
Voyager U
|
|||
|
|
|||
|
<null>
|
|||
|
|
|||
|
<nulls> U
|
|||
|
|
|||
|
Figure 3.1: Different SOD Views Based on Access Class
|
|||
|
|
|||
|
3.3 THE CONCEPT OF PRIMARY KEY IN MULTILEVEL RELATIONS
|
|||
|
|
|||
|
The notion of a primary key is a fundamental concept in the world of single-level relational
|
|||
|
databases. The primary key is used to maintain integrity of relations, it is used during the database
|
|||
|
design, and it is also used for storage and retrieval purposes. The primary key for a single-level
|
|||
|
relation must satisfy the uniqueness property and the minimality property, as discussed in Section
|
|||
|
2.1. Entity integrity requires that the primary key serves as a unique identifier of each tuple in the
|
|||
|
relation and that it does not contain a null value. The uniqueness property can create covert
|
|||
|
channels as discussed in Section 4. One approach to avoiding these channels involves augmenting
|
|||
|
the user-defined primary key with security level attributes associated with the primary key
|
|||
|
attributes. However, in the remainder of this document it is assumed that there is a user-specified
|
|||
|
primary key consisting of a subset of the data attributes and not including the security level
|
|||
|
[Denning 87]. It is called the apparent primary key of the multilevel relation schema.
|
|||
|
|
|||
|
3.4 ENTITY INTEGRITY IN MULTILEVEL RELATIONS
|
|||
|
|
|||
|
A relation schema R will be assumed to have a user-defined apparent primary key consisting of
|
|||
|
one or more data attributes of R. It will be denoted by PK. The entity integrity property of the
|
|||
|
standard relational model can be extended to the multilevel environment by defining the three
|
|||
|
requirements given below, which are applicable only to element level classification [Denning 87].
|
|||
|
The three requirements are automatically met for tuple level classification.
|
|||
|
|
|||
|
The first requirement is the same as for the standard relational model, that no tuple in an Rc have
|
|||
|
a null value for any attribute in PK. The second requirement states that the PK values should be
|
|||
|
uniformly classified; otherwise, the PK value would not be wholly non-null or wholly null for
|
|||
|
some security level. The third requirement states that the security level of values for the attributes
|
|||
|
not in PK must dominate the security level of the PK attributes; otherwise, there could be instances
|
|||
|
where non-null attributes would be associated with a null primary key when viewed below the level
|
|||
|
of the primary key. These three requirements can be more formally defined as follows:
|
|||
|
|
|||
|
A multilevel relation schema R is said to satisfy entity integrity, if for all relation instances Rc
|
|||
|
of R and, tuple t <20> Rc,
|
|||
|
|
|||
|
1. If Ai <20> PK, then t[Ai] <20>null,
|
|||
|
|
|||
|
2. If Ai, Aj <20> PX, then t[Ci] = t[Cj], i.e., PK is said to be uniformly classified, and
|
|||
|
|
|||
|
3. If Ai <20> PK, then t[Ci] t[C[PK]] (where C[PK] is the classification of the apparent
|
|||
|
primary key PK).
|
|||
|
|
|||
|
3.5 REFERENTIAL INTEGRITY IN MULTILEVEL RELATIONS
|
|||
|
|
|||
|
As discussed in the previous section, a non-null foreign key value in a referencing relation should
|
|||
|
always have a matching primary key value in the referenced relation. In an MLS database, this
|
|||
|
requirement has implications for the relationship among the security levels of the attributes of the
|
|||
|
foreign key and the security level of the referenced primary key. In addition, the possible actions
|
|||
|
which could be taken to enforce referential integrity on update and deletion can introduce covert
|
|||
|
channels as discussed in Section 4. Relation schemas, in the following example, will be used to
|
|||
|
illustrate the different situations in which a security conflict may occur.
|
|||
|
|
|||
|
Example 5. Consider the multilevel relation schema PS given in Example 2. Person_Name is the
|
|||
|
apparent primary key of the relation schema PS, and Starship is the foreign key of PS, which refers
|
|||
|
to the relation schema SOD. Typical relation instances for SOD and PS are given in Figure 3.2.
|
|||
|
Note that in the example schema only the attribute names are part of the primary key and the
|
|||
|
foreign key. The respective security levels are not a part of the key. Therefore, there are some
|
|||
|
tuples with the security level of the foreign key in relation PS higher or lower than the security level
|
|||
|
of the corresponding primary key in relation SOD. The example includes such tuples to explain the
|
|||
|
conflicts arising when the security levels are at different levels.
|
|||
|
|
|||
|
SOD
|
|||
|
|
|||
|
|
|||
|
|
|||
|
STARSHIP
|
|||
|
|
|||
|
OBJECTIVE
|
|||
|
|
|||
|
DESTINATION
|
|||
|
|
|||
|
Enterprise U
|
|||
|
|
|||
|
Exploration U
|
|||
|
|
|||
|
Talos U
|
|||
|
|
|||
|
Voyager U
|
|||
|
|
|||
|
Spying S
|
|||
|
|
|||
|
Mars S
|
|||
|
|
|||
|
Apollo S
|
|||
|
|
|||
|
Spying S
|
|||
|
|
|||
|
Moon S
|
|||
|
|
|||
|
PS
|
|||
|
|
|||
|
PERSON_NAME
|
|||
|
|
|||
|
STARSHIP
|
|||
|
|
|||
|
James Kirk U
|
|||
|
|
|||
|
Enterprise U
|
|||
|
|
|||
|
Mr. Spock U
|
|||
|
|
|||
|
Voyager S
|
|||
|
|
|||
|
Tim McKelley U
|
|||
|
|
|||
|
Apollo U
|
|||
|
|
|||
|
Figure 3.2: Typical Relation Instances for SOD and PS
|
|||
|
|
|||
|
Recall the definition of referential integrity for standard relational databases:
|
|||
|
|
|||
|
Referential Integrity: If FK is a foreign key of R1 referencing R2, PK is the primary key of
|
|||
|
R2, t1 is a tuple of an instance R1 of R1, and t2 is a tuple of an instance R2 of R2, then
|
|||
|
|
|||
|
1. t1 [FK] is either wholly null or wholly non-null, and
|
|||
|
|
|||
|
2. Whenever t1[FK] is non-null, there is a tuple t2 in R2 such that t1[FK] = t2[PK].
|
|||
|
|
|||
|
For MLS databases we need to have this property be true for the database as seen from any security
|
|||
|
level. Assume tl [FK] is not wholly null as viewed from some security level. The first requirement
|
|||
|
above says that it must then be wholly non-null. If the attribute values making up FK did not all
|
|||
|
have the same security level, there would be some security level for which some of the attribute
|
|||
|
values in FK would be null and others non-null. Since this is not allowed, all attribute values in FK
|
|||
|
must have the same security level. If all attribute values of FK are null, then by convention they
|
|||
|
are assigned the same security level. This argument gives us the first rule for referential integrity.
|
|||
|
|
|||
|
Rule 1. The foreign key of the referencing relation must be uniformly classified (i.e., all
|
|||
|
attribute values that make up the foreign key must be assigned an identical security level).
|
|||
|
|
|||
|
This rule is automatically satisfied for tuple level labeling.
|
|||
|
|
|||
|
The second part of referential integrity requires that if the foreign key FK is not null then there is
|
|||
|
a matching primary key PK in the referenced relation R2. For this to be true for the database as
|
|||
|
seen from the security level of FK, the matching PK must be visible at the security level of FK.
|
|||
|
Hence, the security level of FK must dominate the security level of the matching primary key PK.
|
|||
|
This gives us the second rule of referential integrity.
|
|||
|
|
|||
|
Rule 2. The security level of the foreign key must dominate the security level of the primary
|
|||
|
key of the referenced tuple (i.e., C[FK] > C[PK]).
|
|||
|
|
|||
|
For tuple level labeling, this rule reduces to the requirement that the security level of the referenced
|
|||
|
tuple must be dominated by the security level of the referencing tuple.
|
|||
|
|
|||
|
PS
|
|||
|
|
|||
|
PERSON_NAME
|
|||
|
|
|||
|
STARSHIP
|
|||
|
|
|||
|
James Kirk U
|
|||
|
|
|||
|
Enterprise U
|
|||
|
|
|||
|
Mr. Spock U
|
|||
|
|
|||
|
Null U
|
|||
|
|
|||
|
Tim McKelley U
|
|||
|
|
|||
|
Apollo U
|
|||
|
|
|||
|
SOD
|
|||
|
|
|||
|
|
|||
|
|
|||
|
STARSHIP
|
|||
|
|
|||
|
OBJECTIVE
|
|||
|
|
|||
|
DESTINATION
|
|||
|
|
|||
|
Enterprise U
|
|||
|
|
|||
|
Exploration U
|
|||
|
|
|||
|
Talos U
|
|||
|
|
|||
|
Voyager U
|
|||
|
|
|||
|
Null U
|
|||
|
|
|||
|
Null U
|
|||
|
|
|||
|
Figure 3.3: Unclassified Instances of PS and SOD Relations
|
|||
|
|
|||
|
Example 6. Consider the relations SOD and PS as shown in Figure 3.2. An Unclassified user sees
|
|||
|
the two relations as given in Figure 3.3. For the Unclassified user, the referential integrity property
|
|||
|
has been violated because there is no Starship "Apollo" visible to the Unclassified user. From the
|
|||
|
Unclassified user's point of view either Starship "Apollo" does not exist, which is a referential
|
|||
|
integrity error, or it references a classified Starship that is not displayed to the user, which is a
|
|||
|
security error.
|
|||
|
|
|||
|
3.6 ENFORCEMENT OF INTEGRITY CONSTRAINTS
|
|||
|
|
|||
|
Most of the research work on the topics covered in this document has either focused on
|
|||
|
polyinstantiation as a mechanism to deal with primary key requirements and entity integrity or has
|
|||
|
dealt with the broader question of inference. Meadows did some early work on the conflicts of
|
|||
|
integrity and security that mainly considered approaches for maximizing integrity while
|
|||
|
eliminating inference channels [Meadows 88]. Polyinstantiation and inference research are
|
|||
|
covered in the appropriate TDI companion documents. However, there are several works dealing
|
|||
|
with aspects of database integrity which go beyond just entity and referential integrity and do not
|
|||
|
fit into those areas.
|
|||
|
|
|||
|
Notargiacomo and Wiseman have explored separation of duty as an approach to protect data from
|
|||
|
unauthorized modification within MLS databases [Notargiacomo 91; Wiseman 90]. The concept
|
|||
|
of applying separation of duty to integrity enforcement is to ensure that, before a modification to
|
|||
|
the state is made, sufficient people agree that it properly reflects the real world requirement. The
|
|||
|
fact that certain users are unlikely to collude with a particular change, an underlying assumption,
|
|||
|
is indicated by the way roles are assigned to users. Notargiacomo explores the issues of integrating
|
|||
|
an interpretation of the Clark-Wilson integrity model [Clark 87, 88] into a multilevel DBMS
|
|||
|
security policy. Her preliminary investigation raised issues on object granularity; interaction of
|
|||
|
MAC, DAC, and integrity policies; application of Clark-Wilson type controls to classes of users;
|
|||
|
and the need for nested transactions. Wiseman sees the high level abstract view of separation of
|
|||
|
duty as several people agreeing to change state. Integrity can be encouraged by enforcing
|
|||
|
constraints which ensure the state is always valid and by subjecting inputs to separation of duty.
|
|||
|
|
|||
|
Reind van de Reit and Beukering describe how constraints involving integrity and security can be
|
|||
|
specified in MOXUM, their active object-oriented knowledge-base system [van de Reit 94]. Their
|
|||
|
premise is that changes to the database should be governed by rules in the form of integrity
|
|||
|
constraints and security checks. In this case, integrity constraints refer to the quality of the data,
|
|||
|
while security constraints refer to protection and access rights. Both kinds of constraints are
|
|||
|
specified in MOKUM as Prolog predicates and are not separated. Each time some manipulation on
|
|||
|
an object or a collection mentioned in a constraint is performed (create/change/inspect/destroy),
|
|||
|
some check has to be performed. The Prolog scripts regulate access to object collections and
|
|||
|
enforce integrity constraints through triggers. This implies a need to extend the Trusted Computing
|
|||
|
Base to include the Prolog compiler which is problematic with respect to assurance.
|
|||
|
|
|||
|
In addition to considering the entity and referential integrity conflicts with security, Maimone and
|
|||
|
Allen provide alternatives to resolving problems that arise in maintaining transaction integrity and
|
|||
|
value constraints [Maimone 91]. A security conflict with transaction integrity may arise if a single
|
|||
|
transaction is designed so that some steps must perform write operations at different security
|
|||
|
levels. Value constraints are defined integrity rules that may restrict the valid values for a data
|
|||
|
element. A conflict arises when some existing data classified above the label of the user activating
|
|||
|
the constraint does not meet constraints defined after object creation. They make the distinction
|
|||
|
between the use of triggers and constraints for enforcing integrity rules. The utility of declarative
|
|||
|
constraints, including primary and foreign key and value or domain constraints, is that the
|
|||
|
constraint declares an invariant property, detailing the meaning of a consistent state.
|
|||
|
|
|||
|
Marks and Jajodia [Jajodia 94] have developed a technique to enforce certain integrity constraints
|
|||
|
and minimize the amount of sensitive information disclosed. They transform multilevel constraints
|
|||
|
into constraints that can be enforced at individual levels and approximate enforcement of the
|
|||
|
multilevel constraint.
|
|||
|
|
|||
|
SECTION 4
|
|||
|
|
|||
|
COVERT CHANNELS
|
|||
|
|
|||
|
The B2 or higher MAC requirements of the TCSEC specify that an MLS system must additionally
|
|||
|
guard against indirect accesses through information flows. It is recognized that some covert
|
|||
|
channels will exist in any system. The TCSEC provides guidelines on what actions must be taken
|
|||
|
for channels depending on the bandwidth of the channel. Enforcement of integrity constraints can
|
|||
|
create covert channels. These channels are discussed in this section. Interpretations indicating
|
|||
|
precisely what channels will be deemed acceptable for systems evaluated against various TCSEC
|
|||
|
levels will be developed as the Evaluation Community deals with specific vendor implementations.
|
|||
|
|
|||
|
4.1 PRIMARY KEY UNIQUENESS
|
|||
|
|
|||
|
Problems arise in multilevel relations when a user at a lower security level tries to enter a tuple with
|
|||
|
the same primary key value as that of an existing tuple at a higher security level or when a user
|
|||
|
tries to update the primary key attribute to a value that already exists at a higher level. This insert/
|
|||
|
update cannot be allowed if primary key uniqueness is to be preserved. On the other hand, if the
|
|||
|
user is not allowed to insert the primary key value, then there exists a covert channel. The following
|
|||
|
example provides a concrete illustration.
|
|||
|
|
|||
|
Example 7. Consider the multilevel relation schema SOD of Example 4 in Section 3.2; the actual
|
|||
|
relation is the same as the Secret instance shown in Figure 3.3. Suppose the Unclassified user, who
|
|||
|
sees the Unclassified instance in Figure 3.3, attempts to update the missing values in the second
|
|||
|
tuple corresponding to the starship "Voyager." If the user is allowed to do this update, then there
|
|||
|
will be two tuples corresponding to the primary key value of Starship "Voyager" in the Secret
|
|||
|
instance, leading to a violation of the primary key constraint, as shown in Figure 4.1. But if the
|
|||
|
Unclassified user's attempt is rejected, then there is a channel. Since this is unacceptable, a way
|
|||
|
must be found to deal with the existence of both tuples in the Secret instance.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
STARSHIP
|
|||
|
|
|||
|
OBJECTIVE
|
|||
|
|
|||
|
DESTINATION
|
|||
|
|
|||
|
Enterprise U
|
|||
|
|
|||
|
Exploration U
|
|||
|
|
|||
|
Talos U
|
|||
|
|
|||
|
Voyager U
|
|||
|
|
|||
|
Spying S
|
|||
|
|
|||
|
Mars S
|
|||
|
|
|||
|
Voyager U
|
|||
|
|
|||
|
Exploration U
|
|||
|
|
|||
|
Moon U
|
|||
|
|
|||
|
Figure 4.1: SOD After Insertion of Tuple Corresponding to Starship = "Voyager" by
|
|||
|
Unclassified User
|
|||
|
|
|||
|
Since the user can infer that a Secret tuple exists with the same primary key the user is attempting
|
|||
|
to insert, this channel can be viewed as an example of inference. However, it also represents a
|
|||
|
covert channel because a Secret process can insert or delete tuples with a given primary key and
|
|||
|
this action could be detected by the Unclassified user. To avoid this channel, both the Secret tuple
|
|||
|
and the Unclassified tuple for the starship "Voyager" must somehow co-exist in the instance at the
|
|||
|
Secret level.
|
|||
|
|
|||
|
These security considerations have led to the notion of polyinstantiation [Denning 87].
|
|||
|
Polyinstantiation forces a relation to contain multiple tuples with the same primary key but
|
|||
|
distinguishable by their classification levels or by the non-primary key attributes of the relation
|
|||
|
[Lunt 91]. It is because the user designated primary key must be augmented with classification
|
|||
|
levels to maintain primary key uniqueness in a polyinstantiated database that we have used
|
|||
|
Denning'' term apparent primary key for the user-specified primary key. Jajodia contends that the
|
|||
|
use of polyinstantiation for cover stories needs to be confined to those cases where it is intended
|
|||
|
since uncontrolled use of polyinstantiation leads to further loss of integrity and confusion with the
|
|||
|
semantics of the relational data model [Jajodia 90].
|
|||
|
|
|||
|
The debate continues as to whether polyinstantiation is needed in multilevel relations or not
|
|||
|
[Sandhu 91]. If polyinstantiation is not required in multilevel relations, then there must be a
|
|||
|
solution to close channels. If polyinstantiation is used, then the question is how polyinstantiation
|
|||
|
should be managed. Burns maintains that as a result of the fundamental conflict with enforcing
|
|||
|
confidentiality and secrecy of information in an MLS database with integrity, DBMS products will
|
|||
|
have to be expanded to include the ability to correct the errors and inconsistencies introduced by
|
|||
|
polyinstantiation [Burns 90a]. A thorough discussion of all the issues associated with
|
|||
|
polyinstantiation is beyond the scope of this document, but is covered in another volume in this
|
|||
|
series: Polyinstantiation Issues in Multilevel Secure Database Management Systems [Poly 96]. For
|
|||
|
the purpose of this document, the discussion of polyinstantiation is confined to the impact it has on
|
|||
|
referential integrity.
|
|||
|
|
|||
|
4.2 ENFORCEMENT OF REFERENTIAL INTEGRITY RULES
|
|||
|
|
|||
|
Section 3 showed that for referential integrity in an MLS database, the security level of the foreign
|
|||
|
key must dominate the security level of the primary key of the referenced tuple (C [FK] C[PX]).
|
|||
|
This requirement guarantees that the referenced primary key will be visible to any user who sees
|
|||
|
the foreign key as non-null. However, the situation is somewhat more complicated if the referenced
|
|||
|
relation is polyinstantiated. In this event, there may be more than one tuple with an apparent
|
|||
|
primary key matching FK. Some method must be used to uniquely and consistently determine
|
|||
|
which primary key will be considered to be the referenced primary key. One approach is to
|
|||
|
augment FK with the security level of its attributes (the tuple security level if tuple level labeling
|
|||
|
is used). If that approach is used, a matching PK will have the same security level as FX and the
|
|||
|
requirement on the relationship between security levels of PK and FK becomes C[FK] = C[PK].
|
|||
|
|
|||
|
Enforcement of referential integrity through the rules described in Section 2.2 can result in covert
|
|||
|
channels. These channels are discussed below. The discussion is divided into the two permitted
|
|||
|
cases: C[FK] = C[PK] and C[FK] > C[PK].
|
|||
|
|
|||
|
4.2.1 Enforcement of Integrity Rules When C[FK] = C[PK]
|
|||
|
|
|||
|
To study the enforcement of integrity rules when the security level of the referencing tuple and the
|
|||
|
security level of the referenced tuple are the same, we need to look at the cases of the four different
|
|||
|
levels of granularity in multilevel relations. For relations with relation level labeling or tuple level
|
|||
|
labeling, all the integrity rules are usable without modification because this case can be considered
|
|||
|
to be equivalent to relationships occurring in a single-level database. For attribute and element
|
|||
|
level labeling there is a potential channel for the CASCADFS-delete rule. All other rules can be
|
|||
|
enforced without any problem. This channel can be better explained with the help of an example.
|
|||
|
|
|||
|
Example 8. Consider the two relations SOD and PS as given in Figure 4.2. The security level of
|
|||
|
the foreign key in relation PS in this example is the same as the security level of the referenced
|
|||
|
primary key in relation SOD. For the second tuple in relation PS, an Unclassified user oily sees the
|
|||
|
attribute Person_Name. The user is not cleared to see the value of Starship for this tuple and also
|
|||
|
the user cannot see the corresponding referenced tuple in relation SOD. Suppose a Confidential
|
|||
|
user comes in and attempts to delete the second tuple in relation SOD where Starship = "Saratoga."
|
|||
|
If the delete rule specified is a CASCADES-delete, then the referencing tuple in PS is also deleted.
|
|||
|
An Unclassified user now will not see the attribute value Person_Name = "Mr. Spock" any more,
|
|||
|
and this causes a channel.
|
|||
|
|
|||
|
PS
|
|||
|
|
|||
|
PERSON_NAME
|
|||
|
|
|||
|
STARSHIP
|
|||
|
|
|||
|
James Kirk U
|
|||
|
|
|||
|
Enterprise U
|
|||
|
|
|||
|
Mr. Spock U
|
|||
|
|
|||
|
Saratoga C
|
|||
|
|
|||
|
SOD
|
|||
|
|
|||
|
|
|||
|
|
|||
|
STARSHIP
|
|||
|
|
|||
|
OBJECTIVE
|
|||
|
|
|||
|
DESTINATION
|
|||
|
|
|||
|
Enterprise U
|
|||
|
|
|||
|
Exploration C
|
|||
|
|
|||
|
Talos C
|
|||
|
|
|||
|
Saratoga C
|
|||
|
|
|||
|
Mining C
|
|||
|
|
|||
|
Rigel C
|
|||
|
|
|||
|
Figure 4.2: Relation PS and SOD when C[FK] = C[PK]
|
|||
|
|
|||
|
The channel in this case can be avoided if the equivalence of the security levels of the foreign key
|
|||
|
and the referenced primary key is extended. If the security level of the entire referencing tuple is
|
|||
|
the same as the security level of the entire referenced tuple, then no violations occur when
|
|||
|
enforcing the insert, delete, and update rules. This fact has been acknowledged in the SeaView
|
|||
|
model [Lunt 90] and the referential secrecy model given by Burns [Burns 90b]. Burns also suggests
|
|||
|
selective enforcement of referential integrity in those cases where the security level of both the
|
|||
|
referencing relation and the referenced relation are not the same, assuming that the channel either
|
|||
|
can be monitored or is deemed not to cause a serious threat.
|
|||
|
|
|||
|
4.2.2 Enforcement of Integrity Rules When C[FK] > C[PK]
|
|||
|
|
|||
|
Now the final case will be considered where the security level of the referencing tuple dominates
|
|||
|
the security level of the referenced tuple. Each of the integrity rules for insert, delete, and update
|
|||
|
will be considered individually, and the effect of the dominance of the referencing tuple's security
|
|||
|
level over that of the referenced tuple will be investigated. The effect of different levels of labeling
|
|||
|
granularity in multilevel relations upon enforcement of integrity will also be considered.
|
|||
|
Throughout this discussion, we will assume that either the relations are not polyinstantiated or a
|
|||
|
consistent method is employed to determine the unique primary key referred to by a foreign key.
|
|||
|
|
|||
|
1. Element-Level Granularity - Each of the integrity rules for insert, delete, and update is
|
|||
|
examined individually for relations with element-level granularity, and conditions
|
|||
|
violating the security constraints are investigated.
|
|||
|
|
|||
|
a. Delete Rule - As discussed in Section 2.2.1, the four delete rules for referential
|
|||
|
integrity in single-level relations are as follows:
|
|||
|
|
|||
|
i. RESTRICTED-delete Rule
|
|||
|
|
|||
|
ii. CASCADES-delete Rule
|
|||
|
|
|||
|
iii. NULLIFIES-delete Rule
|
|||
|
|
|||
|
iv. SET-DEFAULT-delete Rule
|
|||
|
|
|||
|
Each of these rules is considered in turn for applicability to multilevel relations labeled at the
|
|||
|
element level.
|
|||
|
|
|||
|
i. RESTRICTED-delete Rule - The RESTRICTED-delete rule states that the referenced
|
|||
|
primary key tuple cannot be deleted as long as there is a corresponding referencing
|
|||
|
tuple somewhere in the database. For instance, consider the relations SOD and PS
|
|||
|
given in Figure 4.3.
|
|||
|
|
|||
|
In relation PS, the security level of the foreign key value Starship = "Voyager" dominates
|
|||
|
the security level of the primary key value in the relation SOD. According to the
|
|||
|
RESTRICTED-delete rule, as long as there is a tuple having foreign key value "Voyager"
|
|||
|
in PS, the tuple with primary key value "Voyager" cannot be deleted from the relation
|
|||
|
SOD. This gives rise to a channel, as there is a downward flow of information from the
|
|||
|
high-level referencing foreign key to the low-level subject attempting to delete the tuple
|
|||
|
containing the primary key. Therefore, the RESTRICTED-delete Rule violates secrecy
|
|||
|
when the security level of the foreign key dominates the security level of the primary key
|
|||
|
of the referenced tuple.
|
|||
|
|
|||
|
ii. CASCADES-delete Rule - If the delete rule specified is the CASCADES-delete rule,
|
|||
|
then if the tuple in SOD with Starship = "Voyager" is deleted at the Unclassified level,
|
|||
|
then the tuple in PS with Starship = "Voyager" at the Secret level should also be
|
|||
|
deleted. In the relation instance of PS, given in Figure 4.3, Person_Name = "Mr.
|
|||
|
Spock" is at the Unclassified level in the tuple containing Starship = "Voyager" at the
|
|||
|
Secret level. Although the Unclassified user would not see any value for Starship in
|
|||
|
the PS tuple with Person_Name = "Mr. Spock," this tuple will be deleted as a result of
|
|||
|
the CASCADES-delete action. Therefore, the user will be able to infer that the tuple
|
|||
|
contained Starship = "Voyager." This is a channel. If the attribute value "Mr. Spock"
|
|||
|
were classified as Secret, there would have been no channel. Hence, the CASCADES-
|
|||
|
delete rule fails in relations with element-level labeling and C[FK] > C[PK], if any
|
|||
|
non-foreign key attribute value in the referencing tuple is at a lower security level than
|
|||
|
the foreign key attribute value. Even though the CASCADES-delete rule is not invalid
|
|||
|
for all the cases, channels exist that cannot be covered or be removed. Hence,
|
|||
|
CASCADES-delete cannot be used for defining an integrity constraint in relations
|
|||
|
with element-level labeling which allow a foreign key to strictly dominate its
|
|||
|
corresponding primary key.
|
|||
|
|
|||
|
SOD
|
|||
|
|
|||
|
|
|||
|
|
|||
|
STARSHIP
|
|||
|
|
|||
|
OBJECTIVE
|
|||
|
|
|||
|
DESTINATION
|
|||
|
|
|||
|
Enterprise U
|
|||
|
|
|||
|
Exploration U
|
|||
|
|
|||
|
Talos U
|
|||
|
|
|||
|
Voyager U
|
|||
|
|
|||
|
Spying S
|
|||
|
|
|||
|
Mars S
|
|||
|
|
|||
|
Apollo S
|
|||
|
|
|||
|
Spying S
|
|||
|
|
|||
|
Moon S
|
|||
|
|
|||
|
PS
|
|||
|
|
|||
|
PERSON_NAME
|
|||
|
|
|||
|
STARSHIP
|
|||
|
|
|||
|
James Kirk U
|
|||
|
|
|||
|
Enterprise U
|
|||
|
|
|||
|
Mr. Spock U
|
|||
|
|
|||
|
Voyager S
|
|||
|
|
|||
|
Figure 4.3: Relations SOD and PS without Polyinstantiation
|
|||
|
|
|||
|
iii. NULLIFIES-delete Rule - If the delete rule specified is NULLIFIES-delete, then
|
|||
|
the value of Starship = "Voyager" in relation PS is set to null when the tuple in SOD
|
|||
|
for Starship = "Voyager" is deleted. This does not conflict with the security
|
|||
|
constraints, as long as write-ups are allowed, since there would not be a downward
|
|||
|
flow of information.
|
|||
|
|
|||
|
iv. SET DEFAULT-delete Rule - The argument for the SET DEFAULT-delete rule is
|
|||
|
the same as for the NULLIFIES-delete rule. As previously noted, the SET
|
|||
|
DEFAULT rule is equivalent to the NULLIFIES rule when null is specified as the
|
|||
|
default.
|
|||
|
|
|||
|
In summary, when the foreign key value is higher than the security level of the primary key
|
|||
|
value, then the NULLIFIES-delete rule and the SET DEFAULT-delete do not create
|
|||
|
downward information flows. However, the RESTRICTED-delete and CASCADES-
|
|||
|
delete rules can result in covert channels.
|
|||
|
|
|||
|
b. UPDATE Rule - As discussed in Section 2.2.2, the four update rules for referential
|
|||
|
integrity in single-level relations are as follows:
|
|||
|
|
|||
|
i. RESTRICTED-update Rule
|
|||
|
|
|||
|
ii. CASCADES-update Rule
|
|||
|
|
|||
|
iii. NULLIFIES-update Rule
|
|||
|
|
|||
|
iv. SET DEFAULT-update Rule
|
|||
|
|
|||
|
The following paragraphs discuss the application of the update rules to multilevel relations labeled
|
|||
|
at the element level.
|
|||
|
|
|||
|
i. RESTRICTED-update Rule - Consider the relations SOD and PS given in Figure
|
|||
|
4.2. In relation PS, the security level of the foreign key value Starship = "Voyager"
|
|||
|
dominates that of the primary key value in the relation SOD. According to the
|
|||
|
RESTRICTED-update rule, as long as there is a tuple having foreign key value
|
|||
|
"Voyager" in PS, the primary key value "Voyager" cannot be updated in the
|
|||
|
relation SOD. This gives rise to a channel because there is flow of information from
|
|||
|
the high-level referencing foreign key to the low-level subject attempting to delete
|
|||
|
the tuple containing the primary key. Therefore, the RESTRICTED-update Rule
|
|||
|
will not work when updating a referenced tuple if the security level of the
|
|||
|
referencing tuple dominates the security level of the referenced tuple.
|
|||
|
|
|||
|
ii. CASCADES-update Rule - The CASCADES-update Rule states that if the primary
|
|||
|
key value Starship = "Voyager" in SOD is updated, then the foreign key value
|
|||
|
Starship = "Voyager" in PS will also be updated. This does not conflict with the
|
|||
|
security constraints, as long as write-ups are allowed, since there would not be a
|
|||
|
downward flow of information.
|
|||
|
|
|||
|
iii. NULLIFIES-update Rule - The NULLIFIES-update Rule specifies that the value of
|
|||
|
Starship = "Voyager" in relation PS be set to null if Starship = "Voyager" in SOD
|
|||
|
is updated. Again, this does not conflict with the security constraints, as long as
|
|||
|
write-ups are allowed, since there would not be a downward flow of information.
|
|||
|
|
|||
|
iv. SET DEFAULT-update Rule - The SET DEFAULT-update Rule does not violate
|
|||
|
any security or integrity constraints when the security level of the foreign key
|
|||
|
dominates the security level of the primary key. The explanation is the same as for
|
|||
|
the NULLIFIES-update rule.
|
|||
|
|
|||
|
In summary, CASCADES-update, NULLIFIES-update, and SET DEFAULT-update do
|
|||
|
not result in downward information flow. The RESTRICTED-update rule can result in a
|
|||
|
covert channel.
|
|||
|
|
|||
|
c. INSERT Rule - The insert rule for integrity states that the insertion of a foreign key
|
|||
|
value should comply with the referential integrity rules; that is, each foreign key value
|
|||
|
in the referencing relation should have an identical primary key value in the referenced
|
|||
|
relation. In MLS databases, it is important to ensure that there is no downward flow of
|
|||
|
information when the insertion is made. If the security level of the referencing tuple
|
|||
|
(foreign key value) dominates the security level of the referenced tuple (primary key
|
|||
|
value), then there is no such possibility of a channel. If a higher user attempts to insert
|
|||
|
a foreign key value, the user's insertion is accepted or rejected based on the presence
|
|||
|
or absence of the referenced value at the lower security level. There will be only an
|
|||
|
upward flow of information, which means that both integrity and security rules are
|
|||
|
satisfied. It should be noted that, unlike with polyinstantiated relations, there is no
|
|||
|
confusion while inserting the tuples in the two relations.
|
|||
|
|
|||
|
SOD
|
|||
|
|
|||
|
|
|||
|
|
|||
|
No.
|
|||
|
|
|||
|
STARSHIP
|
|||
|
|
|||
|
OBJECTIVE
|
|||
|
|
|||
|
DESTINATION
|
|||
|
|
|||
|
TC
|
|||
|
|
|||
|
1
|
|||
|
|
|||
|
Enterprise
|
|||
|
|
|||
|
Exploration
|
|||
|
|
|||
|
Talos
|
|||
|
|
|||
|
U
|
|||
|
|
|||
|
2
|
|||
|
|
|||
|
Enterprise
|
|||
|
|
|||
|
Spying
|
|||
|
|
|||
|
Mars
|
|||
|
|
|||
|
S
|
|||
|
|
|||
|
PS
|
|||
|
|
|||
|
No.
|
|||
|
|
|||
|
PERSON_NAME
|
|||
|
|
|||
|
STARSHIP
|
|||
|
|
|||
|
TC
|
|||
|
|
|||
|
3
|
|||
|
|
|||
|
James Kirk
|
|||
|
|
|||
|
Enterprise
|
|||
|
|
|||
|
U
|
|||
|
|
|||
|
4
|
|||
|
|
|||
|
Mr. Spock
|
|||
|
|
|||
|
Enterprise
|
|||
|
|
|||
|
S
|
|||
|
|
|||
|
Figure 4.4: Relations with Tuple-Level Granularity
|
|||
|
|
|||
|
2. Tuple-Level Granularity - The argument for referential integrity control in relations with
|
|||
|
tuple-level granularity is the same as the discussion above for element-level granularity. The only
|
|||
|
difference is that instead of each data element having an individual security level, the entire tuple
|
|||
|
in the relation is assigned a security level as shown in Figure 4.4. As is the case for element-level
|
|||
|
granularity, a security conflict occurs when the RESTRICTED-update/delete option is enforced.
|
|||
|
There is a downward flow of information when a low user tries to update/delete a target value, and
|
|||
|
is allowed to do so depending on the absence of a matching referencing tuple at a higher level. All
|
|||
|
other integrity rules are valid for relations with tuple-level granularity. The problem with
|
|||
|
CASCADES-delete that occurs for element-level granularity does not occur with tuple-level
|
|||
|
granularity because, for tuple-level granularity, each element in the tuple is explicitly assumed to
|
|||
|
have the same security level as defined in the tuple class. As such, a user will never be in the
|
|||
|
situation where he can view some attributes of a tuple but not others and then witness the tuple
|
|||
|
vanish due to a cascading delete on attributes that the user is not cleared to see, which would be a
|
|||
|
covert channel due to the inference of the high attribute's value.
|
|||
|
|
|||
|
3. Attribute-Level Granularity - As described earlier, attribute-level granularity means that each
|
|||
|
attribute in a relation is assigned a single security level. All values of an attribute are classified at
|
|||
|
the same level of security across all tuples in the relation. From the discussion in Section 3.5, to
|
|||
|
maintain referential integrity, the security level of the foreign key attribute in the referencing
|
|||
|
relation must dominate the security level of the primary key attribute in the referenced relation.
|
|||
|
|
|||
|
The case to be considered is where the security level of the foreign key attribute strictly dominates
|
|||
|
the security level of the apparent primary key attribute. In this case, the relations SOD and PS are
|
|||
|
as given in Figure 4.5.
|
|||
|
|
|||
|
SOD
|
|||
|
|
|||
|
|
|||
|
|
|||
|
No.
|
|||
|
|
|||
|
STARSHIP U
|
|||
|
|
|||
|
OBJECTIVE S
|
|||
|
|
|||
|
DESTINATION U
|
|||
|
|
|||
|
1
|
|||
|
|
|||
|
Enterprise
|
|||
|
|
|||
|
Exploration
|
|||
|
|
|||
|
Talos
|
|||
|
|
|||
|
2
|
|||
|
|
|||
|
Voyager
|
|||
|
|
|||
|
Spying
|
|||
|
|
|||
|
Mars
|
|||
|
|
|||
|
PS
|
|||
|
|
|||
|
No.
|
|||
|
|
|||
|
PERSON_NAME U
|
|||
|
|
|||
|
STARSHIP S
|
|||
|
|
|||
|
3
|
|||
|
|
|||
|
James Kirk
|
|||
|
|
|||
|
Enterprise
|
|||
|
|
|||
|
4
|
|||
|
|
|||
|
Mr. Spock
|
|||
|
|
|||
|
Enterprise
|
|||
|
|
|||
|
Figure 4.5: Relations with Attribute-Level Granularity
|
|||
|
|
|||
|
Following the discussion earlier, it can be observed that all the integrity rules can be applied to the
|
|||
|
case above except for the RESTRICTED-delete or the RESTRICTED-update rule. Under
|
|||
|
RESTRICTED-update or delete, whenever a lower subject tries to update or delete the tuple
|
|||
|
containing a particular primary key attribute value, the attempt is accepted or rejected based on the
|
|||
|
presence of a matching value in the foreign key attribute at the higher security level. This gives rise
|
|||
|
to a channel.
|
|||
|
|
|||
|
4. Relation-Level Granularity - As defined earlier, a relation with relation-level granularity has
|
|||
|
a single classification level defined for the entire relation, or in other words, all data elements in
|
|||
|
the relation are at the same security level.
|
|||
|
|
|||
|
For instance, consider the relation schema SOD, given in Example 4, and the relation
|
|||
|
schema PS, given in Example 6. Relation PS references relation SOD, with Starship being
|
|||
|
the foreign key attribute. The security level of the primary key "Starship" (i.e., C[PK]) is
|
|||
|
the same as the security level of the relation SOD, and the security level of the foreign key
|
|||
|
"Starship" (i.e., C[FK]) is the same as the security level of the relation PS. Based on the
|
|||
|
restrictions derived in rule 2 in Section 3.5, the security level of the foreign key should
|
|||
|
always dominate the security level of the primary key. Therefore, for relation-level
|
|||
|
granularity, the security level of the relation PS should dominate the security level of the
|
|||
|
relation SOD.
|
|||
|
|
|||
|
Let the security level of relation SOD be Unclassified and of PS be Secret. Then C[FK] =
|
|||
|
Secret and C[PK] = Unclassified (i.e., C[FK] > C[PK]). From the discussion in Section 3.5,
|
|||
|
it can be seen that, if C[FK] > C[PK], then all integrity rules except RESTRICTED-delete
|
|||
|
and RESTRICTED-update can be used, without any covert channels.
|
|||
|
|
|||
|
The table below gives a summary of the integrity rules that apply to different levels of granularity
|
|||
|
without compromising secrecy by permitting downward information flows. In the case of
|
|||
|
polyinstantiated relations it is necessary in all cases that there be a method to unambiguously
|
|||
|
determine which instance of the apparent key is referenced.
|
|||
|
|
|||
|
Level of Granularity
|
|||
|
|
|||
|
Element
|
|||
|
|
|||
|
Tuple
|
|||
|
|
|||
|
Attribute
|
|||
|
|
|||
|
Relation
|
|||
|
|
|||
|
Insert Rule
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
Delete Rules:
|
|||
|
|
|||
|
RESTRICTED-delete
|
|||
|
|
|||
|
Channel
|
|||
|
|
|||
|
Channel
|
|||
|
|
|||
|
Channel
|
|||
|
|
|||
|
Channel
|
|||
|
|
|||
|
CASCADES-delete
|
|||
|
|
|||
|
Channel
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
NULLIFIES-delete
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
SET-DEFAULT-
|
|||
|
delete
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
Update Rules:
|
|||
|
|
|||
|
RESTRICTED-update
|
|||
|
|
|||
|
Channel
|
|||
|
|
|||
|
Channel
|
|||
|
|
|||
|
Channel
|
|||
|
|
|||
|
Channel
|
|||
|
|
|||
|
CASCADES-update
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
NULLIFIES-update
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
SET-DEFAULT-
|
|||
|
update
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
OK
|
|||
|
|
|||
|
Table 4.1: Summary of Covert Channels in Referential Integrity Rules for C[FK] > C[PK]
|
|||
|
|
|||
|
4.3 RELATION TO DBMS ARCHITECTURE
|
|||
|
|
|||
|
A Trusted Computing Base (TCB) consists of one or more sub-elements that together enforce a
|
|||
|
security policy over a system. Complex systems distribute policy enforcement to various sub-
|
|||
|
elements. While determining the trust characteristics of a complex system on the basis of a
|
|||
|
collection of subparts is not well understood, there are approaches for arguing about composition
|
|||
|
of systems.
|
|||
|
|
|||
|
The approach used in the TDI is to view the system as being composed of hierarchically-ordered
|
|||
|
systems. There is a "privilege" hierarchy characterized by dependency. The construct developed
|
|||
|
for dealing with layered systems is TCB subsets. A TCB subset enforces a security policy over a
|
|||
|
set of resources for that layer, and may or may not include hardware. If a TCB subset can be shown
|
|||
|
to be constrained and unprivileged relative to the more primitive TCB subset from which it obtains
|
|||
|
resources, then the scope of the covert channel analysis can be limited. An example of this
|
|||
|
approach is the SeaView prototype.
|
|||
|
|
|||
|
SRI International developed the SeaView prototype multilevel RDBMS to validate the SeaView
|
|||
|
theoretical model and to demonstrate that the prototype is suitable for engineering development
|
|||
|
[Hsieh 93]. The design approach provides users with element-level labeling. SeaView constructs
|
|||
|
multilevel relations as views over stored single-level relations. The single-level relations are stored
|
|||
|
in files managed by an underlying multilevel operating system. Thus, individually labeled data
|
|||
|
elements need not be stored in individually labeled storage objects. The SeaView approach allows
|
|||
|
multilevel database operations to be decomposed into corresponding single-level operations on the
|
|||
|
single-level relations. The decomposition is transparent to the user, who considers the multilevel
|
|||
|
relations to be stored relations. Thus, the SeaView model extends entity and referential integrity to
|
|||
|
multilevel relations. It also allows application dependent integrity rules to be defined on multilevel
|
|||
|
relations; and it ensures that updates of multilevel relations are well defined. In addition, the
|
|||
|
SeaView model constrains multilevel relations with polyinstantiation integrity, which specifies
|
|||
|
consistency for polyinstantiated tuples and elements.
|
|||
|
|
|||
|
In the SeaView approach, the underlying architecture guards against covert channels during
|
|||
|
enforcement of entity and referential integrity. This is because the DBMS instance operating on
|
|||
|
behalf of a subject is untrusted with respect to the underlying operating system MAC policy (i.e.,
|
|||
|
it can only read data with a security level dominated by the subject's level and can only write data
|
|||
|
with a security level dominating the subject's level). SRI utilized Trusted Oracle OS MAC Mode,
|
|||
|
which has been evaluated as a constrained TCB subset architecture [Oracle 94].
|
|||
|
|
|||
|
On the other hand, a secure DBMS can be built with MAC enforcement done in the DBMS, not
|
|||
|
just the underlying operating system. In this approach, the DBMS will have the privilege to violate
|
|||
|
the operating system's MAC controls. With this architecture, called a trusted subject architecture,
|
|||
|
the DBMS designer has to make a tradeoff between channel free enforcement of entity and
|
|||
|
referential integrity constraints, or enforcement of the constraints in a manner which allows
|
|||
|
selected channels. In the latter case, the constraint enforcement mechanism must be carefully
|
|||
|
analyzed to make sure that the downward information flows are thoroughly understood and that
|
|||
|
they are acceptable for the target environment or evaluation class. For example, Trusted Oracle7
|
|||
|
DBMS MAC Mode (which uses the trusted subject architecture) was successfully evaluated at
|
|||
|
Class B1 [Oracle 94]. In DBMS MAC Mode, entity and referential integrity can be enforced. An
|
|||
|
audit event was added to Trusted Oracle7 to detect use of potential covert channels.
|
|||
|
|
|||
|
SECTION 5
|
|||
|
|
|||
|
SUMMARY
|
|||
|
|
|||
|
Entity integrity and referential integrity are two important integrity constraints that should be
|
|||
|
enforced by the DBMS. While entity integrity is necessary for preserving correctness of data
|
|||
|
within a relation, referential integrity is required for maintaining interrelation integrity in the
|
|||
|
relational data model. In this document, these concepts have been extended to multilevel DBMSs.
|
|||
|
|
|||
|
The extension of the concept of referential integrity from single-level relations to multilevel
|
|||
|
relations is not straightforward. This is because restrictions are needed to provide referential
|
|||
|
integrity control in multilevel DBMSs without compromising secrecy. The basic requirement for
|
|||
|
referential integrity is that each referencing foreign key value must have an identical target primary
|
|||
|
key value in the referenced relation. An additional requirement for multilevel relations is that each
|
|||
|
foreign key and primary key should be uniformly classified (i.e., all attributes included in a key
|
|||
|
should have the same security level) and each foreign key dominates its referenced primary key.
|
|||
|
|
|||
|
From the discussion in the document, it can be concluded that enforcing referential integrity, when
|
|||
|
the security level of the foreign key is equal to the security level of the referenced primary key, is
|
|||
|
simple and without any ambiguity. All integrity rules apply in this case, whether the relations allow
|
|||
|
polyinstantiation or not. When polyinstantiation is allowed, some method such as including the
|
|||
|
security level of the primary and foreign key values as part of the key must be used to differentiate
|
|||
|
references, and allow the referential integrity rules to be enforced.
|
|||
|
|
|||
|
Referential integrity completely fails when the security level of the foreign key does not dominate
|
|||
|
the security level of the primary key. When the security level of the foreign key strictly dominates
|
|||
|
the security level of the referenced primary key, some of the integrity rules for actions to be taken
|
|||
|
upon deletion or modification of a key value can be applied without channels, with some
|
|||
|
differences based on labeling granularity.
|
|||
|
|
|||
|
Inclusion of a mechanism which enforces integrity across security levels in Class B2 and above
|
|||
|
DBMSs may not be feasible due to conflicts with the covert channel requirements. However, with
|
|||
|
the successful evaluation of Trusted Oracle7 DBMS MAC Mode with an unmodified integrity
|
|||
|
mechanism, precedence has been set for Class B1 DBMSs.
|
|||
|
|
|||
|
REFERENCES
|
|||
|
|
|||
|
[ANSI 92] ANSI. Database Language SQL2. In ANSI X3.135-1992, American National
|
|||
|
Standards Institute, New York. December 1992.
|
|||
|
|
|||
|
[ANSI 94] ANSI. SQL3 - Working Draft. Draft Version, Available From X3 Secretariat,
|
|||
|
Computer and Business Equipment Manufacturers Association (CBEMA), 1250
|
|||
|
Eye St. N.W., Suite 200 Washington, D.C. 20005-3992. September 1994.
|
|||
|
|
|||
|
[Audit 96] National Computer Security Center, Auditing Issues in Secure Database
|
|||
|
Management Systems, NCSC Technical Report-005, Volume 4/5, May 1996.
|
|||
|
|
|||
|
[Bell 76] D. E. Bell and L. J. LaPadula. Secure Computer Systems: Unified Exposition and
|
|||
|
Multics Interpretation, The MITRE Corporation. March 1976.
|
|||
|
|
|||
|
[Burns 90a] R. K. Burns. Integrity and Secrecy: Fundamental Conflicts in the Database
|
|||
|
Environment. In Proceedings of the Third RADC Database Security Workshop,
|
|||
|
Castille, NY. 1990.
|
|||
|
|
|||
|
[Burns 90b] R. K. Burns. Referential Secrecy. In Proceedings of the IEEE Symposium on
|
|||
|
Security and Privacy, IEEE Computer Society Press. May 1990.
|
|||
|
|
|||
|
[Clark 87] D. D. Clark and D. R. Wilson. A Comparison of Commercial and Military
|
|||
|
Computer Security Policies. In Proceedings of the IEEE Symposium on Security
|
|||
|
and Privacy, Oakland, CA. May 1987.
|
|||
|
|
|||
|
[Clark 88] D. D. Clark and D. R. Wilson. Evolution of a Model for Computer Integrity. In
|
|||
|
Proceedings of the 11th National Computer Security Conference, Baltimore,
|
|||
|
MD. October 1988.
|
|||
|
|
|||
|
[DAC 96] National Computer Security Center, Discretionary Access Control Issues in
|
|||
|
High Assurance Secure Database Management Systems, NCSC Technical
|
|||
|
Report-005, Volume 5/5, May 1996.
|
|||
|
|
|||
|
[Date 86] C. J. Date. An Introduction to Database Systems, Vol. I, 4th Edition, Addison-
|
|||
|
Wesley, Reading, MA. 1986.
|
|||
|
|
|||
|
[Date 90] C. J. Date. Referential Integrity and Foreign Keys: Further Considerations. In
|
|||
|
Relational Database Writings 1985-1989, Addison-Wesley, pp. 99-184. 1990.
|
|||
|
|
|||
|
[Denning 87] D. E. Denning, T. F. Lunt, R. R. Schell, M. Heckman, and W. R. Shockley. "A
|
|||
|
Multilevel Relational Data Model," Proceedings of the 1987 IEEE Symposium
|
|||
|
on Security and Privacy, IEEE Computer Society Press, pp. 220-234. 1987.
|
|||
|
|
|||
|
[DoD 85] Department of Defense Trusted Computer System Evaluation Criteria, DoD
|
|||
|
5200.28-STD, Washington, DC. December 1985.
|
|||
|
|
|||
|
[Hsieh 93] D. Hsieh, T. Lunt, and P. Boucher. The SeaView Prototype. RL-TR-93-216 Final
|
|||
|
Technical Report, SRI International. November 1993.
|
|||
|
|
|||
|
[Horowitz 92] B. M. Horowitz. A Run-Time Execution Model for Referential Integrity
|
|||
|
Maintenance. In Proceedings of the 8th International Conference on Data
|
|||
|
Engineering, Tempe, AZ, pp. 548-556. February 1992.
|
|||
|
|
|||
|
[Inference 96] National Computer Security Center, Inference and Aggregation Issues in Secure
|
|||
|
Database Management Systems, NCSC Technical Report-005, Volume 1/5,
|
|||
|
May 1996.
|
|||
|
|
|||
|
[Jajodia 90] S. Jajodia, and R. Sandhu. Polyinstantiation Integrity in Multilevel Relations. In
|
|||
|
Proceedings of the 1990 IEEE Symposium on Security and Privacy, Oakland,
|
|||
|
CA. May 1990.
|
|||
|
|
|||
|
[Jajodia 91] S. Jajodia, and R. Sandhu. Toward a Multilevel Secure Relational Data Model.
|
|||
|
In Proceedings of ACM SIGMOD International Conference on Management of
|
|||
|
Data, Denver, CO, pp. 50-59. May 1991.
|
|||
|
|
|||
|
[Jajodia 94] S. Jajodia and D. G. Marks. Maintaining Secrecy and Integrity in Multilevel
|
|||
|
Databases: A Practical Approach. In Proceedings of the 18th National
|
|||
|
Information Systems Security Conference, Baltimore, MD. Oct. 10-13 1995.
|
|||
|
|
|||
|
[Khoshafian 86] S. N. Khoshafian and G. P. Copeland. Object Identity. In Proceedings for
|
|||
|
OOPSLA 1986. pp. 406-416. September 1986.
|
|||
|
|
|||
|
[Lunt 90] T. F. Lunt, D. E. Denning, R. R. Schell, M. Heckman, and W. R. Shockley. The
|
|||
|
SeaView Security Model. In IEEE Transactions on Software Engineering, Vol.
|
|||
|
16, No. 6, pp. 593-607. June 1990.
|
|||
|
|
|||
|
[Lunt 91] T. F. Lunt, and D. Hsieh. Update Semantics for a Multilevel Relational Database
|
|||
|
System. In Database Security, IV: Status and Prospects, S. Jajodia and C. E.
|
|||
|
Landwehr (editors), Elsevier Science Publishers B. V. (North Holland), IFIP, pp.
|
|||
|
281-296.1991.
|
|||
|
|
|||
|
[Maimone 91] B. Maimone and R. Allen. Methods for Resolving the Security vs. Integrity
|
|||
|
Conflict. In Research Directions in Database Security, IV: Proceedings of the
|
|||
|
Fourth RADC Workshop, Rae Burns (editor). April 1991.
|
|||
|
|
|||
|
[Markowitz 90] V. M. Markowitz. Referential Integrity in Relational Database Management
|
|||
|
Systems: A Comparative Study. Preprint. 1990.
|
|||
|
|
|||
|
[Meadows 88] C. Meadows and S. Jajodia. Integrity Versus Security in Multi-Level Secure
|
|||
|
Databases. In Database Security Status and Prospects, ed. C. Landwehr, North
|
|||
|
Holland. 1988.
|
|||
|
|
|||
|
[Notargiacomo 91] L. Notargiacomo. Database Integrity: Based on the Clark-Wilson Integrity
|
|||
|
Model. In Proceedings of the 3rd RADC Database Security Workshop. 1991.
|
|||
|
|
|||
|
[Oracle 94] Oracle7 and Trusted Oracle7 Final Evaluation Report, NCSC-EPL-94/004, C-
|
|||
|
Evaluation Report No. 07-95, Library No. S242,198, National Computer
|
|||
|
Security Center, 5 April 1994.
|
|||
|
|
|||
|
[Poly 96] National Computer Security Center, Polyinstantiation Issues in Multilevel
|
|||
|
Secure Database Management Systems, NCSC Technical Report-005, Volume
|
|||
|
3/5, May 1996.
|
|||
|
|
|||
|
[Sandhu 91] R. Sandhu and S. Jajodia. Honest Databases That can Keep Secrets. In
|
|||
|
Proceedings 14th National Computer Security Conference, Washington, D.C.
|
|||
|
Oct. 1991.
|
|||
|
|
|||
|
[TDI 91] Trusted Database Management System Interpretation of the Trusted Computer
|
|||
|
System Evaluation Criteria, NCSC-TG-021, National Computer Security
|
|||
|
Center. April 1991.
|
|||
|
|
|||
|
[van de Reit 94] R. van de Reit and J. Beukering. The Integration of Security and Integrity
|
|||
|
Constraints in MOKUM. In Proceedings of the 8th IFIP 11.3 WG on Database
|
|||
|
Security. Bad Sdzdetfurth, Germany, 23-26 August 1994.
|
|||
|
|
|||
|
[Wiseman 90] S. Wiseman. The Control of Integrity in Databases. In Proceedings of the 4th
|
|||
|
IFIP 11.3 WG on Database Security, Halifax, England, 18-21 September 1990.
|
|||
|
Rank
|
|||
|
Person_Name
|
|||
|
Primary key
|
|||
|
PR
|
|||
|
Foreign key
|
|||
|
Primary key
|
|||
|
Starship
|
|||
|
Person_Name
|
|||
|
Foreign key
|
|||
|
PS
|
|||
|
Primary key
|
|||
|
Starship
|
|||
|
Objective
|
|||
|
Destination
|
|||
|
SOD
|
|||
|
Keith F. Brewster
|
|||
|
|
|||
|
Acting Chief, Partnerships and Processes
|
|||
|
May 1996
|