'P:TRG:E', TRUE); END;
/
-- проверка добавления меток
SELECT * FROM dba_sa_labels;
8. Применение политики к таблице
connect lbacsys/lbacsys@orcl
--посмотрим перечень столбцов таблицы «Official» до применения политики к таблице
DESCRIBE scott.official;
--свяжем политику с таблицей «Official»
BEGIN sa_policy_admin.apply_table_policy
('official_policy','scott','official','label_default,read_control'); END;
/
--политика, примененная к таблице добавила к ней дополнительный столбец SCOTT_COL.
DESCRIBE scott.official;
--какие политики к каким таблицам применены
SELECT * FROM dba_sa_table_policies;
9. Создание пользователей и наделение их соответствующими правами
connect sys/sys@orcl as sysdba
--сначала удалим пользователей, созданных при предыдущем выполнении лабораторной работы:
DROP USER king; DROP USER jones; DROP USER clark; DROP USER blake; DROP USER allen; DROP USER martin; DROP USER miller; DROP USER james;
331
DROP USER turner; DROP USER ward; DROP USER ford; DROP USER adams; DROP USER smith;
--создадим пользователей заново:
CREATE USER king IDENTIFIED BY king DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10m ON users;
CREATE USER jones IDENTIFIED BY jones DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp
QUOTA 10m ON users;
CREATE USER clark IDENTIFIED BY clark DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10m ON users;
CREATE USER blake IDENTIFIED BY blake DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp
QUOTA 10m ON users;
CREATE USER allen IDENTIFIED BY allen DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10m ON users;
CREATE USER martin IDENTIFIED BY martin DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp
QUOTA 10m ON users;
CREATE USER miller IDENTIFIED BY miller DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp
QUOTA 10m ON users;
CREATE USER james IDENTIFIED BY james DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp
332
QUOTA 10m ON users;
CREATE USER turner IDENTIFIED BY turner DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp
QUOTA 10m ON users;
CREATE USER ward IDENTIFIED BY ward DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10m ON users;
CREATE USER ford IDENTIFIED BY ford DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10m ON users;
CREATE USER adams IDENTIFIED BY adams DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp
QUOTA 10m ON users;
CREATE USER smith IDENTIFIED BY smith DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp
QUOTA 10m ON users;
--выдадим созданным пользователям обычные привилегии:
GRANT create session, resource TO king,jones,clark,blake, allen,martin,miller,james,turner,ward,ford,adams,smith;
--выдадим пользователям привилегии для работы с таблицей
«Official»:
GRANT select, update, insert, delete
ON scott.official TO king,jones,clark,blake, allen,martin,miller,james,turner,ward,ford,adams,smith;
10. Назначение меток пользователям
connect lbacsys/lbacsys@orcl
--устанавливаем метки пользователям:
BEGIN sa_user_admin.set_user_labels
('OFFICIAL_POLICY','KING','HS:FIN,ISS,TRG:GD');
333
sa_user_admin.set_user_labels ('OFFICIAL_POLICY','CLARK','S:FIN:NO'); sa_user_admin.set_user_labels ('OFFICIAL_POLICY','JONES','S:ISS:NO'); sa_user_admin.set_user_labels ('OFFICIAL_POLICY','BLAKE','S:TRG:NO'); sa_user_admin.set_user_labels ('OFFICIAL_POLICY','MILLER','P:FIN:E'); sa_user_admin.set_user_labels ('OFFICIAL_POLICY','SCOTT','C:ISS:SE'); sa_user_admin.set_user_labels ('OFFICIAL_POLICY','FORD','C:ISS:SE'); sa_user_admin.set_user_labels ('OFFICIAL_POLICY','WARD','C:TRG:SE'); sa_user_admin.set_user_labels ('OFFICIAL_POLICY','ALLEN','C:TRG:SE'); sa_user_admin.set_user_labels ('OFFICIAL_POLICY','MARTIN','C:TRG:SE'); sa_user_admin.set_user_labels ('OFFICIAL_POLICY','TURNER','C:TRG:SE'); sa_user_admin.set_user_labels ('OFFICIAL_POLICY','ADAMS','P:ISS:E'); sa_user_admin.set_user_labels ('OFFICIAL_POLICY','SMITH','P:ISS:E'); sa_user_admin.set_user_labels ('OFFICIAL_POLICY','JAMES','P:TRG:E'); END;
/
11. Назначение меток строкам таблицы «Official»
--сначала отключим политику, чтобы пользователь «Scott» мог изменять строки таблицы «Official»:
connect lbacsys/lbacsys@orcl BEGIN
sa_sysdba.disable_policy('official_policy'); END;
334
/
--теперь пользователь «Scott» (в его схеме находится таблица «Official») устанавливает метки строкам таблицs «Official»:
connect scott/scott@orcl
UPDATE scott.official SET scott_col=100
WHERE empno= (SELECT empno FROM scott.emp WHERE ename='KING');
UPDATE scott.official SET scott_col=200
WHERe empno= (SELECT empno FROM scott.emp WHERE ename='CLARK');
UPDATE scott.official SET scott_col=300
WHERE empno= (SELECT empno FROM scott.emp WHERE ename='JONES');
UPDATE scott.official SET scott_col=400
WHERE empno= (SELECT empno FROM scott.emp WHERE ename='BLAKE');
UPDATE scott.official SET scott_col=800
WHERE empno= (SELECT empno FROM scott.emp WHERE ename='MILLER');
UPDATE scott.official SET scott_col=600
WHERE empno= (SELECT empno FROM scott.emp WHERE ename='FORD');
UPDATE scott.official SET scott_col=700
WHERE empno IN (SELECT empno FROM scott.emp WHERE ename='WARD'OR ename='ALLEN' OR ename='TURNER' OR ename='MARTIN');
UPDATE scott.official SET scott_col=900
335