С.Д. Кузнецов - Основы баз данных (1121716), страница 87
Текст из файла (страница 87)
Почти всегда привилегии, связанные с этими идентификатором и именем, используются дяя определения допустимости выполнения различных операций во время данной сессии. В стандарте не специфицированы все способы ассоциирования ацсЫп с БЯЕ-сессией. Определено лишь то, что если сессия образуется ' Чтобы хотя бы немного облегчить чтение данною подрвзделв, забегая вперед, заметим, что понятия сессии и подключение относятся к сеансу работы клиентского прилохсения с некоторым сервером $91.-ориентироввнной базы данных. 417 Основы баз данных Курс с помошью оператора сонпеет (см.
раздел «Подключения и сессии»), то анГНТО уКаЗЫВаЕтСя В КаЧЕСтВЕ ПараМЕтра СООтВЕтСтВуЮщЕй ОПЕрацИИ. Для реализаций БОЬ допускается, чтобы пользовательский идентификатор Я,)Ь-сессии совпадал с регистрационным именем пользователя с точки зрения операционной системы или являлся идентификатором, специально устанавливаемым специалистами организации, ответственными за обеспечение безопасности. Кроме того, допускается наличие в реализации оператора Нет ееее1ОМ лнтное1елтгон, применение которого приводит к смене пользовательского идентификатора Я.)Ь-сессии.
В начале 5()Ь-сессии значение текущего иденти4икатора пользователя ЯЗ -сессии совпадает со значением пользовательского идентификатора Я)Ь-сессии, и такая ситуация сохраняется до тех пор, пока пользовательский идентификатор Я)Ь-сессии не будет каким-либо образом изменен. Значение текущего пользовательского идентификатора Б(ЗЬ- сессии возвращается вызовом ниладичеекой функции ЕЕЕЕТОМ цэее (лекция )3). Для каждой Я )Ь-сессии существует также текущее имя роли (это имя можно получить путем вызова функции Ог)ееемт НО).е). сразу после образования сессии текущему имени роли соответствует неопределенное значение, что трактуется как «роль для сессии не назначена». Имеется несколько способов подмены пользовательского идентификатора и/или имени роли Я)Ь-сессии.
При этом если задается идентификатор пользователя, то одновременно полагается, что неявно указывается имя роли, имеюшее неопределенное значение. Если же задается имя роли, то, за несколькими исключениями, считается, что неявно указывается идентификатор пользователя, имеюший неопределенное значение. Более подробно мы обсудим подобные возможности ниже в этом разделе. Если либо текущий идентификатор пользователя, либо текущее имя роли содержат неопределенное значение, то тот идентификатор или то имя, у которого значение не является неопределенным, используется в качестве текущего ангн1О Я)ь-сессии.
если ни текущий идентификатор, ни текущее имя не содержат МОЕЬ, то текуШим ане)з1О сессии служит текуший идентификатор пользователя. Как и везде в этом курсе, мы опустим детали, относящиеся к особенностям авторизации при использовании встраиваемого и динамического Я) . Создание и ликвидация ролей Для создания новой роли используется оператор СЕЕЛТЕ ЕОЕЕ, определяемый следующим синтаксическим правилом: СНЕЛТЕ ЕОЕЕ го1е паве Х1ТН йОМ1М ( ООЕЕЕМТ Г)ЕЕЕ ~ ООННЕНТ ЕОЕЕ ) 4! 8 Лекция ! 8 Авторизация доступа к данным, управление транзакциями и сессиями Имя создаваемой роли должно отличаться от любого идентификатора авторизации, уже определенного и сохраненного в базе данных. В случае успешного создания роли некоторый ацг)т1Р получает привилегию на исполнение данной роли.
Если в операторе сееАте еоье не содержится раздел у(1тн АРмтм, то привилегию на исполнение роли получает текущий идентификатор пользователя Я)(.-сессии, если значение этого идентификатора отлично от мцьь; иначе привилегия на исполнение роли дается текущему имени роли сессии. Если в состав оператора включается раздел нттн АРмтн, то можно выбрать, будетли являться владельцем роли ацс)т1Р, соответствуюший текущему идентификатору пользователя Я.)).-сессии, или ацс)т1Р, соответствующий текущему имени роли (при условии, что соответствующие текущий идентификатор или текущее имя не содержат нцьь). кроме того, включение этого раздела означает, что ацс)т1Р-Вяадеден Роли получает право на передачу привилегии исполнения данной роли другим ацс)т1Р.
В соответствии со стандартом Я.)141999, привилегии, требуемые для выполнения оператора СЕЕАтЕ ЕОье, определяются в реализациях Я.)т . Например, в некоторых реализациях выполнение этой операции разрешается только администратору базы данных. Существующую роль можно ликвидировать с помощью оператора РЕОР ЕОЬЕ го1е пате Для выполнения этой операции требуется, чтобы текущий ацс)т1Р Я0(.-сессии прямо или косвенно (через цепочку ролей) являлся владельцем ликвидируемой роли.
При ликвидации роли, прежде всего, изымается привилегия на ее исполнение у всех аттс)з1Р, которым данная привилегия была ранее передана. Передача привилегий и ролей Для передачи привилегий и ролей от одних ацг)т1Р друГИМ ПОддсрживается оператор сеАнт, который мы обсудим отдельно для случаев передачи привилегий и передачи ролей. Передача привилегий В случае передачи привилегий используется следующий синтаксис оператора СЕАНТ: СЕАНТ ( АЬЬ РЕ1ЧТЬЕСЕЯ ~ рг(у11еде соптяа1(зг ) ОН ргту11еде оЬ)есс 4!9 Основы баз данных Курс ТО [ РОВР|С [ анГЫР сошша1|яс ) [ Н1ТН ОВАМТ ОРТ10Н ОВАНТЕР ВУ [ СОВВЕНТ ОБЕВ [ СОВВЕНТ ВОРЕ ) ] рг)у11есе ::= БЕРЕСТ [ со1сшп паше сошша11яп РЕДЕЕТЕ 1НБЕВТ [ со1шпп паше сошша||яп ОРРАТЕ [ со1сшп паше сошша1|яг ВЕРЕВЕНСЕБ [ со1шпп паше сопппа1|яс 1)БАСЕ ТЕ|ОСЕВ ЕХЕСНТЕ рг|у|1есе оЬ|есс ::= [ ТАВРЕ ] ГаЫе паше РОМА1Н с)оша|п паше СНАВАСТЕВ БЕТ снагасгег яег паше 001ЛАТ10Н со11ас|оп паше ТВАЛБЬАТ10Н сгапя|аг оп паше Поскольку аисн|Р может являться идентификатором пользователя или именем роли, привилегии могут передаваться от пользователей пользователям, от пользователей ролям, от ролей ролям и от ролей пользователям.
В списке привилегий можно использовать БВРест, Реьете, 1нБВВт, ВРРАТЕ, ВЕРЕВЕНСЕБ и ТЕ|ОСЕВ только в том случае, когда в качестве объекта привилегий указывается таблица. Соответственно, список привилегий может состоять из единственной привилегии ОБАОЕ только в том случае, когда объектом является домен, набор символов, порядок сортировки или трансляция. Если в списке привилегий указывается более одной привилегии, то они все передаются указанным аосп|Р, НО ЛЛЯ этого тЕКущИй ацг)т|Р Я.)] -сессии должен обладать привилегией на передачу привилегий. Использование ключевого слова АРР РВ|у|ьеаеБ вместо явного задания списка привилегий означает, что передаются все привилегии доступа к соответствующему объекту базы данных, которыми обладает текущий апгН1Р Я[.)[.-сессии.
Как показывает синтаксис, один оператор ОВАНТ позволяет передавать привилегии доступа только к одному объекту, но в том случае, когда объектом является таблица, разные привилегии могут передаваться по отношению к одному н тому же набору столбцов или к разным наборам. Если при указании привилегий БЕ|,ЕСТ, Ре|,ете, ОРРАте и ВВРВВенсеБ список имен столбцов не задается, передаются привилегии по отношению ко всем столбцам таблицы.
Заметим, что зти привилегии касаются всех существующих столбов данной таблицы, а также всех столбцов, которые когда-либо будут к ней добавлены. Включение в оператор необязательного раздела н|тн ОВАнт ОРт|Он означает, что получателям передаваемых привилегий дается также приви- 420 Лекция 18 Явтсриэация доступа к данным, управление транзакциями и сессиями легия на дальнейшую передачу полученных привилегий, включая привилегию на передачу привилегий.
Включение в оператор раздела срултко ву позволяет явно указать, передаются ли привилегии от имени текущего идентификатора пользователя или же текущего имени роли. При проверке возможности выполнения операции в Я2).-сессии учитываются привилегии текушего ацгЫО Б(г) -сессии, а также привилегии всех ролей, которые переданы данному ацс1тто. Поскольку этим ролям могли быть переданы другие роли, обладающие собственными привилегиями, анализ возможности выполнения операции является рекурсивной процедурой. Если одна и та же привилегия передается более одного раза одному и тому же ацг1тто2 от имени одного и того же ацг1ттот, то возникает ситуация, называемая избыточной дубпирующей привилегией.
Эта ситуация не вызывает дополнительных проблем„поскольку избыточная передача привилегии игнорируется. Для аннулирования данной привилегии у ацГМО2 от имени ацГЫО2 требуется выполнение всего лишь одной операции аечокк (см. ниже в этом разделе). Если привилегия была один раз передана ацс1тто2 от имени ацг1ттот вместе с привилегией на передачу этой привилегии (угттн садит орттон), а в другой раз — без этой опции (порядок действий не является сушественным), то аргьто2 обладает данной привилегией и привилегией на ее передачу.