|
Используем безопасность на уровне строк таблиц (Row-level Security)
|
|||
---|---|---|---|
#18+
В версии Caché 2007.1 появилась возможность управлять в SQL безопасностью на уровне строк таблиц (Row-level Security). Это реализуется следующим образом: появляется системный столбец, который содержит список ролей и/или пользователей, которые имеют доступ к каждой строке таблицы. Когда выполняется запрос пользователь должен иметь хотя бы одну роль, для того чтобы увидеть строку. Как правило, список ролей вычисляется на основании данных таблицы и при изменениях строки автоматически вычисляется новый список ролей. За счет индексирования системного столбца безопасность на уровне строк таблиц лишь незначительно уменьшает производительность SQL. Вот небольшой пример: 1. Создайте класс Test.RowLevelSecurity Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
3. Сгенерируйте тестовые данные: Do ##class(Test.RowLevelSecurity).Populate(1000) 4. Зайдите в портал управления под пользователем Vadim и выполните SQL-запросы: select * from Test.RowLevelSecurity select count(*) from Test.RowLevelSecurity Вы должны увидеть все 1000 строк, которые Вы сгенерировали. 5. Зайдите в портал управления под пользователем _System и выполните SQL-запросы: select * from Test.RowLevelSecurity select count(*) from Test.RowLevelSecurity Вы должны увидеть только строки, которые начинаются на “S” и получить количество таких строк. Есть возможность использовать безопасность на уровне строк таблиц и для существующих таблиц. Подробности в документации. Обратите внимание, что безопасность на уровне строк таблиц работает только на уровне SQL и не работает при прямом или объектном доступе. Вадим ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2008, 15:54 |
|
Используем безопасность на уровне строк таблиц (Row-level Security)
|
|||
---|---|---|---|
#18+
VadimF, С одной стороны, говорится о трех способах доступа к одним и тем же данным. С другой, по нескольким причинам, и теперь к ним добавилась еще одна, в конкретном "приложении" приходится использовать один способ доступа): Например, если вашему "приложению" нужна "безопасность на уровне строк", то нельзя использовать объектный доступ, так как он "рассекретит данные"): Нельзя ли как-то ясно изложить мнение IS? И в целом, и по каждому аспекту неравнозначности доступов): Считают ли, например, в IS, что "безопасность на уровне объекта класса" невозможна?): ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2008, 01:46 |
|
Используем безопасность на уровне строк таблиц (Row-level Security)
|
|||
---|---|---|---|
#18+
БредС одной стороны, говорится о трех способах доступа к одним и тем же данным. С другой, по нескольким причинам, и теперь к ним добавилась еще одна, в конкретном "приложении" приходится использовать один способ доступа): Например, если вашему "приложению" нужна "безопасность на уровне строк", то нельзя использовать объектный доступ, так как он "рассекретит данные"):В Cache' за счет использования единой архитектуры данных для выборки данных используется SQL. Сценарий, который используется крайне часто, - выборка данных с помощью SQL, затем работа с каждым объектом, используя объектный подход. Например при создании Web-приложения на ZEN такой подход можно применять. Безопасность на уровне строк таблиц упростит создания собственной модели безопасности на уровне приложения при таком подходе. БредНельзя ли как-то ясно изложить мнение IS? И в целом, и по каждому аспекту неравнозначности доступов): Считают ли, например, в IS, что "безопасность на уровне объекта класса" невозможна?):Многие партнеры-разработчики (например, ДВ-Софт или SolidWorks) реализовали подобные механизмы в своих приложениях и могут управлять доступом на уровне объектов, используя уникальные для своих приложений алгоритмы. Вы задаете очень интересный вопрос, но так как он лишен конкретики, на него сложно ответить. Доступы к данным в Cache' разные и обладают разными свойствами. В разных случаях имеет смысл применять ту или иную комбинацию. Не готов формулировать позицию InterSystems по Вашему глобальному вопросу. Посмотрите презентации на тему безопасности на Devcon 2008 : Using Caché’s Security Features ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2008, 15:52 |
|
Используем безопасность на уровне строк таблиц (Row-level Security)
|
|||
---|---|---|---|
#18+
VadimF, Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2008, 19:37 |
|
Используем безопасность на уровне строк таблиц (Row-level Security)
|
|||
---|---|---|---|
#18+
Есть такой класс с роу-секьюрити: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2008, 14:58 |
|
Используем безопасность на уровне строк таблиц (Row-level Security)
|
|||
---|---|---|---|
#18+
mysРоу секьюрити работает замечательно. Есть класс связанный с классом указанным выше отношением один ко многим. Возможно ли сделать проверку роу секьюрити у второго класса как указано ниже? Если да, то как. У меня не получилось.Можно. Например, так: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2008, 10:58 |
|
|
start [/forum/topic.php?fid=39&msg=35504014&tid=1556399]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 138ms |
0 / 0 |