Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Линтер методичка

.pdf
Скачиваний:
78
Добавлен:
21.05.2015
Размер:
1.38 Mб
Скачать

Задача: Добавить к таблице PHONES, созданной ранее, поле POSITION (занимаемая должность). Предоставить доступ пользователю B только к полям ID,NAME и PHONE.

П

Решение:

1. Добавить дополнительное поле в таблицу PHONES:

ра

alter table PHONES add(POSITION char(20));

кт

2. Убрать доступ к таблице PHONES

ич

revoke all on PHONES from B;

ес

3. Создать представление для доступа к необходимым столбцам таблицы PHONES:

ко

create view PH_VIEW as select ID,NAME from PHONES;

е

4. Передать доступ к созданному представлению:

за

grant select,insert on PH_VIEW to B;

ня

 

ти

Задачи для самостоятельной работы:

е 5

1. К таблице почтовых адресов добавить фамилии руководителей и сделать их

Ра

недоступными для всех пользователей, кроме пользователей A и B.

зг

5.3. Использование представлений для разграничения доступа

ра

Для «горизонтального» разграничения доступа к таблице также могут

ни

использоваться представления. Рассмотрим это на следующей задаче.

че

Задача: Предоставить пользователям A и B доступ ко всем записям таблицы

ни

телефонов, а остальным пользователям доступ только к телефонам, номера которых

е

 

начинаются с цифры ‘9’.

до

Решение:

ст

1. Создать представление для доступа к необходимым столбцам таблицы PHONES:

уп

create view PH_VIEW2 as select ID,NAME from PHONES where PHONE like ‘9%’;

а2. Передать доступ к созданному представлению:

в

grant select,insert on PH_VIEW2 to PUBLIC;

С

 

УЗадачи для самостоятельной работы:

Б1. Произвести разграничение доступа в таблице почтовых адресов для

Дпользователей, кроме A и B , предоставив для просмотра только адреса в городе

ЛМосква.

И5.4. Роли и их использование

Н Механизм ролей позволяет быстро назначать группе пользователей привилегии к

наборуТ

таблиц и представлений приложения. Такое использование удобно, если в

приложении предусмотрена многопользовательская работа с разграничением доступа.

ЕР

Задача: Пользователь A создал в рамках приложения таблицы с телефонами

.

физических лиц и адресами предприятий (см. задачи выше). Необходимо предоставить

Д

 

пользователям C1,C2,C3 доступ на чтение к информации в этих таблицах (используя

ис

 

доступ через представления).

кр

Решение:

ец

1. Работая под пользователем A, создаем роль ROLE_A:

ио

create role ROLE_A;

нн2. Передаем этой роли доступ к таблицам на чтение:

ыGrant select on PH_VIEW2 to ROLE_A;

йGrant select on ADR_VIEW2 to ROLE_A; (* имя представления из предыдущей задачи *)

до

3.

Создаем пользователей C1,C2,C3:

ст

grant connect to C1;

уп

grant connect to C2;

E-

grant connect to C3;

mai

!31

4.

Назначаем роль пользователям C1, C2, C3:

l:

ma rke t@ rele x.r

u

32!

Grant role ROLE_A to C1;

П

Grant role ROLE_A to C2;

 

ра

Grant role ROLE_A to C3;

 

кт

 

 

 

 

 

 

ич

Теперь в случае появления дополнительных таблиц для приложения, необходимо

будет передать роли доступ к новым таблицам. Пользователи автоматически получат

ес

 

 

 

 

 

 

доступ к таблице (представлению) через механизм ролей.

 

ко

Задачи для самостоятельной работы:

 

е

 

1.

Для пользователя A создать несколько ролей, каждой из которых назначены

за

 

следующие привилегии к таблицам телефонов (PHONES

) и адресов

ня

 

предприятий:

 

ти

 

 

a.

только чтение;

 

е 5

 

 

b.

только вставка;

 

Ра

 

 

c. чтение, изменение, вставка;

 

зг

 

 

d. чтение, вставка, удаление, изменение.

 

ра

2.

Назначить роли для пользователей (создать предварительно недостающих)

ни

 

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

 

 

 

a.

C1, C2;

 

че

 

 

 

 

 

b.

C3;

 

ни

 

 

 

 

 

c.

D1, D2, D3;

 

е

 

 

 

 

 

d.

E.

 

до

 

 

 

 

 

 

 

 

 

ст

5.5. Задачи для самостоятельной работы

 

уп

 

Для каждой задачи необходимо спроектировать структуру таблиц для хранения всей

а

указанной информации. Выделить различные категории пользователей

(включая

в

 

 

 

 

 

 

администратора безопасности и администратора данных) и предоставить им

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

привилегии к различным таблицам или представлениям. При

разграничении доступа необходимо использовать роли.

 

У

Задача 1. База данных городской думы.

 

Б

 

Д

В базе хранятся имена, адреса, домашние и служебные телефоны всех членов

Думы. В Думе работает порядка сорока комиссий, все участники которых являются членами

Л

 

 

 

 

 

 

Думы. Каждая комиссия имеет свой профиль, например, вопросы образования, проблемы,

связанныеИ

с жильем и так далее. Данные по каждой из комиссий включают: ее нынешний

состав и председатель, прежние председатели и члены этой комиссии, участвовавшие в ее

Н

работе за прошедшие 10 лет, даты включения и выхода из состава комиссии, избрания ее

Т

председателей. Члены Думы могут заседать в нескольких комиссиях. В базу заносятся времяЕР и место проведения каждого заседания комиссии с указанием депутатов и служащих

Думы, которые участвуют в его организации.

.

ДЗадача 2. База данных рыболовной фирмы.

ис

Фирме принадлежит небольшая флотилия рыболовных катеров. Каждый катер

имеет “паспорт”, куда занесены его название, тип, водоизмещение и дата постройки. Фирма

кр

 

 

регистрирует каждый выход на лов, записывая название катера, имена и адреса членов

командыец

с указанием их должностей (капитан, боцман и т. д.), даты выхода и возвращения,

а также вес пойманной рыбы отдельно по сортам (например, трески). За время одного

ио

рейса катер может посетить несколько банок. Фиксируется дата прихода на каждую банку и

нн

дата отплытия, качество выловленной рыбы (отличное, хорошее, плохое).

ыЗадача 3. База данных фирмы, проводящей аукционы.

й

Фирма занимается продажей с аукциона антикварных изделий и произведений

 

искусствадо

. Владельцы вещей, выставляемых на проводимых фирмой аукционах,

 

юридически являются продавцами. Лица, приобретающие эти вещи, именуются покупа

-

ст

 

 

 

телями. Получив от продавцов партию предметов, фирма решает, на котором из аукционов

уп

выгоднее представить конкретный предмет. Перед проведением очередного аукциона

каждой из выставляемых на нем вещей присваивается отдельный номер лота, играющий ту

же роль, что и введенный ранее шифр товара. Две вещи, продаваемые на различных

E-

аукционахmai , могут иметь одинаковые номера лотов.

l: ma rke t@ rele x.r

u

В книгах фирмы делается запись о каждом аукционе. Там отмечаются дата, место и время его проведения, а также специфика (например, выставляются картины, написанные

маслом и не ранее 1900 г.). Заносятся также сведения о каждом продаваемом предмете:

П

аукцион, на который он заявлен, номер лота, продавец, отправная цена и краткое словесноера описание. Продавцу разрешается выставлять любое количество вещей, а

покупатель имеет право приобретать любое количество вещей. Одно и то же лицо или

кт

фирма может выступать и как продавец, и как покупатель. После аукциона служащие

ич

фирмы, проводящей аукционы, записывают фактическую цену, уплаченную за проданный

ес

предмет, и фиксируют данные покупателя.

ко

е

за

ня

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

е

до

ст

уп

а

в

С

У

Б

Д

Л

И

Н

Т

ЕР

.

Д

ис

кр

ец

ио

нн

ы

й

до

ст

уп

E-

mai

!33 l:

ma rke t@ rele x.r

u

34!

Практическое занятие 6 Резервное копирование и восстановление данных

Практика 1 час (Лекция 5)

На занятии будут рассмотрен инструментарий пакета СУБД ЛИНТЕР, предназначенный для горячего резервирования и восстановления как всей базы данных, так и пообъектно.

6.1. Утилита Linter Hot Backup

Утилита Linter Hot Backup (lhb) предназначена для:

создания архивов как всей базы, так и ее объектов без остановки ядра;

восстановления как всей базы, так и ее объектов.

Предположим, что домашней директорией пользователя является /home/linter/ Для выполнения задач данной практики понадобится:

создать директорию prac4 в домашней;

создать в директории prac4 директорию db, а в ней – новую базу данных;

создать в директории prac4 директорию db_backup;

запустить ядро на базе из директории /home/linter/prac4/db;

выполнить скрипт prac4_cr.sql при помощи утилиты inl.

Данный скрипт создает «игрушечную» базу данных – три таблицы LIB_BOOKS, LIB_AUTHOR, LIB_WROTE пользователя SYSTEM, описывающие информацию о книгах и их авторах, а также представление, содержимое которого разрешено просматривать пользователю READER.

6.2. Сохранение базы данных

Для полного сохранения базы данных используется команда s. Как правило, указывается имя файла архива, куда будет сохранена информация.

Задача 1. Создать полный архив базы данных. Использовать низкий приоритет процесса архивирования, чтобы не загружать ядро. Архив защитить паролем KBYNTH

lhb s –u SYSTEM/MANAGER –f /home/linter/prac4/db_backup/ db_full.lhb –priority LOW –g KBYNTH

Задача 2. Создать полный архив базы данных, разбив его по томам – 1.2 Мб.

lhb s –u SYSTEM/MANAGER –f /home/linter/prac4/db_backup/ db_vol.lhb –v 1200 –qc NVDF

Здесь команда NV в ключе –qc указывает, что следует игнорировать предупреждения о создании нового тома, а команда DF – предупреждения о существующих архивных файлах с теми же именами, что и у вновь создаваемых.

6.3. Пообъектное сохранение

Пообъектное сохранение базы данных включается одним из следущих ключей: -ou, - ot, -otwd, -ov, -os, -or, -osr, -oa, -otr, -op, -oall, -d, -takeforeign. После ключа указывается маска объектов, которые подлежат сохранению в формате * -- любое количество любых символов, ? –любой символ. Если маска не указана, то сохраняются все объекты.

Задача 3. Создать архив таблиц бибилиотеки.

E-mail: market@relex.ru

ЗАО НПП «РЕЛЭКС»

http://www.relex.ru

 

 

lhb s –u SYSTEM/MANAGER –ot LIB_* –f /home/linter/prac4/

 

Пр

db_backup/db_lib.lhb

 

Задача 4. Создать архив таблиц бибилиотеки, со всеми представлениями и правами

 

ак

доступа.

 

тиче

lhb s –u SYSTEM/MANAGER –ot LIB_* –ov –oa –f /home/linter/

 

ск

prac4/db_backup/db_lib.lhb

ое

Здесь ключ –ov без маски указывает необходимость сохранения всех

за

 

представлений; –oa указывает необходимость сохранения привилегий доступа.

ня

6.4. Создание инкрементных архивов

ти

Создание инкрементных архивов подразумевает создание контрольной точки в

е 6

журнале базы данных, то которой следует хранить изменения в базе. При дополнении

инкрементного архива происходит архивирование изменений базы от соответствующей

контрольнойРе

точки.

зер

Следует удалять неиспользуемые контрольные точки из журнала, поскольку их

наличие ведет к разрастанию журнала.

вн

Задача 5. Создать инкрементный архив всей базы данных.

ое

ко

lhb s –u SYSTEM/MANAGER –startinc –f /home/linter/prac4/

пиро

db_backup/db_inc.lhb

ва

При этом в журнал добавляется контрольная точка, имеющая номер и время

создания (обновления) инкрементного архива. Список контрольных точек можно

ни

 

просмотреть, а также, удалить точку по ее номеру.

е и

Задача 6. Добавить изменения в инкрементный архив.

во

lhb s –u SYSTEM/MANAGER –inc –f /home/linter/prac4/

сст

ан

db_backup/db_inc.lhb

ов

При этом происходит запись в файл архива данных журнала от контрольной точки

ле

 

до текущего момента и сдвиг контрольной точки на текущий момент.

ни

Для работы с контрольными точками предназначена команда cp.

еЗадача 7. Просмотреть список контрольных точек.

ннда lhb cp –u SYSTEM/MANAGER –list –f /home/linter/prac4/ ых db_backup/db_inc.lhb

Задача 8. Удалить контрольную точку с номером 0.

35! lhb cp –u SYSTEM/MANAGER –clear 0 –f /home/linter/prac4/ db_backup/db_inc.lhb

Задача 9. Остановить формирование инкрементного архива.

lhb s –u SYSTEM/MANAGER –stopinc –f /home/linter/prac4/ db_backup/db_inc.lhb

При этом из журнала базы данных удалится контрольная точка для данного архива,

ипродолжение его будет невозможно.

6.5.Восстановление базы данных

Для восстановления данных из базы следует использовать команду r и указывать директорию, в которой следует развернуть базу.

E-

Задача 10. Восстановить базу данных из полного архива, созданного в задаче 1.

mai

Директорией назначения использовать:

l:

/home/linter/prac4/db_restored.

mar

ket

 

@re

 

lex.

 

ru

 

!36

Пр

Создадим директорию 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. Пообъектное восстановление

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

нн

ых

E- mai l: mar ket @re lex. ru

Практическое занятие 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. Создание пользователей и назначение им уровней доступа

Задача: Создать следующих пользователей (пароли можно пока оставить пустыми):

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

Категория

RAL

WAL

 

 

 

 

A

CONNECT

НЕСЕКРЕТНО

НЕСЕКРЕТНО

 

 

 

 

B

DBA

СЕКРЕТНО

НЕСЕКРЕТНО

 

 

 

 

C

RESOURCE

ДСП

НЕСЕКРЕТНО

 

 

 

 

D

DBA

СОВ.СЕКРЕТНО

ДСП

 

 

 

 

Пример:

GRANT DBA TO B;

ALTER USER B LEVEL(“СЕКРЕТНО”,”НЕСЕКРЕТНО”);

Проверьте информацию о созданных пользователях и их уровнях:

SELECT * FROM USER_SECURITY;

!38

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. Создание объектов БД

 

 

 

 

 

е 7

 

 

 

 

 

Задача: Создать несколько таблиц с разными уровнями доступа от имени разных

 

Ра

 

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

 

 

 

 

 

зг

 

 

 

 

 

 

 

ра

 

 

 

 

 

 

 

Владелецни

Таблица

RAL таблицы и

WAL таблицы и

 

 

 

че

 

 

всех столбцов

всех столбцов

 

 

ни

 

TB(I INT, C CHAR(20))

НЕСЕКРЕТНО

НЕСЕКРЕТНО

 

 

 

B

 

 

 

C е

 

TC(D DATE, T CHAR(20))

ДСП

НЕСЕКРЕТНО

 

 

до

 

TD(I INT, D DATE)

ДСП

ДСП

 

 

 

D

 

 

 

ст

 

 

 

 

 

 

 

уп

 

 

 

 

 

 

аПример:

в

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');

Назначьте все привилегии на все созданные таблицы для всех пользователей. Это позволит лучше увидеть работу мандатного доступа, т.к. по дискреционному доступу всем пользователям будет все разрешено.

Пример:

E-

mai GRANT ALL ON TB TO PUBLIC;

l: ma rke

t@ rele x.r u

7.6. Добавление данных

Задача: Подать серию запросов на добавление данных в созданные таблицы из-под

 

разных пользователей:

 

 

 

 

П

 

 

 

 

 

 

ра

 

 

 

 

 

 

кт

 

Таблица

RAL,WAL данных

Результат

 

 

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

 

 

ич

 

TB

по умолчанию

успешно

 

 

B

 

 

 

 

ес

 

 

 

 

 

 

B

 

 

TB

НЕСЕКРЕТНО, ДСП

успешно

 

 

ко

 

 

 

 

 

 

B е

 

TB

НЕСЕКРЕТНО,

успешно

 

 

за

 

 

НЕСЕКРЕТНО

 

 

 

ня

 

TB

по умолчанию

успешно

 

 

A

 

 

 

 

ти

 

TB

СЕКРЕТНО, ДСП

успешно (можно повысить

 

 

A

 

 

 

 

е 7

 

 

 

уровень заносимых данных)

 

 

Ра

 

 

 

 

 

 

 

 

 

 

 

C

 

 

TC

по умолчанию

успешно

 

 

зг

 

 

 

 

 

 

ра

 

TC

НЕСЕКРЕТНО,

успешно (WAL пользователя

 

 

C

 

 

 

 

ни

 

 

НЕСЕКРЕТНО

позволяет понизить уровень

 

 

че

 

 

 

чтения)

 

 

ни

 

TC

по умолчанию

нарушение мандатного

 

 

B

 

 

 

 

 

е

 

 

 

доступа: между группами

 

 

до

 

 

 

пользователей нет доверия

 

 

Dст

 

TD

по умолчанию

успешно

 

 

уп

 

TD

НЕСЕКРЕТНО, ДСП

нарушение мандатного

 

 

D

а

 

 

 

 

 

 

 

доступа

 

 

Dв

 

TD

ДСП, ДСП

успешно (минимальные

 

 

С

 

 

 

уровни, которые может

 

 

У

 

 

 

 

 

 

 

 

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

 

 

Б

 

 

 

 

 

 

 

 

 

 

 

Д

Пример запроса с указанием уровней:

 

 

 

Л

 

 

 

 

 

 

 

Иinsert into b.tb##"СЕКРЕТНО"#"ДСП" values(2,'2-A');

 

Н

 

 

 

 

Примечание: Примеры всех запросов приведены в файле ins.sql

 

Т

7.7. Выборка данных

 

 

ЕР

 

 

Задача: Просмотреть добавленные данные под разными пользователями:

.

 

М

 

 

 

 

ан

 

Запрос

Описание

 

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

 

да

 

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

Пользователь видит 5 сток. Получаем

 

B

 

 

тн

 

from tb;

также их RAL. 3 строки несекретные, 2 -

 

ы

 

 

 

 

секретные

 

Aй

 

select * from b.tb;

Пользователь видит только 3

 

до

 

 

несекретные строки

 

ст

 

 

 

 

select sum(i) from b.tb;

При подсчете агрегатных функций тоже

 

A

 

 

уп

 

 

учитываются только видимые строки

 

 

 

 

 

 

 

 

 

 

B

 

select * from c.tc;

Нарушение мандатного доступа: таблица

 

39!

 

 

принадлежит другой группе

 

E-

 

 

 

mai

 

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

Видим 2 добавленные строки и их уровни

 

C

 

 

l:

 

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

 

 

ma

 

 

 

 

 

 

 

rke

 

 

 

 

t@

 

 

 

 

rele

 

 

 

 

x.r

 

 

 

 

u

 

 

 

до
ст
уп

40!

 

 

D

 

 

 

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

Видим 2 добавленные строки и их уровни

 

 

П

 

 

 

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

 

 

 

 

ра

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

кт

7.8. Установка доверия между группами

 

 

 

ич

 

 

 

ес

Задача: Установить доверие группы G2 к группе G1.

 

 

ко

Решение: АБ (SYSTEM) подает запрос

 

 

 

е

GRANT ACCESS ON G2 TO G1;

 

 

 

за

 

 

 

ня

Задача: Проверить возможность доступа пользователей разных групп к объектам и

 

данным группы G2.

 

 

 

ти

 

 

 

 

 

 

 

 

 

е 7

 

 

 

 

 

 

 

 

 

ПользоРа

-

Таблица

Действие

Результат

 

 

ватель

 

 

 

 

 

 

 

 

зг

 

 

 

 

 

 

 

 

 

ра

 

 

TC

 

выборка данных (select *)

теперь видим строки

 

 

B

 

 

 

 

 

ни

 

 

TC

 

вставка строки с (RAL,WAL) по

успешно

 

 

B

 

 

 

 

 

че

 

 

 

 

умолчанию

 

 

 

ни

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B е

 

 

TC

 

вставка строки с (RAL,WAL)

успешно

 

 

до

 

 

 

 

“НЕСЕКРЕТНО”, “НЕСЕКРЕТНО”

 

 

 

 

 

 

 

 

 

 

 

 

B

 

 

TC

 

выборка данных с информацией

Видны старые и новые строки с

 

 

ст

 

 

 

 

о группе:

разными RAL; метки групп

 

 

уп

 

 

 

 

 

 

 

 

 

 

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

отличаются для строк,

 

 

а

 

 

 

 

 

 

 

 

 

 

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

добавленных разными

 

 

в

 

 

 

 

 

 

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

 

 

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 не было оказано

 

 

ы

 

 

 

 

 

 

 

 

й

 

 

 

 

 

 

доверие

7.9. Модификация/удаление данных

Задача: Выполнить несколько запросов на модификацию/удаление данных (осмыслить случаи разрешенных и запрещенных действий; проверить получающиеся после модификации метки доступа):

 

 

 

 

 

 

 

 

 

 

-

Таблица

Действие

Результат

 

ПользоE-

mai

 

 

 

 

 

ватель

 

 

 

 

 

l:

 

 

 

 

 

 

 

 

 

 

ma

 

 

 

 

 

rke

 

 

 

 

 

t@

 

 

 

 

rele

 

 

 

 

 

x.r

 

 

 

 

 

u