Ульяновский государственный университет
Опубликован: 10.09.2004 | Доступ: свободный | Студентов: 34546 / 4478 | Оценка: 4.06 / 3.65 | Длительность: 16:15:00
ISBN: 978-5-9556-0101-4
Лекция 17:

Основные методы защиты данных. Управление пользователями

< Лекция 16 || Лекция 17: 1234 || Лекция 18 >

Реализация прав на доступ к объектам баз данных в среде MS SQL Server

Категории прав в среде MS SQL Server

При подключении к SQL Server все возможные действия пользователей определяются правами ( привилегиями, разрешениями), выданными их учетной записи, группе или роли, в которых они состоят.

Права можно разделить на три категории:

  • права на доступ к объектам ;
  • права на выполнение команд ;
  • неявные права.
Таблица 17.1.
Пользователь A Пользователь B Пользователь C Пользователь D Пользователь E
GRANT INSERT ON Товар TO B WITH GRANT OPTION Получение права
GRANT INSERT ON Товар TO C WITH GRANT OPTION Получение права от B. Получение права от E GRANT INSERT ON Товар TO C WITH GRANT OPTION
GRANT INSERT ON Товар TO D Получение права
REVOKE INSERT ON Товар TO B CASCADE Отмена права Сохранение права Сохранение права Сохранение права

Работа с данными и выполнение хранимых процедур требуют наличия класса доступа, называемого правами на доступ к объектам баз данных. Под объектами подразумеваются таблицы, столбцы таблиц, представления, хранимые процедуры.

Для различных объектов применяются разные наборы прав доступа к ним:

  • SELECT, INSERT, UPDATE, DELETE, REFERENCES – для таблицы или представления;
  • SELECT, UPDATE – для конкретного столбца таблицы или представления;
  • EXECUTE – для хранимых процедур и функций.

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

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

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

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

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

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

Для управления разрешением пользователя на доступ к объектам базы данных используется команда:

<предоставление_привилегий>::=
GRANT { ALL [ PRIVILEGES] | <привилегия>
    [,...n]}
{ [(    имя_столбца [,...n])]
    ON { имя_таблицы | 
        имя_просмотра} |
            ON {имя_таблицы |
        имя_просмотра }
            ([имя_столбца
                [,...n])]
    | ON {имя_хранимой_процедуры |
        имя_внешней_процедуры}}
TO {    имя_пользователя | имя_группы |
        имя_роли} [,...n]
[WITH GRANT OPTION ]
[AS {имя_группы | имя_роли }]

Параметр <привилегия> представляет собой следующую конструкцию:

<привилегия>::=
{SELECT | DELETE | INSERT |
 UPDATE | EXECUTE | REFERENCES }

Параметр WITH GRANT OPTION поможет пользователю, которому вы предоставляете права, назначить права на доступ к объекту другим пользователям. Его использование требует особой осторожности, поскольку при этом владелец теряет контроль над предоставлением прав на доступ другим пользователям. Лучше всего ограничить круг пользователей, обладающих возможностью управлять назначением прав.

Необязательный параметр AS {имя_группы | имя_роли } позволяет указать участие пользователя в роли, обеспечивающей предоставление прав другим пользователям.

Единственное право доступа, которое может быть предоставлено для хранимой процедуры, – право на ее выполнение ( EXECUTE ). Естественно, кроме этого владелец хранимой процедуры может просматривать и изменять ее код.

Для функции можно выдать право на ее выполнение, а кроме того, выдать право REFERENCES, что обеспечит возможность связывания функции с объектами, на которые она ссылается. Такое связывание позволит запретить внесение изменений в структуру объектов, способных привести к нарушению работы функции.

Права на выполнение команд SQL

Этот класс прав контролирует возможность создания объектов в базе данных, самой базы данных и выполнения процедуры резервного копирования. Можно использовать следующую команду для предоставления права на выполнение команд SQL:

<предоставление_права_выполнения>::=
GRANT {ALL | <команда>[,...n]}
TO {имя_пользователя | имя_группы |
    имя_роли} [,...n]

Параметр <команда> представляет собой следующую конструкцию:

<команда>::=
{CREATE DATABASE | CREATE TABLE |
    CREATE VIEW | CREATE DEFAULT |
    CREATE RULE | CREATE PROCEDURE
        | BACKUP DATABASE |
BACKUP LOG | ALL }

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

Неявные права

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

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

< Лекция 16 || Лекция 17: 1234 || Лекция 18 >
Федор Антонов
Федор Антонов

Здравствуйте!

Записался на ваш курс, но не понимаю как произвести оплату.

Надо ли писать заявление и, если да, то куда отправлять?

как я получу диплом о профессиональной переподготовке?

Ирина Мельник
Ирина Мельник

Здравствуйте, записалась на курс основы SQL, подскажите, стоимость курса.