Example:
There is a group called
SALES_GROUP whose members are allowed to select most objects in the
SALES_DATA data service. An administrator assigns SELECT privilege
on the SALES_DATA data service to the SALES_GROUP. The SELECT privilege
is inherited on all the catalogs of the SALES_DATA data service, all
the schemas of those catalogs, and all the associated tables and views.
There is a stipulation that the SALES_GROUP is restricted from viewing
any data in a single catalog of the SALES_DATA data service called
EXECUTIVE_DATA. To satisfy the requirement, an administrator could
then deny SELECT privilege to the SALES_GROUP on that particular catalog.
As a result, members of the SALES_GROUP are not able to select any
data from the EXECUTIVE_DATA catalog or any of its schemas. An administrator
can elect to grant all privileges on the EXECUTIVE_DATA catalog to
the EXECUTIVE_GROUP. An administrator can also deny SELECT privilege
to any member of the EXECUTIVE_GROUP on any subordinate object of
the EXECUTIVE_DATA catalog. In this way, general authorizations are
defined on higher level objects, and exceptions are set on subordinate
objects. This minimizes the number of privileges that an administrator
must establish, resulting in a reduction of administration overhead.
An administrator can request information about privileges held by
any user or group for any object in the server hierarchy, including
where in the hierarchy the privilege was set and who the grantee of
the privilege is, which can be a group that the user is a member of,
directly or indirectly.
|
Object / Privilege
|
Column
|
DS2 Method
|
Row
|
Table/View
|
DS2 Pkg
|
DS2 Thread
|
Schema
|
Catalog
|
DSN
|
Data Service
|
Fed Server
|
---|---|---|---|---|---|---|---|---|---|---|---|
SELECT
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
||||
UPDATE
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
|||||
INSERT
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
|||||
REFERENCES
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
|||||
DELETE
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
|||||
EXECUTE
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
||||
ALTER TABLE/VIEW TABLE
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
||||||
DROP TABLE/VIEW
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
||||||
CREATE TABLE/VIEW
|
Yes
|
Yes
|
Yes
|
Yes
|
|||||||
CREATE/ALTER CACHE
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
||||||
CREATE TABLESPACE
|
Yes
|
Yes
|
Yes
|
Yes
|
|||||||
ADMINISTER
|
Yes
|
||||||||||
TRACE
|
Yes
|
||||||||||
CREATE DSN 1
|
Yes
|
Yes
|
|||||||||
CONNECT 2
|
Yes
|
Yes
|
Yes
|
Example:
For example, an administrator
grants SELECT privilege on table T1 to group G1, and that is the only
privilege on that table. If Bob is a direct member of group G1, then
Bob has privileges to select from T1. The administrator then denies
SELECT privilege on table T1 to group G10, where group G1 is a direct
member of group G10. User Bob continues to have privileges to select
from T1 because group G1 gives him the SELECT privilege. Group G1
is closer in relation to Bob than group G10—of which Bob is
also a member—but indirectly through membership in group G1.
If the administrator now denies SELECT privilege on table T1 to group
G2, where Bob is also a direct member of group G2, there is a conflict
in privileges. Group G1 indicates that Bob is granted SELECT privilege.,
However, group G2 indicates that Bob is denied SELECT privilege. In
these cases where there is a conflict, the user is denied the privilege.
In this example, Bob does not have SELECT privilege on table T1.
|
Y
.
alter server {options xset CACHE(name 'Authorization', level <x level>, purge )}
0
|
Privilege caching is
disabled. All levels are purged.
|
1
|
Schema, catalog, server,
and service-level privileges are cached. Level 2 is purged.
|
2
|
Column, row, table,
schema, catalog, server, and service-level privileges are cached.
This also applies to DS2 threads and methods.
|