ВВЕДЕНИЕ
В контексте баз данных термин «безопасность» означает защиту данных в базе данных (или в базах данных) от несанкционированного раскрытия, изменения или уничтожения. По степени безопасности, которую она обеспечивает, система DB2 в значительной мере превосходит возможности большинства известных систем. Единица данных, которая может индивидуально защищаться, варьируется от целой таблицы до конкретного значения данных, занимающего позицию на пересечении конкретных строки и столбца в такой таблице. Для некоторых операций защищаемая единица данных на самом деле может быть больше, чем одна таблица. Например, для команд START и STOP, выдаваемых оператором с консоли, такой единицей является вся база данных. Данный пользователь может иметь различные привилегии доступа к различным объектам, например привилегии на выполнение только операций SELECT над одной таблицей, операций SELECT и UPDATE — над другой и т. д. Различные пользователи также могут, конечно, иметь различные привилегии доступа к одному и тому же объекту. Например, пользователь А может иметь только привилегии на выполнение операций SELECT над заданной таблицей, в то время как другой пользователь В мог бы одновременно иметь привилегии на выполнение операций как SELECT, так и UPDATE над той же самой таблицей.
Для обеспечения безопасности в системе DB2 имеются две более или менее независимые возможности: 1) механизм представлений, который, как уже упоминалось в конце предыдущей главы, может использоваться для скрытия засекреченных данных от пользователей, не обладающих правом доступа, и 2) подсистема санкционированиядоступа, которая позволяет имеющим определенные привилегии пользователям избирательно и динамически предоставлять эти привилегии другим пользователям и впоследствии отменять эти привилегии, если потребуется. Механизм представлений рассматривается в разделе 9 3, а подсистема санкционирования доступа (предложения GRANT — предоставить и REVOKE — отменить) — в разделе 9.4.
Конечно, все решения относительно того, какие конкретные привилегии и каким конкретно пользователям следует предоставить, имеют политический, а не технический характер. Ясно, что они по существу находятся вне юрисдикции системы DB2. Все, что может DB2, это проводить такие решения в жизнь после того, как они были приняты. Для того чтобы DB2 была способна правильно выполнять эту функцию:
а) Результаты таких решений должны стать известными системе (это делается посредством предложений GRANTи REVOKE) и должны запоминаться системой (это делается путем сохранения их в каталоге в форме ограничений санкционирования доступа).
б) Должны иметься средства, позволяющие проверять, удовлетворяет ли данный запрос на доступ соответствующим ограничениям санкционирования доступа. Под «запросом на доступ» здесь понимается комбинация запрашиваемой операции, целевого объекта и запрашивающего пользователя. Большинство таких проверок осуществляется генератором планов прикладных задач во время связывания первоначального запроса (см. раздел 14.4).
в) Система должна быть способна решать, какие ограничения применимы к данному запросу, и поэтому распознавать источник этого запроса, т. е. распознавать, от какого конкретно пользователя исходит данный конкретный запрос. Поэтому, прежде чем перейти к обсуждению самих по себе механизма представлений и подсистемы санкционирования доступа, следует сначала что-либо сказатьоб идентификации пользователей в системе DB2 (раздел 9.2).