Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как запретить тестовой базе 1C подключаться к внешней базе SQL

Как запретить тестовой базе 1C подключаться к внешней базе SQL
Я
   Антиквар
 
23.11.21 - 16:21
Всем привет!
Есть база 1С и внешняя база SQL, в которую 1С постоянно лазает и читает/пишет в кучу разных таблиц. Это делается не только регламентными заданиями, но ещё и по нажатию разных кнопок.
Лазает 1С напрямую, через COM-объект. Настройки подключения заданы в базе 1С.
Проблема в том, что если сделать копию базы, то из неё также можно лазать во внешнюю базу SQL, менять во внешней базе данные или загружать данные из неё. Можно конечно удалять настройки в копиях, но не всегда ты знаешь когда админ сделал копию для кого-то, да и забыть можно.

Какой наиболее оптимальный способ, чтобы был запрет во внешней базе SQL на чтение/запись из тестовых баз?
Можно ли реализовать средствами SQL, или это нужно в 1С как-то продумывать.
Просьба не предлагать перейти на более современные технологии взаимодействия (не через COM), в этой базе всё будет так, до перехода на новую базу
   Мультук
 
1 - 23.11.21 - 16:22
(0)
Сильно внешняя? На другом сервере? Firewall ?
   pechkin
 
2 - 23.11.21 - 16:24
сделай юзера ИмяСервере+ИмяБазы.
сам логин не храни, а генерируй
   ДенисЧ
 
3 - 23.11.21 - 16:27
В БСП же есть функциональность запрета на доступ к внешним ресурсам... Проверяй и не давай.
   Смотрящий
 
4 - 23.11.21 - 16:28
(0) поройся в коде 1с, нади где там она определяет "КОПИЯ" для базы и отрубает регламенты
Привяжи кнопки свои к этому событию и подменяю юзера для SQL
   ДенисЧ
 
5 - 23.11.21 - 16:28
А если не БСП - оттуда же можно спереть кодо
   fisher
 
6 - 23.11.21 - 16:30
(4) Достаточно просто при запуске определять что это копия и херить параметры подключения.
   fisher
 
7 - 23.11.21 - 16:31
ИМХО, со стороны сиквела тут ничего не придумаешь. Неясно даже по какому критерию блочить.
   timurhv
 
8 - 23.11.21 - 16:33
(3) Защита от дурака в (2) лучше предложена, пользователь может нажать база перемещена.
   fisher
 
9 - 23.11.21 - 16:34
(8) И правда. Не обратил внимания.
   Антиквар
 
10 - 23.11.21 - 16:36
(1) Да, на другом сервере. Сетка внутри одной большой организации
(2) Хорошая идея, согласятся ли разрабы на стороне той SQL-базы. Юзеров они нам дают.
(6) Тоже норм, но для тестов разработчиков есть отдельный сервер, и там параметры нужны) Но надо подумать
   Антиквар
 
11 - 23.11.21 - 16:37
(7) ну вот по (2). Завести на сиквеле юзеров для 1С.
   fisher
 
12 - 23.11.21 - 16:41
(10) > Хорошая идея, согласятся ли разрабы на стороне той SQL-базы
Можно завести соответствие имени базы в кластере логину подключения.
Получаешь из строки подключение имя текущей базы в кластере и если не находишь соответствующего ей логина - то не подключаешься.
   fisher
 
13 - 23.11.21 - 16:42
Короче, достаточно в справочник параметров подключения добавить имя базы в кластере 1С, для которого это подключение имеет право устанавливаться.
   Kassern
 
14 - 23.11.21 - 16:44
(0) Если на одном кластере, то ИмяБазы=НСтр(СтрокаСоединенияИнформационнойБазы(), "Ref"), если она не совпадает с именем рабочей базы, то по бороде обмен. Имя рабочей базы можете в каких-нибудь настройках админских хранить.
   Kassern
 
15 - 23.11.21 - 16:45
(14) Можно и в связке с именем сервера проверять. Это конечно не дает какой-то ппц защиты, но сможет случайные обмены исключить из копии.
   Антиквар
 
16 - 23.11.21 - 16:47
Спасибо, понял
   ДенисЧ
 
17 - 23.11.21 - 16:49
(8) Дураков нужно отстреливать, а не защищаться от них.
Лучшая защита это нападение.
   Kassern
 
18 - 23.11.21 - 16:52
(8) поэтому лучше в кластере отключить рег задания для копии базы.
   Антиквар
 
19 - 23.11.21 - 17:05
(18) Это само собой, но не поможет, т.к. есть тупо кнопки, забирающие документы в 1С например
   Kassern
 
20 - 23.11.21 - 17:07
(19) все эти подключения по кнопке надеюсь к одной процедуре/функции подключения ссылаются? Вот в ней и сделать проверку на соответствие строки базы с настройками.
   Антиквар
 
21 - 23.11.21 - 17:17
(20) Да, в одной процедуре. Только баз несколько ) Но один раз можно в каждой базе это сделать конечно
   vs84
 
22 - 23.11.21 - 17:21
(0) Константа ПутиПодключенияКРабочейБазе, там перечислить путь(пути) подключения к рабочей
метод где-то в общих модулях БазаРабочая(), который проверяет вхождение пути подключения текущей базы в значение константы.
Там где код лезет наружу добавить Если .БазаРабочая() Тогда

во всех копиях рабочей, будет указан путь рабочей и они автоматом будут нерабочие.
   vs84
 
23 - 23.11.21 - 17:22
(22) + "метод где-то в общих модулях" добавить
   Михаил Козлов
 
24 - 23.11.21 - 17:27
Наверное, криво, делал так:
Если ПараметрыСеанса.РаботаСВнешнимиРесурсамиЗаблокирована = ИСТИНА Тогда Возврат; КонецЕсли;
   ДедМорроз
 
25 - 23.11.21 - 19:47
Можно посмотреть блокировку регламентных заданий и определение перемещения базы и задействовать этот механизм и для своих вызовов.
   Megas
 
26 - 24.11.21 - 10:03
(14) + у нас так и реализовано.
Есть Параметры 
- имя рабочей базы
- имена рабочих серверов.

И всё это сверяется с текущими значениями перед коннектами, выгрузками и даже рег заданиями (были умельцы которые не ставили галку блокировка рег заданий на копии)
   УдавВПопугаях
 
27 - 24.11.21 - 10:22
(19) копия обычно для разработчика, не надо нажимать тупо кнопки и все, а в консоли галка с блокировкой регламентных


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