Предоставление прав на предоставление привилегий
Предоставление прав на предоставление привилегий
Вначале только владелец таблицы или просмотра или пользователь SYSDBA могут предоставлять полномочия к этому объекту другим пользователям. Добавьте WITH GRANT OPTION в конец оператора GRANT для передачи пользователю права предоставлять привилегии вместе с самими привилегиями.
Следующий оператор назначает полномочия SELECT пользователю HPOTTER и дает право HPOTTER предоставлять полномочия SELECT другим:
GRANT SELECT ON DEPARTMENT TO HPOTTER WITH GRANT OPTION;
WITH GRANT OPTION не может назначаться триггерам или процедурам.
Права WITH GRANT OPTION являются кумулятивными, даже если передаются различными пользователями. Например, HPOTTER может получить право предоставлять права SELECT к таблице DEPARTMENT от одного пользователя и INSERT К DEPARTMENT от другого.
В следующем примере HPOTTER имеет доступ SELECT К таблице DEPARTMENT с правом передавать полномочия, HPOTTER может предоставлять полномочия SELECT другим пользователям. Предположим, HPOTTER теперь также получает полномочия INSERT к этой же таблице, но без права предоставлять эти полномочия:
GRANT INSERT ON DEPARTMENT TO HPOTTER;
Пользователь HPOTTER может выбирать данные и добавлять данные в таблицу DEPARTMENT. Он может предоставлять полномочия SELECT к таблице DEPARTMENT, но не может назначать полномочия INSERT, потому что он не имеет права предоставлять эту привилегию.
Существующие привилегии пользователя могут быть расширены включением права предоставлять привилегии. Для этого нужно выдать второй оператор GRANT для той же привилегии, который будет включать предложение WITH GRANT OPTION.
Для предоставления пользователю HPOTTER права предоставлять полномочия INSERT К таблице DEPARTMENT просто выполните новый оператор:
GRANT INSERT ON DEPARTMENT TO HPOTTER WITH GRANT OPTION;
Подводя итог, скажем, что пользователь может предоставлять привилегии доступа (SELECT, INSERT, UPDATE, DELETE и REFERENCES) К объекту другим пользователям или объектам, если пользователь:
* владеет этим объектом;
* получил такую привилегию к этому объекту вместе с WITH GRANT OPTION;
* получил эту привилегию путем предоставления ему роли, содержащей привилегию вместе с WITH ADMIN OPTION.
SQL допускает операторы GRANT, которые предоставляют пользователю дубликаты полномочий.
Неожиданные эффекты
SQL позволяет.одному и тому же получателю прав получать одни и те же полномочия из различных источников, даже если предоставляемые права уже есть у получателя. Каждый раз, когда один пользователь расширяет у другого пользователя права передавать полномочия, он открывает еще один источник, из которого любой пользователь может получить полномочия. Структура полномочий потенциально может стать пресловутым "птичьим гнездом", из которого очень трудно вытащить фактическое состояние полномочий индивидуального пользователя или объекта.
Предположим, у нас есть два пользователя, SERENA и HPOTTER, с соответствующими привилегиями и правами предоставлять другим полномочия. Оба выдали следующий оператор:
GRAN TINSERT
ON DEPARTMENT
TO BRUNHILDE
WITH GRANT OPTION;
Позднее SERENA отменяет привилегию и право предоставлять полномочия у BRUNHILDE:
REVOKE INSERT
ON DEPARTMENT
FROM BRUNHILDE;
SERENA считает, что BRUNHILDE больше не имеет полномочий INSERT и не может предоставлять другим права к таблице DEPARTMENT. Однако выполненный оператор REVOKE не имеет эффекта, поскольку BRUNHILDE все еще имеет полномочия INSERT и право предоставлять привилегии, полученные от HPOTTER.
Так как количество пользователей с привилегиями и возможностью предоставлять другим права растет, вероятно, что различные пользователи могут предоставлять одни и те же привилегии и возможность предоставлять другим права одному пользователю. Довольно просто, как и ядерное деление, это может выйти из-под контроля. Отмена какого-либо полномочия может оказаться большой работой. Отмена всех (или многих) полномочий у одного конкретного пользователя может оказаться астрономически сложной проблемой.
Если у пользователя была возможность получать права от различных пользователей, существует два возможных решения, оба не очень приятных.
* Найдите каждое право, предоставленное этому пользователю, вместе с тем, кто предоставлял это право, и заставьте всех отменить каждое предоставленное право. Это станет весьма запутанным, если использовались варианты ALL и PUBLIC, потому что отмена более целенаправленного права не отменяет прав, предоставленных через ALL, PUBLIC, роли или группы.
* Владелец каждой таблицы и объекта (или SYSDBA) выполняет операторы REVOKE, действующие на всех пользователей этой таблицы, а затем выдает операторы GRANT для установления привилегий только тем пользователям, кому нужно сохранить свои права.
Сервер не выдает никаких сообщений для команд REVOKE, независимо от того, была ли она успешна или ошибочна. Это будет тот самый момент вашей первой, неприятности, связанной с полномочиями SQL, когда вы возденете глаза к небесам и начнете размышлять о реальном назначении комитетов по стандартам на этой Земле. Хорошо спроектированная графическая утилита управления правами может сохранить вам рассудок. К счастью, многие программы администрирования осуществляют такую поддержку. Доступно множество инструментов управления полномочиями. (См. приложение 12.)
Более подробную информацию об отмене полномочий см. в следующем разделе.
! ! !
СОВЕТ. Хотя определение пользователей, ролей и назначение привилегий часто откладывается до момента, когда система готова к поставке пользователям, тем не менее создание схемы привилегий и соотнесение ее со списком пользователей нужно запланировать при проектировании системы. Поддержка диаграммы такой схемы является весьма полезным делом как при проектировании и тестировании системы, так и при ее документировании.
. ! .
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Настройка прав доступа к файлам и ограничение прав пользователей
Настройка прав доступа к файлам и ограничение прав пользователей В процессе работы на компьютере часто возникает необходимость защитить те или иные свои данные от неквалифицированного и несанкционированного просмотра и редактирования. Эта задача обычно возникает при
36. Предпочитайте предоставление абстрактных интерфейсов
36. Предпочитайте предоставление абстрактных интерфейсов РезюмеВы любите абстракционизм? Абстрактные интерфейсы помогают вам сосредоточиться на проблемах правильного абстрагирования, не вдаваясь в детали реализации или управления состояниями. Предпочтительно
5.2. Система привилегий доступа
5.2. Система привилегий доступа Данный раздел посвящается второму этапу контроля доступа пользователей – проверке привилегий доступа при выполнении каждой операции в базе данных.Вы узнаете, какие привилегии предусмотрены в MySQL и как предоставить их пользователям.Общие
5.1. Сохраненные подпрограммы и таблицы предоставления привилегий
5.1. Сохраненные подпрограммы и таблицы предоставления привилегий Сохраненные подпрограммы требуют таблицы proc в базе данных mysql. Эта таблица создана в течение процедуры установки MySQL 5.0. Если Вы наращиваете вычислительные возможности до MySQL 5.0 из более ранней версии,
1.10. Предоставление возможностей совместного использования информации с применением UIActivityViewController
1.10. Предоставление возможностей совместного использования информации с применением UIActivityViewController Постановка задачи Внутри вашего приложения вы хотите предоставить пользователям возможность обмениваться контентом с их друзьями. Для этого предполагается использовать
1.11. Предоставление специальных возможностей совместного использования данных с применением UIActivityViewController
1.11. Предоставление специальных возможностей совместного использования данных с применением UIActivityViewController Постановка задачи Вы хотите включить вашу программу в список тех приложений, которые способны обеспечивать в iOS совместную работу с данными и отображать эту
Упаковка привилегий
Упаковка привилегий SQL Firebird реализует возможности упаковки множества привилегий для назначения индивидуальным получателям, спискам или специально сгруппированным пользователям. Это пакет ALL, разделенные запятыми списки и роли SQL.Ключевое слово ALLКлючевое слово ALL
Ограничения привилегий
Ограничения привилегий Привилегии SELECT, INSERT, UPDATE и DELETE применимы только к объектам, являющимся таблицами или просмотрами, REFERENCES применяется только к таблицам - точнее к тем, на которые ссылаются внешние ключи.В случае просмотров пользователь должен иметь привилегии к
Предоставление привилегий
Предоставление привилегий Привилегии доступа могут быть предоставлены к целой таблице или просмотру. Можно также ограничить привилегии UPDATE и REFERENCES указанными столбцами.Оператор GRANT используется для предоставления пользователю, роли или хранимой процедуре конкретной
Множество привилегий и множество получателей привилегий
Множество привилегий и множество получателей привилегий Есть возможность предоставлять несколько привилегий в одном операторе и предоставлять одну или более привилегий множеству пользователей или объектов.Множество привилегийДля предоставления получателю
Назначение привилегий роли
Назначение привилегий роли Для "загрузки" роли привилегиями просто предоставьте ей требуемые привилегии, как если бы роль была обычным пользователем:GRANT <привилегии> ТО
Предоставление роли пользователям
Предоставление роли пользователям В операторе GRANT для предоставления роли пользователям опускается предложение ON- здесь неявно используются полномочия, "загруженные" в роль.GRANT <имя-роли> [, <имя-роли> [, ...]]TO [DSER] <имя-пользователя> [, [OSER] <имя-пользователя> [, ...]]
Отмена привилегий у нескольких пользователей
Отмена привилегий у нескольких пользователей Теперь мы рассмотрим как получатели привилегий, указанные в предложении FROM оператора REVOKE, могут быть объединены для отмены привилегий.Список пользователейИспользуйте разделенный запятыми список пользователей для отмены
Предоставление другим пользователям прав суперпользователя
Предоставление другим пользователям прав суперпользователя Меня нередко просят предоставить обычным пользователям право выполнять привилегированные операции, разрешенные только администратору. Это может быть опасно, и здесь требуется большая осторожность.В UNIX/Linux