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

09.04.13

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Проверка временных прав при открытии общей формы
.txt 3,45Kb
60
60 Скачать (1 SM) Купить за 1 850 руб.
Открывок функции при записис пользователя
.txt 1,74Kb
16
16 Скачать (1 SM) Купить за 1 850 руб.
Проверка временных прав на релгаментированном задании
.txt 3,57Kb
19
19 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

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


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

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

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

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

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

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

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

 

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

 

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

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

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

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

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

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

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

 

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

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


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

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

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

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

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

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

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

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

 

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

 

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

См. также

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

Предлагается внешняя обработка для просмотра данных в формате ASN1. Есть 2 режима: загрузка из бинарного формата и из BASE64. Реализована функция извлечения всех сертификатов, которые можно найти в ASN1-файле. В дополнении к этому продукту предлагается методическая помощь по вопросам, связанным с технической реализацией криптографии и шифрования в 1С.

2400 руб.

29.08.2016    30187    10    1    

11

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

Все еще храните пароли в базе? Тогда мы идем к вам! Безопасное и надежное хранение секретов. JWT авторизация. Удобный интерфейс. Демо конфигурация. Бесплатно.

30.05.2024    6846    kamisov    18    

61

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

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

27.02.2024    8622    PROSTO-1C    10    

39

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

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

1 стартмани

27.10.2023    2608    platonov.e    1    

23

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

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

5 стартмани

24.04.2023    6448    21    soulner    8    

33

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

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

2 стартмани

08.12.2022    7592    53    Silenser    12    

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

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


Сори, первая моя публикация и к своему стыду не знаю как нормально выложить код с расскраской. Выложу файлы кода.
6. artbear 1565 09.07.11 09:28 Сейчас в теме
(5) открываешь сайт, в строке поиска пишешь Разукрашка, первый же вариант открываешь, читаешь, изучаешь, качаешь, юзаешь.
все просто :)
7. cleaner_it 209 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 26 21.01.12 12:50 Сейчас в теме
Оставьте свое сообщение