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С
Санкт-Петербург
зарплата от 120 000 руб.
Полный день

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

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

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

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