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 символов).

Предполагается, что создаваемые уровни линейно упорядочены в соответствии с номером. Содержательно за уровнем удобно видеть степень секретности, причем чем выше степень секретности («открытые данные» - «ограниченный доступ» - «секретно» ...), тем больший нужно связать с ней номер.