Разработка приложений баз данных для СУБД Sybase SQL Anywhere

       

Привилегии, применимые к таблицам данных


Название привилегииОписание привилегии

ALTERПозволяет модифицировать структуру таблиц данных и создавать для этой таблицы триггеры
DELETEРазрешает удалять записи из таблиц и представлений
INSERTОпределяет правомочность добавление новых записей в таблицы и представления
REFERENCESМожно создавать индексы таблицы и внешние ключи, которые ссылаются на таблицу. Привилегия может быть назначена как на все, так и на совокупность полей таблицы
SELECTПредоставляет возможность проведения выборки данных из таблиц и представлений, а также создания представлений. Привилегия может быть назначена как на все, так и на совокупность полей таблицы
UPDATEПозволяет производить модификацию записей таблиц и представлений. Эта привилегия может быть установлена как для всех полей таблицы, так и их некоторого подмножества. Привилегия может быть назначена как на все, так и на совокупность полей таблицы
ALLУстанавливает все привилегии по манипулированию таблицей

Для хранимых процедур и функций определена только одна привилегия - EXECUTE. Она предоставляет пользователю возможность запускать хранимые процедуры или функции.

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

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

Рассмотрим процедуру регистрации индивидуальных пользователей и групп пользователей на примере ранее созданной базы данных Dubl_Biblia. Произведем регистрацию администратора базы данных и пользователей - библиотекарей. В качестве администратора назначим пользователя Степанова Ю.Л., а библиотекарями - пользователей Петрову Ю.П., Иванову С.В., Сидорову О.К. и Попову И.Н. Назначим им следующие пользовательские имена: Stepanov, Petrova, Ivanova, Sidorova и Popova, соответственно.





    ПРИМЕЧАНИЕ
    Регистрацию как отдельных пользователей, так и групп пользователей может производить только пользователь с правами администратора базы данных.
    Сначала рассмотрим как эта процедура выполняется в утилите SQL Central. Для ее проведения необходимо произвести соединение с базой данных. Пока в базе данных Dubl_Biblia хранится информация только о пользователе DBA, имеющего пароль SQL. Под его именем и подключимся к базе данных.
    Зарегистрируем сначала администратора базы данных Dubl_Biblia - пользователя под именем Stepanov. Для этого раскройте папку Users & Groups (рис. 34). В результате в левой панели будут отображены имена всех зарегистрированных индивидуальных пользователей и названий групп пользователей.

    Рис.34. Содержимое раскрытой папки "User & Groups" в утилите SQL Central
    Как видно из рис. 34, в новой базе данных зарегистрирован только пользователь DBA и имеется две группы пользователей PUBLIC и dbo. Имя последней задается при создании базы данных (). Папка содержит Users & Groups также мастера Add user и Add Group. Первый из них предназначен для регистрации новых пользователей, а второй - для создания групп пользователей. Воспользуемся мастером Add user, щелкнув по его пиктограмме мышью. Действия, проводимые в нем, будем описывать по схеме (см. рис. ) в виде последовательности шагов, принятой при создании базы данных.
    Шаг 1. Начало регистрации нового пользователя базы данных (рис. 35).

    Рис.35. Начало регистрации нового пользователя базы данных
    Пояснение. Добро пожаловать в Мастер регистрации пользователей. Этот мастер позволяет вам осуществить регистрации нового пользователя базы данных.
    Вопрос 1. Под каким именем вы хотите зарегистрировать нового пользователя?
    Ниже следует поле, в которое следует ввести имя пользователя. В нашем случае это имя Stepanov.
    Вопрос 2. Какой пароль вы хотите присвоить новому пользователю?
    Текст пароля вводится в поле Passworsd. В поле Confirm необходимо подтвердить пароль. В рассматриваемом случае в качестве пароля используется символ s.
    Флажок User/Group is allowed to connect определяет право соединения регистрируемого пользователя с базой данных. В рассматриваемой версии SYBASE SQL Anywhere регистрация пользователей, не имеющих такого права, не имеет смысла. Этой флажок остался от предыдущих версий.
    После выполнения предлагаемых действий щелкните мышью по кнопке Далее для выполнения следующего шага.
    Шаг 2. Выбор класса полномочий (рис. 36).



    Рис.36. Выбор класса полномочий
    Вопрос. Какими классами полномочий, которыми будет обладать новый пользователь?
    Каждому классу полномочий соответствует одноименный флажок. По умолчанию для пользователя устанавливается флажок Remote DBA, соответствующий классу полномочий Remote DBA (см. ). В нашем случае для администратора базы данных Dubl_Biblia необходимо установить еще и флажок DBA, соответствующий классу полномочий DBA (см. ).
    Выбрав классы полномочий, переходим к следующему шагу.
    Шаг 3. Подтверждение регистрации нового пользователя (рис. 37).

    Рис.37. Подтверждение регистрации нового пользователя
    Пояснение. В используемой базе данных не зарегистрирован издатель. Вы можете зарегистрировать данного пользователя в качестве издателя или сделать это в любое другое время.
    Флажок User is the publisher позволяет зарегистрировать пользователя как издателя в процессе репликации данных. В большом поле в центре окна вы можете записать соответствующий комментарий.
    Все действия выполняемый в шагах 1- 3, являются подготовительными. Их цель состояла в формировании параметров для SQL-операторов, осуществляющих регистрацию пользователей. Для подтверждения правильности ранее введенных параметров нажмите кнопку Готово. После этого произойдет окончательное формирование соответствующих SQL-операторов, которые будут отправлены на сервер. В случае успешного их выполнения сервером, в базе данных будет зарегистрирован пользователь Stepanov. Таким образом в базе данных теперь имеется два пользователя с полномочиями администратора базы данных.
    Теперь в базе данных Dubl_Biblia имеется информация о ее администраторе - пользователе Stepanov. Для регистрации в качестве пользователей библиотекарей (пользователей Petrova, Ivanova, Sidorova и Popova) проведем аналогичные действия. В качестве пароля для каждого из библиотекарей будем использовать первую букву в имени пользователя. Единственное отличие состоит только в том, для библиотекарей не будет определено никаких классов полномочий. В результате этого в базе данных будет зарегистрировано еще 4 пользователя (см. рис. 38).



    Рис.38. Обновленный состав пользователей базы данных
    Для библиотекарей не был установлен класс полномочий DBA. По этой причине при их подключении в утилите SQL Central к базе данных Dubl_Biblia будет выдаваться предупреждение. Оно гласит от том, что пользователь не является администратором базы данных, в связи с чем доступ его к отдельным папкам утилиты будет ограничен.
    Регистрация пользователей в среде утилиты ISQL осуществляется выполнением SQL-операторов GRANT. Для того, чтобы зарегистрировать пользователя c именем Stepanov как администратора базы данных необходимо выполнить следующую последовательность SQL-операторов:
    /* Регистрация пользователя "Stepanov" с паролем "s", с предоставлением ему права соединения с базой данных */ GRANT CONNECT TO Stepanov IDENTIFIED BY s; /* Установление пользователю "Stepanov" класса полномочий DBA */ GRANT DBA TO Stepanov; /* Установление пользователю "Stepanov" класса полномочий Remote dba */ GRANT Remote DBA TO Stepanov; /*Определение комментария для пользователя "Stepanov"*/ COMMENT ON USER Stepanov IS 'Пользователь Stepanov является администратором базы данных Dubl_Biblia'
    Для регистрации библиотекарей в качестве пользователей требуется выполнить следующие SQL-операторы:
    /* Регистрация пользователей - библиотекарей с предоставлением им права соединения с базой данных */ GRANT CONNECT TO Petrova IDENTIFIED BY p; GRANT CONNECT TO Ivanova IDENTIFIED BY i; GRANT CONNECT TO Sidorova IDENTIFIED BY s; GRANT CONNECT TO Popova IDENTIFIED BY p; /*Определение комментария для пользователей - библитотекарей */ COMMENT ON USER Petrova IS 'Библиотекарь Петрова Ю.П. '; COMMENT ON USER Ivanova IS 'Библиотекарь Иванова С.В.'; COMMENT ON USER Sidorova IS 'Библиотекарь Сидорова О.К.'; COMMENT ON USER Popova IS 'Библиотекарь Попова И.Н.'
    Если вы не можете воспользоваться утилитой SQL Central, убедиться в том, регистрация пользователей была успешно осуществлена можно и в среде утилиты ISQL. Для этого следует считать информацию из системного представления SYS.SYSUSERLIST, что можно сделать путем выполнения следующего запроса:


    /* Получение информации о зарегист- рированных пользователях в ISQL */ SELECT * FROM SYS.SYSUSERLIST
    Пользователи базы данных могут быть объединены в группы. Необходимость создания групп обусловлена удобством управления привилегиями пользователей. Дело в том, что эта процедура, применяемая в отдельности к каждому из индивидуальных пользователей, является весьма утомительной. Особенно остро это ощущается при большом количестве пользователей и необходимости быстро изменить их права. Для решения этой задачи применяется объединение равноправных пользователей в группы. Точно также решаются данный вопрос и других системах, где защита от несанкционированного доступа имеет большое значение. Например, именно так обстоит дело в многопользовательских операционных системах, базах данных и вычислительных сетях. При этом на уровне группы легко меняются привилегии пользователей-членов групп. Такие пользователи имеют как индивидуальные, так и групповые привилегии. Индивидуальные привилегии устанавливаются для отдельных пользователей, а групповые - для групп пользователей. В отличие от привилегий, классы полномочий в SYBASE SQL Anywhere устанавливаются только индивидуально, для каждого пользователя в отдельности.
    Для удобства управления привилегиями пользователей в базе данных Dubl_Biblia, объединим всех библиотекарей в группу пользователей LIBRARIANS (библиотекари).
    Для образования новой группы пользователей в SQL Central необходимо использовать мастер Add Group (). Этот мастер выполняет ряд шагов, которые описаны ниже.
    Шаг 1. Начало создания новой группы пользователей базы данных (рис. 39).

    Рис.39. Начало создания новой группы пользователей базы данных
    Пояснение. Этот мастер позволяет вам создать новую группу пользователей базы данных.
    Вопрос 1. Под каким именем вы хотите создать новую группу пользователей?
    Ниже следует поле, предназначенное для задания наименования группы пользователей. Для библиотекарей мы создаем группу LIBRARIANS.
    Вопрос 2. Какой пароль вы хотите присвоить новой группе?
    В рассматриваемой версии при создании группы пользователей поля Passworsd и Confirm, а также флажок User/Group is allowed to connect не имеют никакого значения. Их значения не считываются .Эти элементы являются наследством предыдущих версий. По этой причине оставляет вышеуказанные поля не заполненными и снимаем флажок User/Group is allowed to connect.
    Шаг 2 и шаг 3 данного мастера точно такие же как и у мастера Add user. (см. рис. , ). Кроме комментария в шаге 3, остальные данные на этих шагах не имеют смысла. В связи с этим в шаге 2 сразу "нажмем" на копку Далее. Наличие данных бессмысленных шагов объясняется наследственностью предыдущих версий.
    После завершения работы с мастером Add Group в базе данных появляется еще одна группа пользователей - группа LIBRARIANS. При этом в папку Users & Groups () будет добавлена пиктограмма группы пользователей - LIBRARIANS.
    Для того, чтобы создать такую группу пользователей в утилите ISQL требуется выполнить следующие SQL-операторы:


    /* Регистрация нового пользователя LIBRARIANS без определения пароля /* GRANT CONNECT TO LIBRARIANS; /* Установка класса полномочий Remote DBA, т. к. в шаге 2 сразу перешли к следующему шагу */ GRANT Remote DBA to LIBRARIANS; /* Предоставление пользователю возможности иметь подчиненных пользователей*/ GRANT GROUP TO LIBRARIANS; COMMENT ON USER LIBRARIANS IS 'Группа библиотекарей'
    Для того, чтобы удостовериться в утилите ISQL в том, что группа LIBRARIANS была создана и она пока не объединяет ни одного пользователя необходимо считать информацию из системных представлений SYS.SYSUSERLIST и SYS.SYSGROUPS.
    Как видно из вышерассмотренных SQL-операторов, группы пользователей фиксируются в базе данных таким же образом как и индивидуальные пользователи. Однако отсутствие пароля не дает возможность осуществить соединение с использованием в качестве имени пользователя наименования группы.
    Только что созданная группа LIBRARIANS не объединяет пока ни одного пользователя. Включим в ее состав зарегистрированных библиотекарей.
    В SQL Central для выполнения этой задачи следует выделить пиктограмму пользователя, включаемого в группу, и удерживая левую кнопку мыши перетащить ее к пиктограмме группы. Объединим таким образом всех библиотекарей в группу LIBRARIANS. После этого щелкнем мышью по пиктограмме LIBRARIANS. Тогда в правой панели утилиты будет показан состав группы пользователей LIBRARIANS (рис. 40). При этом в левой для дальнейших рассуждений раскрыта вся иерархия групп пользователей.

    Рис.40. Состав группы пользователей LIBRARIANS
    В утилите ISQL такого же эффекта позволяет достичь выполнение ниже приведенных SQL-операторов:
    /*Включение пользователей - билиотекарей в группу LIBRARIANS */ GRANT MEMBERSHIP IN GROUP LIBRARIANS TO Ivanova; GRANT MEMBERSHIP IN GROUP LIBRARIANS TO Petrova; GRANT MEMBERSHIP IN GROUP LIBRARIANS TO Popova; GRANT MEMBERSHIP IN GROUP LIBRARIANS TO Sidorova
    Проверить результаты включения библиотекарей в группу LIBRARIANS в среде ISQL можно, обратившись к системному представлению SYS.SYSGROUPS.
    Теперь привилегии, устанавливаемые для группы LIBRARIANS, автоматически распространяются на всех пользователей - библиотекарей, входящих в группу.
    Любой отдельный пользователь, также как и группа пользователей, может входить в состав нескольких групп. В свою очередь каждая группа может включать в качестве своих членов несколько пользователей и групп. Члены группы наследуют привилегии, установленные во всех группах, в которые они входят.
    При создании базы данных в ней автоматически создаются три пользовательские группы: SYS, dbo и PUBLIC. О них коротко упоминалось при рассмотрении утилиты ISQL () и при обсуждении создания базы данных (). Группа SYS выступает как владелец всех системных таблиц и представлений. (Следует напомнить, что владельцами объектов являются пользователи их создавшие.) Группа dbo введена в состав баз данных СУБД SQL Anewhere для обеспечения совместимости с базами данных СУБД SYBASE SQL Server. Эта группа является владельцем представлений, созданных на основе системных таблиц и представлений. Представления группы dbo имеют такие же названия, содержат те же поля и хранят такую же информацию, что и одноименные системные таблицы и представления СУБД SYBASE SQL Server. В объектах, владельцами которых являются группы SYS и dbo, хранится вся служебная информация о базе данных.
    В пользовательскую группу PUBLIC входят все регистрируемые в базе данных отдельные пользователи и группы пользователи. Пользователи включаемые затем в другие группы тем не менее остаются членами группы PUBLIC. В этой группе установлена привилегия SELECT () для некоторых системных таблиц и всех системных представлений. Поэтому любой пользователь имеет возможность считать некоторую информацию о базе данных.
    В базах данных СУБД SQL Anywhere информация о вхождении отдельных пользователей и групп пользователей в состав других групп хранится в системном представлении SYS.SYSGROUP. На основании информации из этого представления составлена схема взаимосвязей групп пользователей для базы данных Dubl_Biblia (рис. 41).

    Рис.41. Схема взаимосвязей групп пользователей базы данных Dubl_Biblia
    Из рис. 41 видно, что пользователь DBA имет привилегии, определенные в группах SYS, dbo и PUBLIC. На пользователей Ivanova, Petrova, Popova и Sidorova распространяются привилегии, установленные в группах SYS, dbo , PUBLIC и LIBRARIANS.

    Содержание раздела