It is often necessary to make per-person access distinctions.
You can make a separate filter for each user (such as
where name="joe"
). However, if you have more than a
few users, this approach quickly becomes cumbersome. The more efficient
alternative is to create a dynamic filter (such as
where
name="&name;"
) that can discover and insert the correct,
user-specific value into the WHERE expression each time access is
requested.
To create a dynamic filter, use
an SAS identity property as the value against which values in the
target data are compared. This list explains how the substitution
works:
-
Each
SAS identity property corresponds to a characteristic (such as name,
user ID, or external identity).
-
Each user's values for
these characteristics (such as
joe
,
WinXP\joe
, or
607189
) are stored in the metadata.
-
The SAS identity property
is aware of the user ID with which a client authenticated and can
locate information that is stored in the metadata for that user ID.
-
Each time it receives
a request, the SAS identity property substitutes a user-specific value
into the filter expression.
Note: In certain circumstances,
a connecting identity might not have a value for the SAS identity
property that you are using. This can happen with the ExternalIdentity
property (sometimes), the IdentityGroupName property (almost always),
or the PersonName property (rarely). When a connecting user doesn't
have a value for the property that a query uses, an empty string is
returned.
For more information
about SAS identity properties and when to use them, see the section
on fine-grained controls in the “Authorization Model”
chapter in the
SAS Intelligence Platform: Security Administration Guide. For information about using
SAS identity properties to implement row-level access control to the
data in an information map, see
SAS Guide to BI Row-Level Permissions.