Защита ввода-вывода на внешний носитель

СУБД ЛИНТЕР использует внешние устройства постоянного хранения информации для размещения таблиц данных и временных рабочих файлов.

Расположение конкретного объекта БД (файла таблицы, временного рабочего файла) внутри БД однозначно идентифицируется четырехсимвольным идентификатором – ЛИНТЕР-именем устройства. ЛИНТЕР-имя используется при создании новых таблиц или изменении расположения файлов старых.

Информация о соответствии ЛИНТЕР-имени устройства и соответствующего ему реального физического устройства хранится в системной таблице $$$DEVICE (см. документ «Системные таблицы и представления», подраздел «$$$DEVICE»). Данная таблица создается администратором безопасности БД и доступна только ему.

Описание доступа к устройству (столбец $$$DESCR) включает следующие составляющие:

  1. метка доступа – набор из двух значений: RAL и WAL. Служит для принудительного контроля над созданием файлов БД (файлов таблиц и временных файлов) на описываемом устройстве:

    • RAL-уровень устройства представляет собой максимальный RAL-уровень объектов (таблиц), которые могут быть размещены на данном устройстве;

    • RAL-уровень устройства представляет собой минимальный уровень доступа пользователя (RAL-пользователя), необходимый для создания этим пользователем объектов (таблиц и временных файлов) на данном устройстве;

    • WAL-уровень устройства представляет собой максимальный WAL-уровень пользователя, необходимый для удаления таблицы;

  2. маска признаков доступа – проводится или не проводится проверка доступа к соответствующему устройству, запрещен или нет доступ к нему целиком для системы. В последнем случае все запросы на создание новых (получение информации из существующих) объектов будут отвергаться;

  3. маска разрешения доступа для групп пользователей – описываются все 250 групп.

Существует дополнительный параметр, позволяющий управлять доступом для устройств, отсутствующих в таблице устройств. Он указывает, будет ли запрашиваться информация о неописанных ЛИНТЕР-устройствах у операционной системы, или запросы на работу с данными устройствами будут отвергаться.

Для управления контролем устройств создателем БД используются следующие команды:

  1. создание устройства:

     

    CREATE [IF NOT EXISTS] DEVICE < имя устройства >

    DIRECTORY < каталог >

    [COMMENT < комментарий >]

    [LEVEL (< RAL-устройства >,< WAL-устройства >)];

    < имя устройства >

    ЛИНТЕР-имя, используемое в качестве имени устройства при указании расположения файлов создаваемых таблиц.

    < каталог >

    Символьная строка (длиной до 256 символов), определяющая местоположение (путь) (в терминах соответствующей ОС) файлов таблиц при их создании (в команде CREATE TABLE) или модификации местоположения этих файлов (в команде ALTER TABLE).

    Оператор CREATE DEVICE создает новое ЛИНТЕР-имя, которое впоследствии может использоваться в запросах на создание (модификацию) таблиц. При создании устройства может быть указан комментарий к нему (пояснение о назначении устройства) и уровни доступа к устройству.

    Опция IF NOT EXISTS отменяет выполнение оператора, если указанное ЛИНТЕР-имя устройства уже существует в БД.

  2. удаление устройства:

     

    DROP DEVICE < имя устройства >;

    Команда удаляет ЛИНТЕР-имя устройства из списка разрешенных имен.

  3. модификация параметров устройства:

     

    ALTER DEVICE < имя устройства > [DIRECTORY < каталог >]

    [LEVEL (< RAL-устройства >,< WAL-устройства >)];

    Команда позволяет изменить значение ЛИНТЕР-имени (путь к физическому устройству) и уровни защиты устройства.

При использовании операторов ALTER DEVICE и DROP DEVICE необходимо учитывать, что существующие файлы, расположенные на новых устройствах, могут стать недоступными для некоторых пользователей.

Значение (содержание) устройства SY00 определяется в момент старта системы и не может быть переопределено в произвольный каталог, но все ограничения, наложенные на него, будут выполняться обычным образом, за исключением отношений, необходимых для функционирования СУБД ЛИНТЕР и соответствующих рабочих файлов.

  1. разрешить группе/всем пользователям доступ к устройству:

     

    GRANT ACCESS ON DEVICE < имя устройства > TO {< имя группы > | ALL};

  2. запретить группе/всем пользователям доступ к устройству:

     

    REVOKE ACCESS ON DEVICE < имя устройства >

    FROM {< имя группы > | ALL};

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

  3. разрешить группе/всем пользователям доступ к незарегистрированным устройствам:

     

    GRANT ACCESS ON UNLISTED DEVICE TO {< имя группы > | ALL};

    Команда разрешает работу с ЛИНТЕР-именами устройств из доверенного окружения средствами операционной системы (СУБД будет запрашивать информацию о физическом расположении устройства у операционной системы).

  4. запретить группе/всем пользователям доступ к незарегистрированным устройствам:

     

    REVOKE ACCESS ON UNLISTED DEVICE FROM {< имя группы > | ALL};

    Команда запрещает работу с ЛИНТЕР-именами устройств из доверенного окружения средствами операционной системы.

    При использовании команды REVOKE ACCESS необходимо учитывать, что существующие объекты, расположенные на новом месте, могут стать недоступными для соответствующих групп.

    Информация о возможности работы с ЛИНТЕР-именами произвольно используемых устройств (т.е. с устройств из доверенного окружения) располагается в описании БД.