Предоставление и мониторинг временных прав доступа (ролей)

09.04.13

Администрирование - Информационная безопасность

Механизм храниния и автоматического сбора информации по временным правам доступа с анулированием и восстановлением по дате.

Скачать файлы

Наименование Файл Версия Размер
Проверка временных прав при открытии общей формы
.txt 3,45Kb
60
.txt 3,45Kb 60 Скачать
Открывок функции при записис пользователя
.txt 1,74Kb
16
.txt 1,74Kb 16 Скачать
Проверка временных прав на релгаментированном задании
.txt 3,57Kb
19
.txt 3,57Kb 19 Скачать

Работаем в УПП, пользователей более 300 (активных 70-80) и достаточно часто для пользователей предоставляются роли доступа на временной основе - временное исполнение обязанностей - больничный или отпуск кого-либо, временные работы и т. д. Отслеживать это руками и делать себе напоминалки надоело и решил автоматизировать этот процесс.

Upd: В нашей компании часто возникает противоречие текущих прав доступа с новыми и необходимо на время отключить эти права, а потом не забыть их восстановить.

Создаем регистр сведений, в котором будем хранить информацию по пользователю, временной роли, когда ее нужно убрать и когда восстановить, если такие есть. Регистр не периодический и независимый - ВременныеПраваДоступа.

В общей форме "ФормаПользователяИБ" в таблицу с ролями добавляем колонку с датой завершения, в которой мы будем вносить нашу дату для временной роли. А также колонку с датой возврата роли.

При открытии формы у нас проверяется есть ли для данного пользователя временные права доступа и проставляем в таблицу:


    ПоказыватьВСпискеВыбора = ПользовательНастроек.ПоказыватьВСпискеВыбора;
   
АутентификацияОС = ПользовательНастроек.АутентификацияОС;

   
Запрос = Новый Запрос;
   
Запрос.УстановитьПараметр("Пользователь", Пользователь.Ссылка);

   
Запрос.Текст = "ВЫБРАТЬ
                   |    ВременныеПраваДоступа.Роль,
                   |    ВременныеПраваДоступа.ДатаЗавершения,
                   |    ВременныеПраваДоступа.ДатаВозврата
                   |ИЗ
                   |    РегистрСведений.ВременныеПраваДоступа КАК ВременныеПраваДоступа
                   |ГДЕ
                   |    ВременныеПраваДоступа.Пользователь = &Пользователь"
;

   
Результат    = Запрос.Выполнить();

   
ТаблицаРолей = Результат.Выгрузить();

    Для Каждого
СтрокаСпискаДоступныхРолей Из СписокДоступныхРолейПользователяИБ Цикл
       
СтрокаСпискаДоступныхРолей.Пометка = ПользовательНастроек.Роли.Содержит(СтрокаСпискаДоступныхРолей.Значение);

       
НайденнаяСтрока = ТаблицаРолей.Найти(СтрокаСпискаДоступныхРолей.Значение.Имя, "Роль");
        Если
НайденнаяСтрока <> Неопределено Тогда
           
СтрокаСпискаДоступныхРолей.ДатаЗавершения = НайденнаяСтрока.ДатаЗавершения;
           
СтрокаСпискаДоступныхРолей.ДатаВозврата   = НайденнаяСтрока.ДатаВозврата;
        КонецЕсли;
    КонецЦикла;

 

При раздаче прав должны напротив временной роли установить дату снятия это роли с пользователя, а для убираемой роли снять галочкуи поставить дату возврата. В функции "ЗаписатьПользователя" вставляем несколько строк - привожу отрывок кода с моей вставкой:

 

    // Роли сохраняем
   
Для Каждого СтрокаСпискаДоступныхРолей Из СписокДоступныхРолейПользователяИБ Цикл
       
мРоль = СтрокаСпискаДоступныхРолей.Значение;

       
СодержитРоль = ПользовательИБ.Роли.Содержит(мРоль);

        Если
СодержитРоль И Не СтрокаСпискаДоступныхРолей.Пометка Тогда
           
ПользовательИБ.Роли.Удалить(мРоль);
        ИначеЕсли Не
СодержитРоль И СтрокаСпискаДоступныхРолей.Пометка Тогда

           
ПользовательИБ.Роли.Добавить(мРоль);
            Если
ЗначениеЗаполнено(СтрокаСпискаДоступныхРолей.ДатаЗавершения) Тогда
               
НаборЗаписей = РегистрыСведений.ВременныеПраваДоступа.СоздатьНаборЗаписей();
               
НаборЗаписей.Отбор.Пользователь.Установить(Пользователь.Ссылка);
               
НаборЗаписей.Отбор.Роль.Установить(мРоль.Имя);
               
НаборЗаписей.Отбор.ЭтоВозврат.Установить(Ложь);

               
Запись = НаборЗаписей.Добавить();
               
Запись.Пользователь   = Пользователь.Ссылка;
               
Запись.Роль           = мРоль.Имя;
               
Запись.ДатаЗавершения = СтрокаСпискаДоступныхРолей.ДатаЗавершения;
               
НаборЗаписей.Записать();
            КонецЕсли;
        КонецЕсли;

        Если
ЗначениеЗаполнено(СтрокаСпискаДоступныхРолей.ДатаВозврата) Тогда
           
НаборЗаписей = РегистрыСведений.ВременныеПраваДоступа.СоздатьНаборЗаписей();
           
НаборЗаписей.Отбор.Пользователь.Установить(Пользователь.Ссылка);
           
НаборЗаписей.Отбор.Роль.Установить(мРоль.Имя);
           
НаборЗаписей.Отбор.ЭтоВозврат.Установить(Истина);

           
Запись = НаборЗаписей.Добавить();
           
Запись.Пользователь   = Пользователь.Ссылка;
           
Запись.Роль           = мРоль.Имя;
           
Запись.ЭтоВозврат     = Истина;
           
Запись.ДатаВозврата   = СтрокаСпискаДоступныхРолей.ДатаВозврата;
           
НаборЗаписей.Записать();
        КонецЕсли;
    КонецЦикла;

 

Теперь надо нам проверять на регулярной основе есть ли у нас неубуранные временные права и убирать их, а также восстанавливать те роли, по которым настала дата возврата, очищая регистр по этим пользователям и ролям. Создадим простое регламентированное задание и повесим на него процедуру:

 И каждую ночь у меня отрабатывает это задание, убирая временные права и восстанавливая временно запрещенные.


    Запрос = Новый Запрос;

   
//Завершаем права
   
Запрос.Текст = "ВЫБРАТЬ
                   |    ВременныеПраваДоступа.Пользователь,
                   |    ВременныеПраваДоступа.Роль,
                   |    ВременныеПраваДоступа.ЭтоВозврат
                   |ИЗ
                   |    РегистрСведений.ВременныеПраваДоступа КАК ВременныеПраваДоступа
                   |ГДЕ
                   |    (ВременныеПраваДоступа.ДатаЗавершения 
                   |    И ВременныеПраваДоступа.ДатаВозврата = &ПустаяДата)
                   |    ИЛИ (ВременныеПраваДоступа.ДатаВозврата 
                   |    И ВременныеПраваДоступа.ДатаЗавершения = &ПустаяДата)"
;

   
Запрос.УстановитьПараметр("ДатаЗапроса", ТекущаяДата());
   
Запрос.УстановитьПараметр("ПустаяДата" , Дата('00010101'));

   
Результат = Запрос.Выполнить();

   
Выборка   = Результат.Выбрать();

   
Период = ТекущаяДата();
    Пока
Выборка.Следующий() Цикл
       
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(СокрЛП(Выборка.Пользователь.Код));
        Если
Выборка.ЭтоВозврат Тогда
           
ПользовательИБ.Роли.Добавить(Метаданные.Роли[Выборка.Роль]);
        Иначе
            Если
ПользовательИБ.Роли.Содержит(Метаданные.Роли[Выборка.Роль]) Тогда
               
ПользовательИБ.Роли.Удалить(Метаданные.Роли[Выборка.Роль]);
            КонецЕсли;
        КонецЕсли;
       
ПользовательИБ.Записать();

       
НаборЗаписей = РегистрыСведений.ВременныеПраваДоступа.СоздатьНаборЗаписей();
       
НаборЗаписей.Отбор.Пользователь.Установить(Выборка.Пользователь);
       
НаборЗаписей.Отбор.Роль.Установить(Выборка.Роль);
       
НаборЗаписей.Отбор.ЭтоВозврат.Установить(Выборка.ЭтоВозврат);

       
НаборЗаписей.Прочитать();
       
НаборЗаписей.Очистить();
       
НаборЗаписей.Записать();
    КонецЦикла;

 

Теперь я не пишу напоминалки чтобы убрать временные права и все работает "на ура" - главное правильно раздавать права.

 

Надеюсь кому-то будет полезна.

См. также

AUTO VPN (portable)

Информационная безопасность Платные (руб)

Автоматизация подключения пользователей к удаленному рабочему месту или сети посредством создания автоматического VPN (L2TP или L2TP/IPSEC и т.д.) подключения без ввода настроек пользователем (с возможностью скрытия этих настроек от пользователя). Программа автоматически выполняет подключение к VPN серверу и после успешного коннекта , если необходимо, подключение к серверу удаленных рабочих столов (RDP).

1200 руб.

24.03.2020    14400    22    32    

33

Настройка аутентификации в 1С с использованием стандарта RFC 7519 (JWT)

Информационная безопасность Платформа 1С v8.3 Бесплатно (free)

Рассмотрим в статье более подробную и последовательную настройку аутентификации в 1С с использованием распространенной технологии JWT, которая пришла в программу в платформе версии 8.3.21.1302.

27.02.2024    2618    PROSTO-1C    9    

29

Device flow аутентификация, или туда и обратно

Информационная безопасность Платформа 1С v8.3 Абонемент ($m)

Интеграционные решения стали неотъемлемой частью нашей жизни. Правилом хорошего тона в современных приложениях является не давать интегратору доступ к чувствительным данным. Device flow позволяет аутентифицировать пользователя, не показывая приложению чувствительные данные (например: логин и пароль)<br> Рассмотрим Device flow аутентификацию, в приложении, на примере OpenID провайдера Yandex.

1 стартмани

27.10.2023    1619    platonov.e    1    

23

Анализатор безопасности базы сервера 1С

Информационная безопасность Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Продукты на основе решений 1С уверенной поступью захватывают рынок учётных систем в стране. Широкое распространение программ всегда порождает большой интерес к ним со стороны злоумышленников, а пользователь 1С это одна из дверей в защищённый информационный контур предприятия. Обработка позволяет быстро и комплексно оценить настройки безопасности конкретной базы и возможности пользователя этой базы на сервере. Также можно оценить некоторые аспекты сетевой безопасности предприятия со стороны сервера 1С.

5 стартмани

24.04.2023    5440    14    soulner    7    

29

Двухфакторная аутентификация в 1С через Telegram и Email

Информационная безопасность Платформа 1С v8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

1С, начиная с версии платформы 8.3.21, добавили в систему возможность двойной аутентификации. Как это работает: в пользователе информационной базы появилось свойство «Аутентификация токеном доступа» (АутентификацияТокеномДоступа во встроенном языке), если установить этот признак и осуществить ряд манипуляций на встроенном языке, то появляется возможность при аутентификации отправлять HTTP запросы, которые и реализуют этот самый второй фактор. Данное расширение позволяет организовать двухфакторную аутентификацию с помощью электронной почты или мессенджера Telegram.

2 стартмани

08.12.2022    5969    32    Silenser    12    

23

История одного взлома или проверьте вашу систему на безопасность

Информационная безопасность Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

От клиента клиенту, от одной системы к другой, мы вновь и вновь встречаем одни и те же проблемы и дыры в безопасности. На конференции Infostart Event 2021 Post-Apocalypse Виталий Онянов рассказал о базовых принципах безопасности информационных систем и представил чек-лист, с помощью которого вы сможете проверить свою систему на уязвимость.

26.10.2022    9248    Tavalik    46    

113
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. 1cspecialist 1460 08.07.11 13:53 Сейчас в теме
маладца, хороший подход
всегда радуют простые и эффективные решения
Андроид; +1 Ответить
2. Андроид 215 08.07.11 16:26 Сейчас в теме
Мне тоже понравилось. +1
3. naa1c 78 08.07.11 17:10 Сейчас в теме
желательно еще учитывать не только дату завершения, но и дату, с которой будет назначена роль.
просто бывает, что заранее сообщают даты отпуска сотрудника, и сразу роль заместителю не поставишь, потому что сотрудник еще пока работает, а потом можно забыть)
cleaner_it; +1 Ответить
4. artbear 1448 08.07.11 17:40 Сейчас в теме
(0) Молодец, но почему код как картинка-то?
выложи нормальный код, хотя бы в файлы :(
а лучше Разукрашкой раскрась код и замени картинки на этот код.
Тогда плюсану.
5. EastGuy 53 08.07.11 19:41 Сейчас в теме
artbear пишет:

(0) Молодец, но почему код как картинка-то?
выложи нормальный код, хотя бы в файлы :(
а лучше Разукрашкой раскрась код и замени картинки на этот код.
Тогда плюсану.


Сори, первая моя публикация и к своему стыду не знаю как нормально выложить код с расскраской. Выложу файлы кода.
6. artbear 1448 09.07.11 09:28 Сейчас в теме
(5) открываешь сайт, в строке поиска пишешь Разукрашка, первый же вариант открываешь, читаешь, изучаешь, качаешь, юзаешь.
все просто :)
7. cleaner_it 220 10.07.11 18:01 Сейчас в теме
Простое и изящное решение!
8. Flashback1979SE 12.07.11 02:50 Сейчас в теме
отличное решение), выложи одним файлом, плиз
9. Sony26 3 14.07.11 06:31 Сейчас в теме
Просто супер только не понятно В регисте у роли какой тип будет ????
10. EastGuy 53 14.07.11 08:13 Сейчас в теме
11. Sony26 3 14.07.11 11:24 Сейчас в теме
Да у меня тоже Строка.Тогда у меня не выходит в регистр не перезаписывается если я у пользователя другую роль ставлю в регистре остается та которая была раньше. И как работают регламентрые задания ??? Они зависят от конкретного пользователя или сами по себе запускаются ?
12. Sony26 3 14.07.11 11:40 Сейчас в теме
Выходит надо еще регистр создать Журнал изменений прав пользователей???
13. Sony26 3 14.07.11 11:42 Сейчас в теме
14. EastGuy 53 14.07.11 15:03 Сейчас в теме
Вообще у меня есть регистр по изменениям прав доступа, но для этой разработки он не нужен и это совсем другая история - возможно это будет следующая публикация.

Принцип такой: при изменении ролей у пользователя если для роли стоит дата завершения, то для этого пользователя для этой роли делаем запись в регистре сведений (права на регистр только у роли администрирования пользователей). Далее на регламентном задании (пользователь от чьего имени делается не важно для клиент-сервера) проверяет есть ли в регистре записи с датой завершения сегодня и просто удаляет у пользователя эти роли и из регистра сведений.
15. Sony26 3 15.07.11 03:11 Сейчас в теме
Они же сами должны удаляться при запуске пользователя у которого у данной роли истек срок ??? Или ручками регистр чистить ? Заранее благодарю!
16. EastGuy 53 15.07.11 05:52 Сейчас в теме
Sony26 пишет:
. Далее на регламентном задании (пользователь от чьего имени делается не важно для клиент-сервера) проверяет есть ли в регистре записи с датой завершения сегодня и просто удаляет у пользователя эти роли и из регистра сведений.


Регистр чистится по регламентному заданию каждое утро - на регламентном задании процедура висит из картинки №5.
yuliya22; +1 Ответить
17. yuliya22 2 18.07.11 11:27 Сейчас в теме
У меня такая же тема Бух 8.2 Регламентрые задания не запускаются. Может дело в том что на SQL сервере база. ???
18. yuliya22 2 20.07.11 09:22 Сейчас в теме
Все получилось спасибо всем за помошь. Это была проблема в свойствах сервера 1С Предприятия. Там регламентные задания отключаются.
19. kr_andr 23.11.11 10:33 Сейчас в теме
20. It-developer 24 21.01.12 12:50 Сейчас в теме
Оставьте свое сообщение