This project component
includes building an access control module to your database by supporting NSM
(new security model). NSM is different from both Discretionary Access Control
(DAC) and Mandatory Access Control (MAC), but has elements of both. NSM is
an extension of DAC to include a list of forbidden privileges.
Given the user U, we
maintain a list of forbidden privileges for U. For instance we
may decide that the user John cannot
have SELECT privileges on the table clients. NSM works just like DAC,
but if someone tries to grant John
SELECT privileges on clients, then The
grant operation must be rejected (with an appropriate message sent to the
grantor). The failed attempt must be logged.
For our purposes, the only privileges are INSERT and SELECT.
Neither INSERT nor SELECT has attribute lists. Further, the INSERT privilege
implies the SELECT privilege (unlike the standard in DAC).
We do not
have access to the system files that control security, so we will simulate
them. Your project should have a database table my_permissions
where you store the privileges. The scheme for forbidden_list
is forbidden_list(user, table_name,
privilege, grant_option).