NIST Special Publication 800-8
Security Issues in the Database Language SQL
W. Timothy Polk and Lawrence E. Bassham
The Database Language SQL (SQL) is a standard interface
for accessing and manipulating relational databases.
An SQL-compliant database management system (DBMS) will
include a minimum level of functionality in a variety
of areas. However, many additional areas are left
unspecified by the SQL standard. In addition, there
are multiple versions of the SQL standard; the
functionality will vary according to the particular
version.
This document examines the security functionality that
might be required of relational DBMS's, and compares
them with the requirements and options of the SQL
specifications. The comparison will show that the
security functionality of an SQL-compliant DBMS may
vary greatly. A variety of security policies are
considered which can be supported by SQL. The document
ends by showing which types of functions are required
by the examined security policies.
This is a special ascii version of the document. Indices are not
included, and figures are include at the end of the document in
ugly ascii. These features are included in the PostScript
version and in the hardcopy version.
Hardcopy may be ordered from the Government Printing Office when
available.
1 Introduction 1
1.1 Audience 1
1.2 The Standards 1
1.3 Using This Document 2
1.4 Security Considerations 3
2 SQL Architecture 5
2.1 SQL Functionality 5
2.2 SQL Implementation 5
2.3 Security Responsibilities: The SQL Component 6
2.4 Security Responsibilities: Non-SQL Components 7
2.4.1 Application Interface to SQL 7
2.4.2 SQL Interface to Physical Database 7
2.4.3 SQL Interface to Non-SQL DBMS 8
2.4.4 Interface to Remote Databases 8
3 Security Policy 9
3.1 Discretionary Access Control 9
3.1.1 Privileges 9
3.1.2 Authorization Identifier 11
3.1.3 Roles 12
3.2 Mandatory Access Control 12
3.2.1 Polyinstantiation 13
3.2.2 TCB Subset Architecture 14
3.2.3 Trusted Subject Architecture 15
3.2.4 Integrity Lock Architecture 15
3.3 Schema Manipulation 16
3.4 Integrity Constraints 16
3.4.1 Table Constraints 16
3.4.2 Column Constraints and Check Constraints
17
3.4.3 Assertions 18
3.4.4 Domains 19
3.4.5 The SQL'89 Security Bug 19
3.5 Object Reuse 19
3.6 Labels 19
3.7 Inference 20
3.8 Aggregation 21
4 Accountability 22
4.1 Identification & Authentication label 22
4.2 Auditing 23
5 Assurance 24
5.1 Testing and Evaluation 24
5.1.1 FIPS Conformance 25
5.1.2 NCSC Evaluation 26
5.2 Reliability 26
5.2.1 Fault Tolerant Systems 26
5.2.2 Disk Array Technology 27
5.3 Transaction Management (Integrity) 28
5.4 Diagnostics Management 28
6 Summary/Recommendations 29
7 References 31
8 Figures and Tables 33
1 Introduction
Federal agencies maintain an increasing amount of valuable and
sensitive information in relational database management systems
(DBMS). These agencies are required to utilize Federal
Information Processing Standard (FIPS) 127-compliant database
management systems. FIPS 127 specifies the Database Language SQL
(SQL)1 for accessing and manipulating relational databases.
SQL requires certain levels of functionality in schema
specification, retrieval and modification of data, and
transaction management. However, a number of security-relevant
areas are not addressed. As a result, SQL-compliant DBMS systems
offer varying levels of security functionality.
This document examines the various security aspects of SQL.
Security-relevant features are identified, in conjunction with
the version of the SQL standard that supports them. Critical but
unspecified security features are noted, as well as the types of
mechanisms that could be offered by vendors.
Finally, three broad security policies are examined. The level
of support offered by the various SQL versions is contrasted for
each policy, and critical controls unspecified by any version of
SQL are identified.
1.1 Audience
This document is intended to assist information technology (IT)
managers in the selection of DBMS's with appropriate security
functionality. IT managers with knowledge of security policies
and mechanisms, and familiarity with DBMS's will find it most
useful. However, the document does not assume that familiarity.
Background information regarding both security and databases is
included to assist the reader.
1.2 The Standards
SQL is a widely used language for accessing and manipulating
relational databases. Several levels of SQL are defined; these
levels are generally upwardly compatible. Certain
security-relevant features are required in an SQL-compliant
DBMS. Other security features are not specified by SQL, but may
appear in particular products. The exact functionality of an
SQL-compliant DBMS varies according to the particular SQL
specification and the set of unspecified enhancements which are
1 SQL is not an acronym, although it derives from
"Structured Query Language." The complete name is Database
Language SQL.
1
also included.
The basic SQL definition is ANSI X3.135-1989, "Database Language
- SQL with Integrity Enhancement" [ANS89a], and will be referred
to as SQL'89. The functionality of SQL'89 includes schema
definition, data manipulation, and transaction management.
SQL'89 and ANSI X3.168-1989, "Database Language - Embedded SQL"
[ANS89b], form the basis for FIPS 127-1 [FIP90].
ANSI X3.135-1992 [ANS92] describes an enhanced SQL, known as
SQL'92. The enhancements include schema manipulation, dynamic
creation and execution of SQL statements, and network environment
features for connection and session management. FIPS 127-2
[FIP90b] is based upon X3.135-1992.
Finally, a third version of SQL is currently under development in
ANSI and ISO. This version will be referred to as SQL3 in the
remainder of this document. SQL3 enhancements will include the
ability to define, create, and manipulate user-defined data types
in addition to tables.
ISO/IEC Draft International Standard 9579-1 [ISO90a] and 9579-2
[ISO90b] define the Remote Database Access (RDA) standard. RDA
provides a method for interconnecting database management
systems. 9579-1 describes the generic model; 9579-2 presents the
SQL specialization information.
1.3 Using This Document
Section 2, SQL Architecture, provides an overview of the
functionality and interaction of the components of a system
supporting an SQL-compliant DBMS. The section includes a survey
of the security responsibilities of each component in such a
system.
Sections 3, 4, and 5 present required features and enhancemants
of SQL-compliant DBMS systems.2 These sections are structured to
reflect the Security Requirements described in [TCS85]. Section 3
presents mechanisms that can be used to enforce Security Policy.
Section 4 addresses Accountability mechanisms. Section 5
includes Assurance measures. (The TCSEC security requirement
Documentation is omitted.)
The content of these sections does not strictly adhere to the
TCSEC security requirements. Items are added or omitted to
reflect the requirements of non-DoD federal agencies.
2 "Enhancements" are features which are not specified in the
SQL specifications, but are not ruled out by the standard either.
The vendor has the option of including such features for product
differentiation.
2
Modifications include:
o augmenting the integrity requirements in security policy;
o omission of covert channels;
o inclusion of fault tolerant hardware, such as Redundant
Array of Inexpensive Disks (RAID) storage units;
o discussion of assurance value of FIPS conformance testing;
and
o discussion of inference and aggregation.
The final section of this paper presents a review of required and
optional security features. These features are examined in
conjunction with general security choices (e.g., mandatory vs.
discretionary access control). The level of support offered by
the various SQL versions is contrasted for each of these choices,
and critical controls that are not specified by any version of
SQL are identified.
1.4 Security Considerations
The basic security requirements are, as always, preservation of
confidentiality and integrity while maintaining availability.
There are a number of specific threats within these categories
that merit special consideration here.
Inference and aggregation are usually considered threats to
mandatory access control policies. There are also a number of
DBMS specific security issues, such as referential integrity and
polyinstantiation. Classic operating systems problems such as
deadlock and transaction completion problems must also be
considered.
The following definitions will be used in this document:
o inference: Derivation of new information from known
information. The inference problem refers to the fact that
the derived information may be classified at a level for
which the user is not cleared. The inference problem is that
of users deducing unauthorized information from the
legitimate information they acquire.[Thu92]
o aggregation: The result of assembling or combining distinct
units of data when handling sensitive information.
Aggregation of data at one sensitivity level may result in
the total data being designated at a higher sensitivity
level.[Rob91]
o polyinstantiation: Polyinstantiation allows a relation to
contain multiple rows with the same primary key; the
multiple instances are distinguished by their security
levels.[SFD92]
o referential integrity: A database has referential integrity
if all foreign keys reference existing primary keys.[Cam90]
3
o entity integrity: A tuple in a relation cannot have a null
value for any of the primary key attributes.[DJ92]
o granularity: The degree to which access to objects can be
restricted. Granularity can be applied to both the actions
allowable on objects, as well as to the users allowed to
perform those actions on the object.
An example of polyinstantiation is included in section 3.2,
Mandatory Access Control. Examples of inference and aggregation
may be found in sections 3.4 and 3.5, Inference Controls and
Aggregation respectively.
4
2 SQL Architecture
This section begins with a brief description of the functionality
of SQL. Secondly, a model of an SQL implementation is presented.
Finally, the security problems associated with each component of
the model are highlighted.
2.1 SQL Functionality
SQL defines standard components and facilities for relational
database management systems. The components of an SQL database
are schemas, tables, and views. A schema describes the structure
of related tables and views. Tables hold the actual data in the
database; they consist of rows and columns. Each row is a set of
columns; each column is a single data element. Views are derived
tables, and may be composed of a subset of a table or the result
of table operation (e.g., a join of different tables).
The SQL standard describes facilities to perform four specific
functions:
o Schema Definition: Used to define the structure of the
database, integrity constraints, and access privileges;
o Retrieval: Retrieve data from a database with a standard
query interface;
o Data Manipulation: Populate and modify the contents of a
database by adding, modifying or deleting rows and columns;
o Schema Manipulation3: Modify the structure, integrity
constraints, and privileges associated with the tables and
views in the database; and
o Transaction Management: The ability to define and manage SQL
transactions.
Each of these components is related to certain security threats.
Schema definition and manipulation relate to problems of
inference and aggregation. Data retrieval tasks must conform to
confidentiality policies. Data manipulation must conform to
integrity policy. Transaction management contributes to
maintaining the integrity of the database.
2.2 SQL Implementation
3 Schema manipulation is introduced in SQL'92. These
facilities are unspecified in SQL'89.
5
To perform the security analysis, it is necessary to assume some
architecture for an SQL implementation. Figure 1 depicts a
standalone model, which can be implemented with any level of SQL.
Figure 2 depicts a client/server model, which can be implemented
in a standard fashion with SQL'92 or SQL3 together with RDA (ISO
9579). Client/server implementations with SQL'89 will be
proprietary and may not be interoperable with other SQL products
without the use of special gateways. The first model shows an
application interfacing with an SQL processor, which interfaces
with a physical database on a local system. This model can be
implemented with any version of SQL. The second model, a
simplification of the model presented in [GS92] requiring SQL'92
or SQL3, has the following features:
o An application, written in the SQL query language or
utilizing embedded SQL, will communicate with an SQL server.
o The SQL server may directly access an SQL-compliant
database.
o The SQL server may access a database that is not
SQL-compliant through an appropriate database processor.
o The SQL server may act as a client and access a remote
database.
o The SQL server may access a remote database by utilizing
implementation-defined communications software and de facto
standards.
o The SQL server utilizes the OS services of the local host to
access and store data on the system.4
2.3 Security Responsibilities: The SQL Component
There are valid security considerations for each of the four
areas of SQL functionality:
o Database Schema: The database schema must be well designed
to ensure that aggregation and inference are not threats.
o Retrieval: The SQL server is responsible for maintaining
access control for SQL level objects.
o Modification: The SQL server is responsible for maintaining
access control for SQL level objects. The SQL server is
responsible for enforcing type checking and ranges; these
are external consistency issues. The SQL server is
responsible for enforcing check constraints and uniqueness
4 In certain cases, such as database machines, the system
may not have a general purpose operating system. The system will
still offer certain services to the SQL layer, though.
6
requirements; these are internal consistency issues.
o Transaction Management: The SQL server must ensure orderly
access to data when concurrent transactions attempt to
access and modify the same data.5 The SQL server must
provide appropriate transaction management features:
incomplete transactions can result in loss of external
consistency6 - the tables and elements are no longer
"synchronized."
2.4 Security Responsibilities: Non-SQL Components
2.4.1 Application Interface to SQL
The interface between the SQL processor and an application may
utilize the embedded SQL language or the SQL language
(interactively or invoked by a front-end processor). The
application must supply accurate information regarding the
identity of the user to the SQL processor. This places two
requirements on the system: appropriate selection and management
of identification and authentication (I&A) controls and control
of this critical attribute's propagation.
If the I&A control is weak or poorly managed, there is little
assurance of accuracy for this attribute. Consider passwords
where the account name and password are identical (a.k.a., "joe
accounts"). If an application accesses SQL for such an account,
there is an increased probability that the actual user is not the
authorized account user. Identity-based controls become severely
weakened.
Some systems include programs or features that allow users to
modify their identity. The UNIX operating system, for instance,
includes the file attributes setuid, which re-sets the user id,
and setgid, which re-sets the group id. Termination of the
program is intended to cause the old user and group id's to
resume. However, flaws in the implementation of these features
may allow a user to continue to masquerade as the other user,
executing SQL programs with unauthorized privileges.
2.4.2 SQL Interface to Physical Database
The operating system provides the basic services that enable the
SQL processor to store, retrieve, and modify data on the system.
The operating system is responsible for guaranteeing the simple
5 Deadlock (and denial of service) is one possible result of
such concurrent transactions; loss of data integrity is another.
6 as defined by Clark and Wilson in [CLARK87].
7
integrity7 of the data and preventing denial of service.
The operating system must also prevent data from being accessed
outside the SQL processor. Access to raw DBMS files, database
export files, or journal files may violate security policy. Such
actions can result in loss of integrity (e.g., improper
modification of data) or confidentiality (e.g., by circumventing
internal access controls of SQL).
2.4.3 SQL Interface to Non-SQL DBMS
The SQL interface to non-SQL DBMS's is unspecified in SQL'89.
SQL'92 introduces the concepts of an SQL client and an SQL
server. By matching an SQL client with a non-SQL server, SQL
queries may be performed on non-conforming databases; however,
this requires that the non-SQL server provide an SQL-conformant
view of its services and data.
The interface between a client and server must be protected.
Other processes on the system could eavesdrop, insert incorrect
information, or perhaps even delete information. These actions
would result in loss of integrity or confidentiality.
2.4.4 Interface to Remote Databases
The RDA standard is designed as a generic interface between local
and remote database servers. RDA also has an SQL Specialization
for connecting SQL-compliant databases. Currently, RDA is only
defined for use in an OSI network environment. Partially
conformant products which use TCP/IP are also available.
Use of RDA on an open network may expose the system to many
threats. Eavesdropping, packet replay, and host spoofing are
likely threats. These threats can be minimized by employing
encryption techniques and strong authentication measures.
The RDA standard allows for exchange of authentication data.
However, it is not required. Encryption techniques may be
employed at several different layers of the OSI stack. RDA does
not require or forbid such techniques; therefore, the security
achieved will be dependent upon the implementation.
Where proprietary protocols are used, the system will be exposed
to all the same threats as use of RDA. From a security
standpoint, the same threats must be addressed. (From an open
systems standpoint, there are also interoperability problems.)
In addition, if a translator gateway is required this may add a
single point of failure to a distributed database architecture.
7 Simple integrity refers to the operating system reading
and writing data in a predictable manner.
8
3 Security Policy
This section addresses mechanisms for enforcing security policy
on computer systems. It concentrates on controlling the access
to, and modification of, data. This corresponds roughly to
confidentiality and integrity policy although availability can
sometimes be affected.
The section begins by addressing access control mechanisms.
Discretionary and mandatory access controls are examined in turn.
Next, the section reviews integrity constraints. This is
followed by the more traditional security features of object
reuse and labeling. The section closes by examining mechanisms
for controlling inference and aggregation.
3.1 Discretionary Access Control
Discretionary access control (DAC) is a means by which access to
objects is restricted to specific users or groups of users. The
access control is discretionary in that access privileges may be
passed on to other users, either directly or indirectly, by the
owner of the object.
3.1.1 Privileges
Privileges are the means by which SQL enforces DAC. Privileges
are granted with a Grant statement and are used to specify an
allowable action on a specific object, e.g., to UPDATE the rows
in a specific table, to a grantee.
3.1.1.1 SQL'89
SQL'89 defines the following five privileges which establish the
granularity of access available to users of the database: INSERT,
DELETE, SELECT, UPDATE, and REFERENCES.
o The INSERT privilege grants a user the ability to create new
rows in a base table or a viewed table. If the new row is to
be added to a base table, the candidate row must include
every column of the base table for which no default value
has been either implicitly or explicitly defined. If the
candidate row is to be added to a viewed table, the
candidate row must include every column in the base table
from which the viewed table is derived. Additionally, the
view must be updatable.
o The DELETE privilege grants a user the ability to delete
rows from a table. In order to delete rows from a table or
view, the delete privilege needs to have been granted and
the view must not be read-only.
9
o The SELECT privilege grants a user the ability to retrieve
values from a table. Essentially, the select privilege
allows users to read tables.
o The UPDATE privilege grants users the ability to update, or
change, the contents of a row in a table. In addition, to
perform updates on a view, the view must not be read-only.
Column constraints can be specified when granting this
privilege; that is, a user may be allowed to update certain
columns within a table or view.
o The REFERENCES privilege grants a user the ability to
specify a foreign key reference across schemas. Foreign keys
are fields which coincide with a unique field (e.g., primary
key fields) in the grantor's table. A security implication
of the references privilege is that it can be used, possibly
inadvertently, to implement a denial of service attack. When
table B references table A, records from table A cannot be
deleted or the primary key field cannot be changed if a
record from table B corresponds to that record from table A.
Another security implication of the references privilege is
that a user could, based on the constraint definition,
determine all legal values for the referenced column. A
policy violation would occur if this information was used to
infer knowledge from which a user had been exluded.
Privileges can be granted to individuals or to everyone (if
PUBLIC is specified). Caution should be used when utilizing the
PUBLIC specifier. Additionally, privileges can be granted with
the WITH GRANT OPTION. This gives the grantee of a privilege the
ability to subsequently grant that privilege to other users. As a
result, the owner may loose control over his own table. Finally,
privileges can be granted one by one, as a comma separated list,
or with the ALL specifier. The ALL specifier, however, refers
only to those privileges grantable by that user.
A significant security flaw in SQL'89 is the fact that there is
no standard way to revoke privileges. As job requirements change,
necessary access to the database could also change. It should be
noted that the standard does not exclude vendors from
incorporating a statement for revoking privileges into an
implementation, and many vendors do include such a statement.8
The standard simply does not require such a statement, or specify
the semantics of such a statement if included.
8 In fact, the authors do not know of any product which
omits a mechanism for revoking privilege.
10
3.1.1.2 SQL'92
A new privilege has been defined for SQL'92. The USAGE privilege
is used to allow or restrict access to domains, collations,
character sets, and translations. Additionally, all privileges
from SQL'89 hold with the following extensions:
o The INSERT privilege can be specified with a column
constraint as well as on whole tables. (SQL'89 specified
column constraints only for the UPDATE and REFERENCES
privileges.)
o The REFERENCES privilege has several extensions. These
extensions maintain referential integrity on delete and
update operations in the base table. Instead of a delete or
update operation in the base table being blocked because the
record is referenced in another table, the reference can be
specified with one of the following actions:
o The CASCADE specifier will propagate the change from the
base table to the referencing table. On update, the update
will appear in the referencing table. On delete, matching
rows in the referencing table will also be deleted.
o The SET NULL specifier will set, for both update and delete,
the referencing column in all matching rows to the null
value.
o The SET DEFAULT specifier will set, for both update and
delete, the referencing column in all matching rows to the
default value, as specified with the "<default clause>.""
o The NO ACTION specifier performs no referential integrity
function. It is included for backward compatibility reasons.
It results in the same functionality as SQL'89. When no
referential integrity constraint is specified, the NO ACTION
specifier is implicit.
SQL'92 adds the REVOKE statement. With this statement, all
grantable access privileges can be revoked. The revoke statement
can also be used to revoke the grant option from a user. As a
result that user could no longer grant privileges to other users.
3.1.2 Authorization Identifier
For both SQL'89 and SQL'92 <authorization identifiers>, the SQL
11
non-terminal used to specify users (e.g., <grantor> and
<grantee>), are defined in an implementation-dependent way. This
means SQL does not define how operating system users are mapped
to SQL users. See Section 4.1, Identification and Authentication,
for more information.
3.1.3 Roles
With current versions of the SQL standard, maintenance of
appropriate access control restrictions is difficult. The Grant
and Revoke statements are available to allocate individual
privileges, but this leaves much for an administrator to
maintain. A change in job requirements by one user can require
many changes to database access for that user. To complicate
matters further, if the user whose job requirements changed has
granted privileges to other users, those privileges must be
examined for correctness.
Another drawback of the current privilege system is that a user
accumulates privileges required for different job functions. For
example, separate job functions for one individual may include
payroll clerk and purchasing agent. It may be desirable to allow
the user access to only payroll related objects while performing
payroll clerk functions and purchasing related objects while
performing purchasing agent functions.
SQL3, the newest version of SQL being developed, has an enhanced
facility for the manipulation of access rights. In addition to
the existing Grant and Revoke statements, a new construct, called
Roles, is being developed. This facility will allow database
administrators to create individual roles with corresponding
database access requirements. Then, for example, when a user's
job requirements change to no longer include payroll clerk
activities, only one Role needs to be revoked instead of revoking
access privileges to all objects needed only for payroll clerk
activities.
An additional benefit of Roles is that a user can have only one
Role active at a time. This would allow a user to access only
payroll related objects when working under the Payroll Role, and
access procurement related objects when working under the
Purchasing Role.
3.2 Mandatory Access Control
Mandatory access control (MAC) is not supported directly in SQL.
However, there are several different methods for implementing a
mandatory access control model. The major architectures for
trusted DBMS products [Cam90] are the Trusted Computing Base
(TCB) Subset Architecture (Figure 6), Trusted Subject
Architecture (Figure 7), and Integrity Lock Architecture (Figure
8). Each is intended for use with a Trusted Operating System
12
(OS), but requires different controls.
It should be noted that an SQL-based DBMS with mandatory access
controls can be designed without modification of the SQL syntax.
However, certain modifications in SQL semantics must be made if
polyinstantiation is used to control inference.
3.2.1 Polyinstantiation
Polyinstantiation is frequently used with mandatory access
control database systems to control inference. This section is
intended to explain polyinstantiation. Inference, and the
application of polyinstantiation for inference control, are
described in Section 3.4, Inference.
In the following example, the database is a single relational
table. The table contains two columns: Patient name and Disease.
The Patient name field is the key for this table. There are two
clearance levels, HIGH and LOW. Two sets of data exist; the first
set is HIGH data (Figure 3) and the second is the LOW data set
(Figure 4).
The HIGH data include patients under police guard, such as
Jackson, or patients with confidential diseases. The LOW data
include all other patients, and perhaps some of the HIGH
patients with different data.
When users with LOW security level browse the database, they are
only permitted to see the LOW data. If a user wishes to add a
LOW record with primary key X, the command is accepted even if a
HIGH record exists with that key.
When a user with HIGH security level browses the database, he
sees all of the HIGH records, as well as the LOW records with a
primary key that is not found in the HIGH data. The resulting
table is shown in Figure 5. Note that the record for Howard does
not appear twice; only the HIGH level record appears.
This feature may be useful in a number of ways. LOW users cannot
determine if a HIGH record exists with key Gordon by attempting
to create a record and checking for an error message. Dual
records could be used, as in the case of Howard, to prevent LOW
users from discovering the true nature of Howard's illness. This
is intended to prevent disclosure by inference.
In many situations, polyinstantiation may be implemented by a
local database security administrator using only standard
features from SQL'89. The above example is easily implemented
with two base tables, known only to the security administrator,
and a single view available to all other users.
BaseTable1(PatientName,Disease,Level) with Primary
13
Key(PatientName,Level)
BaseTable2(UserName,SecurityLevel) with Primary Key(UserName)
CREATE VIEW PatientInfo(PatientName,Disease)
AS SELECT PatientName,Disease
FROM BaseTable1
WHERE BaseTable1.Level = (SELECT SecurityLevel FROM
BaseTable2
WHERE UserName = CURRENT_USER
)
OR
(BaseTable1.Level = "LOW"
AND
NOT EXISTS (SELECT * FROM BaseTable1 AS X
WHERE X.PatientName = BaseTable1.PatientName
AND X.Level = "HIGH"
)
)
With view optimization techniques available in most
SQL-conformant processors, user access through the PatientInfo
view should suffer no significant performance penalty over direct
access to BaseTable1.
This view is always updateable, provided that a DEFAULT value
exists for Level in BaseTable1. In SQL'89 and SQL'92, the
default clause does not allow a case expansion to determine the
default, so one cannot specify in the schema that insert values
for Level are HIGH for high level users and LOW for low level
users. Instead, one would specify a default and all new inserts
would have that Level initially assigned.9
Ensuring that new inserts are all assigned the appropriate
security level requires a second view, to be used only by HIGH
level users. The second view would assign inserts a HIGH value
for Level by default. The first view would have a default of LOW
for Level.
3.2.2 TCB Subset Architecture
The TCB Subset model implements MAC by maintaining the database
in multiple, single-level, files. The operating system enforces
the access control policy, restricting the DBMS process to
appropriate information. This means that the DBMS does not have
to be trusted, so evaluation is simplified. The DBMS might still
enforce privilege based access controls, but would not enforce
MAC policy. If no DAC policy is required, all users would have
9 The emerging SQL3 specification includes facilities that
easily get around this problem.
14
all privileges for all tables.
The TCB Subset model implies polyinstantiation. If a record r1
exists with keys K, but is classified SYSTEM HIGH, a SYSTEM LOW
user cannot see it. If a SYSTEM LOW user attempts to add a
record r2 with keys K, the system must do so. Now the DBMS has
two records with the same set of keys in the same table. SYSTEM
LOW users will see r2. SYSTEM HIGH users will see r1 instead; r2
is considered incorrect. This can reduce inference problems, but
results in a variety of integrity problems. The data in the two
records may become out-of-date. Then if one record is changed,
but the other is not, the DBMS loses integrity.
Note that this is quite complicated if categories are being
utilized. The TCSEC suggests that MAC systems support a minimum
of eight security levels and 256 categories. Since the files
must support combinations of categories for each level, the
number of files is unmanageable. To avoid this problem, the DBMS
could have to enforce the category aspect, but this defeats the
purpose of the architecture: the DBMS process must be a trusted
process.
3.2.3 Trusted Subject Architecture
A Trusted Subject Architecture DBMS enforces both MAC and DAC.
The database is stored on the system as SYSTEM HIGH OS objects.
Within those files, DBMS objects are labeled according to
security policy. Those labels are used as the basis for MAC
enforcement. DAC enforcement is based upon the usual SQL DAC
specifications.
The Trusted Subject Architecture does not imply or rule out
polyinstantiation. Support for polyinstantiation must be built
in if it is required.
3.2.4 Integrity Lock Architecture
The Integrity Lock Architecture uses an untrusted DBMS in
conjunction with a trusted OS and trusted filter to enforce
security policy. The DBMS could enforce DAC policy, but MAC
policy and labeling would be enforced by the trusted filter.
Encryption and cryptographic checksums are employed to protect
the security label from modification. The Integrity Lock
Architecture implies support for polyinstantiation. This
architecture allows use of off-the-shelf DBMS software. It has
disadvantages due to high overhead.
These are the most common architectures for MAC DBMS's, but are
not the only ones. They can also be combined to some extent.
For instance, the Integrity Lock Architecture could be used to
add category enforcement to the TCB Subset Architecture.
15
3.3 Schema Manipulation
SQL'92 allows manipulation of the schema itself, rather than just
the data. Columns and constraints on columns can be added or
removed from tables. Additionally, schema object, such as domains
and constraints, can be altered or deleted. Also new to SQL'92
are schema definition tables. These tables are created by the SQL
processor and are treated as views, in that they can be accessed
but not directly changed in SQL.
3.4 Integrity Constraints
Data integrity is addressed by a variety of data constraints
specified in the database schema. These constraints describe
relationships between tables, relationships between rows in a
table, and permissible values for elements. Relationships
between tables, or between rows in a table, are known as table
constraints. Range checks and other specifications for data
values are element constraints.
3.4.1 Table Constraints
3.4.1.1 SQL'89
SQL'89 defines three types of integrity constraints that may be
placed upon tables. These constraints are:
o unique constraints;
o referential constraints; and
o check constraints.
SQL'89 also defines with CHECK option on views.
A unique constraint definition specifies a list of columns in the
table T. T cannot contain multiple rows where the values of each
of the corresponding columns are identical. Each of the listed
columns must be defined as NOT NULL.
Example: Assume T has columns {a,b,c,d} and is constrained for
uniqueness on {a,c,d}. Row Ti has values {ai,bi,ci,di}. T meets
the constraint if there are no rows Tj and Tk such that {aj = ak,
cj = ck, and dj = dk}. In Table 1, T-1 meets the constraints,
but T-2 does not. Rows T1 and T4 are not unique for the
specified columns.
A referential constraint definition specifies columns in T which
reference keys in another table F. If all specified columns in a
row of T are non-null, then a row in F must exist such that all
corresponding columns match. The table has referential integrity
if every row meets this criteria, or has a null value in the
16
specified columns.10
A check constraint definition specifies a condition which all
rows in T must satisfy. The condition may restrict a column, or
may restrict relationships between columns. (For example, within
a row MAX-TEMP >= MIN-TEMP.) The condition is ternary; it may
evaluate to "true," "false," or "unknown." The condition may
specify illegal values or legal value ranges. The table does not
satisfy the check condition if and only if there exists a row for
which the condition evaluates to "false."
Views with check options are similar to check constraints upon
tables. However, the constraint is satisfied if and only if the
condition evaluates to "true."
3.4.1.2 SQL'92
SQL'92 enhanced referential constraints with the MATCH FULL and
MATCH PARTIAL specifications. If no match type is specified, the
functionality is identical to SQL'89. If MATCH FULL is
specified, then for each row in T:
o all referencing columns must be null; OR
o all referencing columns must be non-null and there must be a
row in F such that all corresponding referencing columns are
equal value.
If MATCH PARTIAL is specified, then for each row in T:
o there must be a row in F such that all corresponding
referencing columns are equal value, or a referencing column
value in T is null.
3.4.2 Column Constraints and Check Constraints
SQL'89 defines six types of integrity constraints that may be
placed upon columns. These constraints are:
o data type;
o precision;
o references specification;
o default clause;
o CHECK constraint definition; and
o NOT NULL.
The defined data types for SQL'89 are character strings and
numbers. The character strings are specified with a fixed length.
10 If one or more specified columns in the row are null,
correspondence can not be established.
17
Numbers may be exact numeric values or approximate numeric
values.
Exact numeric values include integers and real numbers with a
precision and scale. A real number of exact numeric value is a
string of decimal digits of length precision. The exact numeric
value is the integer value of the significant digits multiplied
by 10-scale.
Approximate real numbers have an exponent and mantissa. The
mantissa is a signed numeric value; the exponent is a signed
integer that specifies the magnitude of the mantissa. Approximate
real numbers have precision; precision is a positive integer
specifying the number of binary digits in the mantissa. Integers
come in two sizes. Real numbers can be defined in five different
ways, allowing the database designer to create fields tailored
for the data.
The references specification allows the specification of a
referential integrity clause for a single column (rather than a
list of columns). Any non-null value entered into that column
must exist in the corresponding table and column.
Default clauses may be stated explicitly or implicitly. SQL'89
permits default values of NULL, USER, or a literal (constant of
appropriate data type). Additional default options, such as
<datetime value function>, are available in SQL'92.
A CHECK constraint definition specifies a condition which the
column element must satisfy in each row. This differs from the
table check constraint; the condition can only involve the
specified column element. Again, the condition is ternary; it
may evaluate to "true," "false," or "unknown." The condition may
specify illegal values or legal value ranges. The table does not
satisfy the check condition if and only if there exists a row for
which the condition evaluates to "false."
The NOT NULL constraint is an implicit check constraint. It
corresponds to CHECK <column name> IS NOT NULL.
SQL'92 adds two new data types, datetime and interval. The type
datetime includes DATE, TIME, and TIMESTAMP. The type interval
allows specification of a year-month or day-time interval.
Variable length character strings are also added in SQL'92, and
the character set for the character string may also be defined.
User-defined data types are under consideration for SQL3.
3.4.3 Assertions
In SQL'92, assertions enhance the SQL'89 check constraints.
Assertions are named constraints that "may relate to the content
18
of individual rows of a table, the entire contents of a table, or
to a state required to exist between a number of tables."
[FIP93] This is a significant enhancement, since SQL'89 check
constraints applied to column(s) in a single row. (In SQL'92,
check constraints are allowed to contain subqueries.)
3.4.4 Domains
Domains were introduced in SQL'92. Domains are a significant
enhancement for data abstraction used to specify a set of
permissible values. Domain definitions can also be used to
enforce a variety of format constraints, such as position of
hyphens in a date field.
3.4.5 The SQL'89 Security Bug
SQL'89 allowed a user with UPDATE or DELETE privileges to use
WHERE clauses even if they did not have SELECT privileges. This
allowed users to "probe" the system for data they were not
privileged to have. They could confirm the existence of a record
with certain column values even though they could not directly
read the record. This bug was fixed in an SQL'89 Errata and is
specified correctly in SQL'92.
Note that a workaround exists for older SQL'89 systems. By
defining updatable views, the columns users can access may be
limited to the appropriate subset of the data. In any case, a
user with DELETE privileges will be able to determine values of
primary keys.
3.5 Object Reuse
Object reuse is defined in [Rob91] as:
The reassignment to some subject of a medium (e.g., page
frame, disk sector, magnetic tape) that contained one or
more objects. To be securely reassigned, such media must
contain no residual data from the previously contained
object(s).
SQL'89 and SQL'92 have no specification regarding object reuse.
In order to accommodate object reuse issues, both the SQL
processor and the operating system will need to address the issue
jointly. The operating system is responsible for deallocating
system resources, such as files used to store whole tables, and
the SQL processor is responsible for deallocating SQL objects,
such as individual rows of tables. To maintain confidentiality,
data stored in these resources and objects must be zeroed out or
replaced with random data before reassignment.
3.6 Labels
19
Mandatory access controls require support for security labels.
These labels are used as the basis for access control decisions.
In order to correctly label data, the system must request and
receive the security level of data. This can be accomplished in
several ways.
On a trusted system, the user may specify the security level of
each session. (The specified security level must be "less than"
or equivalent to the user's clearance level, of course.) That
information would be passed to the DBMS, and all input would be
labeled at that level by default. Alternatively, the DBMS could
include a mechanism to request and set the current level
interactively.
If the DBMS is not trusted, as in the Integrity Lock
Architecture, all mechanisms regarding labeling will be placed in
the trusted filter or operating system.
In addition, if the DBMS labels DBMS objects with greater
granularity than OS objects, the DBMS must maintain label
integrity. For instance, if all DBMS objects are stored in a
single SYSTEM HIGH OS object, as in Figure 7, then the DBMS must
maintain labels for the DBMS objects. This is in contrast to
Figure 6, where the OS keeps track of all labeling information.
3.7 Inference
Consider a research hospital, which has a database of doctors and
patients. Patient information includes address, Social Security
number, doctor name, known allergies, current prescriptions, and
scheduled appointments. Each patient's medical history is kept
on-line in a series of medical records. Scheduled hours,
appointments, and specialty are associated with each doctor.
This database is used for scheduling appointments, billing
patients, and filling prescriptions. The hospital wishes to
protect the patients' anonymity, and prevent disclosure of their
ailments to anyone other than a patient's individual doctor. For
this reason, the average user is not allowed to access the
patient history/medical records.
However, the database may still be vulnerable to disclosure
through inference.
o Doctors generally specialize in the treatment of particular
diseases. It may be possible for hospital staff to infer a
patient's ailment from the identity of the doctor. This
could be determined by viewing the patient information or
the doctor's schedule.
o Drugs are generally associated with the treatment of
particular diseases. It may be possible for hospital staff
to infer a patient's ailment from the prescription.
20
Polyinstantiation is the key method used in these situations for
limiting inference in multi-level secure systems.
3.8 Aggregation
Consider a database of parts for a missile. Each part's
information includes sufficient information for a manufacturer to
fabricate the part. This information would include materials,
physical geometry, and finishing treatment(s). (A screw might be
described as follows: steel; 1 x 8 pan head with fine left-hand
threads; rust-inhibiting paint). In addition, the database
includes assembly information and the quantity of each part
required to assemble one missile.
Each part is unclassified. The combined schematic and missile
design are classified as SECRET. If each manufacturer is limited
to accessing a few part descriptions, he will not learn anything
about the missile itself. However, if the manufacturer can access
the entire database, they may be able to figure out how to build
the missile.11
To limit aggregation, one should limit access as tightly as
possible. Inference is a problem that is derived primarily from
poor database design. There are several methods for detecting
and reducing the potential for disclosure by inference, including
those described in [Thu92]. These methods can be used in
conjunction with SQL, but could not be performed within the
confines of SQL itself. These methods require additional
information regarding the relationships between the elements of
different relations.
The inference problem gets the most attention in MAC
environments, but can occur in DAC systems as well. Fortunately,
the same tools should apply to DAC systems.
The aggregation problem occurs when two pieces of information A
and B are classified at level X individually, but level Y (Y
higher than X) collectively. This problem may in fact be
insolvable. Denying access to A if User 1 with clearance X has
already viewed B would require an infinite history, and quickly
leads to inference problems. Aggregation is primarily a MAC
problem.
11 It is a lot like assembling a bicycle on Christmas Eve
without directions. You know what a bicycle looks like and you
have a pile of parts. You just try to use them all.
21
4 Accountability
Accountability is not addressed in the SQL specifications.
Accountability is primarily achieved with two classes of
mechanisms: identification and authentication controls; and
auditing.
4.1 Identification & Authentication label
Identification and authentication (I&A) mechanisms are not
specified in SQL. However, they are required implicitly. The
DAC mechanisms all assume that such information is available.
Such mechanisms are usually provided by the host system, and the
information is passed to the SQL processor. (In SQL'89 this is
implementation defined; in SQL'92 it is performed via the CONNECT
statement.) The quality of this information will vary according
to authentication technique and when that authentication is
performed.
In the simplest case, the user authenticates his identity to the
system at logon. That information is maintained throughout the
session. The information is passed to the DBMS when the DBMS is
accessed. The strength of authentication varies with the type,
implementation, and management of the authentication mechanisms.
That information may be incorrect by the time the DBMS is
accessed. The user may have left the terminal or workstation
unattended, and another person may actually be at the keyboard.
The information may be improved if the user re-authenticates when
the DBMS session begins.
A stronger method requires re-authentication with every
transaction. This is too burdensome for systems relying on
passwords, but smart card based systems can support this
requirement. This method provides high assurance that the user
identification was correct at the time the transaction was
initiated.
If such mechanisms are not supplied by the host system, the SQL
processor could incorporate its own I&A mechanism. However, the
lack of I&A implies a lack of access control by the host. In such
a case, the processor would have to utilize encryption to protect
the data. That is, a host without access control requires a DBMS
based upon the Integrity Lock Architecture.
Selection of I&A mechanisms must be tempered with common sense,
of course. If passwords will be used to authenticate both system
and DBMS session, the same mechanism (and password) should be
used. Requiring users to remember multiple passwords is likely to
result in misuse (e.g., they will write them down). Both
passwords and biometrics are inappropriate for authenticating
22
transactions; the burden upon the user is too great.
4.2 Auditing
Auditing concerns for trusted database systems are described in
[SFD92] as follows:
Auditing of security-related activities is required in
[trusted] DBMS's. Security-relevant events include
logins, granting and revoking of access permissions to
relations, etc. The level at which auditing needs to be
done is variable. The performance effects of the
optional auditing features should be carefully
examined, since their use may be a significant factor
in the performance of data management functions.
This statement is equally applicable to all database systems.
The SQL specification does not include auditing requirements, but
SQL products may include some auditing functionality. If the SQL
processor includes auditing, the OS must have sufficient access
controls to prevent modification of, or access to, the audit
trail.
Warning mechanisms are closely related to auditing requirements.
Such mechanisms notify the system or DBMS administrator if
critical events occur. (An example might be an attempt to access
tables without sufficient privilege.) Again, SQL has no
requirement for such mechanisms, but processors may include them.
23
5 Assurance
Assurance describes a broad range of mechanisms and procedures.
These mechanisms and procedures address the behavior of the
system. A system with high assurance is more likely to operate as
expected than a system with low assurance. Unexpected behavior
is generally the result of hardware failure or software bugs.
Hardware failure may be subtle (such as data transmission errors)
or catastrophic (such as a disk crash). Software bugs may be in
the OS, DBMS, or locally developed applications.
This section examines four areas of assurance:
o testing and evaluation;
o reliability of hardware;
o SQL transaction management; and
o SQL diagnostic reporting.
5.1 Testing and Evaluation
Two primary sources for assurance that software functions as
expected are testing and formal evaluation of software. Testing
is performed by supplying inputs to the DBMS while it is in
various states, and analyzing the results. Formal evaluation
involves review of design specifications and code as well as
testing.
Testing can be very informal, consisting of execution of a few
test applications, or quite rigorous. The features that are
specified in the versions of the SQL standard can be tested in a
very structured fashion to demonstrate compliance to the
standard. This is known as conformance testing. FIPS
conformance testing is a primary source of this information.
NIST maintains the NIST SQL Test Suite for validating conformance
to FIPS SQL.
Formal evaluation involves reviewing the architecture, source
code, and documentation to detect any flaws in the system. This
process may include formal verification of design and program
correctness. Formal evaluation by third parties currently
concentrates upon security functionality in general, and
confidentiality in particular, due to the expense. However, the
process could be performed against any standard or standard set
of criteria.
The primary source for formal evaluations by third parties has
been the National Computer Security Center (NCSC). The NCSC
performs evaluations of systems and subsystems against the
Department of Defense Trusted Computer System Evaluation Criteria
(TCSEC), which is commonly known as the Orange Book. Other
organizations providing formal evaluations are the European
Community evaluations against the Information Technology Security
Evaluation Criteria (ITSEC) and the Canadian Security
24
Establishment evaluations against the TCSEC and Canadian security
criteria. In each case, the evaluations are limited to
security-relevant features (as defined by the particular
criteria).
Conformance testing and security evaluation of SQL processors are
complimentary processes. For example, NCSC evaluations do not
look at code that falls outside the "trusted computing base" of
security-relevant code. As a result, NCSC evaluation will not
review many areas of SQL functionality that are reviewed in FIPS
conformance testing. The TCSEC supplies criteria in many areas
where the SQL standard is silent, so NCSC evaluations will cover
many areas that are outside the scope of conformance testing.
5.1.1 FIPS Conformance
FIPS 127-1 specifies ANSI X3.135-1989, "Database Language - SQL
with Integrity Enhancement", and X3.168-1989, "Database Language
- Embedded SQL".12 FIPS conformance testing provides assurance
that the features specified in the SQL standard function as
expected. This testing addresses the entire range of SQL
functionality, not just security.
Conformance testing is performed by executing a suite of test
programs and evaluating the results.13 Conformance testing does
not review the code itself. Security flaws such as trapdoors or
bugs in the code may not be detected. The evaluation is platform
independent, so platform dependent security problems will
probably go undetected. Many security concerns, such as covert
channels, are simply not an issue in this type of testing.
Conformance testing is also "flat" with respect to MAC. The
database is defined, populated, and queried at a single security
level. This makes sense, since SQL does not define any
functionality regarding MAC. However, polyinstantiation would
violate SQL's uniqueness clauses, but is not detected because of
the single level testing method.
SQL'92 has been approved as both ANSI and ISO standards. FIPS
127-2, which adopts ANSI X3.135-1992, was approved in June 1993.
Conformance tests have been developed only for Entry Level
SQL'92, because it represents a minor enhancement over the SQL'89
tests. Conformance testing for Intermediate and Full SQL'92
represent a major development effort which has not yet begun.
12 FIPS 127-1 does not require all features of SQL'89: see
the standard itself for details.
13 The conformance testing procedures are described in
\cite{cals:sql}.
25
5.1.2 NCSC Evaluation
The TCSEC and [TDI91] provide the basis for NCSC security
evaluations of trusted database management systems. These
evaluations consider security policy14, accountability, audit,
and assurance. NCSC evaluations are platform dependent, and
result in certification of a DBMS for use on a particular
computer system, with a particular operating system. A number of
issues, such as covert channels, are addressed where results are
invalidated by changes in the platform.
Evaluations may consider a wide range of assurance levels. At
higher levels, NCSC evaluations include review of security
relevant code (the TCB). At the highest levels, NCSC evaluations
require formal verification of all code in the TCB.
5.2 Reliability
The most valuable asset in a database system is often the data
itself. Loss of access to this data may be measured per minute
in some cases. This loss, known as denial of service, may arise
from a number of situations. One of these is the physical
failure of hardware.
Insuring reliability of hardware is the primary technique to
address hardware failure. Fault tolerant systems address system
failure; disk array technology can be used to address storage
media failure. Fault tolerance is not required by any SQL
specification, but is a feature of certain SQL implementations.
5.2.1 Fault Tolerant Systems
If the hardware platform itself is down, there will be no access
to the system. Fault tolerant systems are designed to continue
correct operation in the event of failure of any single
component. They typically exhibit both redundancy physically and
conceptually (two or more CPU's, buses, disk controllers, etc.)
and perform fault-detection tests with error-detecting codes,
disagreement detectors, and self-checking logic circuits. They
rely on disk array technology and WAFER storage technologies15
for fault tolerance in their peripherals.
Many systems are not designed to be completely fault tolerant,
but include redundancy at common points of failure. These
14 The TCSEC security policy criteria is weak in the area of
integrity policy.
15 WAFER storage are solid state storage subsystems. They
are expensive, but have performance advantages when compared to
disk array peripherals.
26
systems might be called fault resistant. For example, a disk
cabinet with four disk drives might include redundant power
supplies. A single power supply would be sufficient to run the
disks; however, a power supply failure would take them all out of
service. Redundant supplies mean two power supply failures are
required to halt the systems.
This feature does not make the disk drives in the cabinet fault
tolerant; a single drive failure will result in loss of that
disk's data and storage. It does make failure due to power
supply less likely. Fault tolerance for disks requires use of
disk array technology.
5.2.2 Disk Array Technology
Disk array technology uses several disks in a single logical
subsystem. Disk arrays were introduced in [KGP89], which
described six classifications for "Redundant Array of Inexpensive
Disks," or RAID systems. They were numbered RAID-0 through
RAID-5. RAID-1 through RAID-5 offer varying degrees of security
functionality.16
5.2.2.1 Disk Shadowing
To reduce or eliminate downtime from disk failure, DBMS servers
may employ disk shadowing or data mirroring. A disk shadowing,
or RAID-1, subsystem includes two physical disks. User data is
written to both disks at once. In this case, if one disk fails,
all of the data is immediately available from the other disk.
Disk shadowing incurs some performance overhead (during write
operations) and increases the cost of the disk subsystem since
two disks are required. However, the major problem with RAID-1
is the 50% disk overhead; for every 100 megabytes of disk space,
200 megabytes are required.
5.2.2.2 RAID-2 through RAID-4
RAID levels 2 through 4 are more complicated than RAID-1. Each
involves storage of data and error correction code (ECC)
information, rather than a shadow copy. Since the error
correction data requires less space than the data, the subsystems
have lower disk overhead. Each level has its own performance
implications.
5.2.2.3 RAID-5
RAID level 5 involves storage of data and error correction
information but does not require a dedicated shadow or ECC disk.
16 RAID-0 provides only balanced performance. RAID-6 and
RAID-7 have also been proposed since that time.
27
RAID-5 has good performance characteristics, since it has the
ability to read and write in parallel. Unfortunately, RAID-5
implementations work best with large numbers of physical disks
(10 to 20+) which rules out small to mid-sized disk subsystems.
5.3 Transaction Management (Integrity)
A database may be in a consistent or inconsistent state. A
consistent state implies that all tables (or rows) reflect some
real-world change. An inconsistent state implies that some
tables (or rows) have been updated but others still reflect the
old world.
Transaction management mechanisms are applied to ensure that a
database remains in a consistent state at all times. These
mechanisms allow the database to return to the previous
consistent state if an error occurs. Statements available in
SQL'89 for transaction management include the rollback and commit
statements. These statements are used to terminate transactions.
SQL3 adds the concept of savepoints.
o The rollback statement terminates a transaction and cancels
all changes to the database, including data or schema
changes. This returns the database to the previous
consistent state.
o The commit statement terminates a transaction and commits
all changes to the database, including both data or schema
changes. This makes the changes available to other
applications. If a commit statement cannot complete
successfully, for example a constraint is not met, an
exception is raised and an implicit rollback is performed.
Note that both statement rejects and transaction rollbacks
are permitted by the SQL standard.
o The savepoint feature allows a user to mark points in a
transaction, creating subtransactions. With this feature, a
user can rollback portions of a transaction without
affecting other subtransactions. For examples of savepoints
and subtransaction management see [Gal91, pages 23-24].
5.4 Diagnostics Management
SQL'92
SQL'92 adds a new area of functionality: diagnostics management.
This standardizes the return codes and completion codes for SQL
statements. This may have some security functionality,
especially when combined with external procedures.
28
6 Summary/Recommendations
SQL-compliant DBMS's can be applied to any scenario, no matter
what security policy is required. However, not all SQL-compliant
DBMS's will be appropriate for every security policy. Many
critical features are not specified by SQL; others are specified
in one version of SQL but omitted from earlier versions. The
systems acquisition phase must begin with a clear and concise
statement of the security policy. The exact features required
will be a function of that policy.
This section provides a short review of security features that
may be found in SQL-compliant DBMS's. These features are
classified as unspecified or required. Where required, the
version of SQL is specified and a brief summary of the
functionality is provided. For unspecified features, the feature
is classified as an OS, hardware, or DBMS feature. The remainder
of this section discusses the various features and provides
guidance regarding their relative importance.
Table 2 summarizes the types of security-relevant controls that
might be offered in an SQL-compliant DBMS. Controls are grouped
according to security requirements. For each control, a variety
of mechanisms is listed.17 Each control is either required by a
version of SQL, or represents unspecified functionality. If the
control was a new requirement, the Status field will state
required. If functionality is added to that requirement in later
versions of SQL, the Status field will say enhanced. If the
control is probable for SQL3, the Status will be planned. Note
that functionality denoted unspecified or planned may exist in
products today; however, implementations will be no-standard.
SQL processors can support a variety of security policy
mechanisms. In the area of security policy, the most important
decision regards the type of access controls desired. If
discretionary controls are desired, SQL'89 does include powerful
controls. SQL'92 significantly enhances these controls with the
specification of the privilege revocation mechanism. Roles will
be a significant enhancement for SQL3. This functionality may be
available in SQL processors even before the SQL3 specification
becomes stable. Mandatory controls are not specified in any
version of SQL but can be supported by SQL implementations.
The SQL integrity constraints are powerful tools for enforcing
and maintaining integrity. SQL'89 includes a powerful suite of
integrity constraints. SQL'92 does include enhancements such as
17 In some cases, controls map to mechanisms on a one-to-one
basis. For example, mandatory access control is basically
performed one way. In these cases, the mechanism field is
omitted.
29
assertions and domains. These constraints may be used to enforce
internal or external consistency constraints.
If the system will utilize MAC, design tools should be obtained
to limit the threat of aggregation. Whether MAC or DAC policies
are envisioned, inference and object reuse are threats to
confidentiality. Inference is addressed through add-on tools;
object reuse must be addressed within both the DBMS and OS.
Accountability is unspecified in SQL, but the choices are of
great importance. Most important is the selection of appropriate
authentication points. Should each transaction require
re-authentication, or is the session information sufficient? The
type of authentication mechanism is also important, but falls
outside the SQL specification as well.
Auditing and warning mechanisms are similarly unspecified but
required for any reasonably secure system. These mechanisms,
especially auditing mechanisms, depend upon the identity
previously authenticated. They are of limited value if
authentication is weak.
Finally, consider assurance mechanisms. If the system will rely
on SQL-specified DAC functionality, SQL conformance testing may
be sufficient. If the system will rely upon MAC controls,
evaluation may be more applicable.
Fault tolerance is an expensive option, but may be justified if
the value of the data is correspondingly high. Disk array
technology provides fault tolerance for data storage.
Transaction management features can add assurance that
applications are well-behaved, and the database remains in a
consistent state. These features add assurance only if they are
used consistently and appropriately. If the concept of
consistent state is not well understood for the database in
question, it will be difficult to use these features
appropriately.
30
7 References
[ANS89a] Database language - SQL with integrity enhancements.
American National Standard X3.135, American National Standards
Institute, 1989.
[ANS89b] Database language - embedded SQL. American National
Standard X3.168, American National Standards Institute, 1989.
[ANS92] Database language SQL. American National Standard
X3.135-1992, American National Standards Institute, 1992.
[Bur89] Rae K. Burns. "DBMS integrity and security controls" In
Report of the Invitational Workshop on Data Integrity}. NIST
Special Publication 500-168, 1989.
[Cam90] John Campbell. "A brief tutorial on trusted database
management systems (executive summary)" In 13th National Computer
Security Conference Proceedings, 1990.
[CO92] S.J. Cannan and G.A.M. Otten. "SQL - The Standard
Handbook" McGraw-Hill Book Co., Berkshire SL6 2QL England,
October 1992.
[DD92] C.J. Date and Hugh Darwen. "A Guide to the SQL Standard"
Addison-Wesley Publishing, Reading, MA 01867 USA, October 1992.
[DJ92] Vinti M. Doshi and Sushil Jajodia. "Enforcing entity and
referential integrity in multilevel secure databases" In 15th
National Computer Security Conference Proceedings, 1992.
[FIP90] Database language SQL. Federal Information Processing
Standard 127-1, National Institute of Standards and Technology,
1990.
[FIP93] Database language SQL. Federal Information Processing
Standard 127-2, National Institute of Standards and Technology,
June 1993.
[Gal91] Leonard Gallagher. "SQL3 support for {CALS}
applications" NISTIR 4494, National Institute of Standards and
Technology, February 1991.
[GS92] Leonard Gallagher and Joan Sullivan. "Database language
SQL: Integrator of {CALS} data repositories" NISTIR 4902,
National Institute of Standards and Technology, September 1992.
[ISO90a] Remote database access - part 1: Generic model.
ISO/JTC1/SC21 N4282, Information Processing Systems - Open
Systems Interconnect, 1990.
[ISO90b] Remote database access - part 2: SQL specialization.
31
ISO/JTC1/SC21 N4281, Information Processing Systems - Open
Systems Interconnect, 1990.
[KGP89] Randy H. Katz, Garth A. Gibson, and David A. Patterson.
"Disk system architecture for high performance computing" In
Proceedings of the IEEE, Vol. 77, No. 12. Institute of Electrical
and Electronics Engineers, 1989.
[MS92] Jim Melton and Alan Simon. "Understanding the New SQL: A
Complete Guide"
Morgan Kaufman Publishers, San Mateo, CA 94403 USA, October 1992.
[Rob91] Edward Roback. "Glossary of computer security
terminology" NISTIR 4659, National Institute of Standards and
Technology, September 1991.
[SFD92] Linda M. Schlipper, Jarrellann Filsinger, and Vinti M.
Doshi. "A multilevel secure database management system
benchmark" In 15th National Computer Security Conference
Proceedings, 1992.
[TCS85] Trusted computer system evaluation criteria. DOD
5200.28-STD, National Computer Security Center, December 1985.
[TDI91] Trusted database management system interpretation.
NCSC-TG 021, National Computer Security Center, April 1991.
[Thu92] Bhavani Thuraisingham. "Knowledge-based inference
control in a multilevel secure database management system" In
15th National Computer Security Conference Proceedings, 1992.
[Wag89] Grant Wagner. "System services - group 3 report" In
Report of the Invitational Workshop on Data Integrity. NIST
Special Publication 500-168, 1989.
32
8 Figures and Tables
----------------------
| Application |
----------------------
|
|
V
----------------------
| SQL Processor |
----------------------
|
|
V
-------------
| SQL |
| Database |
-------------
Figure 1. Standalone model
33
----------------------
| Application |
----------------------
|
|
V
---------------------- RDA ------------------
| SQL Processor | -------------------> | Remote |
---------------------- | Database |
| | | Server |
| | ------------------
| V
| ------------
| | non-SQL |
| | processor|-----
| ------------ |
V V
------------- ---------------- ----------------
| SQL | | non-SQL | | remote |
| data | | data | | data |
------------- ---------------- ----------------
Figure 2. Client/Server model
Patient Name | Disease
=========================
Howard | AIDS
Gordon | Syphilis
Jackson | Gun shot
Figure 3. High Data
Patient Name | Disease
=========================
Smith | Lung Cancer
Howard | pneumonia
Jones | 2nd Degree Burns
Hamp | heart failure
Figure 4. Low Data
Patient Name | Disease
=========================
Howard | AIDS
Smith | Lung Cancer
Gordon | Syphilis
Jackson | Gun shot
Jones | 2nd Degree Burns
Hamp | heart failure
Figure 5. High user's view
34
High User Low User
/^\ /^\
| |
| |
V V
-------------------------------
| ------------- ------------ |
| | High DBMS | | Low DBMS | |
| | Process | | Process | |
| ------------- ------------ |
-------------------------------
| trusted operating system |
-------------------------------
/^\ \ /^\
| \ |
| \ |
V \ V
high low
database database
file file [Note: that should be a line
the low dbms file to the
high
dbms process]
Figure 6. TCB Subset Architecture
35
User Application
/^\
|
|
V
----------------------------
| trusted subject dbms |
----------------------------
| trusted operating system |
----------------------------
/^\
|
|
V
database file (high)
Figure 7. Trusted Subject Architecture
Single-Level User Single-Level User
Front End (Low) Front End (high)
/^\ /^\
| |
| |
V V
----------------------------
| untrusted front end |
----------------------------
| trusted filter |
----------------------------
| trusted operating system |
----------------------------
/^\
|
|
V
database file (high)
Figure 8. Integrity Lock Architecture
36
-------------------------- --------------------------
| T-1 | | T-2 |
-------------------------- --------------------------
| Ti | a | b | c | d | | Ti | a | b | c | d |
-------------------------- --------------------------
| T1 | 2 | 2 | 3 | 4 | | T1 | 2 | 2 | 3 | 4 |
-------------------------- --------------------------
| T2 | 2 | 2 | 4 | 4 | | T2 | 2 | 2 | 4 | 4 |
-------------------------- --------------------------
| T3 | 2 | 2 | 3 | 5 | | T3 | 2 | 2 | 3 | 5 |
-------------------------- --------------------------
| T4 | 6 | 2 | 3 | 4 | | T4 | 2 | 6 | 3 | 4 |
-------------------------- --------------------------
Table 1: Uniquesness Examples: contents of T-1 and T-2
37
Security | Security Mechanisms | Status | Where It's
Requirements | Class | Mechanism | In SQL | Found
================================================================
Security | DAC | Privileges | required | SQL'89
Policy | | | enhanced | SQL'92
| |------------------------------------
| | Roles | planned | SQL3
|--------------------------------------------------
| Mandatory Access Control | not | DBMS and OS
| | specified |
|--------------------------------------------------
| | Constraints| required | SQL'89
| Integrity | on Tables | enhanced | SQL'92
| |------------------------------------
| Constraints | Constraints| required | SQL'89
| | on Columns | enhanced | SQL'92
|---------------------------------------------
| Inference | not | DBMS
add-on
| | specified | tools
|---------------------------------------------
| Aggregation | not | DBMS
add-on
| | specified | tools
|---------------------------------------------
| Object Reuse | not | design of
| | specified | OS and
| | | DBMS
-------------------------------------------------------------
Account- | | authenti- | not | OS
ability | Identifi- | cation of | specified | dependent
| cation | system | |
| | session | |
| and ------------------------------------
| | authenti- | not | DBMS
| Authenti- | cation of | specified | implemen-
| cation | DBMS | | tation
| | session | | dependent
| ------------------------------------
| | authenti- | not | DBMS
| | cation of | specified | implemen-
| | each trans-| | tation
| | action | | dependent
--------------------------------------------------
| Auditing | Journal | not | design of
| | generation | specified | DBMS
| -------------------------------------
| | Journal | not | design of
| | Protection | specified | OS
Table 2, Part 1 Security Features in SQL Standards
38
----------------------------------------------------------------
Assurance | Software | SQL | not | FIPS con-
| | features | specified | formance
| | | | tests
| |------------------------------------
| Quality | Security | not | NCSC
| | features | specified | evaluation
--------------------------------------------------
| | processor | not | hardware
| | | specified | and OS
| |------------------------------------
| Fault | disk | not | hardware
| Tolerance | shadowing | specified | and OS
| |------------------------------------
| | disk | not | hardware
| | mirroring | specified | and OS
|--------------------------------------------------
| Transaction Management | required | SQL'89
----------------------------------------------------------------
Table 2. cont'd. Security features in SQL standards.
39
TUCoPS is optimized to look best in Firefox® on a widescreen monitor (1440x900 or better).
Site design & layout copyright © 1986-2025 AOH