SAS Federation Server persists
metadata for security settings in its set of system tables. The server
attempts to synchronize this metadata with the actual objects that
it represents. For example, if the administrator has granted SELECT
privilege on table T1 to User1, and subsequently table T1 is dropped,
the server will likewise drop its security metadata onto T1. If T1
is subsequently re-created, it will have no security set on the object
itself. All security definitions for T1 will come from its inheritance
objects, including the schema, catalog, data service and server.
If you prefer that the
security metadata is retained on the server, there are a couple suggested
possibilities. First, it might be that a job is dropping the table
only to re-create it in a subsequent step. This is often the case
when refreshing the contents of a table. Rather than dropping and
re-creating the table (which often has the additional side-effect
of losing any indexes on the table), consider issuing a DELETE FROM
TABLE command to delete all the rows from the table. Here, the underlying
table still remains intact, as do the security metadata stored in
the system tables.
A second approach is
to use definer’s rights views to assist with individual object
security. Often times, data in back-end data sources is being manipulated
(created and dropped) by a few “power” users only.
These users will require CREATE, DROP TABLE, and VIEW privileges.
The CREATE privilege set applies only to container objects (schema,
catalog, data service, and server) and not individual tables or views.
The DROP privilege can be applied at the object level, but if designed
correctly, can be used from the container object.
More often, business
users are the ones requiring table and column level privileges to
access the data. If you choose the security model using definer's rights
views, then you can place your individual privileges on the views,
which do not go away when a back-end table is dropped and re-created.
Back-end data can be secured by denying privileges on the container
object to business users, but granting SELECT to view owners. An
approach similar to this can be used to eliminate the need for table-,
column- and row-level security on back-end data source objects.