Имя: Пароль:
1C
1С v8
oData и права
,
0 dinn
 
19.06.19
15:46
Всем привет. Есть ли возможность ограничить доступ к oData пользователям? И что вообще с безопасностью в этом интерфейсе?
1 Garykom
 
гуру
19.06.19
16:03
(0) Nginx поставь как реверсивный прокси и что хочешь и как хочешь ограничивай и заодно сможешь и кешировать при необходимости.
2 dinn
 
19.06.19
16:50
Тоесть со стороны 1С никаких огрничений нет? если опубликовал стандартный oData то она становится доступен каждому пользователю базы. Возможно здесь что-то сделать без настроек веб сервера? Если выключать вывод данных пользователю, то он узнав об oData подключится к базе через Excel и скачает.(
3 Garykom
 
гуру
19.06.19
17:08
"При чтении и записи данных с помощью REST интерфейса платформа выполняет все обычные проверки прав и вызывает обработчики событий, за исключением проверки заполнения."
4 dinn
 
19.06.19
17:24
(3) Замечательно сказано. Но, по факту: публикую типовую БП КОРП, создаю пользователя с правами "Только чтение" захожу в базу, вывод контрагентов в список отключен. прохожу по ссылке под тем же пользователем ../odata/standard.odata/Catalog_Контрагенты?$format=json   и сохраняю список.
5 Вафель
 
19.06.19
17:26
если чтение есть, то по одата будет доступен
6 dinn
 
19.06.19
17:29
(5) Да, явно не доработка. В таком случае только ограничивать фаерволом или настройками веб сервера 80 порт и разрешать только определенным ip
7 dinn
 
19.06.19
17:37
При этом oData "Благодаря универсальности и кроссплатформенности мы позиционируем автоматически генерируемый REST интерфейс как основной инструмент для интеграции со сторонними системами."
8 Вафель
 
19.06.19
17:38
делай лучше отдельные сервисы и под них юзеров заводи
9 НачинающийВ1С
 
19.06.19
17:42
(0) А не вариант всех пользователей сделать на кириллице, а пользователя для одаты завести на латинице? Одата же не работает с пользователями на кириллице.
10 Вафель
 
19.06.19
17:44
(9) все прекрасно работает
11 dinn
 
19.06.19
17:44
(8) да, прийдется писать http сервис с нужными функциями в виде расширения и публиковать его. А хотелось без писанины на автоматическом rest.
12 dinn
 
19.06.19
17:46
(9) работает, хоть и ни хотелось бы
13 Garykom
 
гуру
19.06.19
18:03
(11) Ты издеваешься?
Отдельного пользователя и разруливаешь правами по доступу, прочим в odata не пускаешь.
Или ставишь Nginx и там рулишь отдельно для путей как надо, можно даже фильтрацию замутить по желанию.
Это когда вместо всех контрагентов выводят только разрешенных или фигу по центру.
14 RomanYS
 
19.06.19
18:04
А для odata не нужно право на "Внешнее соединение"?
15 Cyberhawk
 
19.06.19
18:05
Проще профиль свой создать под пользователя
16 Anarki
 
19.06.19
18:10
О, знатоки Одаты собрались! Срошу здесь)
Я правильно понял что в запросной строке нельзя одновременно наложить filter и select?
Допустим я хочу выбрать организацию с ИНН = "11111111111111" и вернуть только ссылку:
http://192.168.1.1/MyBase1c/odata/standard.odata/Catalog_Организации?$filter=ИНН eq '11111111111111'?$select=Ref_Key
В ответ упорно приходят все поля. На ИТС тоже нигде не нашел ни примера, ни упоминания о совместном использовании filter и select.
17 Cyberhawk
 
19.06.19
18:14
Так найтись-то может больше одной записи
18 dinn
 
19.06.19
18:14
(13) "Отдельного пользователя и разруливаешь правами по доступу, прочим в odata не пускаешь."  - не работают так права на oData. Да, веб сервером можно рубануть по ip. (14) "Внешнее соединение" - необходимо для обмена БП <-> ЗУП например.
19 Cyberhawk
 
19.06.19
18:17
(18) "не работают так права на oData" // Он тебе про то, что опубликовать одату под алиасом, к которому (на веб-сервер) можно обратиться только под одним каким-то пользователем, а не про пользователей ИБ
20 Cyberhawk
 
19.06.19
18:19
+(17) Если фильтр по гуиду, то селект работает
21 dinn
 
19.06.19
18:22
(19) ок, понятно, Basic аутентификация на 80 порт, тоже вариант, спасибо
22 dinn
 
19.06.19
18:40
(11) да и на старых упп нет расширений, так что http сервис сработает только для новых кофигураций.
23 Сияющий в темноте
 
19.06.19
18:58
Нет,ну а что вы хотите,если есть право на чтение,то все и прочитает,а если право на чтение не дать,то зачем тогда одата нужен?
можно посмотреть как Rls на одата работает.
но,ограничение на чтение полей работают только в формах,где эти поля используются,а в запросах работает ограничение на уровне записей.
24 RomanYS
 
19.06.19
19:06
(18) для обмена можно создать специального пользователя. Если есть права на внешнее соединение и чтение, то это уже дыра. Независимо от публикации odata
25 dinn
 
19.06.19
21:32
(23) Хочу роль у которой можно указать доступ к odata и дать ее одному пользователю ИБ для обменов. Да, в идельном мире RLS тоже должны работать, вдруг другой пользователь может выводить данные но не все, он подключит Excel, Power BI и тд.
26 dinn
 
19.06.19
21:34
(24) Дыры нет, запуск внешних обработок отключен. Стандартный обмен настроен в папку с доступом только под пользователем сервера 1С. Пользователь только жмет кнопки, к файлам обмена у него доступа нет.
27 Garykom
 
гуру
19.06.19
22:04
Хочешь защиту делаешь свой http-сервис "обертку" или иначе "прокси", который имеет полный доступ к odata 1С на снаружи пускает только кого надо и к тому чему надо.
28 Garykom
 
гуру
19.06.19
22:05
(27)+ В смысле на чем угодно вне 1С это делаешь.
Предлагаю делать на Go там это очень просто и компилируется в обычный exe или можно win-службу сделать.
29 Garykom
 
гуру
19.06.19
22:07
(28)+ Но это можно и средствами apache или nginx попробовать урезать, хотя и гибкости маловато.
30 RomanYS
 
19.06.19
22:34
(26) При чём здесь стандартный обмен и запуск обработок? Ну подключится он через COM и сольёт всё что может прочитать.

(25) В чём проблема? В новых типовых право на внешнее соединение выделено в отдельную роль.
31 dinn
 
20.06.19
10:41
(30) Верно. Проблема только в том, что нельзя ограничить odata отдельно от остальных интерфейсов.
32 ptiz
 
20.06.19
10:46
А разве нельзя опубликовать несколько точек входа oData? Каждой точке входа - свои права (свой юзер в vrd-файле). Конечно, набор таких точек входа будет фиксирован, например, по филиалам.
33 RomanYS
 
20.06.19
10:48
(31) Так другие внешние интерфейсы ты точно также не можешь ограничить. Поэтому просто не давай права на внешнее соединение пользователем с клиентским доступом. Для внешней интеграции используй специальных служебных пользователей.
34 PR
 
20.06.19
10:54
(4) Ты точно здоров?
Что такое "Вывод контрагентов в список" и почему невозможность выполнения этой функции должно вдруг помешать браузеру получить через запрос список контрагентов и вывести тебе полученный результат?
Может тебе сначала чуть подразобраться в том, что такое роли 1С и как они работают?
35 PR
 
20.06.19
10:57
(31) Ты бредишь
Что за чушь ты несешь?
36 PR
 
20.06.19
11:02
Завтра надо было заводить ветку, поржали бы и с ТС и с собравшихся икспердов :))
37 dinn
 
20.06.19
11:10
(34) проходите мимо
38 Garykom
 
гуру
20.06.19
11:51
(36) Мы уже с вашей ветки поржали, отойти не можем.
39 PR
 
20.06.19
11:53
(38) Отойдешь, не переживай. Попозже. Все мы отойдем. Когда-нибудь.
40 RomanYS
 
20.06.19
12:15
(36) Завтра у тебя похоже похмелье будет. Ты не ту ветку апнул))
41 dinn
 
20.06.19
12:27
(32) в .vrd файле помоему ничего о пользователях не определяется https://its.1c.ru/db/v837doc#bookmark:adm:TI000000379
42 Cyberhawk
 
20.06.19
13:41
(41) В атрибуте "ib" можно указать пользователя ИБ, используемого по умолчанию. Тогда этот опубликованный алиас не будет "запрашивать" аутентификацию и все будет работать строго под этим одним указанным пользователем. Я ж в (19) про это писал.
43 Cyberhawk
 
20.06.19
13:42
+(42) По факту делаешь так, чтобы в алиас, где одата открыта, можно было авторизоваться только под одним пользователем ИБ, прописанным в этом алиасе (vrd)
44 Cyberhawk
 
20.06.19
13:43
А саму базу (для тонкого / веб-клиента) публикуешь под другим алиасом, где одата закрыта и где никакой пользователь ИБ в атрибуте "ib" не прописан.