Oracle: регулирование доступа к отдельным строкам таблиц - Политика безопасности
ОГЛАВЛЕНИЕ
Политика безопасности
Создадим политику безопасности, регулирующую доступ пользователей EMPLOYEE и HEAD к номерам телефонов. Она будет базироваться на значении метки в столбце EMPSEC_LABEL, который мы специально добавим в таблицу телефонов позже:
CONNECT lbacsys/lbacsys
BEGIN
SA_SYSDBA.CREATE_POLICY
(POLICY_NAME => 'EMPSEC_POLICY'
, COLUMN_NAME => 'EMPSEC_LABEL');
END;
/
Отключить, снова включить и удалить политику безопасности можно процедурами DISABLE_POLICY, ENABLE_POLICY и DROP_POLICY.
Определим в рамках политики безопасности два уровня секретности:
BEGIN
SA_COMPONENTS.CREATE_LEVEL
(POLICY_NAME => 'EMPSEC_POLICY'
, LEVEL_NUM => 1000
, SHORT_NAME => 'OPEN'
, LONG_NAME => 'Open level');
SA_COMPONENTS.CREATE_LEVEL
(POLICY_NAME => 'EMPSEC_POLICY'
, LEVEL_NUM => 2000
, SHORT_NAME => 'LIMITED'
, LONG_NAME => 'Limited level');
END;
/
Каждый уровень задается тройкой
<номер, краткое название, развернутое название>.
Номер носит технический характер, а развернутое название – характер комментария (но до 30 символов).
Предполагается, что создаваемые уровни линейно упорядочены в соответствии с номером. Содержательно за уровнем удобно видеть степень секретности, причем чем выше степень секретности («открытые данные» - «ограниченный доступ» - «секретно» ...), тем больший нужно связать с ней номер.