Реферат: СУБД INFORMIX
Таким образом, некоторым пользователям позволено видеть все столбцы.
В общих чертах синтаксическая запись правил безопасности доступа к данным выглядит следующим образом:
GRANT список_привилегий_через_запятую [(список_атрибутов через_запятую)]
ON выражение TO список_пользователей_через_запятую
Для менеджеров, которые должны вводить некоторые сведения о служащих, необходимо выполнить оператор типа:
GRANT SELECT, UPDATE, INSERT, DELETE (salary, hired) ON emp_data TO alex_v, nataly_d
Этот оператор позволяет получить доступ к данным о зарплате и дате приема на роботу служащих. Для некоторых пользователей из отдела кадров, которые должны составлять технические данные о сотрудниках, нужно выполнить оператор типа:
GRANT SELECT, UPDATE, INSERT, DELETE (emp_num,emp_name,id-code) ON emp_data TO nataly_d
Привилегии в системном каталоге
Привилегии регистрируются в таблицах системного каталога. Каждый пользователь, обладающий привилегией CONNECT, может запросить информацию из таблиц системного каталога, чтобы определить, какие и кому предоставлены привилегии.
Привилегии базы данных регистрируется в таблице sysusers, в который первичным ключом является идентификатор пользователя, а в другом столбце находится символ C (CONNECT), R (RESOURCE) или D (DBA), обозначающий уровень привилегий. Общедоступные привилегии отображены под именем пользователя public (в нижнем регистре).
Привилегии уровня таблицы находятся в таблице systabauth, в которой используется составной первичный ключ, включающий номер таблицы, идентификатор пользователя, предоставившего привилегии на таблицу и идентификатор пользователя, получившего их. В столбце tabauth привилегии закодированы в виде шестибуквенного списка следующим образом (дефис обозначает не предоставленную привилегию):
s – SELECT
u – UPDATE
- – * привилегия на столбцы
i – INSERT
d – DELETE
x – INDEX
a – ALTER
r – REFERENCES (обращение к заданной таблице в ограничениях целостности)
Таким образом, полный комплект привилегий выглядит какsu-idxar.
Например, набор -u------ говорит, что пользователь обладает только привилегией UPDATE.
Если в третьей позиции присутствует звездочка, то это означает, что для данной таблицы и пользователя существуют еще какие-то привилегии уровня столбца. Конкретные привилегии регистрируются в таблице syscolauth. Ее первичный ключ составлен из номера таблицы, идентификатора пользователя, предоставившего привилегии, получившего привилегии, и номера столбца. Единственный атрибут – двухбуквенный список, показывающий тип привилегии: s-, -u или su.
Привилегии и представления
При создании представления ядро БД проверяет привилегии пользователя на соответствующие таблицы и представления. При использовании же представлений проверяются только привилегии на само представление.
Привилегии при создании представления
При создании представления ядро БД проверяет наличие у пользователя всех привилегий, необходимых для выполнения оператора SELECT в определении представления. Если таких привилегий нет, представление не создается. Эта проверка не позволяет пользователю получить несанкционированный доступ к таблице путем создания представления для нее и обращения к представлению. После создания представления ядро БД предоставляет его создателю и владельцу, как минимум, привилегию SELECT для этого представления. Оно не становится автоматически общедоступным, как это происходит с таблицей. Ядро БД определяет определение представления и выясняет, является ли оно обновляемым. Если да, то создатель представления получает привилегии INSERT, DELETE и UPDATE для этого представления при наличии этих привилегий на порождающей таблице или представлении. Иными словами, если создаваемое представление является обновляемым, то ядро БД копирует привилегии INSERT, DELETE и UPDATE создателя представления и предоставляет их ему на новом представлении. Если для порождающей таблицы создатель представления располагает только привилегией INSERT, то он получит на представление только эту привилегию и т.д. Эта проверка не позволяет пользователям получить какие-либо привилегии кроме тех, которые у него уже есть.
Поскольку для представления нельзя выполнять операторы ALTER TABLE и CREATE INDEX, привилегии ALTER и INDEX никогда не распространяются на представления.
Привилегии при использовании представления