SPD Server uses view
access inheritance to control access to tables that are referenced
by SPD Server views. View access inheritance allows a user that has
rights to a given view to also have rights to access the individual
component tables that comprise the view.
For example, user Stan
creates tables
WinterSales
and
SpringSales
, and then Stan creates a view that joins
the two tables. Stan gives user Kyle Read access to the view. Using
view access inheritance, because Kyle has Read access to the view
of the joined tables, Kyle also has Read access to the individual
component tables
WinterSales
and
SpringSales
.
/* User Stan creates tables WinterSales and SpringSales. */
/* Only user Stan can read these tables directly. */
LIBNAME Stan sasspds 'temp' user='Stan';
DATA Stan.WinterSales;
INPUT idWinterSales colWinterSales1 $ colWinterSales2 $ ... ;
...
;
DATA Stan.SpringSales;
INPUT idSpringSales colSpringSales1 $ colSpringSales2 $ ... ;
...
quit;
/* Stan creates view WinterSpring to join tables WinterSales */
/* and SpringSales. Stan gives user Kyle read access to the */
/* view. Because Kyle has rights to read view WinterSpring, */
/* he also has read access rights to the individual tables */
/* that Stan used to create the view WinterSpring. Kyle can */
/* only read the tables WinterSales and SpringSales through */
/* the view WinterSpring. If Kyle tries to directly access */
/* the table WinterSales or the table SpringSales, SPD */
/* Server does not comply and issues an access failure */
/* warning. */
PROC SQL;
CONNECT TO sasspds(dbq='temp' user='Stan';
EXECUTE(create view WinterSpring as
SELECT * from SpringSales, WinterSales
WHERE SpringSales.id = WinterSales.id);
quit;
PROC SPDO lib=Stan;
SET ACLUSER;
SET ACLTYPE=view;
ADD ACL WinterSpring;
MODIFY ACL WinterSpring / Stan=(y,n,n,n);
quit;
SPD Server view access inheritance is available only
when it is invoked with SPD Server explicit pass-through SQL syntax.
If the view is accessed directly through SAS SQL or a SAS DATA step,
the user of the view must also have direct access to the component
tables that are referenced in the view. In this case, the ACL credentials
of the user of the view are applied to the component view tables.
This restriction limits the usefulness of SPD Server views that are
accessed via SAS SQL to cases where a SAS SQL user creates a virtual
table to simplify SQL coding.
Even though the SPD
Server view access inheritance feature is not available for views
issued from a SAS session, the ability to create and use views on
SPD Server tables from SAS is a significant improvement in functionality.