ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 12.04.2021

Просмотров: 1858

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

!

36

Пр

ак
ти

че
ск

ое

за

ня

ти

е

 6

Ре

зер

вн

ое

ко

пи

ро
ва

ни

е

и

во

сст

ан

ов
ле

ни

е

да

нн

ых

!

!

 
 

E-

mai

l: 

mar

ket

@re

lex.

ru

ЗА

Создадим

директорию

 db_restored 

в

директории

 /home/linter/prac4/; 

Запустим

процесс

восстановления

lhb r –f /home/linter/prac4/db_backup/db_full.lhb –g KBYNTH 
–p /home/linter/prac4/db_backup 

После

восстановления

на

развернутой

базе

можно

запускать

ядро

.

Задача

 11. 

(

студенты

выполняют

самостоятельно

)

Восстановить

базу

данных

из

инкрементного

архива

созданного

в

задаче

  5. 

Директорией

назначения

использовать

  /

home/linter/prac4/db_restored_inc. 

6.6. 

Пообъектное

восстановление

Пообъектно

можно

восстанавливать

данные

только

из

архива

созданного

в

пообъектном

режиме

Также

невозможно

создавать

пообъектные

инкрементные

архивы

Для

пообъектного

восстановления

необходимо

активное

ядро

соответственно

необходимо

указывать

параметры

соединения

с

ядром

.

Задача

 11.

Восстановить

таблицу

 LIB_WROTE 

из

архива

созданного

в

задаче

 3.  

Используя

утилиту

 lhb, 

удалим

таблицу

 LIB_WROTE; 

Запустим

процесс

восстановления

lhb r –u SYSTEM/MANAGER –f /home/linter/prac4/db_backup/
db_lib.lhb –ot LIB_WROTE

Задача

  12. 

(

студенты

выполняют

самостоятельно

)

Восстановить

представление

PUPKINS_BOOKS 

из

инкрементного

архива

созданного

в

задаче

 4. 

6.7. 

Тестирование

архивов

Для

проверки

правильности

архива

на

резервных

носителях

рекомендуется

регулярно

устраивать

тестирование

архива

Проверка

осуществляется

подачей

команды

 t.

Задача

 13.

Протестировать

архив

созданный

в

задаче

 3.  

lhb t–f /home/linter/prac4/db_backup/db_lib.lhb

Задача

  12. 

(

студенты

выполняют

самостоятельно

)

Протестировать

архив

созданный

в

задаче

 1.


background image

Практическое

занятие

 7

Разграничение

доступа

в

СУБД

ЛИНТЕР

Мандатный

доступ

Практика

 2 

часа

 (

Лекция

 6)

Целью

занятия

является

освоение

способов

разграничения

доступа

к

базе

данных

на

основе

мандатного

принципа

Основным

инструментом

для

выполнения

задания

будет

«

Интерактивный

 SQL» (INL). 

Это

позволит

лучше

разобраться

со

способами

использования

КСЗ

на

уровне

запросов

Средства

для

работы

с

мандатным

доступом

есть

и

в

утилитах

администрирования

 lindesk (lindeskx), 

но

их

использование

более

прозрачно

7.1. 

Инициализация

расширенного

КСЗ

Задача

:

Создать

новую

БД

и

инициализировать

в

ней

расширенный

КСЗ

.

Указания

1.

Создайте

новую

базу

данных

.  

2.

Запустите

на

ней

СУБД

ЛИНТЕР

3.

Проинициализируйте

поддержку

расширенного

КСЗ

и

хранимых

процедур

/

триггеров

Для

этого

прогоните

файлы

systab.sql

и

secutiry.sql

 (

для

ЛИНТЕР

 5.9 

еще

необходимо

прогнать

файл

extsec.sql

из

директории

dict

дистрибутива

ЛИНТЕР

Для

ЛИНТЕР

  5.7 

после

этого

необходимо

остановить

и

снова

перезапустить

ядро

чтобы

СУБД

 «

увидела

» 

соответствующие

системные

таблицы

Следующие

действия

будут

выполняться

с

консоли

Если

необходима

работа

с

сетевой

станции

потребуется

разрешить

доступ

со

станций

GRANT ACCESS ON UNLISTED STATION TO ALL; 

Позже

мы

освоим

и

разграничение

доступа

с

отдельных

станций

7.2. 

Создание

уровней

доступа

З а д ач а

:

С о з д а т ь

ч ет ы р е

у р о в н я

д о с т у п а

:  “

Н Е С Е К Р Е Т Н О

” ,  “

Д С П

” , 

СЕКРЕТНО

”,”

СОВ

.

СЕКРТЕНО

”.

Пример

запроса

CREATE LEVEL “

ДСП

”=2; 

7.3. 

Создание

пользователей

и

назначение

им

уровней

доступа

Задача

:

Создать

следующих

пользователей

 (

пароли

можно

пока

оставить

пустыми

): 

Пример

GRANT DBA TO B; 
ALTER USER B LEVEL(“

СЕКРЕТНО

”,”

НЕСЕКРЕТНО

”); 

Проверьте

информацию

о

созданных

пользователях

и

их

уровнях

SELECT * FROM USER_SECURITY;

Пользователь

Категория

RAL

WAL

A

CONNECT

НЕСЕКРЕТНО

НЕСЕКРЕТНО

B

DBA

СЕКРЕТНО

НЕСЕКРЕТНО

C

RESOURCE

ДСП

НЕСЕКРЕТНО

D

DBA

СОВ

.

СЕКРЕТНО

ДСП


background image

!

38

П

ра
кт

ич

ес

ко

е

за

ня

ти

е

 7

Ра

зг

ра

ни

че

ни

е

до

ст

уп

а

в

С

У

Б

Д

Л

И
Н

Т

ЕР

М

ан

да

тн

ы

й

до

ст

уп

!

!

 
 

E-

mai

l: 

ma

rke

t@

rele

x.r

u

7.4. 

Создание

и

назначение

групп

пользователей

Задача

:

Объединить

пользователей

  A 

и

  B 

в

группу

  G1, 

а

пользователей

  C 

и

  D 

включить

в

группы

 G2 

и

 G3 

соответственно

Для

этого

сначала

создадим

группы

 G1, G2 

и

 G3. 

Пример

CREATE GROUP G1; 

Теперь

назначаем

группы

пользователям

Пример

ALTER USER A GROUP G1; 

Теперь

подав

  SELECT 

из

представления

  USER_SECURITY, 

видим

в

столбце

  SGR 

назначенные

группы

7.5. 

Создание

объектов

БД

Задача

:

Создать

несколько

таблиц

с

разными

уровнями

доступа

от

имени

разных

пользователей

Пример

SQL>username D/ 
SQL>CREATE TABLE TD( 
  I INT LEVEL(“

ДСП

”, “

ДСП

”), 

  D DATE LEVEL(“

ДСП

”, “

ДСП

”)) LEVEL(“

ДСП

”, “

ДСП

”); 

Заметим

что

пользователь

 D 

не

может

создать

таблицу

с

 RAL 

ниже

 «

ДСП

» - 

это

не

позволяет

сделать

его

 WAL. 

Такой

запрос

CREATE TABLE TD2( 
  I INT, 
  D DATE) LEVEL(“

НЕСЕКРЕТНО

”, “

ДСП

”); 

вызовет

ошибку

нарушения

привилегий

.

Указание

:

т

.

к

пользователь

С

не

имеет

категории

 DBA, 

он

не

может

явно

указывать

уровни

при

создании

таблицы

Уровни

его

таблицы

берутся

по

умолчанию

по

его

собственным

 RAL 

и

 WAL.

Проверьте

назначенные

таблицам

уровни

подав

из

-

под

 SYSTEM 

запрос

select * from table_security where tabname in 
('TB','TC','TD');

Назначьте

все

привилегии

на

все

созданные

таблицы

для

всех

пользователей

Это

позволит

лучше

увидеть

работу

мандатного

доступа

т

.

к

по

дискреционному

доступу

всем

пользователям

будет

все

разрешено

Пример

GRANT ALL ON TB TO PUBLIC; 

Владелец

Таблица

RAL 

таблицы

и

всех

столбцов

WAL 

таблицы

и

всех

столбцов

B

TB(I INT, C CHAR(20))

НЕСЕКРЕТНО

НЕСЕКРЕТНО

C

TC(D DATE, T CHAR(20))

ДСП

НЕСЕКРЕТНО

D

TD(I INT, D DATE)

ДСП

ДСП


background image

!

!

П

ра
кт

ич

ес

ко

е

за

ня

ти

е

 7

Ра

зг

ра

ни

че

ни

е

до

ст

уп

а

в

С

У

Б

Д

Л

И
Н

Т

ЕР

М

ан

да

тн

ы

й

до

ст

уп

!

39

 
 

E-

mai

l: 

ma

rke

t@

rele

x.r

u

7.6. 

Добавление

данных

Задача

:

Подать

серию

запросов

на

добавление

данных

в

созданные

таблицы

из

-

под

разных

пользователей

Пример

запроса

с

указанием

уровней

:  

insert into b.tb##"

СЕКРЕТНО

"#"

ДСП

" values(2,'2-A'); 

Примечание

Примеры

всех

запросов

приведены

в

файле

 ins.sql

7.7. 

Выборка

данных

Задача

:

Просмотреть

добавленные

данные

под

разными

пользователями

Пользователь

Таблица

RAL,WAL 

данных

Результат

B

TB

по

умолчанию

успешно

B

TB

НЕСЕКРЕТНО

ДСП

успешно

B

TB

НЕСЕКРЕТНО

НЕСЕКРЕТНО

успешно

A

TB

по

умолчанию

успешно

A

TB

СЕКРЕТНО

ДСП

успешно

 (

можно

повысить

уровень

заносимых

данных

)

C

TC

по

умолчанию

успешно

C

TC

НЕСЕКРЕТНО

НЕСЕКРЕТНО

успешно

 (WAL 

пользователя

позволяет

понизить

уровень

чтения

)

TC

по

умолчанию

нарушение

мандатного

доступа

между

группами

пользователей

нет

доверия

D

TD

по

умолчанию

успешно

D

TD 

НЕСЕКРЕТНО

ДСП

нарушение

мандатного

доступа

D

TD 

ДСП

ДСП

успешно

 (

минимальные

уровни

которые

может

занести

пользователь

Пользователь

Запрос

Описание

B

select tb.*, security(*,'R') RAL 

from tb;

Пользователь

видит

 5 

сток

Получаем

также

их

 RAL. 3 

строки

несекретные

, 2 - 

секретные

A

select * from b.tb;

Пользователь

видит

только

 3 

несекретные

строки

A

select sum(i) from b.tb;

При

подсчете

агрегатных

функций

тоже

учитываются

только

видимые

строки

B

select * from c.tc;

Нарушение

мандатного

доступа

таблица

принадлежит

другой

группе

C

select tc.*, security(*,'R') RAL, 

security(*,’W’) WAL from tc;

Видим

 2 

добавленные

строки

и

их

уровни


background image

!

40

П

ра
кт

ич

ес

ко

е

за

ня

ти

е

 7

Ра

зг

ра

ни

че

ни

е

до

ст

уп

а

в

С

У

Б

Д

Л

И
Н

Т

ЕР

М

ан

да

тн

ы

й

до

ст

уп

!

!

 
 

E-

mai

l: 

ma

rke

t@

rele

x.r

u

7.8. 

Установка

доверия

между

группами

Задача

:

Установить

доверие

группы

 G2 

к

группе

 G1. 

Решение

:

АБ

 (SYSTEM) 

подает

запрос

GRANT ACCESS ON G2 TO G1;

Задача

:

Проверить

возможность

доступа

пользователей

разных

групп

к

объектам

и

данным

группы

 G2. 

7.9. 

Модификация

/

удаление

данных

Задача

:

Выполнить

несколько

запросов

на

модификацию

/

удаление

данных

(

осмыслить

случаи

разрешенных

и

запрещенных

действий

проверить

получающиеся

после

модификации

метки

доступа

): 

D

select td.*, security(*,'R') RAL, 

security(*,’W’) WAL from td;

Видим

 2 

добавленные

строки

и

их

уровни

Пользо

-

ватель

Таблица

Действие

Результат

B

TC

выборка

данных

 (select *)

теперь

видим

строки

TC

вставка

строки

с

 (RAL,WAL) 

по

умолчанию

успешно

B

TC

вставка

строки

с

 (RAL,WAL) 

НЕСЕКРЕТНО

”, “

НЕСЕКРЕТНО

успешно

B

TC

выборка

данных

с

информацией

о

группе

select c.tc.*, security(*,’G’) GR, 

security(*,’R’) RAL from c.tc;

Видны

старые

и

новые

строки

с

разными

 RAL; 

метки

групп

отличаются

для

строк

добавленных

разными

пользователями

A

TC

выборка

данных

 (select *)

нарушение

мандатного

доступа

RAL 

пользователя

ниже

чем

 RAL 

таблицы

C

TC

выборка

данных

 (select *)

пользователь

видит

только

 2 

строки

т

.

к

группа

 G1 

не

оказывала

доверия

его

группе

B

GRANT ACCESS ON G1 TO G2;

является

 DBA 

группы

 G1 

и

может

оказать

доверие

другой

группе

C

TC

выборка

данных

 (select *)

теперь

пользователь

видит

три

строки

 (

одна

ему

по

-

прежнему

недоступна

вследствие

высокого

RAL)

TC

выборка

данных

 (select *)

нарушение

мандатного

доступа

группе

 G3 

не

было

оказано

доверие

Пользо

-

ватель

Таблица

Действие

Результат