27_SH43-0144-00 (1038594), страница 57
Текст из файла (страница 57)
5 приведен список привилегий базы данных.Рисунок 5. Привилегии базы данныхПривилегии базы данных касаются действий на базе данных в целом:v CONNECT дает пользователю доступ к базе данныхv BINDADD позволяет пользователю создавать новые пакеты в базе данныхГлава 5. Управление доступом к базам данных255v CREATETAB позволяет пользователю создавать новые таблицы в базеданныхv CREATE_NOT_FENCED позволяет пользователю создавать пользовательскиефункции и “неизолированные” процедуры. Пользовательские функции и“неизолированные” процедуры нужно крайне тщательно тестировать,поскольку менеджер баз данных не защищает свою память и управляющиеблоки от этих пользовательских функций и процедур. (Поэтому плохонаписанные и плохо протестированные пользовательские функции ипроцедуры, которым разрешили работать в “неизолированном режиме”,могут создать серьезные проблемы для вашей системы.) (Дополнительнуюинформацию можно найти в справочниках Application Development Guide иSQL Reference.)v Привилегия IMPLICIT_SCHEMA позволяет любому пользователю неявносоздать схему, создав оператором CREATE объект с именем еще несуществующей схемы.
Владельцем неявно созданной схемы становитсяSYSIBM, а привилегию создавать объекты в этой схеме получает группаPUBLIC (то есть все пользователи).v Привилегия LOAD позволяет пользователю загрузить данные в таблицу.|Только пользователи с полномочиями SYSADM или DBADM могутпредоставлять эти привилегии другим пользователям и отзывать их.Примечание: При создании базы данных следующие привилегии автоматическипредоставляются группе PUBLIC (то есть всем):v CREATETABv BINDADDv CONNECTv IMPLICIT_SCHEMAv привилегия USE для табличного пространства USERSPACE1v привилегия SELECT для производных таблиц системногокаталога.|Чтобы удалить любую привилегию, пользователь DBADM или SYSADMдолжен явно отозвать ее у группы PUBLIC.Особенности полномочий неявного задания схемы(IMPLICIT_SCHEMA)Когда создается новая база данных или перенастраивается база данныхпредыдущего выпуска, полномочия IMPLICIT_SCHEMA для этой базы данныхпредоставляются группе PUBLIC.
С этими полномочиями любой пользовательможет создать схему, создав объект и задав имя еще не существующей схемы.Владельцем неявно созданной схемы становится SYSIBM, а привилегиюсоздавать объекты в этой схеме получает группа PUBLIC (то есть всепользователи).256Руководство администратора: РеализацияЕсли нужно управлять правами создавать объекты схем для этой базы данных,следует отозвать у группы PUBLIC полномочия IMPLICIT_SCHEMA для базыданных. После этого останется только три (3) возможности создать объектсхемы:v Любой пользователь может создать схему, задав собственное имяавторизации в операторе CREATE SCHEMA.v Любой пользователь с полномочиями DBADM может явно создать любуюсхему, если она еще не существует, и может при желании сделать владельцемсхемы другого пользователя.v Любой пользователь с полномочиями DBADM имеет полномочияIMPLICIT_SCHEMA для базы данных (независимо от группы PUBLIC) и,следовательно, может неявно создать схему с любым именем во времясоздания других объектов баз данных.
Владельцем неявно созданной схемыстановится SYSIBM, а привилегию создавать объекты в этой схеме получаетгруппа PUBLIC (то есть все пользователи).Пользователь всегда может явно создавать собственные схемы, используя своесобственное имя авторизации.Привилегии схемПривилегии схем относятся к категории привилегий объектов. Привилегииобъектов перечислены на рис. 6 на стр. 258.Глава 5. Управление доступом к базам данных257||||Рисунок 6. Привилегии объектовПривилегии схем касаются действий для схем в базе данных.
Пользовательможет быть наделен следующими привилегиями:v CREATEIN позволяет пользователю создавать объекты в пределах схемы.v ALTERIN позволяет пользователю изменять объекты в пределах схемы.v DROPIN позволяет пользователю отбрасывать объекты из схемы.Владелец схемы имеет все эти привилегии и может передавать их другим.Объекты, доступные в пределах объекта схемы - это таблицы, производныетаблицы, индексы, пакеты, типы данных, функции, триггеры, процедуры иалиасы.Привилегии табличных пространств|||Привилегии табличных пространств затрагивают действия для табличныхпространств в базе данных.
Пользователю может быть предоставлена258Руководство администратора: Реализация||привилегия USE для табличного пространства, после чего он сможет создаватьтаблицы в пределах табличного пространства.|||||Владелец табличного пространства - в типичном случае создатель сполномочиями SYSADM или SYSCTRL - имеет привилегию USE и можетпередавать эту привилегию другим. По умолчанию в момент создания базыданных привилегия USE для табличного пространства USERSPACE1предоставляется группе PUBLIC, но эту привилегию можно отозвать.||Нельзя использовать привилегию USE для SYSCATSPACE и любых временныхсистемных табличных пространств.Привилегии таблиц и производных таблицПривилегии таблиц и производных таблиц касаются действий для таблиц илипроизводных таблиц в базе данных.
Пользователю нужна привилегияCONNECT для базы данных, чтобы использовать какие-либо из следующихпривилегий:v Привилегия CONTROL предоставляет пользователю все привилегии длятаблицы или производной таблицы, включая возможность отброситьтаблицу, а также давать и отзывать отдельные привилегии таблицы. Чтобыпредоставить привилегию CONTROL, нужно иметь полномочия SYSADM илиDBADM. Создатель таблицы автоматически получает привилегию CONTROLдля этой таблицы. Создатель производной таблицы автоматически получаетпривилегию CONTROL, только если у него есть привилегия CONTROL длявсех таблиц и производных таблиц, на которые есть ссылки в определенииэтой производной таблицы, или же полномочия SYSADM или DBADM.v Привилегия ALTER позволяет пользователю добавлять к таблице столбцы,добавлять и изменять комментарии таблицы и ее столбцов, добавитьпервичный ключ или ограничение уникальности и создать или отброситьпроверочное ограничение таблицы.
Пользователь также может создавать втаблице триггеры, хотя для этого потребуются дополнительные полномочиядля всех объектов, упоминаемых в триггере (в частности, полномочияSELECT для таблицы, если в триггере есть ссылки на какие-либо столбцытаблицы). Пользователь с привилегией ALTER для всех дочерних таблицможет отбросить первичный ключ; пользователь с привилегией ALTER длятаблицы и привилегией REFERENCES для родительской таблицы илипривилегией REFERENCES для соответствующих столбцов может создатьили отбросить внешний ключ.
Пользователь с привилегией ALTER можеттакже добавлять комментарии к таблице с помощью COMMENT ON.v Привилегия DELETE позволяет пользователю удалять строки из таблицы илипроизводной таблицы.v Привилегия INDEX позволяет пользователю создать индекс для таблицы.Создатель индекса автоматически получает привилегию CONTROL для этогоиндекса. Дополнительную информацию смотрите в разделе “Привилегиииндексов” на стр. 264.Глава 5. Управление доступом к базам данных259v Привилегия INSERT позволяет пользователю вставить запись в таблицу илипроизводную таблицу и запустить утилиту IMPORT.v Привилегия REFERENCES позволяет пользователю создать и отброситьвнешний ключ, задав родительский статус таблицы по отношению к другимтаблицам. Пользователь может обладать этой привилегией и для конкретныхстолбцов.v Привилегия SELECT позволяет пользователю получить строку из таблицыили производной таблицы, создать для таблицы производную таблицу изапустить утилиту EXPORT.v Привилегия UPDATE позволяет пользователю изменить запись в таблице,производной таблице или в одном или нескольких конкретных столбцахтаблицы или производной таблицы.
Пользователь может обладать этойпривилегией и для конкретных столбцов.Привилегию предоставлять эти привилегии другим можно дать с помощьюопции WITH GRANT OPTION оператора GRANT.Примечание: Когда пользователю или группе предоставляется привилегияCONTROL для таблицы, все остальные привилегии для этойтаблицы автоматически предоставляются с опцией WITH GRANTOPTION. Если затем привилегия пользователя CONTROL длятаблицы отзывается, у пользователя сохраняются остальныепривилегии, которые были предоставлены автоматически. Чтобыотозвать все привилегии, предоставленные с привилегиейCONTROL, нужно либо явно отозвать каждую отдельнуюпривилегию, либо задать ключевое слово ALL в оператореREVOKE, например:REVOKE ALLON EMPLOYEE FROM USER HERONДля типизированных таблиц у привилегий таблиц и производных таблиц естьсвои особенности.Примечание: Привилегии могут предоставляться независимо на каждом уровнеиерархии таблиц.
В результате пользователь, которомупредоставили привилегию для надтаблицы в иерархиитипизированных таблиц, может также неявно действовать на всеподтаблицы. Однако непосредственно работать с подтаблицейпользователь сможет, только если у него есть необходимаяпривилегия для этой подтаблицы.Отношение надтаблица/подтаблица между таблицами иерархии таблицозначает, что такие операции, как SELECT, UPDATE и DELETE затронут строкитаблицы назначения операции и все ее подтаблицы (если такие есть).
Такое260Руководство администратора: Реализацияповедение можно назвать “подстановочным”. Например, предположим, что высоздали таблицу сотрудников Employee типа Employee_t с подтаблицейначальников Manager типа Manager_t. Начальник - это особый вид сотрудника,что задается отношением тип/подтип между структурированными типамиEmployee_t и Manager_t и в соответствующем отношении таблица/подтаблицамежду таблицами Employee и Manager. Вследствие этого отношения запрос SQL:SELECT * FROM Employeeвернет идентификатор объекта и атрибуты Employee_t и для обычныхсотрудников, и для начальников. Аналогичным образом, операция update:UPDATE Employee SET Salary = Salary + 1000прибавит оклад на тысячу и обычным сотрудникам, и начальникам.Пользователь с привилегией SELECT для Employee сможет выполнить даннуюоперацию SELECT, даже если у него нет явной привилегии SELECT для Manager.Однако такому пользователю не будет позволено выполнить операцию SELECTнепосредственно на подтаблице Manager и, следовательно, не будетпредоставлен доступ к собственным (то есть не унаследованным) столбцамтаблицы Manager.Аналогичным образом, пользователь с привилегией UPDATE для Employeeсможет выполнить операцию UPDATE для Employee, затронув и рядовыхсотрудников, и начальников, даже если у него нет явной привилегии UPDATEдля таблицы Manager.