5.2. Регистрация пользователей
Каждый пользователь, который намеревается манипулировать с соответствующей базой данных, должен пройти процедуру регистрации. Это связано с обеспечением защиты от несанкционированного доступа. Так как этот вопрос играет важную роль в технологии клиент/сервер, именно с него начнем рассмотрение вопроса создания объектов в базах данных.
Регистрация пользователей позволяет установить для каждого из них индивидуальные привилегии по манипулированию с объектами базы данных. Разработчики SYBASE SQL Anywhere рекомендуют регистрировать каждого пользователя. Накладные расходы, связанные с администрирование небольшие и кроме того, это создает дополнительные возможности по контроля за работой баз данных. Это проявляется в том, что:
- утилита DBTRAN (см. табл. 5 - 6), позволяет извлечь из журнала изменений базы данных все SQL-операторы, выполненные конкретным пользователем. Это позволяет проанализировать, ранее произведенные им действия при возникновении каких-либо трудностей или при появлении некоторых вопросов;
- в окне Connection сервера баз данных (см. рис. 4) фиксируются все пользователи, работающие с базами данных, управляемые сервером. Это информация может оказаться весьма полезной при анализе текущего состояния сервера или конкретной базы данных;
- информация о всех соединения с базами данных, осуществленных в среде утилиты SQL Central, содержится в папке Connected Users (см. рис. 18). Это дает отдельному пользователю иметь некоторое представление о "текущем моменте" функционирования СУБД.
В процессе проведения регистрации конкретному пользователю присваивается уникальное имя пользователя, которому ставится в соответствие секретное слово - пароль. При этом также устанавливаются классы полномочий, которыми будет обладать данный пользователь. СУБД SYBASE SQL Anywhere поддерживает три класса полномочий:
- DBA - класс полномочий администратора базы данных. Пользователи имеющий такой класс полномочий пользуется правами администратора базы данных, т. е. они могут производить все манипуляции в базе данных без каких-либо ограничений. В одной базе данных несколько пользователей могут иметь класс полномочий DBA;
- Resource - класс полномочий, имеющих право создавать такие объекты баз данных, как таблицы данных, представления, хранимые процедуры и функции, а также триггеры;
- Remote DBA - класс полномочий, имеющих право участвовать в репликации данных.
Рассмотрим технологию регистрации индивидуальных пользователей и групп пользователей.
Кроме класса полномочий, пользователи имеют еще и привилегии по манипулированию объектами баз данных. Для пользователя могут быть не определен ни один из классов полномочий, но привилегиями (индивидуальными или групповыми) должен обладать любой пользователь. В противном случае его регистрации в базе данных лишена всякого смыла, т. к. он тогда ничего не сможет сделать.
Пользователь, создавший какой-либо объект базы данных, является его полномочным владельцем. Он имеет неограниченные привилегии по манипулированию своими объектами. Владелец может удалить объект, предоставить доступ к нему другим пользователям и т.д.
ПРИМЕЧАНИЕ
В СУБД SYBASE SQL Anywhere привилегии по манипулированию объектами могут предоставляться пользователями - владельцами объектов и пользователями с классом полномочий DBA. Классы полномочий предоставляются только пользователями с правами администратора базы данных.
В СУБД SYBASE SQL Anywhere реализованы привилегии для таблиц данных, представлений и для хранимых процедур и функций. Привилегии таблиц представлены в (табл. 7).
Таблица 7. Привилегии, применимые к таблицам данных
Название привилегии | Описание привилегии |
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. Имя последней задается при создании базы данных (см. рис. 29). Папка содержит Users & Groups также мастера Add user и Add Group. Первый из них предназначен для регистрации новых пользователей, а второй - для создания групп пользователей. Воспользуемся мастером Add user, щелкнув по его пиктограмме мышью. Действия, проводимые в нем, будем описывать по схеме (см. рис. 26 - 33) в виде последовательности шагов, принятой при создании базы данных.
Шаг 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 (см. п. 5.2). В нашем случае для администратора базы данных Dubl_Biblia необходимо установить еще и флажок DBA, соответствующий классу полномочий DBA (см. п. 5.2).
Выбрав классы полномочий, переходим к следующему шагу.
Шаг 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 (см. рис. 38). Этот мастер выполняет ряд шагов, которые описаны ниже.
Шаг 1. Начало создания новой группы пользователей базы данных (рис. 39).
Рис.39. Начало создания новой группы пользователей базы данных
Пояснение. Этот мастер позволяет вам создать новую группу пользователей базы данных.
Вопрос 1. Под каким именем вы хотите создать новую группу пользователей?
Ниже следует поле, предназначенное для задания наименования группы пользователей. Для библиотекарей мы создаем группу LIBRARIANS.
Вопрос 2. Какой пароль вы хотите присвоить новой группе?
В рассматриваемой версии при создании группы пользователей поля Passworsd и Confirm, а также флажок User/Group is allowed to connect не имеют никакого значения. Их значения не считываются .Эти элементы являются наследством предыдущих версий. По этой причине оставляет вышеуказанные поля не заполненными и снимаем флажок User/Group is allowed to connect.
Шаг 2 и шаг 3 данного мастера точно такие же как и у мастера Add user. (см. рис. 36, 37). Кроме комментария в шаге 3, остальные данные на этих шагах не имеют смысла. В связи с этим в шаге 2 сразу "нажмем" на копку Далее. Наличие данных бессмысленных шагов объясняется наследственностью предыдущих версий.
После завершения работы с мастером Add Group в базе данных появляется еще одна группа пользователей - группа LIBRARIANS. При этом в папку Users & Groups (см. рис. 38) будет добавлена пиктограмма группы пользователей - 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 (см. рис. 22) и при обсуждении создания базы данных (см. рис. 34). Группа SYS выступает как владелец всех системных таблиц и представлений. (Следует напомнить, что владельцами объектов являются пользователи их создавшие.) Группа dbo введена в состав баз данных СУБД SQL Anewhere для обеспечения совместимости с базами данных СУБД SYBASE SQL Server. Эта группа является владельцем представлений, созданных на основе системных таблиц и представлений. Представления группы dbo имеют такие же названия, содержат те же поля и хранят такую же информацию, что и одноименные системные таблицы и представления СУБД SYBASE SQL Server. В объектах, владельцами которых являются группы SYS и dbo, хранится вся служебная информация о базе данных.
В пользовательскую группу PUBLIC входят все регистрируемые в базе данных отдельные пользователи и группы пользователи. Пользователи включаемые затем в другие группы тем не менее остаются членами группы PUBLIC. В этой группе установлена привилегия SELECT (см. табл. 7) для некоторых системных таблиц и всех системных представлений. Поэтому любой пользователь имеет возможность считать некоторую информацию о базе данных.
В базах данных СУБД SQL Anywhere информация о вхождении отдельных пользователей и групп пользователей в состав других групп хранится в системном представлении SYS.SYSGROUP. На основании информации из этого представления составлена схема взаимосвязей групп пользователей для базы данных Dubl_Biblia (рис. 41).
Рис.41. Схема взаимосвязей групп пользователей базы данных Dubl_Biblia
Из рис. 41 видно, что пользователь DBA имет привилегии, определенные в группах SYS, dbo и PUBLIC. На пользователей Ivanova, Petrova, Popova и Sidorova распространяются привилегии, установленные в группах SYS, dbo , PUBLIC и LIBRARIANS.
Назад |
Содержание |
Вперед