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

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

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

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