Содержание:
1. Основные принципы системы контроля доступа в 1С: Шина
2. Система настройки прав доступа для HTTP-сервисов
3. Пример настройки прав доступа пользователей с использованием YAML
4. Программная реализация системы проверки прав доступа
5. Система управления ключами доступа
6. Интеграция с внешними системами контроля доступа
В условиях современной цифровизации и интеграции информационных систем, обеспечение безопасности и контроля доступа становится критически важным аспектом. 1С: Шина представляет собой интеграционную платформу, обеспечивающую обмен данными между различными системами. Одним из ключевых компонентов этой платформы является СКУД (система контроля и управления доступом), которая обеспечивает безопасность и разграничение прав доступа к различным элементам системы.
1. Основные принципы системы контроля доступа в 1С: Шина
Система контроля доступа в 1С: Шина основана на концепции ключей доступа и разрешений. Каждому элементу проекта, будь то HTTP-сервис, регистр сведений или другой объект, можно назначить определенные права доступа. Эти права определяются с помощью ключей доступа, которые могут быть выданы пользователям или группам пользователей.
КлючДоступаАдминистратора, КлючДоступаМенеджера
Ключи доступа представляют собой уникальные идентификаторы, ассоциированные с определенными правами. Они могут быть выданы вручную или автоматически, в зависимости от настроек системы. При обращении к элементу системы, 1С: Шина проверяет наличие соответствующего ключа доступа у пользователя и принимает решение о предоставлении или отказе в доступе.
Программный код для проверки на права доступа, в соответствии с ролями сотрудников, представлен далее:
импорт Пресейл
метод ПроверитьНаличиеКлючейДоступа(
Ключи: ЧитаемыйМассив<КлючДоступаМенеджера.Объект>,
ПользователиДляПроверки: ЧитаемыйМассив<Пользователи.Объект>
): ЧитаемоеСоответствие<КлючДоступаМенеджера.Объект, ЧитаемыйМассив<Пользователи.Ссылка>>
знч Направления = <Направления.Ссылка>[]
для Ключ из Ключи
Направления.Добавить(Ключ.Владелец)
;
знч Пользователи = <Пользователи.Ссылка>[]
для Пользователь из ПользователиДляПроверки
Пользователи.Добавить(Пользователь.Ссылка)
;
знч Запрос = Запрос{
ВЫБРАТЬ
СотрудникиНаправления.Элемент КАК Направление,
Сотрудники.Пользователь КАК Пользователь
ИЗ
Сотрудники.Направления КАК СотрудникиНаправления
ЛЕВОЕ СОЕДИНЕНИЕ Сотрудники КАК Сотрудники
ПО СотрудникиНаправления.Контейнер == Сотрудники.Ссылка
ГДЕ
СотрудникиНаправления.Элемент В (%Направления)
И Сотрудники.Пользователь В (%Пользователи)
И Сотрудники.Роль == РолиСотрудников.Менеджер}
знч МенеджерыНаправлений = <Направления.Ссылка, Массив<Пользователи.Ссылка>>{:}
для СтрокаРезультата из Запрос.Выполнить()
МенеджерыНаправлений.ВставитьЕслиОтсутствует(СтрокаРезультата.Направление,
<Пользователи.Ссылка>[])
МенеджерыНаправлений
.Получить(СтрокаРезультата.Направление)
.Добавить(СтрокаРезультата.Пользователь как Пользователи.Ссылка)
;
знч Результат = <КлючДоступаМенеджера.Объект, Массив<Пользователи.Ссылка>>{:}
для Ключ из Ключи
знч МассивПользователей = МенеджерыНаправлений.ПолучитьИлиУмолчание(Ключ.Владелец)
если МассивПользователей != Неопределено
Результат.Вставить(Ключ, МассивПользователей)
;
;
возврат Результат
;
2. Система настройки прав доступа для HTTP-сервисов
Один из наиболее распространенных способов взаимодействия с 1С: Шина — это использование HTTP-сервисов. Для обеспечения безопасности и контроля доступа к этим сервисам, система предоставляет гибкие механизмы настройки прав.
Права доступа можно настроить на трех уровнях:
1. Уровень HTTP-сервиса: Общие настройки прав доступа, применяемые ко всем URL-шаблонам и методам внутри сервиса.
2. Уровень URL-шаблона: Настройки прав доступа, специфичные для определенного пути внутри сервиса.
3. Уровень HTTP-метода: Наиболее детализированные настройки, позволяющие контролировать доступ к конкретным методам (GET, PUT, POST и т.д.) внутри URL-шаблона.
При обращении к HTTP-методу, система последовательно проверяет наличие настроек прав доступа на каждом из уровней, начиная с самого детализированного. Если настройки найдены, они применяются, и дальнейшая проверка не осуществляется.
3. Пример настройки прав доступа пользователей с использованием YAML
Для настройки прав доступа в 1С: Шина используется язык разметки YAML. Пример настройки прав доступа для HTTP-сервиса может выглядеть следующим образом:
КопироватьРедактировать
ВидЭлемента: HttpСервис
Id: a565661f-f458-465b-8f71-1f90cd490890
ОбластьВидимости: ВПодсистеме
Имя: СделкиHttpСервис
КорневойUrl: /opportunities
КонтрольДоступа:
Разрешения:
Вызов: РазрешеноАутентифицированным
В данном примере доступ к сервису разрешен только аутентифицированным пользователям. Если необходимо реализовать более сложную логику проверки прав доступа, можно использовать значение РазрешенияВычисляются и определить соответствующий обработчик в модуле HTTP-сервиса.
4. Программная реализация системы проверки прав доступа
Для реализации динамической проверки прав доступа можно определить обработчик в модуле HTTP-сервиса:
КопироватьРедактировать
@Обработчик
метод ВычислитьРазрешенияДоступа() : Массив<РазрешениеДоступа>
пер Разрешения: Массив<РазрешениеДоступа>
// Логика определения разрешений
возврат Разрешения
конецметода
В этом методе можно реализовать любую необходимую логику проверки прав доступа, основываясь на параметрах запроса, информации о пользователе и других факторах.
5. Система управления ключами доступа
Ключи доступа являются центральным элементом системы контроля доступа в 1С: Шина. Они могут быть выданы вручную или автоматически, в зависимости от настроек системы. Для управления ключами доступа предусмотрены специальные инструменты, позволяющие создавать, изменять и удалять ключи, а также назначать их пользователям и группам.
Пример создания ключа доступа:
КопироватьРедактировать
Ключ = Новый КлючДоступа;
Ключ.Имя = "КлючДоступаМенеджера";
Ключ.Описание = "Ключ доступа для менеджеров";
Ключ.Сохранить();
После создания ключа его можно назначить конкретным пользователям или группам, предоставив им соответствующие права доступа.
6. Интеграция с внешними системами контроля доступа
1С: Шина предоставляет возможности интеграции с внешними системами контроля доступа (СКУД), такими как турникеты, системы видеонаблюдения и другие. Это позволяет реализовать комплексную систему безопасности, объединяющую программные и аппаратные средства.
Интеграция осуществляется через специальные коннекторы и интерфейсы, обеспечивающие обмен данными между 1С: Шина и внешними системами. Это позволяет, например, автоматически предоставлять или отзывать доступ к определенным зонам в зависимости от информации, хранящейся в 1С: Шина.
Система контроля и управления доступом в 1С: Шина представляет собой мощный и гибкий инструмент обеспечения безопасности и разграничения прав доступа в интеграционных проектах. Благодаря использованию ключей доступа, многоуровневой настройки прав и возможности интеграции с внешними системами, 1С: Шина позволяет реализовать комплексные решения по контролю доступа, соответствующие современным требованиям безопасности.
Гибкость настройки и возможность программной реализации логики проверки прав доступа позволяют адаптировать систему под специфические требования различных организаций и проектов, обеспечивая надежную защиту и контроль доступа к информационным ресурсам.
Специалист компании ООО "Кодерлайн"
Лев Туренко
