in an approach to stateful UML design that can be checked against the security con-
straints of an information system. In the remainder of this paper: Section 2 reviews
background on MAC/RBAC, and recasts our previous work [8, 9, 10] using a func-
tional notation; Section 3 explores stateful UML design, introduces a functional model
of the design state space and actions, and presents constraints for MAC, RBAC and
lifetimes. Section 4 examines the safety concept, provides an example of the actions
that transform the design states, and introduces design-time and post-design checking;
Section 5 reviews our prototyping effort that uses Borland's UML tool Together Con-
trol Center; Section 6 contains related work; and Section 7 concludes this paper.
2 Background Concepts
In this section, we review background concepts on RBAC/MAC, and the extension of
UML integrated with RBAC/MAC security based on our prior work [8, 9, 10]. First,
in MAC (or Lattice-Based Access Control [17]), security levels (SL’s) forming a lat-
tice structure are assigned to each subject (clearance - CLR) and each object (classifi-
cation - CLS). The permission of the subject to perform some operation on the object
depends on the relation between CLR and CLS as dictated by: Simple Security Prop-
erty ("read down - no read up'') [3]; Simple Integrity Property ("write down - no write
up'') [5]; Strict *-Property ("write equal'') [17]; and Liberal *-Property ("write up - no
write down'') [3]. For examples, we use SLs: unclassified (U), confidential (C), secret
(S), and top secret (T) where U < C < S < T (linear order) for simplicity; but our theo-
retical model is applicable for general partial orders. In RBAC [7, 12, 23], roles are
assigned to users to specify the named assignments that those users can perform in the
organization. Each role is authorized to perform some operations on certain objects.
Our extensions to UML for MAC and RBAC involve actors, use-cases, classes, and
methods as realized in use-case, class, and sequence diagrams [8, 9, 10]. To accom-
plish this, we associate, with each UML element, an identifier, element kind, minimum
and maximum security levels, and lifetime (LT) as a duration in which the usage of
that element is valid. Formally, we denote Λ
ID
as the set of identification labels
(uniquely assigned to each element), Λ
EK
= {A, UC, Cl, M} as the set of element kinds
(actor, use-case, class, and method, respectively), and Λ
SL
as the set of security levels.
Let T be a set of discrete time of the form “year-month-day [hour:minute:second]” (as
a subset Cartesian product of sets of integers), a lifetime lt a time interval [st, et]
where et and st ∈ T are the start time and end time, respectively, with et ≥ st. We de-
note the set of lifetimes as I. A UML element x is a tuple (id, k, sl
min
, sl
max
, lt) ∈
Λ
ID
×Λ
EK
×Λ
SL
×Λ
SL
×I where id, k, sl
min
, sl
max
, and lt are its element identification, kind,
minimum and maximum security levels, and lifetime, respectively. For a class c: Cl,
we require c.sl
min
≤ c.sl
max
(since a class is a container of attributes and methods)
whereas for an element x of other kinds, we require only x.sl
min
= x.sl
max
= x.sl.
As an example, consider a Survey Institution that performs and manages public
surveys. After the raw survey data is collected, senior staff adds a survey header into
the database; senior or junior staff adds questions into the survey, may categorize
questions, or add a question category. Questions with sensitive content are restricted
to senior staff. Figure 1 depicts a use-case diagram for creating a new survey entry.
278