Таблицы каталога безопасности#
Данные каталога безопасности представляют собой таблицы:
pr_action- справочник действий над защищаемыми типами объектов, регулируемых механизмом защиты;pr_grant- реестр политик, назначенных пользователям;pr_object- реестр защищаемых объектов;pr_object_attr- реестр хранения признаков объектов под защитой;pr_object_kind- справочник типов защищаемых объектов;pr_policy- реестр политик механизма защиты;pr_policy_attr- реестр хранения признаков политик;pr_rule- реестр разрешений, включенных в политики.
В приведенных выше таблицах хранится информация для ограничения доступа.
Типы разрешений для объектов БД, находящихся под защитой#
Схема#
Разрешение |
Команда |
|---|---|
alter |
SELECT pm_grant_to_policy(„policy_name“, „schema“, „myschema“, array[„alter“]::name[]); |
drop |
SELECT pm_grant_to_policy(„policy_name“, „schema“, „myschema“, array[„drop“]::name[]); |
ALL |
SELECT pm_grant_to_policy(„policy_name“, „schema“, „myschema“, array[„alter“,“drop“]::name[]); |
Таблица#
Разрешение |
Команда |
|---|---|
select |
SELECT pm_grant_to_policy(„policy_name“, „table“, „mytable“, array[„select“]::name[]); |
insert |
SELECT pm_grant_to_policy(„policy_name“, „table“, „mytable“, array[„insert“]::name[]); |
update |
SELECT pm_grant_to_policy(„policy_name“, „table“, „mytable“, array[„update“]::name[]); |
delete |
SELECT pm_grant_to_policy(„policy_name“, „table“, „mytable“, array[„delete“]::name[]); |
alter |
SELECT pm_grant_to_policy(„policy_name“, „table“, „mytable“, array[„alter“]::name[]); |
drop |
SELECT pm_grant_to_policy(„policy_name“, „table“, „mytable“, array[„drop“]::name[]); |
move |
SELECT pm_grant_to_policy(„policy_name“, „table“, „mytable“, array[„move“]::name[]); |
create_trigger |
SELECT pm_grant_to_policy(„policy_name“, „table“, „mytable“, array[„create_trigger“]::name[]); |
alter_trigger |
SELECT pm_grant_to_policy(„policy_name“, „table“, „mytable“, array[„alter_trigger“]::name[]); |
drop_trigger |
SELECT pm_grant_to_policy(„policy_name“, „table“, „mytable“, array[„drop_trigger“]::name[]); |
create_rule |
SELECT pm_grant_to_policy(„policy_name“, „table“, „mytable“, array[„create_rule“]::name[]); |
alter_rule |
SELECT pm_grant_to_policy(„policy_name“, „table“, „mytable“, array[„alter_rule“]::name[]); |
drop_rule |
SELECT pm_grant_to_policy(„policy_name“, „table“, „mytable“, array[„drop_rule“]::name[]); |
ALL |
SELECT pm_grant_to_policy(„policy_name“, „table“, „mytable“, array[„select“,“insert“,“update“,“delete“,“alter“,“drop“, „move“,“create_trigger“,“alter_trigger“,“drop_trigger“,“create_rule“,“alter_rule“,“drop_rule“]::name[]); |
Партиционированная таблица#
Разрешение |
Команда |
|---|---|
select |
SELECT pm_grant_to_policy(„policy_name“, „partitioned“, „mypart“, array[„select“]::name[]); |
insert |
SELECT pm_grant_to_policy(„policy_name“, „partitioned“, „mypart“, array[„insert“]::name[]); |
update |
SELECT pm_grant_to_policy(„policy_name“, „partitioned“, „mypart“, array[„update“]::name[]); |
delete |
SELECT pm_grant_to_policy(„policy_name“, „partitioned“, „mypart“, array[„delete“]::name[]); |
alter |
SELECT pm_grant_to_policy(„policy_name“, „partitioned“, „mypart“, array[„alter“]::name[]); |
drop |
SELECT pm_grant_to_policy(„policy_name“, „partitioned“, „mypart“, array[„drop“]::name[]); |
move |
SELECT pm_grant_to_policy(„policy_name“, „partitioned“, „mypart“, array[„move“]::name[]); |
create_trigger |
SELECT pm_grant_to_policy(„policy_name“, „partitioned“, „mypart“, array[„create_trigger“]::name[]); |
alter_trigger |
SELECT pm_grant_to_policy(„policy_name“, „partitioned“, „mypart“, array[„alter_trigger“]::name[]); |
drop_trigger |
SELECT pm_grant_to_policy(„policy_name“, „partitioned“, „mypart“, array[„drop_trigger“]::name[]); |
create_rule |
SELECT pm_grant_to_policy(„policy_name“, „partitioned“, „mypart“, array[„create_rule“]::name[]); |
alter_rule |
SELECT pm_grant_to_policy(„policy_name“, „partitioned“, „mypart“, array[„alter_rule“]::name[]); |
drop_rule |
SELECT pm_grant_to_policy(„policy_name“, „partitioned“, „mypart“, array[„drop_rule“]::name[]); |
ALL |
SELECT pm_grant_to_policy(„policy_name“, „partitioned“, „mypart“, array[„select“,“insert“,“update“,“delete“,“alter“,“drop“,“move“,“create_trigger“,“alter_trigger“,“drop_trigger“,“create_rule“,“alter_rule“,“drop_rule“]::name[]); |
Представление#
Разрешение |
Команда |
|---|---|
select |
SELECT pm_grant_to_policy(„policy_name“, „view“, „myview“, array[„select“]::name[]); |
insert |
SELECT pm_grant_to_policy(„policy_name“, „view“, „myview“, array[„insert“]::name[]); |
update |
SELECT pm_grant_to_policy(„policy_name“, „view“, „myview“, array[„update“]::name[]); |
delete |
SELECT pm_grant_to_policy(„policy_name“, „view“, „myview“, array[„delete“]::name[]); |
alter |
SELECT pm_grant_to_policy(„policy_name“, „view“, „myview“, array[„alter“]::name[]); |
drop |
SELECT pm_grant_to_policy(„policy_name“, „view“, „myview“, array[„drop“]::name[]); |
create_trigger |
SELECT pm_grant_to_policy(„policy_name“, „view“, „myview“, array[„create_trigger“]::name[]); |
alter_trigger |
SELECT pm_grant_to_policy(„policy_name“, „view“, „myview“, array[„alter_trigger“]::name[]); |
drop_trigger |
SELECT pm_grant_to_policy(„policy_name“, „view“, „myview“, array[„drop_trigger“]::name[]); |
create_rule |
SELECT pm_grant_to_policy(„policy_name“, „view“, „myview“, array[„create_rule“]::name[]); |
alter_rule |
SELECT pm_grant_to_policy(„policy_name“, „view“, „myview“, array[„alter_rule“]::name[]); |
drop_rule |
SELECT pm_grant_to_policy(„policy_name“, „view“, „myview“, array[„drop_rule“]::name[]); |
ALL |
SELECT pm_grant_to_policy(„policy_name“, „view“, „myview“, array[„select“,“insert“,“update“,“delete“,“alter“,“drop“,“create_trigger“,“alter_trigger“,“drop_trigger“,“create_rule“,“alter_rule“,“drop_rule“]::name[]); |
Материализованное представление#
Разрешение |
Команда |
|---|---|
select |
SELECT pm_grant_to_policy(„policy_name“, „matview“, „mymatview“, array[„select“]::name[]); |
alter |
SELECT pm_grant_to_policy(„policy_name“, „matview“, „mymatview“, array[„alter“]::name[]); |
drop |
SELECT pm_grant_to_policy(„policy_name“, „matview“, „mymatview“, array[„drop“]::name[]); |
move |
SELECT pm_grant_to_policy(„policy_name“, „matview“, „mymatview“, array[„move“]::name[]); |
ALL |
SELECT pm_grant_to_policy(„policy_name“, „matview“, „mymatview“, array[„select“,“alter“,“drop“,“move“]::name[]); |
Функция#
Разрешение |
Команда |
|---|---|
alter |
SELECT pm_grant_to_policy(„policy_name“, „function“, „myfunction“, array[„alter“]::name[]); |
drop |
SELECT pm_grant_to_policy(„policy_name“, „function“, „myfunction“, array[„drop“]::name[]); |
call |
SELECT pm_grant_to_policy(„policy_name“, „function“, „myfunction“, array[„call“]::name[]); |
ALL |
SELECT pm_grant_to_policy(„policy_name“, „function“, „myfunction“, array[„alter“,“drop“,“call“]::name[]); |
Роль#
Разрешение |
Команда |
Описание |
|---|---|---|
alter |
SELECT pm_grant_to_policy(„policy_name“, „role“, „user_name“, array[„alter“]::name[]); |
Разрешения на изменение атрибутов защищенной роли. |
alter_rename |
SELECT pm_grant_to_policy(„policy_name“, „role“, „user_name“, array[„alter_rename“]::name[]); |
Разрешения на выполнение команд вида: |
alter_password |
SELECT pm_grant_to_policy(„policy_name“, „role“, „user_name“, array[„alter_password“]::name[]); |
Разрешения на выполнение команд вида: |
alter_login |
SELECT pm_grant_to_policy(„policy_name“, „role“, „user_name“, array[„alter_login“]::name[]); |
Разрешения на выполнение команд вида: |
alter_safe |
SELECT pm_grant_to_policy(„policy_name“, „role“, „user_name“, array[„alter_safe“]::name[]); |
Разрешения на выполнение всех других (кроме |
drop |
SELECT pm_grant_to_policy(„policy_name“, „role“, „user_name“, array[„drop“]::name[]); |
Разрешения на удаление защищенной роли |
set_role |
SELECT pm_grant_to_policy(„policy_name“, „role“, „user_name“, array[„set_role“]::name[]); |
Разрешения на изменение идентификатора текущего пользователя в активном сеансе для защищенной роли |
grant_to |
SELECT pm_grant_to_policy(„policy_name“, „role“, „user_name“, array[„grant_to“]::name[]); |
Разрешения на предоставление прав доступа, выполнение команд вида: |
revoke_from |
SELECT pm_grant_to_policy(„policy_name“, „role“, „user_name“, array[„revoke_from“]::name[]); |
Разрешения на отзыв прав доступа, выполнение команд вида: |
be_granted |
SELECT pm_grant_to_policy(„policy_name“, „role“, „user_name“, array[„be_granted“]::name[]); |
Разрешения на выполнение команд включения в защищенную роль, как групповую: |
be_revoked |
SELECT pm_grant_to_policy(„policy_name“, „role“, „user_name“, array[„be_revoked“]::name[]); |
Разрешения на выполнение команд исключения из защищенной роли, как групповой: |
ALL |
SELECT pm_grant_to_policy(„policy_name“, „role“, „user_name“, array[„alter“,“alter_rename“,“alter_password“,“alter_login“,“drop“,“set_role“,“grant_to“,“revoke_from“,“be_granted“,“be_revoked“]::name[]); |
Разрешения на выполнение любых известных действий над защищенной ролью |