0. Kaperang 93 15.11.11 10:30 Сейчас в теме

Периодическая смена паролей пользователей базы 1С

В Windows существует механизм периодической принудительной смены паролей пользователями с возможностью установки минимально допустимой длины и требований по сложности. В статье рассказывается, как реализовать аналогичный механизм для пользователей базы 1С.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. sergson1 15.11.11 10:30 Сейчас в теме
Очень необходимая вещь, для тех кто работает в больших организациях и не доверяет своим коллегам))
2. veforg 26 15.11.11 10:37 Сейчас в теме
Лучше использовать доменную авторизацию чем выдумывать свой велосипед.
ukkom; zekrus; alex_bob; левый слон; +4 Ответить
4. dka80 16 16.11.11 08:04 Сейчас в теме
(2) доменная авторизация хороша там, где один компьютер - один пользователь. А если взять торговый зал магазина? А если мне надо зайти под другим пользователем 1С из текущего сеанса ОС?
antidot_alf; cleaner_it; +2 Ответить
5. alon 171 16.11.11 10:31 Сейчас в теме
(4)А для этого придумали switch user, run as different user, log off наконец. Все уж лучше, чем заставлять продавцов помнить по 5 паролей.
17. Abadonna 3825 18.11.11 03:47 Сейчас в теме
(5)
А для этого придумали switch user, run as different user, log off наконец. Все уж лучше, чем заставлять продавцов помнить по 5 паролей.

А кто мешает при авторизации 1С ввести тот же доменный пароль? И не помнить по 5?
21. Kaperang 93 18.11.11 07:51 Сейчас в теме
(17) Abadonna, ну как бы, если у всех учетных записей пользователя одинаковые пароли, это не есть гуд. Это азы информационной безопасности. А вообще, приходится, как правило, делать компромисс между требованиями безопасности и удобством работы пользователей.
23. Kaperang 93 18.11.11 08:10 Сейчас в теме
(17) Abadonna, правильно, пока ничего не мешает. Поэтому и ищу способ сравнения паролей доменной учетной записи и учетной записи 1С.
9. ms200999 17.11.11 15:49 Сейчас в теме
(2) Например, работаем через веб-клиент с нетбука на пляже. Какая доменная авторизация?
Опять же, случаются внешние пользователи, не имеющие учетной записи в домене.
3. Altair777 639 15.11.11 13:05 Сейчас в теме
(0) "P.S. Дополнительно хотелось бы прикрутить проверку на несовпадение паролей пользователя Windows и пользователя базы 1С. К сожалению, мне не удалось найти способа сравнения данных паролей."

И, кажется, не найдешь. :)
1С хранит не сами пароли, а их хеш. Насчет Винды не уверен, но если и нее и 1С одинаковый алгоритм шифрования, то можно сравнивать хеши. Кстати, смену паролей я тоже делал, но немножко другими методами.
6. YuliaYVS 27 16.11.11 12:35 Сейчас в теме
Вещь хорошая, а если ещё поставить ограничения на количество повторов ввода пароля ))), потом и сам не зайдешь.
7. AAndryA 17.11.11 13:45 Сейчас в теме
Дали недавно анологичную задачу ! Щас смотреть буду может подойдет и велосипед изобретать не придется !
8. AAndryA 17.11.11 15:44 Сейчас в теме
В процедуру "ПриНачалеРаботы" модуля приложения добавляется вызов процедуры "раПроверитьСрокПароля(ПараметрыСеанса.Пользователь)". Я что то саму процедуру не вижу ! :(
10. babylon_5 55 17.11.11 18:28 Сейчас в теме
(8) похоже имеется в виду функция 'раПарольПросрочен'
11. Kaperang 93 17.11.11 18:49 Сейчас в теме
(8)AAndryA, прошу прощения - мой недосмотр. Процедура выглядит так:
Процедура раПроверитьСрокПароля(Пользователь) Экспорт
	Если раПарольПросрочен(Пользователь) Тогда
		раСменитьПароль(Пользователь);
	КонецЕсли;
КонецПроцедуры
12. babylon_5 55 17.11.11 20:14 Сейчас в теме
Продолжаем...
/*********************
1) Ошибка при вызове метода контекста (ПолучитьОбщуюФорму)
НоваяФорма = ПолучитьОбщуюФорму("ВводПароля",,"Моя форма");

2) Ошибка при установке значения атрибута контекста (ПериодическаяСменаПароля)
обПользователь.ПериодическаяСменаПароля = ЗначениеДляПодстановки;
по причине:
Реквизит недоступен для группы
13. Kaperang 93 17.11.11 20:32 Сейчас в теме
(12) babylon_5,

1) упс....да, совсем забыл ... нужно добавить еще общую форму под названием "ВводПароля"
с одним реквизитом формы "Пароль" строкового типа с установленным свойством "Режим пароля"и процедурой:

Процедура ПриЗакрытии

   Возврат Пароль;

КонецПроцедуры


завтра поправлю статью

2)тут вариантов решения ошибки два:
или установите для реквизита "ПериодическаяСменаПароля" справочника "Пользователи" свойство "Использование" в "Для группы и элемента".
или можно изменить соответствующий кусок кода с:
обПользователь = элПользователь.Ссылка.ПолучитьОбъект();
     			обПользователь.ПериодическаяСменаПароля  = ЗначениеДляПодстановки;
     			обПользователь.Записать();


на
Если НЕ элПользователь.ЭтоГруппа Тогда 
                        обПользователь = элПользователь.Ссылка.ПолучитьОбъект();
     			обПользователь.ПериодическаяСменаПароля  = ЗначениеДляПодстановки;
     			обПользователь.Записать();
КонецЕсли;
14. babylon_5 55 17.11.11 21:43 Сейчас в теме
(13)
тут вариантов решения ошибки два:

Хм, я пошел третьим путем. Группы отсеял еще в запросе.
Запрос.Текст = "ВЫБРАТЬ
		|	Пользователи.Ссылка КАК Ссылка
		|ИЗ
		|	Справочник.Пользователи КАК Пользователи
		|ГДЕ
		|	Пользователи.ЭтоГруппа = ЛОЖЬ"


P.S. А почему публикация не активна?
15. babylon_5 55 18.11.11 00:57 Сейчас в теме
(13) И вот вместо этого:
Процедура ПриЗакрытии

   Возврат Пароль;

КонецПроцедуры

может таки что-то вроде:
Процедура ОсновныеДействияФормыОк(Кнопка)
   Закрыть(Пароль);
КонецПроцедуры

А то как-то не гармонирует. Процедура,.. Возврат...
19. Kaperang 93 18.11.11 07:40 Сейчас в теме
(15)Согласен. Писал по памяти на скорую руку. Сегодня выложу оригинальный рабочий код из базы.
16. babylon_5 55 18.11.11 01:29 Сейчас в теме
Еще может родиться проблема с "V82.ComConnector" если база запускается не под последней установленной на компьютере версией платформы. Например стоит что-то из 8.2.14, а базу запускаем под 8.2.13. Вот тут-то и родится... прикол с созданием объекта...
22. Kaperang 93 18.11.11 08:06 Сейчас в теме
(16) babylon_5, хорошее замечание. Надо будет воспроизвести на тестовой базе. Хотя для того, чтобы база запустилась в таком режиме, надо это прописать это в ее настройках (В окне списка баз - "Настройки баз" - "Используемые версии"). А это весьма редко используемая, на мой вгляд, настройка.
У нас был несколько иной вариант: изначально база была на 8.1, соответственно в коде стояло "V81.ComConnector".
При переходе на 8.2 этот кусок кода забыли поправить.
В итоге полмесяца система воспринимала любой введенный пользователем "от балды" пароль, как старый пароль системы.
Отрабатывала конструкция "Попытка-Исключение-КонецПопытки". Но база с ошибкой не вываливалась.
18. Abadonna 3825 18.11.11 04:07 Сейчас в теме
(0)
Ответственность за действия, совершенные под учетной записью пользователя, в том числе, и другими лицами, несет сам пользователь

Мне всегда было интересно: неужели найдется такой человек, который добровольно полезет в 1С под чужой учетно записью и будет там что-то делать?
А если он убежденный, целенаправленный вредитель, то, будь уверен, он найдет способ попасть в базу хоть по пять раз на дню пароль меняй!
ИМХО, опять "паранойя безопасности". И проггеры при деле :)))
20. Kaperang 93 18.11.11 07:47 Сейчас в теме
(18) Abadonna, реальный пример: у нас автоцентр. Есть станция СТО, где работают мастера-приемщики. И есть отдел запасных частей, где работают продавцы. Премию за проданную деталь получает тот, кто поставил ее в резерв под клиента. Соответственно, если есть право на корректировку резервов, возникает изкушение сбросить старый резерв, и зарезервировать деталь снова на того же клиента, но уже от своего имени. Ни у мастеров-приемщиков, ни у продавцов прав на снятие резервов нет. Но если как-бы вдруг, у кого-то из них оказался пароль от учетной записи пользователя, имеющего право на корректировку резервов....У нас такие ситуации были. Наказали обоих - и "злодея", и того, кто дал пароль от своей учетки.
24. Kaperang 93 18.11.11 08:32 Сейчас в теме
Вообще, уровень мер по информационной безопасности должен находится в прямой зависимости от размера организации, количества конкурентов в регионе и ценности информации в базе.
Ваш прокси-сервер никогда не пытались брут-форсить? И сотрудникам вашей организации никогда не предлагали продать клиентскую базу? Тогда естественно Вам непонятно то, что Вы называете "паранойей безопасности".

Меры информационной безопасности нужны, но впадать в фанатизм конечно не стоит. Повторюсь, нужный разумный компромисс между удобством работы пользователей и данными мерами.
25. Lyuba-Lyuba 23.11.11 10:24 Сейчас в теме
26. _ink_ 01.12.11 13:04 Сейчас в теме
Нужная вещь. Хотя на мой взгляд всё должно быть комплексно. Единственное что напрягает то это постоянно держать в голове кучу паролей. И, боюсь, что через несколько смен у большинства пользователей пароли будут уровня "123qwe" или всё будет писаться в ежедневник... Хотя это уже другая история и проблемы службы безопасности.
27. Oleg1708 17.01.12 16:58 Сейчас в теме
Вот тут тоже ошибка записи пароля будет, для Альфы.

ТекПользователь.Пароль=ТекстПароля1;
Попытка
ТекПользователь.Записать();
ОбъектПользователь.ДатаПоследнейСменыПароля = ТекущаяДата();
ОбъектПользователь.Записать();
ПарольЗаменен = истина;
Исключение

ОбъектПользователь - записывает пароль. И если его не установить то запишет старый. В альфе такой "прикол".
28. Kaperang 93 18.01.12 08:12 Сейчас в теме
(27) Oleg1708, а первая строка приведенного Вами куска кода что делает?

ТекПользователь.Пароль=ТекстПароля1;


Она как раз и устанавливает новый пароль.
Доработка работает на базе с конфигурацией "Рарус:Альфа-Авто" с >50 пользователями уже больше года.
Единственная трабла возникла при переходе на 8.2. Пришлось переписать в коде "V81.COMConnector" на "V82.COMConnector"
29. Oleg1708 18.01.12 09:54 Сейчас в теме
(28)
да да.
устанавливает. а эта:
ОбъектПользователь.Записать();

перезаписывает.

перезаписывает этого же пользователя со старым паролем. Но это в альфе такое, если у пользователя
админ.функции установлены.
в проц. призаписи есть такое:
Если ПользовательИБ <> Неопределено И ПравоДоступа("Администрирование", Метаданные) Тогда
Попытка
ПользовательИБ.Записать();
Исключение
Сообщить(ОписаниеОшибки());
Отказ = Истина;
Возврат;
КонецПопытки;
КонецЕсли;
30. Evgen2011 2 10.02.12 13:27 Сейчас в теме
Что-то не нашел процедуры на проверку сложносит пароля, хотя она вроде в описании указана
32. Kaperang 93 10.04.12 09:22 Сейчас в теме
(30) Evgen2011, сложность и длина пароля настраивается средствами самой платформы. Конкретно: Конфигуратор - Администрирование - Параметры информационной базы. Там можно включить проверку сложности пароля и минимальную его длину. При установке нового пароля (неважно,интерактивно или программно), если он не удолетворяет заданным условиям, то платформа вызывает исключение. Проще говоря, вываливается сообщение об ошибке. У меня это обрабатывается конструкцией:

ТекПользователь.Пароль=ТекстПароля1;
				Попытка                  
					ТекПользователь.Записать();
					ОбъектПользователь.ДатаПоследнейСменыПароля = ТекущаяДата();
					ОбъектПользователь.Записать();
					ПарольЗаменен = истина;
				Исключение
					ТекстОшибки = ОписаниеОшибки();
					Место = Найти(ТекстОшибки,"Записать):");
					Длина = СтрДлина(ТекстОшибки);
					ТекстОшибки = Прав(ТекстОшибки,Длина - Место-10);
					Если ТекстОшибки = "Заданный пароль короче установленной минимальной длины" Тогда
						ТекстОшибки = ТекстОшибки +": "+ ПолучитьМинимальнуюДлинуПаролейПользователей()+" символов.";				
					КонецЕсли; 
					Если ТекстОшибки = "Заданный пароль не удовлетворяет требованиям сложности" Тогда
Показать
33. ak0710 27.04.12 15:10 Сейчас в теме
Как раз требовалось такая фича, немного посмотрев комментарии удалось успешно установить данную наработку
34. Jetoo 05.06.12 05:28 Сейчас в теме
может кто-нибудь подсказать по поводу:

В файловом варианте все работает, а в серверном после ввода нового пароля выдает:
"После изменения в списке пользователей не осталось бы никого с административными правами"

посмотрел в справке Роли:
Тип: РолиПользователя. Содержит коллекцию ролей пользователя информационной базы.
Примечание:
Доступно только пользователю с административными правами.

И действительно, если у пользователя админские права - все проходит без ошибок. А без них похоже просто не видит ролей.

Но почему в файловом все работает и без админских?? Как сделать в серверном?
35. son_v 2 23.08.12 09:17 Сейчас в теме
Надо темку запомнить. Очень полезная. Спасибо.
36. suxo 13.07.13 03:45 Сейчас в теме
Подскажите, в программировании очень туго. Это можно применить к УТ 8,2 ? или надо много переписывать.
Если сделать все по плану то на УТ тоже заработает? Просто делать по плану буду долго, а если окажется в конце что это не работает на УТ 10,3 то будет грустно :)
37. tiniji 153 05.09.16 05:11 Сейчас в теме
Может кто-нибудь нашел как закрыть смену пароля через Сервис - Параметры пользователя ?
38. Synoecium 633 05.09.16 11:18 Сейчас в теме
(37) tiniji, А что если поставить галку "Запрет на изменение пароля"? В форме редактирования пользователя есть код, который отвечает за доступность пароля, теоретически его можно подредактировать и дать возможность менять несмотря на значение этой галки.
39. user600441_sonic400 06.09.16 14:20 Сейчас в теме
может я что-то не правильно понял но я пытаюсь запустить ее из модуля упраляемого прложения в процедуре ПриНачалеРаботыСистемы()
раПроверитьСрокПароля(Пользователь);
КонецПроцедуры;
просто не видит ее может сможете подсказать в чем косяк?
40. Kaperang 93 06.09.16 19:41 Сейчас в теме
(39) user600441_sonic400, обработка писалась 5 лет назад под обычные формы. Без "допиллинга" на управляемых формах точно не взлетит. Могу навскидку предположить:. 1. У общего модуля, в котором размещена процедура раПроверитьСрокПароля не включено свойство "Сервер". 2. Перед процедурой есть директива прекомпилятору "Если Клиент"
41. Kaperang 93 06.09.16 19:47 Сейчас в теме
(39) user600441_sonic400, в 8.2 не так давно появились методы работы с md5-хешем. В частности, получение хэша текущего пароля. Их использование, думаю может помочь в сравнении старого и нового паролей. В таком случае можно будет избежать "костыля" с использованием v8.connector. На выходных попробую переделать механизм под новые технологии.
42. Kaperang 93 06.09.16 19:53 Сейчас в теме
(39) user600441_sonic400, посмотрите еще вот эту обработку:тыц. Автор взял за основу мою обработку и "допилил" её под управляемые формы.
43. AnnaKalacheva 6 04.04.18 12:42 Сейчас в теме
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Программист 1С
Москва
зарплата от 120 000 руб.
Полный день

Руководитель проекта, аналитик, консультант
Санкт-Петербург
По совместительству

Программист 1С
Самара
зарплата от 100 000 руб. до 150 000 руб.
Полный день

Бизнес-аналитик 1С
Москва
зарплата от 140 000 руб. до 200 000 руб.
Полный день