Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
21-30.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
174.08 Кб
Скачать

Привилегии sql: Второй уровень безопасности

Как уже отмечалось, в InterBase реализована двухуровневая модель безопасности. На первом уровне осуществляется аутентификация пользователя в момент подключения к базе данных, при этом используется база данных безопасности (более подробно см. предыдущий раздел). Второй уровень реализуется уже на уровне самой базы данных. Все привилегии по доступу к объектам базы данных хранятся в самой базе. Авторизованный пользователь не имеет никаких привилегий по доступу к данным, хранящимся в базе, пока какие-либо права не будут ему предоставлены явным образом. Контроль привилегий осуществляется на уровне таблиц. Каждому пользователю сопоставлен список операций, которые допускается произвести над данной таблицей или представлением. Этот список и составляет привилегии пользователя. Возможность использования хранимых процедур в InterBase регулируется отдельной привилегией. Право на доступ к любому объекту базы данных после его создания имеют только SYSDBA и владелец этого объекта. Владельцем объекта является пользователь создавший этот объект. SYSDBA или владелец объекта могут выдавать привилегии другим пользователям, в том числе и привилегии на право выдачи привилегий другим пользователям. Собственно сам процесс раздачи привилегий на уровне SQL реализуется двумя операторами: GRANT и REVOKE. Оператор GRANT выдает привилегии авторизованным пользователям на доступ к таблицам или представлениям, а оператор REVOKE, соответственно, изымает ранее выданные привилегии.

Для всех операций, связанных с управлением безопасностью, SYSDBA всегда имеет права назначать и отменять привилегии пользователям. SYSDBA - это суперпользователь, которому невозможно отменить доступ к какому-либо объекту базы данных. Соответственно, операторы GRANT и REVOKE не имеют смысла в отношении пользователя SYSDBA.

Оператор GRANT

Оператор GRANT предоставляет привилегии на объект или привилегии указанному пользователю. В таблице представлен список привилегий, которые могут быть выданы пользователю.

Привилегия

Пользователь получает возможность...

Insert

Добавлять новые строки в таблицу

Update

Изменять данные в таблице

Delete

Удалять строки из таблицы

Select

Извлекать содержимое таблицы

Execute

Выполнить хранимую процедуру ( в том числе и как select)

References

сервер может проверять внешние ссылки на другие таблицы

All

Делать все выше обозначенные, за исключением Execute

Существование пользователя, которому выдаются права, не проверяются при выполнении оператора grant. Помните, что пользователи существуют в isc4.gdb. Права же в базе данных могут быть выданы каким угодно, в том числе несуществующим (пока или по ошибке) пользователям.

Назначение привилегий пользователю PUBLIC

В SQL существует специальный пользователь PUBLIC, представляющий всех пользователей. Если какая-то операция разрешена пользователю PUBLIC, значит, любой аутентифицированный пользователь может выполнить эту операцию над указанным объектом. Следует с осторожностью выдавать какие-либо права пользователю PUBLIC, потому как не только существующие в данный момент, но и все заведенные в будущем пользователи будут обладать указанной привилегией.

Назначение привилегий на выполнение хранимых процедур

Для использования хранимых процедур, пользователь должен обладать привилегией на ее исполнение. Для выдачи, необходимой в данном случае, привилегии, существует особенная форма оператора GRANT.

Назначение привилегий для представлений.

В основном, процесс назначения привилегий для представлений соответствует аналогичному процессу для таблиц. Но, имеются некоторые особенности, которые хотелось бы отметить. Необходимо помнить, что представление это своего рода "виртуальная" таблица, представляющая собой запрос в базовую таблицу. Данные, извлекаемые по этому запросу, не хранятся в представлении. В самом представлении храниться только описание запроса, соответственно, любой запрос типа INSERT, UPDATE или DELETE предполагает модификацию базовой таблицы. Поэтому, привилегии типа INSERT, UPDATE или DELETE имеет смысл выдавать только для обновляемых представлений. Хотя и разрешается выдавать привилегии INSERT, UPDATE, или DELETE на представления только для чтения без каких-либо сообщений об ошибке, любая попытка изменения данных через такое представление успеха не достигнет. Привилегию SELECT для доступных только на чтение представлений можно использовать, например, с целью контроля доступа за тем, какие конкретно пользователи могут извлекать из него данные.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]