27_SH43-0144-00 (1038594), страница 60
Текст из файла (страница 60)
Неиспользуйте опцию DYNAMICRULES (со значением BIND) дляпакетов, содержащих псевдонимы.Может случиться, что пакеты, содержащие псевдонимы, потребуютдополнительных шагов авторизации, поскольку DB2 использует динамическиеSQL при соединении с источниками данных семейства DB2. ID авторизации,запустивший пакет в источнике данных, должен располагать соответствующимиполномочиями для динамического выполнения пакета в источнике данных.Дополнительную информацию о том, как DB2 обрабатывает статические идинамические SQL, смотрите в справочнике SQL Reference.Управление доступом к данным с помощью производных таблицПроизводная таблица дает возможность управлять доступом и распространятьпривилегии для таблицы, если разрешить:v Доступ только к указанным столбцам таблицы.Для пользователей и прикладных программ, требующих доступа лишь копределенным столбцам таблицы, полномочный пользователь может создатьпроизводную таблицу, ограничив доступные столбцы необходимыми дляработы.v Доступ только к подмножеству строк таблицы.Задавая условие WHERE в подзапросе определения производной таблицы,полномочный пользователь может ограничить доступные через производнуютаблицу строки.v Доступ только к подмножеству строк или столбцов в таблицах илипроизводных таблицах источников данных.
Если вы обращаетесь кисточникам данных по псевдонимам, вы можете создать локальныепроизводные таблицы DB2, ссылающиеся на псевдонимы. Эти производныетаблицы могут ссылаться на псевдонимы из одного или несколькихисточников данных.Примечание: Поскольку вы можете создать производную таблицу спсевдонимами, ссылающимися на несколько источниковданных, ваши пользователи смогут обращаться из однойпроизводной таблицы к данным во многих источниках данных.Такие производные таблицы называются распределенными270Руководство администратора: Реализацияпроизводными таблицами. Они полезны при объединенииинформации из столбцов конфиденциальных таблиц враспределенной среде или при недостаточности привилегийотдельных пользователей для определенных объектов висточниках данных.Чтобы создать производную таблицу, пользователю нужны полномочияSYSADM или DBADM или привилегии CONTROL или SELECT для всех таблици производных таблиц, упоминаемых в определении производной таблицы.Пользователь также должен иметь право создать объект в схеме, заданной дляпроизводной таблицы.
Речь идет о привилегии CREATEIN для существующейсхемы или полномочиях IMPLICIT_SCHEMA для базы данных, если схема ещене существует. Дополнительную информацию смотрите в разделе “Созданиепроизводной таблицы” на стр. 148.Если вы создаете производные таблицы, ссылающиеся на псевдонимы, вам ненужны дополнительные полномочия для объектов источников данных (таблиц ипроизводных таблиц), обозначенных в производной таблице псевдонимами;однако вашим пользователям, когда они обратятся к производной таблице,понадобятся полномочия SELECT или эквивалентный уровень авторизации длябазовых объектов источников данных.Если у ваших пользователей не будет нужных полномочий в источниках данныхдля базовых объектов (таблиц и производных таблиц), вы можете:v Создать производную таблицу источника данных с теми столбцами изтаблицы источника данных, которые доступны для данного пользователяv Предоставить пользователям привилегию SELECT для этой производнойтаблицыv Создать псевдоним, ссылающийся на производную таблицуТогда пользователи смогут обращаться к столбцам, выдавая оператор SELECTс новым псевдонимом.В следующем сценарии подробно показан пример использования производнойтаблицы для ограничения доступа к информации.Многим людям может по разным причинам потребоваться доступ кинформации в таблице STAFF (сотрудники).
Например:v Отделу кадров нужны права изменять и просматривать всю таблицу.Это требование легко удовлетворить, предоставив привилегии SELECT иUPDATE для таблицы STAFF группе PERSONNL (отделу кадров):GRANT SELECT,UPDATE ON TABLE STAFF TO GROUP PERSONNLv Начальникам отделов нужно просматривать информацию о зарплатах ихподчиненных.Глава 5. Управление доступом к базам данных271Это требование можно удовлетворить, создав по производной таблице длякаждого начальника отдела. Например, для начальника отдела номер 51можно создать следующую производную таблицу:CREATE VIEW EMP051 ASSELECT NAME,SALARY,JOB FROM STAFFWHERE DEPT=51GRANT SELECT ON TABLE EMP051 TO JANEНачальник отдела с именем авторизации JANE может запрашиватьпроизводную таблицу EMP051, как и таблицу STAFF.
Обращаясь кпроизводной таблице EMP051 таблицы STAFF, она увидит следующуюинформацию:NAMESALARYJOBFraye45150.0МенеджерWilliams37156.5ПродавецSmith35654.5ПродавецLundquist26369.8КлеркWheeler22460.0Клеркv Всем пользователям нужно право искать других сотрудников. Это требованиеможно удовлетворить, создав производную таблицу из столбца NAMEтаблицы STAFF и столбца LOCATION таблицы ORG, и объединив эти дветаблицы по их столбцам DEPT и DEPTNUMB:CREATE VIEW EMPLOCS ASSELECT NAME, LOCATION FROM STAFF, ORGWHERE STAFF.DEPT=ORG.DEPTNUMBGRANT SELECT ON TABLE EMPLOCS TO PUBLICПользователи, которые обратятся к производной таблице мест работысотрудников, увидят следующую информацию:272NAMELOCATIONMolinareNew YorkLuNew YorkDanielsNew YorkJonesNew YorkHanesBostonRothmanBostonNganBostonKermischBostonSandersWashingtonРуководство администратора: РеализацияNAMELOCATIONPernalWashingtonJamesWashingtonSneiderWashingtonMarenghiAtlantaO’BrienAtlantaQuigleyAtlantaNaughtonAtlantaAbrahamsAtlantaKoonitzChicagoPlotzChicagoYamaguchiChicagoScouttenChicagoFrayeDallasWilliamsDallasSmithDallasLundquistDallasWheelerDallasLeaSan FranciscoWilsonSan FranciscoGrahamSan FranciscoGonzalesSan FranciscoBurkeSan FranciscoQuillDenverDavisDenverEdwardsDenverGafneyDenverУправление доступом к данным с помощью утилиты аудитаУтилита аудита DB2 создает и позволяет вам обслуживать файл аудита длясерии заранее определенных событий базы данных.
Не запрещая доступ кданным, утилита аудита обеспечивает мониторинг и протоколирование попытокобращения и изменения объектов данных.Для использования утилиты аудита db2audit требуются полномочия SYSADM.Глава 5. Управление доступом к базам данных273Подробное описание утилиты аудита DB2 смотрите в разделе “Глава 6. Аудитдействий DB2” на стр. 281.Задачи и требуемая авторизацияНе все организации одинаково распределяют обязанности между должностями.В Табл. 5 показан список некоторых распространенных названий должностей,обязанностей, обычно соответствующих этим должностям, и полномочий ипривилегий, необходимых для выполнения этих обязанностей.Таблица 5.
Типичные названия должностей, обязанности и требуемая авторизацияДОЛЖНОСТЬОБЯЗАННОСТИТРЕБУЕМАЯ АВТОРИЗАЦИЯАдминистратор отделаРуководит системой отдела;создает базы данныхПолномочия SYSCTRL.Полномочия SYSADM, если дляотдела используется собственныйэкземпляр.Администратор безопасностиДает другим пользователямнекоторые или все авторизации ипривилегииПолномочия SYSADM илиDBADM.Администратор баз данныхПроектирует, строит,обрабатывает, охраняет иобслуживает одну или несколькобаз данныхПолномочия DBADM иSYSMAINT для одной илинескольких баз данных.
Внекоторых случаях полномочияSYSCTRL.Системный операторВедет мониторинг базы данных и Полномочия SYSMAINT.выполняет резервное копированиеПрикладной программистРазрабатывает и тестируетприкладные программыменеджера баз данных; можеттакже создавать таблицы стестовыми даннымиBINDADD, BIND длясуществующего пакета,CONNECT и CREATETAB дляодной или нескольких баз данных,привилегии некоторой конкретнойсхемы и список привилегий длянекоторых таблиц.Пользователь-аналитикОпределяет требования к даннымдля прикладной программы,исследуя производные таблицысистемного каталогаSELECT для производных таблицкаталога; CONNECT для однойили нескольких баз данных.Конечный пользовательпрограммыЗапускает прикладную программу EXECUTE для пакета; CONNECTдля одной или нескольких базданных.
Смотрите примечаниепосле этой таблицы.274Руководство администратора: РеализацияТаблица 5. Типичные названия должностей, обязанности и требуемая авторизация (продолжение)ДОЛЖНОСТЬОБЯЗАННОСТИТРЕБУЕМАЯ АВТОРИЗАЦИЯКонсультант информационногоцентраОпределяет требования к даннымдля пользователя с правомзапроса; предоставляет данные,создавая таблицы и производныетаблицы и предоставляя доступ кобъектам баз данныхПолномочия DBADM для однойили нескольких баз данных.Пользователь с правом запросаВыдает операторы SQL, чтобыполучить, добавить, удалить илиизменить данные; можетсохранять результаты в видетаблицCONNECT для одной илинескольких баз данных;CREATEIN для схемысоздаваемых таблиц ипроизводных таблиц; SELECT,INSERT, UPDATE, DELETE длянекоторых таблиц и производныхтаблиц.Если прикладная программа содержит динамические операторы SQL,конечному пользователю программы могут понадобиться и другие привилегии,помимо EXECUTE и CONNECT - такие, как SELECT, INSERT, DELETE иUPDATE.Использование системного каталогаИнформация о каждой базе данных автоматически регистрируется в наборепроизводных таблиц, называемом системным каталогом, который создаетсяпри построении базы данных.
В этом системном каталоге описаны таблицы,столбцы, индексы, программы, привилегии и другие объекты.Шесть из этих производных таблиц содержат списки привилегий,предоставленных пользователям, а также пользователей, предоставившихпривилегии:SYSCAT.DBAUTHСодержит список привилегий базы данныхSYSCAT.TABAUTHСодержит список привилегий таблиц ипроизводных таблицSYSCAT.COLAUTHСодержит список привилегий столбцовSYSCAT.PACKAGEAUTHСодержит список привилегий пакетовSYSCAT.INDEXAUTHСодержит список привилегий индексовSYSCAT.SCHEMAAUTHСодержит список привилегий схемSYSCAT.PASSTHRUAUTHСодержит список привилегий сервераГлава 5. Управление доступом к базам данных275Для привилегий, предоставленных пользователям системой, в качестве лица,предоставившего привилегии, указывается SYSIBM.
SYSADM, SYSMAINT иSYSCTRL в системном каталоге не описаны.Операторы CREATE и GRANT заносят привилегии в системный каталог.Пользователи с полномочиями SYSADM и DBADM могут предоставлять иотзывать привилегию SELECT для производных таблиц системного каталога. Вследующем примере показано, как получить информацию о привилегиях спомощью запросов SQL:vvvv“Получение имен авторизации с предоставленными привилегиями”“Получение всех имен с полномочиями DBADM”“Получение имен с правом доступа к таблице” на стр. 277“Получение всех привилегий, предоставленных пользователям” на стр. 277v “Защита производных таблиц системного каталога” на стр. 278.Получение имен авторизации с предоставленными привилегиямиНи одна из производных таблиц системного каталога не содержит информацииобо всех привилегиях. Следующий оператор получает все имена авторизации спривилегиями:SELECT DISTINCT GRANTEE, GRANTEETYPE,UNIONSELECT DISTINCT GRANTEE, GRANTEETYPE,UNIONSELECT DISTINCT GRANTEE, GRANTEETYPE,UNIONSELECT DISTINCT GRANTEE, GRANTEETYPE,UNIONSELECT DISTINCT GRANTEE, GRANTEETYPE,UNIONSELECT DISTINCT GRANTEE, GRANTEETYPE,UNIONSELECT DISTINCT GRANTEE, GRANTEETYPE,ORDER BY GRANTEE, GRANTEETYPE, 3'DATABASE' FROM SYSCAT.DBAUTH'TABLE' FROM SYSCAT.TABAUTH'PACKAGE ' FROM SYSCAT.PACKAGEAUTH'INDEX' FROM SYSCAT.INDEXAUTH'COLUMN' FROM SYSCAT.COLAUTH'SCHEMA' FROM SYSCAT.SCHEMAAUTH'SERVER' FROM SYSCAT.PASSTHRUAUTHВремя от времени следует сравнивать список, полученный этим оператором, сосписками имен пользователей и групп, определенных в системной утилитезащиты.