|
|
Goal
In many programs, users access application data
using GUI widgets: data is created, deleted, read, and updated using
text boxes, check boxes, buttons, and the like.
There is an important, but little explored, link between visualization
and security: When the application data is protected by an access
control policy, the application GUI should be aware of and
respect this policy. For example, the GUI should not display
options to users
for actions that they are not authorized to execute
on application data.
This prevents user frustration, for example, from filling out a long
electronic form only to have the server reject it because the user
lacks a permission to execute some associated action on the application data.
Taking this idea one step further, the GUI should not, for example,
display options to users to open other widgets when these widgets only display
options for actions that the users are not authorized
to execute on application data. That is,
the application GUI should not just be security-aware
but also smart.
To see how this link between GUIs and security policies might
look, consider the following example: an application
for managing employee information. This information will include, among
other data, employees' names, phone numbers, and
salaries.
Suppose now that the employee information is protected by
an access control policy
that includes, among other clauses,
the following:
- All users can read employees' names.
- Only administrators and supervisors
can read and update employees'
phone numbers.
- Only supervisors can read employees' salaries.
Suppose now that, as shown below,
our application GUI
includes the following windows:
- Window #1 .This is our main window. Here,
users can edit employee data by clicking on
the
Edit Phone Number-button.
- Window #2. Users can select an
employee from
a list of names, shown in a combo box,
and view the information
associated to the selected employee by clicking on
the
-button.
- Window #3. Users can read in the
Name, Phone, and Salary-labels, respectively,
the name, phone number, and salary of the selected employee.
Moreover, users can edit the phone number by clicking on the
Edit-button.
- Window #4. Users
can update the phone number
of the selected employee by typing the new number into the
Phone-entry and clicking on the OK-button.
What behaviour should our GUI have
if it is to be considered "security-aware"? Suppose that
a user with the role administrator wants to edit
an employee's phone number using our GUI. Since administrators
are not authorized to read employees' salaries, when
opening Window #3, our GUI should prevent an administrator
from reading this information in the Salary-label.
Furthermore, how should
our GUI behave if it is also to be considered
"smart"? Suppose now that a user with no
special privileges wants to edit an employee's phone number
using our GUI. Since ordinary users are not authorized
to read or update employees' phone numbers, our GUI
should prevent the user from
opening Window #4
by clicking on the Edit-button,
since the user should not be able to do anything
within this window (i.e., neither
read the phone number of the selected employee in
the Phone-label nor click on the OK-button
to update this information).
The problem we address in this project is how to establish this link
between visualization and security. The default, "ad-hoc" solution,
namely, directly hardcoding the security policy within the GUI,
is clearly inadequate.
First, the GUI designer is often not aware of the application
data security policy. Second, even if the designer is aware of it,
hardcoding the application data security policy within the GUI code is
cumbersome and error-prone, if done manually. Finally,
any changes in the security policy will require manual changes to the
GUI code where this policy is hardcoded, which again is a cumbersome
and error-prone task.
|