ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.04.2021
Просмотров: 1858
Скачиваний: 3

!
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.

Практическое
занятие
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
СОВ
.
СЕКРЕТНО
ДСП

!
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)
ДСП
ДСП

!
!
П
ра
кт
ич
ес
ко
е
за
ня
ти
е
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
пользователя
позволяет
понизить
уровень
чтения
)
B
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
добавленные
строки
и
их
уровни

!
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 *)
теперь
видим
строки
B
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;
B
является
DBA
группы
G1
и
может
оказать
доверие
другой
группе
C
TC
выборка
данных
(select *)
теперь
пользователь
видит
три
строки
(
одна
ему
по
-
прежнему
недоступна
вследствие
высокого
RAL)
D
TC
выборка
данных
(select *)
нарушение
мандатного
доступа
:
группе
G3
не
было
оказано
доверие
Пользо
-
ватель
Таблица
Действие
Результат