Чем аутентификация средствами 1с предприятия отличается от аутентификации операционной системы
Настройка веб-серверов для работы с «1С:Предприятием»
1. Общая информация
Версия IIS Версия операционной системы
IIS 5.1 Windows XP Professional
IIS 6.0 Windows Server 2003 или Windows XP Professional x64 Edition
IIS 7.0 Windows Vista или Windows Server 2008
IIS 7.5 Windows 7 или Windows Server 2008 R2
IIS 8.0 Windows 8 или Windows Server 2012
IIS 8.5 Windows 8.1 или Windows Server 2012 R2
IIS 10.0 Windows 10
2. Общие требования
На компьютере, где выполняется публикация, должен быть установлен и настроен поддерживаемый веб-сервер. Для установки веб-сервера Internet Information Services может потребоваться дистрибутив используемой операционной системы. При установке веб-сервера необходимо обязательно установить поддержку ISAPI расширений. Для установки веб-сервера требуются административные привилегии на компьютере, на который будет установлен требуемый веб-сервер. Публикация может выполняться двумя способами:
● С помощью диалога публикации на веб-сервере, если на компьютере с веб-сервером имеется возможность запустить конфигуратор необходимой разрядности.
● С помощью утилиты webinst.( Вызывать утилиту webinst следует из каталога bin 32-разрядной версии «1С:Предприятия»)
Для выполнения публикации на веб-серверах необходимы административные привилегии на компьютере, где выполняется публикация:
● Для ОС Windows Vista и старше, чтобы выполнить публикацию, следует запускать конфигуратор с помощью пункта Запуск от имени администратора контекстного меню приложения или программы запуска. Если публикация выполняется с помощью утилиты webinst, то от имени администратора должна быть запущена или сама утилита, или интерпретатор командной строки Windows.
● Для ОС Linux, чтобы выполнить публикацию, следует получить права суперпользователя (пользователь root) с помощью команды su или запускать приложение, которое выполняет публикацию, с помощью команды sudo.
При попытке выполнить публикацию система проверяет наличие необходимых привилегий для выполнения операции. Если привилегий текущего пользователя недостаточно для выполнения публикации, то:
Публикация возможна только в том случае, если «1С:Предприятие» расположено на компьютере с веб-сервером.
Для веб-сервера IIS 7.x и старше не поддерживается публикация в том случае, если свойство Каталог (или параметр dir утилиты webinst) указывает на каталог %SYSTEMDRIVE%\Inetpub\wwwroot.
ПРИМЕЧАНИЕ. Для работы с конфигурацией через веб-сервер конфигурация не должна быть пустой.
3. Виды публикации
3.1. Общая схема публикации
Общая схема публикации выглядит следующим образом:
● выполняется регистрация модуля обработки запросов (модуля расширения веб-сервера), соответствующего веб-серверу;
● на веб-сервере регистрируется виртуальное приложение;
● создается каталог виртуального приложения, и в нем размещается файл default.vrd и выполняется его настройка;
● для пользователей назначаются права на каталог с файлом базы данных (только для файлового варианта).
Для публикации веб-клиента следует использовать версию «1С:Предприятия», использующуюся для работы с информационной базой, к которой планируется получить доступ с помощью веб-клиента. Если на компьютере установлены две версии, например, 8.3.3.100 и 8.3.3.150 и запущен сервер «1С:Предприятия» версии 8.3.3.150 , то для публикации следует использовать конфигуратор или утилиту webinst ровно этой же версии.
При выполнении публикации следует помнить, что разрядность регистрируемого расширения веб-сервера должна совпадать с разрядностью самого веб-сервера.
Рис. 1. Публикация на веб-сервере
Затем следует выполнить следующие действия:
● Ввести имя виртуального каталога в поле Имя , при этом имя виртуального каталога может состоять только из символов латинского алфавита.
● В поле Веб-сервер указать тип веб-сервера, для которого выполняется публикация.
● В поле Каталог указать физическое местоположение каталога, в котором будут расположены файлы, описывающие виртуальный каталог. При использовании веб-сервера Apache имя каталога должно состоять только из символов латинского алфавита.
● В зависимости от необходимости установить флажки Публиковать тонкий и веб-клиент и Публиковать Web-сервисы .
● Для веб-сервера IIS можно указать необходимость выполнять аутентификацию на веб-сервере средствами ОС.
● При необходимости выбирать Web-сервисы, которые необходимо опубликовать. Колонка Адрес может быть изменена. В данной колонке задается синоним Web-сервиса. Обращение к Web-сервису возможно как по имени, так и по синониму.
● При необходимости – выполнить настройки остальных параметров публикации.
● Нажатие кнопки Опубликовать запускает процесс публикации. Нажатие кнопки Отключить выполняет удаление публикации с выбранного веб-сервера.
После выполнения публикации будет предложено перезапустить веб-сервер в следующих случаях:
● изменилась версия «1С:Предприятия»;
● изменился путь к модулю расширения веб-сервера;
● выполнена новая публикация для веб-сервера Apache;
● выполнено отключение публикации.
При использовании анонимной аутентификации и файловой информационной базы, при выполнении публикации происходит проверка наличия прав доступа на каталог информационной базы у пользователя, от лица которого выполняется анонимный доступ. Если пользователь не обладает необходимыми правами, выдается предупреждение о невозможности работы с этой информационной базой через веб-сервер. Рекомендуется или дать права на каталог с информационной базой, или установить флажок Использовать аутентификацию операционной системы на веб-сервере.
Если публикация из конфигуратора недоступна (например, при использовании 64-разрядной ОС Windows), публикацию можно выполнить с помощью
утилиты командной строки webinst, которая доступна в ОС Windows и Linux в обеих разрядностях. Далее будет подробно описан диалог публикации и
ключи командной строки утилиты webinst.
3.2. Диалог публикации
Диалог публикации служит для создания публикации или подготовки файла-шаблона для публикации с помощью утилиты webinst (с использованием параметра командной строки -descriptor).
Все параметры, которые можно редактировать при создании публикации, размещены на двух закладках. Рассмотрим их подробнее.
3.2.1. Кнопки диалога
Кнопка Опубликовать выполняет публикацию на веб-сервере. При публикации происходит создание каталога на диске и настройка указанного веб-сервера для работы с «1С:Предприятием». Следует помнить, что публикация на веб-сервере IIS всегда выполняется для веб-сайта по умолчанию ( Default Web Site ) и для пула приложений по умолчанию ( DefaultAppPool ).
Под ОС Linux выполняются следующие действия:
● Для каталога, в котором расположен файл default.vrd , в качестве группы-владельца устанавливается группа пользователя, от имени которого работает веб-сервер;
● Для файла default.vrd устанавливается доступ по чтению для группы, включающей пользователя, от имени которого работает веб-сервер.
В случае публикации файловой информационной базы, для каталога с файлом информационной базы в качестве группы-владельца устанавливается группа пользователя, от имени которого работает веб-сервер, а также настраивается наследование группы-владельца для обеспечения работы с информационной базой .
Рис. 2. Публикация на веб-сервере
Кнопка Отключить выполняет удаление приложения из веб-сервера и каталога публикации, если это необходимо.
Кнопка Сохранить выполняет сохранение параметров, указанных в диалоге публикации на веб-сервере, в файл. При сохранении система запрашивает имя и место расположения файла, в который будет выполнено сохранение. Сохранение будет выполнено в формате файла default.vrd . С помощью этой команды можно создавать файлы шаблонов, которые будут использоваться в качестве параметра -descriptor утилиты webinst. В качестве значений атрибутов ib и base элемента point будут записаны параметры той информационной базы, из которой выполняется сохранение файла.
Кнопка Загрузить позволяет загрузить для редактирования произвольный файл default.vrd. При загрузке игнорируются атрибуты ib и base элемента point загружаемого файла.
Кнопка Закрыть выполняется закрытие диалога.
Кнопка Справка открывает окно со справочной информацией о диалоге публикации.
3.2.2. Закладка «Основные»
3.2.2.1. Общие параметры
Рис. 3. Публикация на веб-сервере. Основные
На данной закладке можно задать основные параметры публикации.
Имя. Указывает имя публикации. При публикации с помощью утилиты webinst описывается параметром -wsdir . В файле default.vrd соответствует атрибуту base элемента point.
Веб-сервер . Указывает, для какого веб-сервера выполняется публикация. Веб-сервера Apache добавляются в список в том случае, если они обнаружены на компьютере. При публикации с помощью утилиты webinst , используемый веб-сервер указывается одним из параметров iis, apache2 , apache22 или apache24 . При работе в ОС Linux возможна публикация только для веб-сервера Apache.
В том случае, если система не смогла однозначно определить версию установленного на компьютере веб-сервера Apache (2.2 или 2.4), в списке будут присутствовать обе версии веб-сервера. При этом следует учитывать, что для веб-сервера Apache версии 2.2 и 2.4 различаются изменения, выполняемые в конфигурационном файле веб-сервера. Поэтому неверное указание версии веб-сервера приведет к неработоспособности публикации.
Каталог . Указывает физический каталог на диске, в котором будет находиться файл default.vrd и куда будет отображен виртуальный каталог веб-сервера. Каталог должен существовать. При публикации с помощью утилиты webinst описывается параметром -dir.
Публиковать тонкий и веб-клиент . Отвечает за возможность работы с опубликованной информационной базой с помощью тонкого и веб-клиента. Если флажок установлен, возможна работа с опубликованной информационной базой с помощью тонкого и веб-клиента. В файле default.vrd соответствует атрибуту enable элемента point .
Публиковать стандартный интерфейс OData . Отвечает за возможность получения доступа к стандартному интерфейсу OData прикладного решения. Подробнее механизм стандартного интерфейса OData описан в книге 1С:Предприятие 8.3. “Руководство разработчика”. В файле default.vrd соответствует атрибуту enableStandardOData элемента point .
Публиковать дистрибутив . Определяет возможность получения и установки клиентского приложения в том случае, если не совпадают версии клиентского приложения и сервера. В качестве дистрибутива используется zip-архив, полное имя которого указывается в качестве значения свойства Расположение публикуемого дистрибутива. В файле default.vrd эти свойства соответствуют атрибуту pubds t элемента point . В архиве должен
располагаться дистрибутив клиентского приложения. При установке будут использоваться параметры установки, указанные в файле 1cestart.cfg (аналогично обычной установке клиентского приложения).
Использовать аутентификацию операционной системы. Разрешает системе установить возможность аутентификации ОС на веб-сервере IIS.
Адрес перехода при окончании работы веб-клиента позволяет указать URL, на который будет выполняться переход после окончания работы веб- клиента. В файле default.vr d соответствует элементу exitURL .
3.2.2.2. Закладка Web-сервисы
Рис. 4. Публикация Web-сервисов
Публиковать Web-сервисы . Установка данного флажка приведет к тому, что будут опубликованы Web-сервисы, созданные в конфигурации и перечисленные в таблице, расположенной ниже флажка. В файле default.vrd соответствует атрибуту enabl e элемента ws . Если флажок сброшен, то это эквивалентно отсутствию элементу ws в файле default.vrd или наличие элемента ws с атрибутом enable, установленным в значение true.
Публиковать Web-сервисы по умолчанию . Отвечает за возможность использования в данной информационной базе Web-сервисов, которые опубликованы без явного указания разрешения использования. В файле default.vrd соответствует атрибуту pointEnableCommon элемента ws.
Таблица ниже флажка Публиковать Web-сервисы содержит перечень публикуемых Web-сервисов и позволяет управлять публикацией каждого Web-сервиса. Первая колонка управляет публикацией конкретного Web-сервиса. Если флажок сброшен, то данный Web-сервис будет запрещен к использованию (его нельзя будет вызвать). В файле default.vrd соответствует атрибуту enable элемента point .
Вторая колонка (с именем Имя) содержит имя Web-сервиса, как оно задано при создании. Описание Web-сервисов приведено в книге 1С:Предприятие 8.3. “Руководство разработчика”. В файле default.vrd соответствует атрибуту name элемента point.
Последняя колонка таблицы (с именем Адрес) содержит псевдоним имени публикуемого Web-сервиса. Обращение к Web-сервису возможно как по имени, так и по псевдониму. Псевдоним Web-сервиса можно редактировать в окне публикации. В файле default.vrd соответствует атрибуту alias элемента point.
Web-сервисы, которые расположены в подключенных расширениях, не отображаются в данной таблицы и могут быть опубликованы только редактированием файла default.vrd вручную.
Публиковать Web-сервисы расширений по умолчанию. Отвечает за возможность использования Web-сервисов, которые поставляются в расширениях конфигурации. В файле default.vrd соответствует атрибуту publishExtensionsByDefault элемента ws .
3.2.3. Закладка «Прочие»
Рис. 6. Прочие параметры публикации на веб-сервере
На данной закладке можно изменить вспомогательные параметры публикации.
Каталог временных файлов . Позволяет указать каталог временных файлов для работы расширения веб-сервера или файлового варианта информационной базы. В файле default.vrd соответствует атрибуту temp элемента point .
Группа Пул соединений . Описывает элемент pool файла default.vrd. Подробнее см. здесь. Также параметры этой группы управляют работой системы отслеживания разрыва соединений.
Группа Отладка. Описывает элемент debug файла default.vrd.
Группа OpenI D. Описывает элемент openid файла default.vrd.
Разделение данных . Описывает элемент zones файла default.vrd. Подробнее остановимся на структуре таблицы с разделителями.
В таблицу попадают все независимые разделители, существующие в конфигурации или загруженном файле. Первая колонка (без имени) определяет необходимость создания элемента zone для выбранного разделителя. Следует помнить, что сопоставление элемента выполняется не по имени разделителя, а по его порядковому расположению в списке. Если отключается первый разделитель, то имеет смысл отключить и все остальные, т. к. параметры элемента zones будут применены системой к другим разделителям.
Колонка Имя содержит имя разделителя, как оно задано в свойствах общего реквизита. Флажок в следующей колонке определяет, будет задано значение разделителя в элементе zone или нет. Если флажок установлен, то в качестве значения атрибута value будет использовано значение из колонки Значение.
Флажки в колонках Указание и Безопасное отвечают за атрибуты safe и specify (соответственно) элемента zone файла default.vrd.
Параметр Фоновые задания в файловом варианте описывает возможность использования фоновых заданий в файловом варианте информационной базы (атрибут allowexecutescheduledjobs корневого элемента point ).
Иногда я начинаю себя ругать из-за того, что я такой ленивый. Но быстро перестаю - лень.
Занятие 22 посвящено ролям. И тут я даже немножко расскажу смищные истории из своей практики, посвященные ролям (на самом деле нет).
Роль предназначена для организации интерфейса прикладного решения и для разграничения прав и действий отдельных пользователей.
Развернуть ветвь Общие – правый клик по Роли (рис.1). Далее можно настроить ограничения к различным объектам конфигурации (рис.2)
Как создать список пользователей системы и определить их права?
На главной командной панели заходим в Сервис – Администрирование – Пользователи.
Появится список пользователей (рис.3). Добавить нового пользователя можно, жмакнув по
рис.3 |
рис.4 |
Как следует из названия, при аутентификации средствами 1с пользователю требуется вводить логин/пароль непосредственно в системе 1с. В случае аутентификации средствами операционной системы вводить ничего не нужно, так как 1с определит, под каким пользователем запущена ОС, обратится к своему внутреннему списку пользователей, и если найдет соответствующую запись, осуществит вход с данными правами.
Чаще всего аутентификация по ОСи происходит, если 1с виртуализирована. Что это значит? Что физически сервер и клиенты одинески находятся физически не у вас под носом, а в другом месте. На своем компьютере вы запускаете удаленное подключение, на котором уже идет подключение к 1с.
А теперь истории из практики. Если заниматься поддержкой 1с, то часты случаи, когда пользователи жалуются, что мол такой то документ не проводится, такой то отчет не формируется. Часто такое бывает из-за того, что разработчики поставили такому-то пользователю права на документ, а на регистр, который, собственно, и отражает проводки документа, забыли. Зайдите в журнал регистрации действий и поглядите на данного пользователя, как он проводит документ - тот недоступный регистр и отобразится в журнале, с формулировкой "нарушение прав пользователя".
Гораздо печальнее, когда разработчики ставят ограничения на роли в коде - тогда только отладчиком глядеть, где, когда и какое ограничение прав стоит, непосредственно в модуле требуемого документа/отчета.
Аутентификация – проверка принадлежности предъявленного идентификатора (имени) конкретному пользователю системы, проверка подлинности. Система «1С:Предприятие» поддерживает несколько различных вариантов аутентификации, которые будут рассмотрены в следующих разделах.
1.1.1. Аутентификация средствами системы «1С:Предприятие»
Пользователь может быть аутентифицирован системой «1С:Предприятие» с помощью ввода его имени и пароля (в диалоге аутентификации, в виде параметров командной строки или строки соединения с информационной базой для внешнего соединения или automation-сервера). В этом случае проверка наличия пользователя и корректности ввода его пароля выполняет система «1С:Предприятие».
1.1.2. Аутентификация операционной системы
Пользователь может быть аутентифицирован неявно средствами операционной системы. Для этого пользователю должен быть поставлен в соответствие некоторый пользователь операционной системы. При старте системы, «1С:Предприятие» запрашивает у операционной системы пользователя, который аутентифицирован в системе в данный момент. Для этого в ОС Windows используется интерфейс SSPI, а в ОС Linux — GSS-API. Затем выполняется проверка, что данному пользователю операционной системы сопоставлен пользователь «1С:Предприятия». Если поиск заканчивается успешно – считается, что пользователь системы «1С:Предприятие» аутентифицирован успешно, и диалог аутентификации не отображается.
Примечание. Не поддерживается аутентификация пользователя средствами ОС в том случае, если клиентское приложение подключается к информационной базе через веб-сервер Apache, работающий под управлением ОС Windows.
Пользователь операционной системы указывается в формате: \\имя_домена\имя_пользователя.
Если необходимо принудительно выполнить аутентификацию средствами системы «1С:Предприятие», то в командной строке запуска клиентского приложения следует указать ключ командной строки -WA-. Соответственно, ключ командной строки –WA+ предназначен для принудительного применения аутентификации средствами операционной системы (действует по умолчанию).
1.1.3. Аутентификация с помощью OpenID
Примечание 1. Данный способ аутентификации не применим при обращении к веб-сервисам, опубликованным из «1С:Предприятия».
Примечание 2. В роли провайдера OpenID выступает информационная база «1С:Предприятия».
Общая схема работы выглядит следующим образом:
- Пользователь пытается выполнить вход в систему.
- Система определяет, что в информационной базе работает OpenID-аутентификация (по файлу публикации default.vrd).
- Провайдеру OpenID отправляется запрос на выполнение аутентификации.
- Если необходимо выполнить интерактивное действие (выполняется первая аутентификация для данного идентификатора или закончено время жизни признака аутентификации данного идентификатора), то провайдер сообщает системе о необходимости запросить имя и пароль пользователя. Система выполняет интерактивное действие и возвращает провайдеру OpenID запрошенные данные.
- Признак аутентифицированности пользователя хранятся в файлах cookie, которые размещаются в хранилище, индивидуальном для каждого веб-браузера. Тонкий клиент использует собственное хранилище.
- Если провайдер аутентифицирует пользователя, то системе возвращается признак того, что пользователь аутентифицирован.
В качестве OpenID-провайдера выступает информационная база системы «1С:Предприятие». В качестве OpenID-идентификатора используются имена пользователей информационной базы. Такая информационная база должна быть особым образом опубликована на веб-сервере (в файле публикации default.vrd расположен особый элемент) и доступна для информационной базы, которая желает выполнять аутентификацию с помощью OpenID.
В качестве OpenID-идентификатора пользователя выступает свойство Имя пользователя информационной базы OpenID-провайдера. Пароль пользователя также задается в информационной базе OpenID-провайдера. Пароль, заданный в информационной базе, которая является клиентом OpenID-провайдера, игнорируется при выполнении аутентификации с помощью OpenID.
Если необходимо принудительно выполнить аутентификацию с помощью OpenID, то в командной строке запуска клиентского приложения следует указать ключ командной строки -OIDA+ (действует по умолчанию). Соответственно, ключ командной строки –OIDA- предназначен для принудительного отключения аутентификации с помощью OpenID.
Подробнее о настройке веб-сервера для работы с OpenID-аутентификацией см. стр. 2.
Для того, чтобы система выполняла аутентификацию с помощью протокола OpenID необходимо, чтобы у пользователя был установлен флажок Аутентификация 1С:Предприятия и соответствующим образом была настроена публикация данной информационной базы на веб-сервере.
1.2. Настройка поддержки OpenID-аутентификации
1.2.1. Настройки для использования OpenID
Если информационная база использует OpenID-аутентификацию, то в файле default.vrd (с помощью которого выполнена публикация информационной базы на веб-сервере) необходимо указать адрес OpenID-провайдера, с помощью которого происходит аутентификация. Для этого предназначены элементы и .
Аутентификация ‑ проверка принадлежности предъявленного идентификатора (имени) конкретному пользователю системы, проверка подлинности. Система «1С:Предприятие» поддерживает несколько различных вариантов аутентификации, которые будут рассмотрены в следующих разделах.
6.2.8.2. Аутентификация средствами системы «1С:Предприятие»
Пользователь может быть аутентифицирован системой «1С:Предприятие» с помощью ввода его имени и пароля (в диалоге аутентификации, в виде параметров командной строки или строки соединения с информационной базой для внешнего соединения или automation-сервера). В этом случае проверка наличия пользователя и корректности ввода его пароля выполняет система «1С:Предприятие».
6.2.8.3. Аутентификация операционной системы
Пользователь может быть аутентифицирован неявно средствами операционной системы. Для этого пользователю должен быть поставлен в соответствие некоторый пользователь операционной системы. При старте системы, «1С:Предприятие» запрашивает у операционной системы пользователя, который аутентифицирован в системе в данный момент. Для этого в ОС Windows используется интерфейс SSPI, а в ОС Linux ‑ GSS-API. Затем выполняется проверка, что данному пользователю операционной системы сопоставлен пользователь «1С:Предприятия». Если поиск заканчивается успешно ‑ считается, что пользователь системы «1С:Предприятие» аутентифицирован успешно, и диалог аутентификации не отображается.
ПРИМЕЧАНИЕ 1. Клиентское приложение для ОС Linux или macOS не поддерживает аутентификацию средствами операционной системы.
ПРИМЕЧАНИЕ 2. Не поддерживается аутентификация пользователя средствами операционной системы в том случае, если клиентское приложение подключается к информационной базе через веб-сервер Apache, работающий под управлением ОС Windows.
ПРИМЕЧАНИЕ 3. При работе под управлением ОС Windows, для обеспечения стабильной работы аутентификации ОС при подключении тонким клиентом через веб-сервер или с помощью веб-клиента, необходимо внести адрес используемой информационной базы в список надежных сайтов свойств веб-браузера (Панель управления ‑ Сеть и интернет ‑ Свойства браузера ‑ Безопасность).
Пользователь операционной системы указывается в формате: \\имя_домена\имя_пользователя. При этом имя пользователя не должно содержать символы алфавитов, отличных от латинского алфавита. Формат имени домена и имени пользователя может зависеть от настроек контроллера домена и учетных записей в нем. Определить правильное написание пользователя операционной системы можно по его представлению в событии CONN технологического журнала в свойстве Txt, которое начинается с текста Srvr: DstUserName2:. Например, событие 30:30.551013-0,CONN,2,process=rmngr,OSThread=24204,t:clientID=3,Txt=Srvr: DstUserName2: d1.d2\user1(d1.d2\user1) значит, что в качестве имени пользователя операционной системы в описании пользователя информационной базы должно быть указано \\d1.d2\user1.
Если необходимо принудительно выполнить аутентификацию средствами системы «1С:Предприятие», то в командной строке запуска клиентского приложения следует указать параметр командной строки /WA-. Соответственно, параметр командной строки /WA+ предназначен для принудительного применения аутентификации средствами операционной системы (действует по умолчанию).
● Технологический журнал (см. здесь).
6.2.8.4. Аутентификация с помощью OpenID
ПРИМЕЧАНИЕ. Данный способ аутентификации не применим при обращении к веб-сервисам, опубликованным из «1С:Предприятия».
Общая схема работы выглядит следующим образом:
● Пользователь пытается выполнить вход в систему.
● Система определяет, что в информационной базе работает OpenID-аутентификация (по файлу публикации default.vrd).
● Провайдеру OpenID отправляется запрос на выполнение аутентификации. Очевидно, что OpenID-провайдер должен быть доступен для обращения с того адреса, на котором опубликована информационная база.
● Если необходимо выполнить интерактивное действие (выполняется первая аутентификация для данного идентификатора или истекло время жизни аутентификационных данных данного идентификатора), то провайдер сообщает системе о необходимости запросить имя и пароль пользователя. Система выполняет интерактивное действие и возвращает провайдеру OpenID запрошенные данные.
Аутентификационные данные пользователя хранятся в файлах cookie, которые размещаются в хранилище, индивидуальном для каждого веб-браузера. Тонкий клиент использует собственное хранилище.
● Если провайдер аутентифицирует пользователя, то системе возвращается признак того, что пользователь аутентифицирован.
В качестве OpenID-провайдера может выступать как информационная база «1С:Предприятия», опубликованная на веб-сервере специальным образом, а также произвольная информационная система, которая реализует работу по протоколу OpenID Authentication 2.0 и расширение этого протокола, реализованное в платформе «1С:Предприятие». Адрес используемого OpenID-провайдера следует указать в файле default.vrd (элемент ) при публикации информационной базы, выступающей клиентом OpenID-провайдера.
Важно понимать, что «ключевым» полем, по которому обеспечивается сопоставление пользователя информационной базы «1С:Предприятия» и базы пользователей OpenID-провайдера, выступает значение, указанное в свойстве Имя пользователя информационной базы. Другими словами пользователь сможет войти в информационную базу в том случае, если в информационной базе, в свойстве Имя будет указан идентификатор, возвращаемый OpenID-провайдером. Описание возвращаемого идентификатора необходимо получать в документации к используемому OpenID-провайдеру.
Пароль пользователя указывается в рамках OpenID-провайдера. Если в роли OpenID-провайдера выступает информационная база «1С:Предприятие», то пароль задается в информационной базе, выступающей в роли OpenID-провайдера. Пароль, заданный в информационной базе, которая является клиентом OpenID-провайдера, игнорируется при выполнении аутентификации с помощью OpenID. Если используется сторонний OpenID-провайдер, то пароль задается с помощью средств и инструментов этого провайдера. После того, как в хранилище пользователей OpenID-провайдера сменили пароль пользователя, система «1С:Предприятие» будет следовать следующим установкам:
● в текущих сеансах этот пользователь будет считаться аутентифицированным до завершения сеансов;
● при создании нового сеанса будет выполнен запрос пароля даже в том случае, если аутентификационные данные пользователя еще не устарели.
Если необходимо принудительно выполнить аутентификацию с помощью OpenID, то в командной строке запуска клиентского приложения следует указать параметр командной строки /OIDA+ (действует по умолчанию). Соответственно, параметр командной строки /OIDA‑ предназначен для принудительного отключения аутентификации с помощью OpenID.
Подробнее о настройке веб-сервера для работы с OpenID-аутентификацией см. здесь.
● Дополнительные требования к OpenID-провайдеру (см. здесь).
6.2.8.5. Аутентификация с помощью OpenID Connect
Для сопоставления пользователя «1С:Предприятия» и пользователя провайдера аутентификации используется электронная почта пользователя. Для системы «1С:Предприятие» она предоставляется провайдером OpenID Connect. Электронная почта пользователя должна быть указана в свойстве Имя пользователя информационной базы.
Описание схемы работы с использованием провайдера OpenID Connect см. здесь.
В третьей части я показал пример обращения ко всем возможным методам, и как работать с длительными операциями.
В четвертой части показал, как работать с порциями.
для обмена данными между информационными системами;
для обмена данными с сайтами и порталами;
Клиент формирует запрос к веб-серверу.
Дальше запрос проходит какие-то проверки – проверяются заголовки, параметры, тело запроса (если сервис использует тело запроса).
Если все проверки пройдены, то выполняется некий метод в вашей конфигурации и формируется ответ с кодом состояния:
обычно, если все нормально отработало, код состояния равен 200;
если что-то пошло не так, код состояния может отличаться;
есть методики, когда используется JSON RPC – в этом случае код состояния всегда равен 200, а в теле запроса в определенной структуре JSON содержится ответ, где в параметре error пишется, какие были ошибки.
Есть ли какая-то универсальная микстура или принцип, как сделать определенные шаги для обеспечения безопасности всех сервисов, которые вы создаете? Такой микстуры, к сожалению, нет. Но есть какие-то практики, которые люди применяют в своей работе.
Настройте регулярное создание бэкапов
Простая проверка администратора на профпригодность – это поручение «Восстанови на тестовой базе вчерашний бэкап». Если администратор сможет восстановить бэкап только месячной давности, нет причин с ним дальше работать. За месяц многое может поменяться, поэтому такие вещи недопустимы, и не дай Бог с вами это произойдет.
Для чего нужен сервис?
Кто конечный потребитель?
Будет ли сервис выставлен наружу?
Эти три простых вопроса позволяют понять, какие вещи необходимо будет произвести для обеспечения безопасности.
GET для безопасных действий, POST для небезопасных
Дальше нужно определиться с тем, по каким методам будет работать ваш сервис – будет ли он использовать только GET или POST, или он будет использовать смешанные методы.
GET вызывает так называемые безопасные действия – он получает параметры и отдает некие данные из информационной базы.
POST предназначен для более опасных действий – если вы хотите передавать логин-пароль, то GET для этих случаев не подойдет, лучше передавать в теле POST.
Чтобы определиться, какой метод вам больше подходит, есть картинка, которая очень наглядно помогает выбрать тот или иной метод.
Повторюсь, что основные минусы GET по сравнению с POST – это то, что запрос можно кешировать, запросы могут оставаться в истории браузера, параметры передаются в URL, и GET не предназначен для передачи больших объемов данных.
Это – наглядный пример MITM-атаки.
Let’s Encrypt – лучше, чем самоподписанный сертификат, но есть минусы
Часто встречается, что приходишь в какую-то крупную организацию, и там используют самоподписанные сертификаты. Если сервисы используются для внутренних целей, этого достаточно. Но если вы собираетесь выставить сервис наружу для обновления какого-то мобильного приложения, такой самоподписанный сертификат не подойдет. Лучше использовать бесплатный сервис Let’s Encrypt.
Но у сервиса Let’s Encrypt есть минусы по сравнению с платными сервисами:
Нет гарантии, что с Let’s Encrypt не случится то же самое, что случилось со Startcom и Wosign. 5 лет назад был случай, что крупные производители браузеров перестали им доверять – эти сертификаты потеряли доверие.
Еще нет гарантии сертификата. Например, если клиент зайдет на сайт, который подтвержден сертификатом платного центра, и потеряет деньги в результате фишинга, то эти платные центры обязуются выплатить некую сумму (от 10 тысяч долларов до 1.5 миллионов долларов).
И основной минус – у Let’s Encrypt сертификаты выдаются на 3 месяца. С другой стороны, есть готовые скрипты, готовые боты, которые продлевают сертификат. Для Apache – это certbot, а для IIS – это win-acme.
Разделите сервисы
Соответственно, если вашу фирму начнут проверять на прочность, вздрогнет вся система, и работать будет невозможно.
Поэтому я не зря изобразил на слайде подводную лодку: если в ней случается пробоина, закупоривается один отсек, а остальная часть подводной лодки продолжает функционировать. Я тоже рекомендую разносить внутренние сервисы на одну машину, а сервисы, которые должны общаться с внешним миром на другую, возможно, даже на несколько машин.
Опубликуйте сервис и настройте на него права
Если вы организовываете внутреннюю сеть, достаточно внутри сети поставить веб-сервер – это может быть Apache, IIS, это может быть 1С:Публикатор или 1С:Линк (это тоже Apache, просто его версия от фирмы 1С с красивым интерфейсом).
К паролям нужно относиться очень бережно – про это я чуть дальше расскажу. Желательно, чтобы у сотрудников были хорошие пароли.
Используйте VPN
Если вам нужно организовать удаленный офис либо объединить в единую сеть магазины или сеть точек общественного питания, используйте для администрирования VPN – этого достаточно.
Организуйте промежуточное звено
Есть варианты с промежуточным сервисом:
Один из таких вариантов был показан на онлайн-митапе «Web-клиенты для 1С». Есть некий промежуточный сервис, написанный на каком-то стороннем языке, этот сервис смотрит наружу, получает запросы от клиентов, организует для этих запросов некие квесты – накладывается фильтрация, проверяются токены, организуется ограничение частоты вызова определенных методов или двухфакторная аутентификация. Только тогда, когда все эти квесты пройдены, запрос идет во внутреннюю сеть. Вариант неплохой, рабочий, многие его используют.
Есть еще вариант с промежуточной базой, которая получает запросы, отслеживает, что в этом запросе все хорошо, и тогда уже передает его во внутреннюю систему.
Получается, что эти промежуточные звенья принимают первый удар на себя, а если с ними что-нибудь случится, ваша информационная база будет в безопасности.
То же самое можно делать и другими средствами:
можно установить файрвол, который ограничивает доступ, делает фильтрацию IP, закрывает порты;
за файрволом можно поставить реверсный прокси, на котором тоже настроены какие-то фильтры – реверсный прокси-сервер может выполнять функцию балансировки – он разграничивает нагрузку между сервисами и дополнительно уменьшает трафик за счет кеширования.
Это тоже рабочий вариант.
Пройдите аудит ИБ
Даже если у вас все отлично настроено, все отлично работает, можно еще произвести аудит информационной безопасности. Это актуально, поскольку система развивается, в ней появляются новые дыры, и их надо своевременно отслеживать.
Какие-то фирмы проводят аудит раз в полгода, кто-то – раз в год. Какие-то фирмы начинают проводить аудит только тогда, когда с ними что-то случается.
Но проводить аудит – дело полезное. Вы получите обратную связь, получите отчет о том, что было проделано, узнаете, какие у вас есть дыры в безопасности. Если у вас нет возможности проводить аудит своими силами, есть сторонние организации, которые этим занимаются.
Проводите постоянный мониторинг
Нужно производить постоянный мониторинг системы. Даже если у вас все работает, следовать правилу «Работает – не трожь» не совсем правильно. Система работает до тех пор, пока вы ее обслуживаете. Соответственно, можно настроить какие-то сборы метрик, можно проверять логирование. В 2019 году на Инфостарте был очень хороший доклад «Ок, Лариса! Мониторинг проблем производительности с применением нейронных сетей». Докладчик рассказывал о том, как у них некая нейронная сеть отлавливает некие изменения в системе и на основании этих изменений делает какие-то действия, сообщает о каких-то ошибках.
Если пойти этим же путем, анализировать все эти метрики, логи, то в принципе тоже можно сделать такого автоадминистратора, который все эти вещи будет сам отлавливать. Я думаю, что даже в каких-то крупных ИТ-гигантах такие вещи уже сделаны и успешно работают.
Храните логи в недоступном от злоумышленников месте
О чем еще важно помнить? Допустим, у вас есть логи, которые вы храните не очень защищенно. Логи тоже могут иметь некую конфиденциальную информацию.
Например, в логах хранится заголовок запросов с базовой авторизацией. Соответственно, если злоумышленник получит эти логи, он их без труда декодирует и получит доступ к вашей базе под этой учетной записью.
Относитесь к паролям бережно
Еще раз напомню, что к паролям нужно относиться бережно. В практике моей компании был один случай: до 2018 года у нас администратора не было, состояние системы было подзаброшено, и мы наняли очень хорошего администратора, чтобы он все настроил. А потом директор решил проверить, действительно ли теперь все так хорошо, и обратился к моему коллеге, попросил его за хорошее вознаграждение взломать систему. У меня коллега далеко не хакер, он просто 1С-программист, который знал, что в компании есть некая база, которая опубликована наружу. Он открыл эту базу через браузер, быстро подобрал пароль к учетке пользователя-администратора с правом открытия внешних обработок, вошел в базу, открыл в ней обработку и сделал принтскрины, доказывающие, что у него полный доступ ко всем данным. Пароль был 123.
Как перечеркнуть все усилия по обеспечению безопасности
В феврале этого года я выложил статью «Выполнятор – как я породил монстра и лишился сна!». Это случай из 2017-го года. Я тоже человек грешный, я реализовал некое очень страшное решение через метод «Выполнить()».
Самое интересное, что такие статьи выходят на Инфостарте регулярно, я примерно раз в месяц вижу новую статью с таким решением.
Если я вижу такую статью, я пытаюсь пообщаться с автором и объяснить, почему так делать не стоит – об этом я расскажу дальше.
Все эти «Выполняторы» работают по одному принципу с небольшими отличиями:
кто-то передает текст команды,
кто-то передает текст команды и параметры,
кто-то передает текст запроса и параметры;
кто-то передает просто текст запроса.
Дальше это все попадает в некий метод «Выполнить()», где все это выполняется. Это некий троянский конь, через который с вашей системой можно что угодно сделать, вплоть до очистки всех данных.
Есть статья на ИТС «Ограничения на использование Выполнить и Вычислить на сервере». Если вы решили сделать универсальное решение, то ознакомьтесь с этой статьей, все вопросы уйдут.
Когда я общался с авторами, я интересовался, почему они сделали такое решение:
Некоторые, как и я, хотели выйти из конфигуратора – статья про «Выполнятор» как раз показывает, что так делать неправильно.
Кто-то говорил, что ему не нравится писать код в двух местах – в конфигурации-источнике и конфигурации-приемнике.
Основные минусы «Выполняторов»:
Практически невозможно отловить неоптимальный код. В базе-источнике будет видно только то, что выполняются некие методы. Вы не отловите, какой там код в какой момент пришел.
Плюс вы постоянно пересылаете весь код и параметры, что тоже нехорошо. Это то же самое, как если вы придете в библиотеку, положите перед библиотекарем три тома «Войны и мир» и спросите: «Что написано во втором томе на 300-й странице в пятом параграфе?» Получается, что вам, чтобы спросить какую-то вещь, нужно постоянно носить эти книжки. Это тоже не совсем хорошо.
И возможность потерять все свои данные – я про это уже говорил.
Стояла задача создать мобильное приложение, которое будет обмениваться с ERP. Мы планировали его устанавливать на планшеты пользователей и настраивать силами сотрудников ИТ-отдела.
Для этой цели у меня в ERP был создан план обмена, на узле которого хранится не логин/пароль, а некий сформированный хэш. И с мобильного приложения тоже гоняется не логин/пароль, а некий хэш. Эти хэши сравниваются и обмен производится только при их совпадении.
алгоритмы и методы – это отдельные справочники;
различные методы логирования;
запуск фоновых заданий для алгоритмов.
можно указать конкретный метод, который будет обработан;
на закладке «Параметры» рассчитываются параметры, которые будут использованы на закладке «Вычисления»;
указывается алгоритм, который формирует ответ от базы;
можно задать заголовки ответа и т.д.
Учитывая, что система универсальных методов уже была, на разработку полноценного рабочего окружения для мобильного приложения ушло 3 недели.
Заключение
Плюс заказчик получает готовую функциональность, реализацию которой не нужно оплачивать – все можно сделать силами одного 1С-ника.
Вопросы
Какие вы можете порекомендовать средства для хранения паролей к внешним сервисам, с которыми интегрируется 1С?
1С рекомендует использовать для этого безопасное хранилище. Но я обычно делаю свое хранилище значений. И в нем уже в определенной структуре храню такие вещи.
В кейсе про мобильное приложение, о котором я рассказывал, я не гоняю пароль в явном виде, я просто гоняю некий хэш.
Вы говорите про то, как хранятся пароли внутри 1С, а снаружи? Если нужно обмениваться паролем между командой разработки и инфраструктурщиками? Используете ли вы какие-то сервисы для этого?
Можно хранить секреты в файле на сервере с ограниченным доступом, либо в специальном сервисе. В базу добавляем ПараметрСеанса, в который будем считывать секреты, и запрещаем доступ к этому параметру сеанса.
Вызов внешнего сервиса делаем таким образом
Если базу выгрузить, то секреты никуда не утекут.
Какие VPN-сервисы рекомендуете для внутренних сервисов? Или лучше написать свой?
OpenVPN – самый распространенный, используем его.
Как правильно выставлять сервис наружу? Лучше всегда закрывать веб-сервисы, которые выдаются наружу? Или в каких-то случаях не закрывать?
Если для вас это будет очень больно, лучше этого не делать. Если вы обслуживаетесь у каких-то аутсорсеров, а вас начнут проверять на прочность, то вам нужно будет сначала дозвониться, дождаться, когда специалист с вами через час свяжется, и только потом вам, может быть, помогут. В таких условиях лучше ничего не выставлять наружу.
Если вам нужно обмениваться с сайтом или сторонним сервисом, есть хорошие средства, я про них в докладе уже упоминал.
А есть какие-то готовые инструменты для защиты базы от внешнего доступа? Какими сервисами можно воспользоваться 1С-нику?
Очень многие используют nginx, это хорошее программное обеспечение, его можно использовать как реверсное прокси для балансировки и фильтрации запросов.
Данная статья написана по итогам доклада (видео), прочитанного на онлайн-митапе "Безопасность в 1С". Больше статей можно прочитать здесь.
Читайте также: