Развитие электронных правительств между странами мира. Обзоры оон по электронному правительству

DB2 (в русском языке произносится «диби́ два», также распространена калька с английского «диби́ ту») - семейство программных продуктов в области управления информацией компании IBM .

Чаще всего, ссылаясь на DB2, имеют в виду реляционную систему управления базами данных DB2 Universal Database (DB2 UDB), разрабатываемую и выпускаемую компанией IBM.

Иногда встречается написание «DB/2», но такое написание неверно: в системе обозначений IBM число в знаменателе дроби означает платформу и «/2» означает продукт для операционной системы OS/2 (или серии компьютеров PS/2). Например, версия DB2 для OS/2 обозначалась «DB2/2».

Реализации

В настоящее время СУБД DB2 представлена версиями на следующих платформах:

  • DB2 for Linux, UNIX and Windows v9 для платформ AIX , HP-UX , Linux , Solaris , Windows и бета-версия для платформы Mac OS X
  • DB2 for z/OS v9 для платформ z/OS и OS/390
  • DB2 Server for VSE & VM v7 для платформ z/VM и z/VSE
  • DB2 for i для платформы IBM i (встроена в систему на аппаратно-программном уровне)

В прошлом выпускались версии сервера СУБД DB2 для OS/2 , UnixWare , PTX.

Клиенты СУБД DB2, помимо перечисленных платформ, выпускаются или выпускались в различных версиях также для SINIX, IRIX , классической Mac OS и для MS-DOS , а также в мобильной версии DB2 Everyplace для Windows CE , Palm OS , Symbian OS , Neutrino и виртуальной машины Java .

В настоящее время, помимо коммерческих продуктов семейства, IBM распространяет также бесплатный дистрибутив DB2 Express-C для платформ Linux (x86, x86-64, POWER), Windows (x86, x86-64), Solaris (x86-64), Mac OS X (x86-64 beta). Бесплатная версия имеет ограничения на использование для работы СУБД не более одного двухъядерного процессора и 2 Гбайт оперативной памяти (общее количество процессоров и пямяти в системе может быть любым, но ресурсы сверх указанных ограничений не будут использоваться СУБД).

История

DB2 имеет долгую историю и, как некоторые считают, стала первой СУБД, использующей SQL .

С 1975 по 1982 год прототип DB2 разрабатывался в IBM под названием System Relational, или System R . Язык SQL впервые был реализован именно в IBM System R, но эта система имела исследовательский характер, а коммерческий продукт, включающий SQL, первой выпустила компания Oracle в 1979 году.

СУБД DB2 получила своё название в 1982 году, когда был выпущен первый коммерческий релиз для под названием SQL/DS, и затем релиз для MVS под названием DB2. Долгое время наряду с «DB2» употреблялся вариант «Database 2», также являющийся торговой маркой IBM. По всей видимости, имелось в виду, что это вторая флагманская СУБД IBM после старой иерархической СУБД IMS.

Развитие DB2 уходит корнями в начало 1970-х, когда доктор Э. Ф. Кодд , работавший на IBM, разработал теорию реляционных баз данных и в июне 1970 года опубликовал модель манипуляции данными. Для воплощения этой модели он разработал язык реляционных баз данных и назвал его Alpha. IBM предпочла передать дальнейшую разработку группе программистов, неподконтрольной доктору Кодду. Нарушив некоторые принципы реляционной модели, они реализовали её как «структурированный английский язык запросов», сокращённо SEQUEL. Поскольку SEQUEL было уже зарегистрированной торговой маркой, название сократили до SQL - «структурированный язык запросов», и таким оно осталось по сей день.

Таким образом, исторически СУБД DB2 возникла из продуктов DB2 для MVS (потомком которого является DB2 for z/OS) и родственного ему SQL/DS для VM (потомок - DB2 Server for VSE & VM). В дальнейшем другим коллективом разработчиков в IBM был реализован сервер OS/2 EE Database Manager, впоследствии эволюционировавший в DB2 v2 для OS/2, AIX и затем Windows, а потом в DB2 UDB (его потомок - DB2 for Linux, UNIX and Windows). Ещё одним коллективом была выполнена интеграция архитектуры DB2 со встроенной базой данных AS/400 (потомок - DB2 for i). IBM постепенно движется по пути интеграции всех этих веток.

Особенности

К отличительным особенностям DB2 относится диалект языка SQL, определяющий, за редкими исключениями, чисто декларативный смысл языковых конструкций, и мощный многофазовый оптимизатор, строящий по этим декларативным конструкциям эффективный план выполнения запроса. В отличие от других диалектов SQL, в диалекте SQL DB2 практически отсутствуют подсказки оптимизатору, мало развит (а долгое время вообще отсутствовал) язык хранимых процедур, и, таким образом, всё направлено на поддержание декларативного стиля написания запросов. Язык SQL DB2 при этом является вычислительно полным, то есть потенциально позволяет в декларативной форме определять любые вычислимые соответствия между исходными данными и результатом. Это достигается в том числе за счёт использования табличных выражений, рекурсии и других развитых механизмов манипулирования данными.

Благодаря приоритету IBM в развитии реляционной теории и позициям фирмы в компьютерной отрасли, диалект DB2 SQL оказывает значительное влияние на стандарты SQL ANSI /ISO .

Хранимые процедуры в DB2 не очень широко применяются, при этом традиционно для написания хранимых процедур используются обычные языки программирования высокого уровня (Си , Java , PL/I , Кобол и т.д.), это позволяет программисту легко оформлять один и тот же код либо как часть приложения, либо как хранимую процедуру, в зависимости от того, на клиенте или на сервере его целесообразнее выполнять. В настоящее время в DB2 также реализовано процедурное расширение SQL для хранимых процедур в соответствии со стандартом ANSI SQL/PSM.

Оптимизатор DB2 широко использует статистику распределения данных в таблицах (если процесс её сбора был выполнен администратором базы данных), поэтому один и тот же запрос на языке SQL может быть оттранслирован в совершенно различные планы выполнения в зависимости от статистических характеристик данных, которые он обрабатывает.

Поскольку исторически DB2 развивалась с многопользовательских систем на мейнфреймах , то большое внимание в архитектуре DB2 уделяется вопросам безопасности и распределения ролей обслуживающих DB2 специалистов. В частности, в отличие от многих других СУБД, в DB2 имеются отдельные роли для администратора СУБД (ответственного за конфигурирование программных компонентов DB2 и их оптимальное выполнение в компьютерной системе) и администратора базы данных (ответственного за управление данными в конкретной базе).

Использование при необходимости в программах статического SQL и концепции пакетов допускает, в отличие от большинства других СУБД, реализацию такой модели безопасности, когда права на выполнение определённых операций могут выдаваться прикладным программам при отсутствии таких прав у работающих с этими программами пользователей. Это позволяет в таком случае гарантировать невозможность работы пользователя с базой данных в обход прикладной программы, если у пользователя имеются только права на запуск программы, но не на самостоятельную манипуляцию данными.

В рамках концепции повышения уровня интеграции средств безопасности в компьютерной системе, DB2 не имеет собственных средств аутентификации пользователей, интегрируясь со средствами операционной системы или специализированными серверами безопасности. В рамках DB2 осуществляется только авторизация пользователей, аутентифицированных системой.

DB2 является единственной реляционной СУБД общего назначения, имеющей реализации на аппаратно-программном уровне (система IBM i ; также в оборудовании мэйнфреймов IBM System z реализуются средства поддержки DB2).

Современные версии DB2 обеспечивают расширенную поддержку использования данных в формате XML , в том числе операции с отдельными элементами документов XML.

Обработка ошибок

Полезной особенностью SQL-сервера DB2 является возможность обработки ошибок. Для этой цели используется структура SQLCA (англ. SQL Communications Area - область связи SQL), возвращающая информацию об ошибке прикладной программе после каждого выполнения SQL-выражения.

Поля структуры SQLCODE и их значения

Основная, но не всегда полезная диагностика ошибки содержится в поле SQLCODE (тип данных - целое число) внутри SQLCA блока. Она может принимать следующие значения:

  • 0 означает успешное выполнение.
  • Положительное число означает успешное выполнение с одним или более предупреждениями. Например, +100 означает, что не найдены столбцы.
  • Отрицательное число означает неудачу с ошибкой. Например, −911 означает обнаруженный истёкший интервал ожидания блокировки (или мёртвую блокировку), запускающий последовательный откат.

SQLERRM (тип данных - строка из 71 символа). Содержит текстовую строку с описанием ошибки в случае, если поле SQLCODE меньше нуля.

SQLERRD (тип данных - массив , 6 целых чисел). Описывает результат выполнения последнего оператора SQL:

  • 1 элемент - внутренняя информация;
  • 2 элемент - содержит сгенерированное сервером значение поля типа SERIAL для оператора INSERT, либо дополнительный код ошибки;
  • 3 элемент - равен количеству обработанных записей;
  • 4 элемент - примерная стоимость выполнения данного оператора;
  • 5 элемент - смещение ошибки в текстовой записи оператора SQL;
  • 6 элемент - внутренняя информация.

Примечания

Ссылки

  • Страница программы на сайте IBM
  • DB2 на developerWorks - статьи и тренинги о DB2
  • PlanetDB2 - блоги о DB2

Литература

  • Дейт К. Руководство по реляционной СУБД DB2. - М.: Финансы и статистика, 1988. - 320 с. - ISBN 5-279-00063-9
  • Зикопулос П. К., Бакларц Дж., деРус Д., Мельник Р. Б. DB2 версии 8: официальное руководство = DB2 Version 8: The Official Guide. - М.: КУДИЦ-ОБРАЗ, 2004. - 400 с. - ISBN 5-9579-0031-1
  • Смирнов С. Н. Работаем с IBM DB2: Учебное пособие. - М.: Гелиос, 2001. - 304 с. - ISBN 5-85438-007-2 (рекомендовано УМО вузов в области информационной безопасности в качестве учебного пособия по специальностям «Комплексное обеспечение информационной безопасности автоматизированных систем» и «Компьютерная безопасность»)
  • Сьюзен Виссер, Билл Вонг. Освой самостоятельно DB2 Universal Database за 21 день = Sams Teach Yourself DB2 Universal Database in 21 Days. - 2-е изд. - М.: Вильямс , 2004. - 528 с. - ISBN 0-672-32582-9
  • Hook J., Harbus R., Snow D. The Universal Guide to DB2 for Windows NT®. - New Jersey: Prentice Hall PTR, 1999. - P. 504. - ISBN 0-13-099723-4

Wikimedia Foundation . 2010 .

Смотреть что такое "IBM DB2" в других словарях:

    IBM DB2 - Developer(s) IBM Initial release 1983 (1983) … Wikipedia

    IBM DB2 - DB2 ist ein kommerzielles relationales Datenbank Management System (RDBMS) der Firma IBM, dessen Ursprünge auf das System R und die Grundlagen von E. F. Codd vom IBM Research aus dem Jahr 1970 zurückgeht. Inhaltsverzeichnis 1 Eigenschaften 1.1… … Deutsch Wikipedia

    IBM DB2 - Développeur IBM Dernière version … Wikipédia en Français

    IBM DB2 Commonstore - DB2 CommonStore Archiving software produced by IBM for managing e mail messages or SAP ERP data. Part of the IBM Information Management portfolio which builds upon the DB2 database platform. DB2 CommonStore is one of several products which are… … Wikipedia

Система управления базами данных IBM DB2 начинает свое развитие в далеких 70-х годах и сейчас занимает прочное положение на рынке корпоративных СУБД, отвечая высоким требованиям к производительности, надежности, безопасности и масштабируемости.

Игорь Булатенко, специалист по информационной безопасности, Positive Technologies

Система управления базами данных IBM DB2 начинает свое развитие в далеких 70-х годах и сейчас занимает прочное положение на рынке корпоративных СУБД, отвечая высоким требованиям к производительности, надежности, безопасности и масштабируемости. В частном секторе система DB2 не получила широкого распространения, несмотря на наличие бесплатной версии IBM DB2 Express. Возможно, именно из-за этого в Интернете не так много статей по поводу настройки и использования DB2.

Модель безопасности DB2 обладает широким функционалом и позволяет защитить данные как от внешнего воздействия, так и разграничить права доступа для внутренних пользователей средствами самой СУБД.

Однако неподготовленному пользователю сложно с нуля разобраться во всем этом многообразии, поэтому некоторые важные аспекты будут рассмотрены в данной статье.

Точка входа

Точка входа в DB2 выглядит следующим образом: СУБД -> экземпляр (instance), который может быть привязан к определенному порту -> имя конкретной базы данных. Настройки безопасности могут быть изменены как в конкретном экземпляре, так и в конкретной базе данных.

Аутентификация

Аутентификация - это первоочередной механизм безопасности, который применяется, когда вы пытаетесь соединиться с сервером DB2. При аутентификации проверяется корректность предоставляемых учетных данных. Главной особенностью в DB2 является то, что аутентификация пользователей производится только внешними плагинами. Внутренних пользователей, в отличие от Oracle или MS SQL Server, здесь не существует. Даже функция создания пользователя, которая есть в программе IBM Data Studio, на самом деле не создает пользователя, а назначает указанному пользователю привилегию на соединение с базой данных.

Существует несколько вариантов аутентификации, нужный вариант регулируется параметром AUTHENTICATION в менеджере базы данных. Значение данного параметра влияет на то, где будет производиться аутентификация клиентов (на стороне сервера или на стороне клиента) и будут ли данные передаваться в зашифрованном виде (значения с окончанием _ENCRYPT). Поддерживаемые значения данного параметра доступны по следующему адресу:

Просмотреть конфигурацию менеджера базы данных можно с помощью запроса к таблице sysibmadm.dbmcfg, но для этого нужно иметь доступ к любой из баз данных, что не всегда возможно. Если у вас есть локальный доступ к серверу, то можно открыть процессор командной строки (db2 или db2.exe в Windows), соединиться с экземпляром и выполнить следующие команды:

Db2 => attach to db2inst1
db2 => get database manager configuration

Значением по умолчанию для параметра AUTHENTICATION является SERVER. Проверка правильности предоставленных учетных данных пользователя производится на стороне сервера средствами операционной системы, но все данные при этом передаются в открытом виде и могут быть перехвачены злоумышленником.

Рассмотрим, каким образом выглядит перехваченная информация в Wireshark.


Переданные от клиента логин и пароль видны в пакете при просмотре EBCDIC.

При изменении типа аутентификации на SERVER_ENCRYPT логин и пароль будут передаваться уже в зашифрованном виде и проверяться на стороне сервера.

Значение изменяется следующим образом:

Db2 => attach to db2inst1
db2 => update database manager configuration using authentication server_encrypt
db2 => db2stop force
db2 => db2start

Пакет аутентификации при этом будет выглядеть так:


Однако текст запросов и результат будет все равно передаваться в открытом виде.

Пакет с запросом в Wireshark:


Пакет с ответом в Wireshark:


В случае, если для параметра AUTHENTICATION настроено значение DATA_ENCRYPT, то шифруются учетные данные пользователя, а также информация, передаваемая между клиентом и сервером.

Значение изменяется аналогично рассмотренному выше примеру:

Db2 => attach to db2inst1
db2 => update database manager configuration using authentication data_encrypt
db2 => db2stop force
db2 => db2start

После этого передаваемые данные также будут шифроваться:


Также, нужно обратить внимание на тип аутентификации CLIENT. При данном типе аутентификации считается, что между клиентом и сервером существует защищенный канал связи, и в случае, если пользователь получил доступ к клиенту, он может получить доступ к серверу без проверки правильности учетных данных. То есть аутентификация как таковая происходит на стороне клиента, проверки на стороне сервера не производится. Даже если у пользователя, который соединяется с сервером, нет прав на доступ, он все равно получает все привилегии, которые назначены группе PUBLIC. Поэтому не стоит использовать такой тип аутентификации, это предоставит злоумышленникам возможность без особых усилий получить доступ к серверу.

Если же вдруг по какой-то причине необходим такой тип аутентификации, то нужно учесть, что существует еще два дополнительных параметра, которые в конечном итоге влияют на то, как будет проходить проверка учетных данных пользователя. Это параметр trust_allclnts , с помощью которого можно указать, каких клиентов считать доверенными, и параметр trust_clntauth , определяющий, где проверять логин и пароль, если они были переданы при соединении. Оба этих параметра влияют на аутентификацию, только если параметр AUTHENTICATION имеет значение CLIENT.

В случае успешной аутентификации ID пользователя соотносится с идентификатором DB2. Обычно идентификатор совпадает с именем пользователя, но в нем используются символы верхнего регистра.

Авторизация

В процессе авторизации проверяется, есть ли у пользователя необходимые права для запрошенных им действий. Существуют полномочия (authorities) экземпляра СУБД и базы данных.

Полномочия уровня конкретного экземпляра прописываются в конфигурации менеджера БД. Речь идет о следующих полномочиях:

  • SYSADM (полномочия администратора системы);
  • SYSCTRL (полномочия на управление системой);
  • SYSMAINT (полномочия на обслуживание системы);
  • SYSMON (полномочия на мониторинг системы).

Задаются данные привилегии с помощью указания той группы, в которую будет входить пользователь. Для этого используются следующие параметры файла dbmcfg (соответственно указанным выше полномочиям):

Легко получить список пользователей, которые входят в группу, средствами DB2 нельзя, нужно делать это в самой операционной системе или анализировать, в какие группы входит конкретный пользователь (запрос см. на вкладке "полезные запросы").

При настройке DB2 обязательно необходимо проверить список пользователей, которым назначено полномочие SYSADM. Это полномочие позволяет управлять всеми объектами базы данных.

Полномочия конкретной базы можно посмотреть в представлении SYSCAT.DBAUTH . Обратите внимание на привилегию CONNECTAUTH, которая определяет, будет у пользователя доступ к БД или нет, и привилегию NOFENCEAUTH, которая отвечает за создание неизолированных (not fenced) процедур и функций. Такие процедуры выполняются в адресном пространстве базы данных и, в случае ошибки, могут нарушить целостность базы данных и таблиц в ней.

Привилегии

Привилегии в DB2 могут быть выданы на различные объекты. Привилегии доступа к таблицам можно просмотреть в представлении SYSCAT.TABAUTH . Данные о типе выданной привилегии хранятся в отдельных колонках, в зависимости от самой привилегии (SELECTAUTH, DELETEAUTH и т. д.). При выдаче привилегии с помощью команды GRANT для привилегий REFERENCES и UPDATE можно также указать имена колонок, на которые будут распространяться данные привилегии. Информацию об этом можно посмотреть в представлении SYSCAT.COLAUTH

Привилегии подпрограмм (функций, процедур и методов) можно посмотреть в представлении SYSCAT.ROUTINEAUTH . Здесь все не совсем тривиально, в зависимости от полей SPECIFICNAME и TYPENAME привилегии могут быть выданы на все подпрограммы заданной схемы.

Пользователи, группы, роли

Все полномочия базы данных и различные привилегии могут быть выданы пользователям, группам или ролям. Существование пользователей, групп и членство пользователей в группах регулируется вне самой базы данных. В связи с этим желательно учитывать определенные рекомендации и знать некоторые тонкости при выдаче полномочий и привилегий. Не рекомендуется выдавать привилегии и полномочия базы данных, в особенности возможность соединения с базой данных (CONNECTAUTH), группам. Следует выдавать привилегии конкретным пользователям или ролям, которым это необходимо. Поддержка ролей появилась в DB2 начиная с версии 9.5. Управление членством в ролях производится внутри самой базы данных.

Также, в DB2 существует встроенная роль PUBLIC. Пользователю базы данных нет необходимости предоставлять роль PUBLIC: отозвать у пользователя роль PUBLIC невозможно. Когда привилегия предоставляется роли PUBLIC, фактически происходит предоставление привилегии всем пользователям базы данных. Не следует выдавать какие-либо полномочия базы данных роли PUBLIC. Привилегии на таблицы и представления стоит выдавать с крайней осторожностью, только на просмотр и без возможности переназначения (WITH GRANT OPTION).

Из-за особенности аутентификации при выдаче привилегий существование пользователя или группы в системе не проверяется. В результате в системе могут появиться аутентификационные пользователи без привязки к реальным пользователям системы. Найти таких пользователей можно с помощью следующего SQL-запроса:

SELECT authid FROM sysibmadm.authorizationids WHERE authidtype = "U" AND authid NOT IN (SELECT username FROM TABLE(sysfun.USERS()) AS W)

Для поиска подобных групп используется аналогичный запрос, но при этом в запросе указывается, что данные о PUBLIC выводить не нужно:

SELECT authid FROM sysibmadm.authorizationids WHERE authidtype = "G" AND authid NOT IN (SELECT groupname FROM TABLE(sysfun.groups()) AS W) AND authid != "PUBLIC"

LBAC

В DB2 есть мощный механизм разграничения доступа к данным в таблицах на основе меток (Label-based access control). Механизм позволяет установить метки защиты на конкретные строки или столбцы таким образом, что пользователь, у которого нет доступа к защищенным данным, не будет даже знать об их существовании. Нет смысла подробно рассказывать о методах реализации LBAC, так как у производителя есть учебное руководство по этой теме:

Автоматические средства сканирования

При настройке безопасности сервера IBM DB2 важным моментом является использование каких-либо сканеров безопасности (например, NGS SQuirreL for DB2, MaxPatrol и т. п.). Сканеры явно укажут на уязвимости настроек, которые вы могли пропустить, или выведут информацию в удобном для анализа виде:

Полезные запросы и команды

Получить настройки менеджера базы данных:

select name, value from sysibmadm.dbmcfg

либо

db 2 => get dbm cfg

Изменить параметр менеджера базы данных:

db2 => update database manager configuration using

После этого необходим перезапуск экземпляра:

db 2 => db 2 stop force
db 2 => db 2 start

Получить настройки базы данных:

select name, value from sysibmadm.dbcfg

либо

db2 => get db cfg for

Список пользователей операционной системы:

select username from table(sysfun.USERS()) AS t

Список групп операционной системы:

select groupname from table(sysfun.GROUPS()) AS t select AUTHID, AUTHIDTYPE from sysibmadm.AUTHORIZATIONIDS

Вывести текущее имя базы данных:

select current server from sysibm.sysdummy1

Ввести текущее имя пользователя:

select user from sysibm . sysdummy 1

Получить список групп, в которые входит пользователь:

select GROUPNAME from table(sysfun.groups_for_user("")) as t

Список всех установленных СУБД:

$ db2ls

Список всех экземпляров в СУБД:

$ db 2 ilist

Ограничить количество выводимых строк:

select * from tabname fetch first 5 rows only

По работе пришлось в течение некоторого времени разбираться с СУБД IBM DB2. Т.к. система коммерческая, то в интернете не так много информации на русском языке, поэтому решил описать некоторые особенности работы этой СУБД.

Точка входа

Начнем со входной точки в СУБД. В SQL SERVER конечной точкой является экземпляр (instance), в котором конечно могут быть отдельные базы данных, но конфигурация и модель безопасности единая для всего экземпляра. В DB2 же точка входа выглядит так - экземпляр (который соответствует конкретному порту) - база данных. При этом конфигурация есть и для целиком экземпляра, и для отдельной базы данных.

Посмотреть конфигурацию экземпляра можно либо с помощью db2-команды:

Database Manager Configuration

Node type = Enterprise Server Edition with local and remote clients

Database manager configuration release level = 0x0b00

CPU speed (millisec/instruction) (CPUSPEED) = 2.912790e-07
Communications bandwidth (MB/sec) (COMM_BANDWIDTH) = 1.000000e+02

Max number of concurrently active databases (NUMDB) = 8
Federated Database System Support (FEDERATED) = YES
Transaction processor monitor name (TP_MON_NAME) =

Default charge-back account (DFT_ACCOUNT_STR) =

Java Development Kit installation path (JDK_PATH) = /home/db2inst1/sqllib/java/jdk32

Diagnostic error capture level (DIAGLEVEL) = 3
Notify Level (NOTIFYLEVEL) = 3
Diagnostic data directory path (DIAGPATH) = /home/db2inst1/sqllib/db2dump

Default database monitor switches
Buffer pool (DFT_MON_BUFPOOL) = OFF

Где будут указаны параметры, их значение и расшифровка. Возможен также сокращенный вариант:

get dbm cfg

Либо с помощью запроса:

Select name, value from sysibmadm.dbmcfg

Из важных параметров можно отметить:

  • тип аутентификации (AUTHENTICATION)
  • путь по умолчанию для создания новых БД (DFTDBPATH)
  • обнаружение сервера по сети (DISCOVER)
Посмотреть настройки конкретной базы можно так:

connect to sample (sample - имя бд)

get database manager configuration

Либо примерно таким же запросом, как и ранее:

select name, value from sysibmadm.dbcfg

Аутентификация

Большим отличием DB2 от других СУБД является модель аутентификации. Здесь нет внутренних пользователей, как в SQL Server или MySQL. Вся аутентификация производится внешними по отношению к СУБД средствами (динамически подгружаемыми плагинами) - средствами операционной системы либо внешними плагинами (Kerberos,GSS API). Тип аутентификации задается в параметре AUTHENTICATION конфигурации менеджера БД. По умолчанию выставлено значение SERVER - имя пользователя и пароль передается в открытом виде и данная пара проверяется на правильность средствами операционной системы. Если имя пользователя и пароль верны, то проверяется наличие привилегии CONNECT у пользователя или групп, в которые он входит (в т.ч. специальная группа PUBLIC, куда входят все авторизованные пользователи). Данные привилегии можно посмотреть в таблице SYSCAT.DBAUTH :

select GRANTEE from SYSCAT.DBAUTH where CONNECTAUTH = "Y"

Большой ошибкой при настройке является включение типа аутентификации CLIENT. В этом случае DB2 доверяет проведение аутентификации подключаемому клиенту и если у PUBLIC есть привилегия CONNECT, то любой пользователь сможет подключиться к БД и получит доступ ко всем данным, которые есть у PUBLIC. Имя пользователя при этом берется из операционной системы. То есть если мы подключаемся через Data Studio пользователем Administrator, то будут предоставлены все привилегии, которые есть у данного пользователя. И в этом случае нет разницы, с какого компьютера был произведен доступ. Данный тип аутентификации рекомендуется включать только тогда, когда есть защищенный канал между сервером и клиентом, и другие клиенты не смогут подключиться к СУБД.

Авторизация

Привилегии уровня конкретного экземпляра прописываются в конфигурации менеджера БД. Это следующие привилегии:

  • SYSADM
  • SYSCTRL
  • SYSMAINT
  • SYSMON
Задаются данные привилегии с помощью указания группы, куда будет входить пользователь. В dbmcfg это соответственно параметры SYSADM_GROUP , SYSCTRL_GROUP , SYSMAINT_GROUP и SYSMON_GROUP .

Далее есть привилегии конкретной базы данных. Это такие привилегии, как доступ к базе данных (CONNECTAUTH), создание таблиц (CREATETABAUTH), создание подпрограмм (EXTERNALROUTINEAUTH) и тд. Данные привилегии можно просмотреть в представлении SYSCAT.DBAUTH

И наконец привилегии доступа к конкретным данным - таблицам, подпрограммам и тд. Здесь все довольно тривиально, но тоже с некоторыми особенностями.

Привилегии доступа к таблицам можно просмотреть в представлении SYSCAT.TABAUTH . Тип выданной привилегии хранится в отдельных колонках, в зависимости от самой привилегии (SELECTAUTH,DELETEAUTH и тд). При выдачи привилегии с помощью команды GRANT для привилегий REFERENCES и UPDATE можно также указать имена колонок, на которые будут распространяться данные привилегии. В этом случае информацию об этом можно посмотреть в представлении SYSCAT.COLAUTH

Привилегии подпрограмм (функций, процедур и методов) можно посмотреть в SYSCAT.ROUTINEAUTH . Здесь не совсем все тривиально, в зависимости от полей SPECIFICNAME и TYPENAME привилегии могут быть выданы на все подпрограммы заданной схемы.

Если читателям понравится статья, то готов рассказать по поводу защиты данных в DB2 с помощью Label-Based Access Control

СУБД IBM DB2 - результат почти 30-х опытно-конструкторских и исследовательских работ фирмы IBM. Последнюю на сегодня версию данной СУБД (6.х) отличает один из наиболее продуманных наборов средств управления и оптимизации и механизм БД, допускающий наращивание от портативного ПК с Windows 95 до целого кластера больших ЭВМ S/390, работающих под управлением OS/390.

Пакет DB2 выпускается в двух редакциях: DB2 Workgroup и DB2 Enterprise Edition. В данной СУБД реализованы все известные по предшествующим версиям DB2 новаторские технологии механизма БД, такие, как распараллеливание обработки запроса, полный набор средств тиражирования, сводные таблицы запросов для повышения производительности БД, возможности объектно-ориентированного конструирования баз данных и средства языка Java. К этому надо добавить, что система DB2 оснащена полым набором мультимедиа-расширений, позволяющих сохранять текст, звук и видео- фрагменты, изображения и географические данные и манипулировать ими. Можно говорить, что по возможностям масштабирования разработанная специалистами IBM технология кластеризации баз данных не имеет аналогов. Эти расширения существенно облегчают процесс разработки приложений для Web, а так же программ, содержащих фотоизображения и объемные текстовые отчеты. Система DB2 вполне конкурентоспособна и в качестве платформы для разработки приложжений т.к существует средство Stored Procedure Builder - автоматически преобразовывающее оператор SQL в соответствующий класс Java и включающее его в структуру базы данных. В версии DB2 6.1 значительно улучшена функциональная совместимость с другими СУБД: пакет позволяет использовать разработанную Microsoft спецификацию OLE DB, новый стандарт доступа к базам данных. Средства административного управления СУБД DB2, которые в новой версии переписаны на Java и могут быть получены из Web, заслуживают самой высокой оценки.

Основными недостатками данной СУБД является относительная сложность администрирования и отсутствие (пока) реализаций под популярные серверные ОС, например LINUX.

В данной СУБД благодаря Index Smart-Guide возможно осуществлять настройку, формируя оптимальные индексы для заданного числа обращений, характеризующего типичную нагрузку на БД. DB2- единственный пакет позволяющий генерировать сводные таблицы, что значительно эффективность работы СУБД в качестве хранилищ данных. Сводная таблица - это временная рабочая область, используемая базой данных для хранения ответов на часто поступающие запросы. Ну что ж, можно сказать, что оснащенная новыми функциональными возможностями, а также средствами распараллеливания и возможностями выбора практически любого типа соединения и индексов (кроме разве что растровых индексов), модель DB2 6.1 превращается в самую недорогую из высокопроизводительных систем. Средства административного управления этой СУБД вполне соответствуют уровню решаемых задач, кроме того, она предоставляет исключительно широкие возможности для работы с мультимедиа-данными и для программирования (чего явно недостает системе Microsoft SQL Server).

СУБД от Informix.

В последнее время наметился переход от реляционных СУБД к объектно-ориентированным (что явно прослеживается на примере Oracle). Informix также следуя данной концепции анонсировала новое решение СУБД Centaur базирующуюся на реляционной БД Informix Dynamic Server 7.3 и объектно-реляционной БД Informix Universal Data Option и сочетающую в себе высокое быстродействие Dynamic Server при работе с данными с универсальностью и мультимедиа функциями Universal Data Option. Данная реализация предназначена для разработки интернет систем. Предположительно данная СУБД будет обладать гибкой средой разработки, обладающей наращиваемостью, соответствующей характерным для Интернета интенсивным нагрузкам, и средствами работы с новыми типами данных, которые с развитием Web стали использоваться повсеместно. Реализованные в новой системе средства Java позволят разработчикам создавать на этом языке хранимые процедуры, пользовательские программы и компоненты DataBlades, которые в Informix называют заказными расширениями базы данных.

С точки зрения клиентов Inforix, это станет большим шагом вперед, поскольку до настоящего времени при работе с DataBlades они могли пользоваться только языком Си и SPL, внутренним языком фирмы Informix для написания хранимых процедур. Кроме того, пакет Centaur будет оснащен встроенными средствами обработки объектов ActiveX. Это даст возможность, к примеру, создавать хранимые процедуры БД на языке Visual Basic; правда, для этого нужно, чтобы пакет Centaur выполнялся в среде Windows NT.

Centaur будет представлять собой надстройку Informix Dynamic Server и работать с традиционным для этого пакета форматом БД, так что в распоряжении пользователей останутся все прежние функции, а модернизация системы до уровня новой версии не будет сопряжена с большими сложностями. Кроме того, в пакете Centaur будут сохранены все возможности конструирования и программирования, благодаря которым система Informix Universal Server признана выдающимся техническим достижением. Новая система будет оснащена средствами объектно-ориентированного конструирования баз данных, создания специализированных таблиц и программ индексирования; в ее состав войдет позволит пользователям встраивать в запросы собственные функции и не полагаться исключительно на стандартные средства SQL.

Выводы.

Рассмотрев основные характеристики архитектур построения АИС, серверных операционных систем и СУБД в дальнейшем в качестве архитектуры АИС мы выберем архитектуру интернет/интранет, в качестве серверной ОС Linux, в качестве СУБД Oracle 8i. В сводной таблице представлены сравнительные характеристики двух наиболее распространенных на сегодня решений на базе Microsoft SQL Server 7.0 (на NT) и Oracle8i (на Unix, Linux).

Microsoft SQL Server 7.0

Административное управление

Графические инструменты

Простота обслуживания

Механизм данных

Работа с несколькими ЦП

Приемлемо

Функция соединения и выбор индексов

Одновременный доступ нескольких пользователей

Обработка мультимедиа-даных

Подключение к Web

Обработка аудио, видео, изображений

Поиск по сему тексту

Функциональная совместимость

Приемлемо

Сопряжение с другими БД

Единая регистрация

Работа под управлением различных ОС

Приемлемо

Возможности программирования

Приемлемо

Хранимые процедуры и триггеры

Внутренний язык программирования

Построение баз данных

Объектно-ориентированные системы

Работа с филиалами

Тиражирование

Распределенная обработка транзакций

Дистанционное администрирование

Организация хранилищ данных и подготовка отчетов

Средства загрузки

Средства анализа



Поделиться