Управление правами доступа к объектам базы данных

Управление курсорами

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

1) создание курсора;

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

2) открытие курсора;

Сразу после создания курсор не содержит никаких данных, также как переменная после объявления не содержит значения. Операция открытия курсора наполняет курсор данными.

3) выборка из курсора и изменение строк данных с помощью курсора;

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

4) закрытие курсора;

Когда все операции обработки данных завершены, и надобность в курсоре отпадает, его необходимо закрыть. При закрытии курсора сервер освобождает пространство в системной БД tempbd, выделенное курсором при его открытии.

5) освобождение курсора.

Операция удаляет курсор как объект.

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

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

1. Разрешение для объектов.

Работа с данными и выполнение хранимых процедур требует наличие класса доступа, называемого «разрешением для объектов». Разрешение для объектов контролирует возможность выполнения команд Select, Insert, Update и Delete для таблицы представлений. Действия с хранимыми процедурами контролируются разрешением либо запрещением их выполнения, т.е. предоставлением или запрещением команды EXECUTE.

2. Разрешение для команд Transact SQL.

Этот класс разрешений контролирует возможность создания объекта в БД, а также создание самой БД и выполнение процедур резервного копирования (Create view, create table и т.д.).

3. Неявное разрешение.

Этот класс разрешений контролирует действия, которые могут быть выполнены только членами ролей сервера или владельцами объектов в БД. Неявные разрешения не предоставляются пользователям напрямую, он получает их только при определенных обстоятельствах. Например, пользователь может стать владельцем объекта БД, только если он сам создаст этот объект, либо если другой владелец объекта передаст ему права владения своим объектом. Владелец объекта имеет все права для выполнения любых действий с объектом, при чем эти права нигде явно не указываются. Для конкретного действия, контролируемого разрешением, возможны три варианта состояния доступа: предоставления, запрещения, неявного отклонения. После создания пользователь не имеет никаких прав доступа кроме тех, которые разрешены для специальной роли БД Public.

В SQL-сервер существует возможность контролировать права доступа не только на уровне таблиц, но и на уровне колонок. Для предоставления прав доступа используется команда GRANT.

GRANT

{ALL/permissions [..n]}

{[(column [..n])] ON

{table/view}

| ON {table/view} [(column[..n])]

| ON {stored_procedure}

TO security_account

[WITH GRANT OPTION]

[AS {group/role}]

Для разрешения выполнения команд SQL используется следующая инструкция:

GRANT {ALL/Statement [..n]}

TO security_account [...n]