Добавлен: 28.11.2018

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

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

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

 

96

Эти

   

типы

   

доступа

   

обычно

   

обеспечиваются

   

назначением

  

для

  

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

  

данных

  

нескольких

  

паролей

.  

Например

,  

предположим

,  

что

  

у

  

нас

  

есть

  

таблица

 4.1 «

Работник

»  

и

  

мы

  

хотим

,  

чтобы

  

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

  

Васильев

  

имел

  

доступ

  

только

  

к

  

атрибутам

  

 

РАБОТНИКА

   

и

 

ФАМИЛИЯ

,  

причем

  

только

  

для

  

чтения

.   

Этого

  

можно

  

добиться

,  

создав

  

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

  

дан

-

ных

,  

содержащее

  

только

  

атрибуты

  

 

РАБОТНИКА

  

и

  

ФАМИ

-

ЛИЯ

.  

Для

  

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

  

данных

  

 

РАБОТНИКА

_

ФАМИЛИЯ

  

можно

   

создать

   

пароль

,  

дающий

   

право

   

доступа

   

только

   

для

  

чтения

 (

команда

 SQL): 

 
GRANT  READ ACCESS ON 

 

РАБОТНИКА

_

ФАМИЛИЯ

 TO  

Васильев

 

 

Общая

   

форма

   

такого

   

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

   

права

   

доступа

   

в

  

SQL  

с

  

командой

  GRANT  

выглядит

  

следующим

  

образом

GRANT  <

список

   

полномочий

  >    ON    <

имя

   

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

  

данных

  

или

  

таблицы

TO  <

список

  

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

 

Список

   

полномочий

   

позволяет

   

перечислить

   

несколько

  

полномочий

    (

чтения

,  

удаления

   

и

/

или

   

обновления

)  

в

   

одной

  

команде

 

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

   

данных

   

и

   

защита

   

в

    SQL  . 

Общий

   

син

-

таксис

   

команды

    SQL,   

создающей

   

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

   

данных

,  

имеет

  

следующий

  

вид

CREATE  VIEW  

имя

_

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

_

данных

  (

список

  

нужных

  

атрибутов

,  

если

  

не

  

совпадает

  

с

  

базовой

  

таблицей

)    AS  

за

-

прос

 

Рассмотрим

   

конкретный

   

пример

,  

в

   

котором

   

используется

  

таблица

 4.1.  

Предположим

,  

что

  

мы

  

хотим

  

ограничить

  

доступ

  

к

   

этой

  

таблице

    

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

  

1

U

,  

позволяя

  

ему

  

просмат

-

ривать

   

только

   

информацию

   

о

   

работнике

,  

номер

 

которого

  

1235.     

 
GREA

Т

E  VIEW  

 

Работника

 1235  

А

S  SELECT  

 

Работни

-

ка

,  

Фамилия

,  

Недельная

  

зарплата

,  

Специальность

 

FROM     

Работник

 

WHERE  

 

Работника

 = 1235 


background image

 

97

Предположим

,  

что

  

1

U

  

позволено

  

просматривать

  

всю

  

ин

-

формацию

   

таблицы

    «

Работник

»,  

кроме

   

информации

   

о

   

зар

-

плате

.  

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

   

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

   

данных

   

выглядит

  

так


   CREATE  VIEW    

Работник

1  

    AS   SELECT   

 

Работника

,  

Фамилия

Специальность

 

  FROM     

Работник

 

 

На

   

некоторых

   

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

   

может

   

быть

   

возложена

   

от

-

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

   

за

   

поддержание

   

элементов

   

данных

,  

следова

-

тельно

,  

им

  

разрешен

  

доступ

  

к

  

системным

  

таблицам

,  

за

  

ко

-

торые

   

они

   

отвечают

.  

Поскольку

   

системные

   

таблицы

   

сами

  

представляют

  

собой

  

реляционные

  

таблицы

,  

то

  

для

  

них

  

тоже

  

можно

  

создавать

  

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

  

данных

.  

Приведем

  

пример

 
CREATE VIEW 

МОИ

_

ТАБЛИЦЫ

 

AS SELECT  * 
FROM SYSTABLES 
WHERE CREATOR = USER 
USER – 

ключевое

  

слово

,  

требующее

  

присвоения

  

значения

  

во

  

время

  

выполнения

.  

Таким

  

образом

,  

если

  

1

U

  

вводит

  

ко

-

манду

 

 
SELECT  * 
FROM  

МОИ

_TA

БЛИЦЫ

 

система

   

выполняет

  

запрос

,  

как

  

если

  

бы

  

было

  

написано

  

SELECT  * 
FROM  

МОИ

_TA

БЛИЦЫ

 

WHERE CREATOR = 

1

U

 

Запросы

  

такого

  

рода

  

называются

  

контекстно

-

зависимыми

,  

поскольку

   

выдаваемый

   

ими

  

результат

   

зависит

  

от

  

контекста

  

(

1

U

). 

Иногда

   

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

   

позволен

   

доступ

   

к

   

статическим

  

данным

,  

вычисленным

   

по

   

базовой

   

таблице

,  

но

   

запрещен

  

доступ

  

к

  

отдельным

  

значениям

Рассмотрим

  

пример

,  

в

  

кото

-

ром

   

используется

   

таблица

    «

Проект

»,  

имеющая

   

следующую

  

схему

:  

ПРОЕКТ

 (

,  

ФАМИЛИЯ

АДРЕС

ПОЧТОВАЯ

  

ОПЛАТА

ОТДЕЛ

).  

Например

,  

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

   

может

   

быть

,  

разрешено

  

смотреть

   

только

   

среднюю

   

почасовую

   

оплату

   

из

   

таблицы

.  


background image

 

98

Такое

   

ограничение

   

поддерживается

   

следующим

   

представле

-

нием

  

данных

      
CREATE   VIEW AVG  (

,  

ФАМИЛИЯ

,  

СР

._

ОПЛ

., O

ТДЕЛ

AS  SELECT 

,

ФАМИЛИЯ

,AVG (

ПОЧ

._ 

ОПЛ

),

ОТДЕЛ

    

FROM   

ПРОЕКТ

  GROUP BY O

ТДЕЛ

 

 

Обратите

  

внимание

,  

что

 

в

  

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

  

данных

  

создает

-

ся

  

атрибут

  (

СР

._

ОПЛ

),  

которого

  

не

  

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

  

в

  

базовой

  

таблице

    «

Проект

».  

Его

   

значения

   

вычисляются

   

командой

  

SELECT - 

берется

   

среднее

   

значение

   

атрибута

   

ПОЧТОВАЯ

  

ОПЛАТА

  

для

  

каждого

  

отдела

Хотя

  

применение

  

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

  

данных

  

может

  

быть

  

эф

-

фективным

   

средством

   

защиты

,  

система

   

должна

   

уметь

   

при

-

спосабливаться

  

к

   

изменяющимся

  

со

  

временем

  

требованиям

.  

В

    SQL   

такую

   

возможность

   

дают

   

команды

    GRANT   

и

  

REVOKE.  

Приведем

 

примеры

 
GRANT  SELECT  ON  TABLE  C  TO  

Иванов

,  

Петров

  

 

Команда

  

означает

,  

что

  

Иванову

  

и

  

Петрову

  

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

  

право

  

применять

  

любые

  

операции

  SELECT  

к

  

таблице

 «C». 

 
GRANT  SELECT,  UPDATE (

ОТДЕЛ

)  ON  TABLE  C  TO  

Пет

-

ров

  

 

Это

  

означает

,  

что

  

Петров

  

имеет

  

право

  

применять

  

любые

  

операции

  SELECT  

к

  

таблице

 «C»,  

а

  

также

  

обновлять

  

значе

-

ния

  

атрибутов

  

ОТДЕЛ

 
REVOKE   SELECT  ON  TABLE  C  FROM  

Иванов

  

 

Эта

   

команда

   

означает

,  

что

   

Иванов

   

больше

   

не

   

имеет

  

права

  

выполнять

  

операции

  SELECT  

над

  

таблицей

 «

С

». 

Список

  

привилегий

,  

которые

  

относятся

  

к

  

таблицам

:   

SELECT  (

выбор

UPDATE  (

обновление

DELETE  (

удаление

INSERT  (

ввод

Опция

  GRANT  

может

  

распространяться

   

на

  

других

  

поль

-

зователей

.  

Например

,  

если

   

Иванов

   

имеет

   

право

   

передать

  


background image

 

99

привилегию

   

А

   

Петрову

,  

то

   

Петров

   

имеет

   

право

   

передать

  

привилегию

  

А

  

другому

   

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

Васильеву

  

и

 

т

.

д

.   

 

Иванов

GRANT  SELECT  ON  TABLE  C  TO  

Петров

  WITH  GRANT  

OPTION  

  

Петров

GRANT  SELECT ON  TABLE  C  TO 

Васильев

 WITH GRANT  

OPTION 

До

  

тех

  

пор

  

пока

  

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

  

получает

  GRANT  OPTION,  

он

  

может

  

передавать

  

ту

  

же

 

привилегию

  

другим

  

пользовате

-

лям

Если

  

Иванов

  

позже

  

хочет

  

отозвать

 GRANT  OPTION,  

то

  

он

  

может

  

сделать

  

так

:   

 
REVOKE  SELECT  ON  TABLE  C  FROM   

Петров

 

 

Такой

   

отзыв

   

будет

   

применен

   

как

   

к

   

Петрову

так

 

и

   

ко

  

всем

,  

кому

  

он

  

передал

  

привилегию

,  

и

  

т

.

д

2.3.  

Шифровка

 

Различные

  

меры

  

идентификации

  

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

  

и

  

провер

-

ки

  

полномочий

,  

стандартные

  

способы

  

защиты

  

БД

  

могут

  

ока

-

заться

  

недостаточными

  

для

  

сильно

  

уязвимых

  

данных

.  

В

  

та

-

ких

   

случаях

   

может

   

оказаться

   

желательным

   

зашифровать

  

данные

.  

Зашифрованные

   

данные

   

агрессор

   

не

   

может

   

про

-

честь

если

  

он

  

хотя

  

бы

  

частично

  

не

  

знает

  

способа

  

шифров

-

ки

.  

Разработке

   

методов

   

шифровки

   

посвящено

   

немало

   

ис

-

следований

.  

Некоторые

   

из

   

методов

   

настолько

   

просты

,  

что

  

легко

   

поддаются

   

дешифрации

.  

Другие

 

чрезвычайно

   

сложно

  

расшифровать

,  

что

   

обеспечивает

   

высокую

   

степень

   

защиты

  

данных

Шифровка

 – 

преобразование

 

читаемого

 

текста

 

в

 

нечитае

-

мый

 

текст

 

при

 

помощи

 

некоторого

 

алгоритма

применяется

 

для

 

защиты

 

уязвимых

 

данных

Сначала

 

рассмотрим

 

простую

 

схему

 

шифровки

затем

 – 

бо

-

лее

 

сложный

 

и

 

более

 

надежный

 

метод

 
 
 


background image

 

100

 

Метод

 

простой

 

подстановки

 

 

Предположим

необходимо

 

зашифровать

 

сообщение

 (

про

-

стой

 

текст

). 

 

Идет

 

снег

 

Простой

 

текст

 

 

текст

который

 

можно

 

прочесть

 

 

Текст

-

шифр

 

 

текст

который

 

прочесть

 

невозмож

-

но

Метод

 

простой

 

подстановки

 

состоит

 

в

 

замене

 

каждой

 

буквы

 

алфавита

 

на

 

следующую

 

за

 

ней

 

в

 

алфавите

Считается

что

 

про

-

бел

 

идет

 

после

 

буквы

 «

я

» 

и

 

перед

 

буквой

 «

а

». 

Тогда

 «

идет

 

снег

»  

превращается

 

в

 

текст

 – 

шифр

:  

йежуатожд

 

 

 

Метод

 

поалфавитной

 

подстановки

 

 

Предположим

мы

 

хотим

 

зашифровать

 

то

 

же

 

самое

 

сообще

-

ние

но

 

теперь

 

у

 

нас

 

есть

 

ключ

 

шифра

например

, «

защита

». 

То

-

гда

1. 

Ключ

 

пишется

 

под

 

текстом

 

и

 

повторяется

 

столько

 

раз

что

-

бы

 

полностью

 «

закрыть

»  

текст

идет

 

снег

 

защитазащ

. 

 

2. 

Будем

 

считать

что

 

пробел

 

занимает

 

тридцать

 

третье

 

и

 

по

-

следнее

 

место

 

в

 

алфавите

Для

 

каждого

 

символа

 

сложим

 

номер

 

в

 

алфавите

 

символа

 

текста

   

и

 

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

 

символа

 

клю

-

ча

разделим

 

на

 33 

и

  

сохраним

 

остаток

Заменим

 

символ

 

текста

 

на

 

символ

имеющий

 

вычисленный

 

номер

В

 

нашем

 

примере

 

под

 

пробелом

 (33) 

стоит

  

т

 (19), 

таким

 

образом

 (33+19)= 52, 

остаток

 

от

 

деления

 

на

 33 

равен

 19. 

На

 19 

месте

 

в

 

алфавите

 

стоит

 

буква

 

т

поэтому

 

вместо

 

про

-

бела

 

в

 

зашифрованном

 

тексте

 

будет

 

т

2.4. 

Секретность

  

данных

 

 

БД

,  

позволяющая

  

получать

  

агрегированную

  

информацию

  

о

  

больших

  

подмножествах

  

некоторого

  

множества

  

объектов

,  

назы

-

вается

  

статистической

.  

Примерами

  

могу

  

служить

  

БД

  

переписи

  

населения

,  

налоговых

   

деклараций

   

либо

   

пациентов

   

госпиталя

.  

Кроме

  

обычных

  

проблем

  

предотвращения

  

несанкционированно

-