Вход | Регистрация

1С:Предприятие ::

Метки: безопасность

Механизм Row Level Security - проблемы...

Ø [Волшебник, 30.12.04 - 08:28]
Я
   Eugene G
25.05.04 - 06:18
Подмимал данную тему на Т1С, но там народ, что-то не активно мне отвечал, и в основном "чем бы дитя не тешилось...", может Волшебник чем поможет, цитирую полностью:
-----------------------------
Тема: "Как я сделал убогую RLS"
Сразу отмечу, что слово "убогую" относится не к "RLS", а к "сделал".
Для тех, кто еще не в курсе про механизм Row Level Security - читайте в инете (www.polikom.ru/main/stati/stat_security_rls.htm).
Я расскажу о том, что у меня получилось, не с целью похвалится, а с надеждой, что кто-нибудь подскажет как сделать лучше.
По шагам:
1) Патчим bkend.dll, чтобы пользователи могли коннектится к SQL серваку под своими NT логинами - в текстом редакторе открываем bkend.dll и заменяем строку "UID=%s;PWD=%s;"
на "UID=;PWD=; " (так как написано в статье ToyPaul, http://1csql.udmnet.ru/articles/article.shtml?admin/st0006)
2) Патчим 1cv7.exе: отключаем верификацию таблиц на входе первого пользователя, с помощью Soaron'a
 Дальше собственно RLS, вначале на справочники:
1) переименовываем нужные справочники, с помощью EM, например, sc33 в _sc33
2) создаем новое поле в этих справочниках, скажем, User_ID, типа Varbinary(85)
3) создаем для наших справочников view: в select выбираем все колонки, кроме вновь созданной
4) накладываем на view условие: WHERE User_ID=SUSER_SID(SUSER_SNAME())
  (SUSER_SID - возвращает "код" пользователя, типа varbinary(85))
5) для таблиц _scXX, создаем триггер на вставку, который при вставке записи, записывает
пользователя, которым произведено добавление. Код триггера:
 CREATE TRIGGER TestTrigerSC33 ON [dbo].[_SC33]
 AFTER INSERT
 AS
 set nocount on
  UPDATE _SC33
  SET User_ID = SUser_SID(SUser_SName())
  FROM _SC33
 JOIN INSERTED ON _SC33.ID = INSERTED.ID
6) все. наслаждаемся эффектом, теперь пользователи могут работать только со своими записями.
На подчиненных справочниках, как я и думал, тоже все отработало без проблем.
 Теперь RLS по документам, собственно все тоже самое:
1) переименовываем _1sjourn, например, в __1sjourn
2) добавляем поле User_ID
3) Создаем на основе __1sjourn view - _1sjourn с условием
4) вставляем триггер
5) вот и все - пользователи видят только свои документы.
Теперь проблемы:
1) То что, патчится dll и exe - это очень плохо. Товарищи Поликомовцы как-то это обошли.
Вопрос как?
2) При любой модификации md файла (c turboMD только при изменении структуры базы)
потребуется восстанавливать исходную структуру базы - удалять лишние поле, и назад
переименовывать их. Для этого можно написать автоматическое средство.
А может можно как-то лучше?
Вот такая лажа получилась у меня. Замутил это я для сдачи диплома, т.е. диплом это конфа
под 1С, а специальность требует, чтобы в разработанном программном продукте была подсистема
защиты.
Кто понял о чем была речь, просьба высказаться. Любая критика или замечания (а лучше советы) приветствуются.
зы. Предзащита в среду.
зыы. Возможно сразу не смогу ответить, поскольку буду ездить по работам, да в ВУЗ, но
-----------------------------
+ еще косяк - поиск по индексированному полю не работает, 1С вываливается с ошикой состояния курсора :((
 
 
   Eugene G
1 - 25.05.04 - 10:41
Up!
Неужели Волшебник ничего не скажет?
   Волшебник
 
2 - 25.05.04 - 10:43
(1) Мне такие темы неинтересны.
   Eugene G
3 - 25.05.04 - 10:44
Если не секрет, Why?
   Волшебник
 
4 - 25.05.04 - 10:46
(3) Я прикладник, а не системщик.
   Eugene G
5 - 25.05.04 - 10:48
Разве программирование на t-sql относится к системному программированию?
   Волшебник
 
6 - 25.05.04 - 10:51
С точки зрения 1С - да. Копаться во внутренней структуре таблиц 1С хоть и интересно, но не рекомендуется, потому что можно что-нибудь случайно испортить.
   Eugene G
7 - 25.05.04 - 10:54
Ясна, позиция...
   Ёжик в тумане
 
8 - 30.12.04 - 00:35
Честно говоря, недопонял, за что ветка удостоилась БЗ?
Разве что, в назидание потомкам?
   Системщик
9 - 30.12.04 - 00:58
(8) Потомки тут каким боком?
Если темой Волшебник не владеет, она ему не интересна.
Потому и в базу знаний.
   Ёжик в тумане
 
10 - 30.12.04 - 01:23
(9) Такая логика мне в голову не приходила даже в тумане..
 
  Рекламное место пустует
   Maniac
 
11 - 30.12.04 - 01:40
у системщиков ночью плохо с логикой
   romix
 
12 - 30.12.04 - 01:48
(8) Потому что тема серьезная.
(0) В 8.0 может быть это уже сделано?
Там же есть сервер приложений, и в нем можно проверять всякие события...
   Системщик
13 - 30.12.04 - 06:45
У Маньяков она вообще отсутствует


Список тем форума
  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует