|
Программирование >> Администрирование microsoft sql
предоставления, блокирования и отзыва этих разрешений. Чтобы просмотреть в БД существующие разрешения на выполнение операторов, щелкните правой кнопкой БД и выберите Properties. На вкладке Permissions диалогового окна Properties вы можете выполнить все перечисленные операции над разрешениями доступа (рис.
Рис. 11-1. Просмотр н изменение разрешений на выполнение операторов Обратите внимание, что каждый зарегистрированный и каждая оп- ределяемая пользователем роль БД отображается в этом списке с указанием соответствующих разрешений на выполнение операторов, если таковые определены. Зеленая галочка рядом с именем пользователя или роли означает, что они обладают соответствующими разрешениями, красный крестик означает блокирование разрешения, а отсутствие метки - отзыв или неприменимость данных разрешений для пользователя или роли. Помните: если для объекта определено несколько разрешений, результирующие разрешения доступа в основном будут определяться как сумма всех имеющихся разрешений, но запрет разрешений доступа имеет приоритет над всеми остальными. Например, на рис. 11-1 для роли public блокировано разрешение на создание таблицы. Поэтому под именем пользователя Joe вы не сможете создать таблицу, несмотря на то, что ему в индивидуальном порядке были предоставлены такие разрешения. Однако запрет на выполнение операторов никак не отражается на члене роли сервера sysadmin (в которую входит учетная запись sa). Наконец, следует отметить, что в данном списке разрешений отображаются только те разрешения на выполнение операторов, которые непосредственно пользователю. Разрешения на выполнение операторов, предоставленные пользователю через его участие в роли сервера или постоянной роли БД, здесь не отображаются. Предоставление, блокирование и отзыв разрешений на выполнение операторов средствами Transact-SQL Вы можете использовать операторы GRANT, DENY и REVOKE для управления разрешениями на выполнение операторов при помощи сценариев Transact-SQL. Эти операторы могут быть использованы для предоставления, блокировки и отзыва разрешений на выполнение отдельных операторов. Когда они используются с ключевым словом ALL, разрешения доступа распространяются на все операторы и объекты. В следующем примере пользователю Joe (имя учетной записи SQL Server), роли SalesManagets (определяемая пользователем роль БД) и группе SelfPacedSQL\SQLSer- verAdmins (группа Windows) предоставляется разрешение на выполнение оператора CREATE TABLE: GRANT CREATE TABLE TO Joe, SalesManagers, . . . - . [SelfPacedSQL\SOLServerAominsj . < Примечание При ссылке налокальпую встроенную группу Windows, например BUIL-Operators, лучше указывать а не имя домена или локального компьютера. В следующем примере пользователю Joe будет запрещено выполнение оператора CREATE TABLE. Чтобы удалить блокировку, заданную оператором DENY, используйте операторы REVOKE или GRANT. DENY CREATE TABLE TO Joe В следующем примере у пользователя Joe будут отозваны все разрешения, а также отменены установленные для блокировки. Сюда входят разрешения на вхполнение операторов и разрешения на объекты. REVOKE ALL FROM Joe . У m Просмотр разрешений на выполнение операторов средствами Transact-SQL Вы можете просмотреть ствующие разрешения на выполнение операторов в БД, используя системную хранимую процедуру rotect. Все пользователи БД имеют разрешения на выполнение этой процедуры. В следующем примере выводится список всех разрешений на выполнение операторов в текущей БД: EXE protect NULL, NULL, NULL, s Упражнение 2. Предоставление и проверка разрешений на выполнение операторов В этом упражнении вы предоставите разрешения на выполнение операторов и затем проверите их. ► Чтобы предоставить и проверить разрешения на выполнение операторов L Переключитесь в SQL Query Analyzer. 2. Убедитесь, что вы подключились к SQL Server под именем Joe. 3. В панели инструментов шелкните Load SQL Script. окно SQL Query Analyzer, выдающее вопрос, хотите ли вы сохранить изменения в предыдущем сценарии. 4. Щелкните No. . Откроется окно Open Query File. 5. Откройте файл CreateTeslTable 1 .sql из папки C;\SelfPacedSQL\CH l 1. Откроется сцепарий Transact-SQL. который создаст новую таблицу с названием и добавит в нее одну запись. Обратите внимание, что в качестве обладателя разрешения владения для таблицы не указан определенный владелец. Затем сценарий выполняет Запрос к новой таблице. 6. В панели инструментов щелкните Execute Query, Обратите внимание, что успешно создана и в нее добавлена одна запись. Пользователь Joe может создавать таблицы, так как он относится к членам роли Однако Joe не может просматривать данные, потому что он относится к пользователям, которым назначена постоянная ролью БД db denydatareader. 7. Переключитесь в SQL Server Enterprise Manager. Обратите внимание, что окно Database User Properties - Joe до сих пор открыто с момента выполнения последнего упражнения. 8. В диалоговом окне Database User Properties - Joe снимите флажок рядом с именем роли Db denydatareader и щелкните Apply. 9. Переключитесь в SQL Query Analyzer. 10. В области запроса выберите SELECT * FROM TestTablel и в панели инструментов щелкните Execute Query. Обратите внимание, что пользователь Joe теперь может успешно выполнить запрос. 11. В меню File выберите Connect. Откроется окно Connect To SQL Server. 12. Щелкните SQL Server Authentication. 13. В поле Login Name введите sa и щелкните ОК. Обратите внимание, что подключиться к серверу можно как sa без указания пароля. де, где будет эксплуатироваться ваша БД никогда не разрешайте использовать смешанный режим проверки подлинности и оставлять пустой строку пароля системного администратора. 14. В панели инструментов в списке БД выберите в качестве текущей БД SSEMDB. 15. В панели запросов введите SELECT * FROM TestTablel и в панели инструментов щелкните Execute Query. Обратите внимание, что объект TestTable! не будет найден, если в качестве aia-дельца объекта TestTable 1 не указан пользователь с учетной записью sa. Причина в том, что SQL Server 2000 ищет этот объект толъко как объект, принадлежащий или пользователю sa, или роли dbo. Атак как он принадлежит пользователю Joe, он не будет найден. 16. В панели запросов введите SELECT * FROM и в панели инструментов щелкните Execute Query. Обратите внимание, что на экране отображается содержимое объекта TestTable, владельцем которого является пользователь Joe. 17. Переключитесь на пользовательскую сессию Joe в окне SQL Query Analyzer. 18. Измените оператор CREATE TABLE, указав в качестве владельца роль dbo (теперь оператор должен начинаться так: CREATE а затем в панели инструментов щелкните Execute Query. Обратите внимание, что таблица успешно создана и в нее добавлена одна запись. Однако заметьте, что данные были добавлены в объект Joe.TestTablel, а не в dbo.TestTablel. 19. Переключитесь в SQL Server Enterprise Manager. 20. В диалоговом окне Database User Properties - Joe снимите флажок рядом с Db owner и щелкните ОК. 21. В дереве консоли щелкните правой кнопкой БД SSEMDB и выберите Properties. Откроется окно SSEMDB Properties. 22. Перейдите на вкладку Permissions.
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |