Рефераты | Рефераты по информатике, программированию | Row-Level Security в РСУБД | страница реферата 3 | Большая Энциклопедия Рефератов от А до Я
Большая Энциклопедия Рефератов от А до Я
  • Рефераты, курсовые, шпаргалки, сочинения, изложения
  • Дипломы, диссертации, решебники, рассказы, тезисы
  • Конспекты, отчеты, доклады, контрольные работы

  • В принципе, тот же самый результат можно получить и другими способами. Например, вот такое выражение SQL отражает те же самые правила:

    case

     when ReportDate > DateAdd(month, GetDate(), 1) then false

     when ReportDate > DateAdd(month, GetDate(), 6) then

      IsUserInRole('senior_analyst')

     else IsUserInRole('junior_analyst')

    end

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

    (IsUserInRole(<role1>) AND <role1_restrictions>)

     OR

    (IsUserInRole(<role2>) AND <role2_restrictions>)

     OR ...

    (IsUserInRole(<roleN>) AND <roleN_restrictions>)

    Таким образом, предикат определяет для каждой группы пользователей требования, которым должна удовлетворять строка таблицы, чтобы доступ к ней был разрешен.

    Лишение доступа

    Форма предиката безопасности, рассмотренная выше, подразумевает «пессимистичный» режим, т.е. доступ к данным имеют только те категории пользователей, которые явно перечислены в предикате.

    ПРИМЕЧАНИЕ

    Строго говоря, если мы не опишем ни одного правила, то предикат будет пустым и доступ получат все пользователи. Однако выдача таким способом доступа хотя бы одной роли автоматически лишит доступа всех остальных пользователей. Решить эту проблему можно раз и навсегда - введя дополнительный член ...OR FALSE в предикат безопасности. Однако подобный вырожденный случай нетрудно обработать специальным образом, и далее в тексте везде предполагается наличие в списке доступа хотя бы одного явного разрешения.

    Иногда удобнее описывать правила безопасности в терминах «оптимистичного» режима, т.е. лишить доступа только некоторое множество пользователей. В этом случае предикат приобретет такой вид:

    NOT

    (

     (IsUserInRole(<restricted_role1>) [AND <restricted_role1_restrictions>])

      OR ...

     (IsUserInRole(<restricted_roleN>) [AND <restricted_roleN_restrictions>])


    Рекомендуем скачать другие рефераты по теме: оценка реферата, диплом анализ.



    Предыдущая страница реферата | 1  2  3  4  5  6  7  8  9  10 |




    Поделитесь этой записью или добавьте в закладки

       




    Категории:



    Разделы сайта




    •