Уровни мандатного доступа к объектам БД

Функция

Задает RAL/WAL-уровни мандатного доступа для объектов БД (таблиц, представлений и т.п.) в текущем соединении с ядром СУБД ЛИНТЕР.

Примечание

Поддерживается только в СУБД ЛИНТЕР БАСТИОН.

Спецификация
   
< уровни мандатного доступа к объектам БД >::=
SET SESSION SECURITY
#[группа]#[RAL]#[WAL]
Общие правила
  1. В отличие от команды set session default security, данная команда влияет не на метки доступа в INSERT/UPDATE-запросах, а устанавливает в канале метку доступа для работы с объектами БД (таблицами, представлениями и т.п.). По умолчанию эта метка берётся из описателя пользователя, выполняющего данную команду.

  2. Команда распространяется на все открытые дочерние каналы (которые уже открыты ранее или будут открыты впоследствии).

  3. Устанавливаемые командой уровни чтения и записи должны быть не меньше текущего уровня записи – это условие должно выполняться для каждого вызова команды (в случае, если для одной и той же сессии команда вызывается многократно), т.е. понижать уровни (даже до их первоначальных значений) запрещается.

  4. Если ранее в канале по команде set session default security были установлены метки доступа для INSERT/UPDATE-операций, то данная команда отменяет их и устанавливает новые значения этих меток по умолчанию в соответствии с метками доступа, задаваемыми для объектов БД в команде session default security.

  5. Если в команде не задана группа или уровень доступа, то используется либо значение по умолчанию ядра СУБД ЛИНТЕР, либо значения, указанные в ранее выполненной команде set session default security либо set session security.

    CREATE LEVEL "НЕСЕКРЕТНО"   = 1;
    CREATE LEVEL "ДСП"          = 2;
    CREATE LEVEL "СЕКРЕТНО"     = 3;
    CREATE LEVEL "СОВ.СЕКРЕТНО" = 4;
    
    create GROUP GROUP1;
    create GROUP GROUP2;
    
    grant DBA to A identified by '12345678';
    
    alter user A LEVEL("ДСП", "ДСП");
    alter user A group GROUP2;
    username A/12345678
    
    set session default security ##"СЕКРЕТНО"#"СЕКРЕТНО";
    
    set session default security #GROUP1#"СЕКРЕТНО"#"СЕКРЕТНО";
    
    set session security ##"НЕСЕКРЕТНО"#"СОВ.СЕКРЕТНО";
    
    set session security ###;
    
    set session security ###"СОВ.СЕКРЕТНО";
    
    !6 error 1070 (we can not change group):
    set session security #GROUP1#"НЕСЕКРЕТНО"#"СОВ.СЕКРЕТНО";

  6. При попытке сменить группу будет выдан код завершения 1070 «Нарушение мандатного доступа» (т.е. нельзя работать в чужой группе).