Ограничение доступа

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

Защита от несанкционированных действий основывается на принципе регистрации пользователя для работы с системой путем ввода его личного пароля. Кроме того, сведения о зарегистрировавшемся пользователе необходимы для его идентификации и протоколирования действий в течение всего времени работы в Среде Исполнения.

Ограничение доступа не является обязательной настройкой проекта. При его использовании возможен контроль над действиями пользователей путем использования внутренних контрольных переменных в сценариях проекта.

Определение списка пользователей и их уровня полномочий возможно только для Администратора (уровень доступа более 9000).

Для определения пользователей нажмите кнопку Пароли… на основном диалоге конфигурации проекта (см. раздел Настройка проекта). При этом появится диалог регистрации, так как при запуске Среды Разработки или Среды Исполнения уровень доступа исходно равен 0.

В каждом новом проекте автоматически создается пользователь с именем "Administrator" и паролем "nopassword" по умолчанию, имеющий уровень доступа 9999 и которому доступны любые действия. В дальнейшем, после определения реальных пользователей уровня Администратор предопределенный пользователь "Administrator" должен быть удален из проекта.

После указания в диалоге регистрации имени пользователя и пароля нажмите кнопку OK. Если введенная информация о пользователе неверна, появится сообщение о неудачной попытке регистрации.

При успешной регистрации на экране появляется диалог конфигурирования пользователей.

Добавьте в список нового пользователя-разработчика с уровнем Администратора, а пользователя "Administrator" удалите.

Для добавления пользователя нажмите на кнопку Добавить. При этом в список будет добавлен пользователь "Operator" с паролем "nopassword" и уровнем доступа 1000. Измените имя нового пользователя, укажите его пароль и уровень доступа в пределах от 0 до 9999.

Для удаления пользователя выберите его имя в списке пользователей и нажмите кнопку Удалить.

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

После изменения имени, пароля или уровня доступа нажмите кнопку OK.

Ограничение доступа к SCADA-проекту в Среде Исполнения

После регистрации пользователя в Среде Исполнения доступ к защищенным функциям будет предоставляться только после сравнения его уровня доступа со значением, записанным во внутренней контрольной переменной Среды Исполнения.

Например, в свойствах анимации графического объекта признак доступности данного объекта может быть назначен только для пользователей с уровнем доступа большим 5000. Поэтому к данному объекту будут иметь доступ пользователи Administrator и Сидоров, а пользователю Петров доступ к объекту будет заблокирован.

Использование в сценариях проекта средств ограничения доступа

Для использования защиты от несанкционированного доступа в языке сценариев предусмотрены функции регистрации пользователя, получения имени и уровня доступа зарегистрированного в Среде Исполнения пользователи:

Функция Назначение
ChangeAccessLevel Выполняет регистрацию пользователя с паролем, передаваемым как аргумент функции. Возвращает 1 в случае успешной регистрации, 0 - при ошибке.
GetAccessLevel() Получает уровень доступа оператора. Возвращает целое число от 0 до 9999.
GetUserName() Получает имя оператора. Возвращает строку с именем.

В проекте необходимо разработать окно регистрации с полем ввода пароля. К нему привязать Ввод строковых значений, в котором указать Ввод пароля. В сценарии дисплейных функций (см. раздел Сценарии графических объектов использовать функцию ChangeAccessLevel.

Пример:

if (ChangeAccessLevel(this.Text)) Message(400, "Регистрация пользователя " + GetUserName());

else Message(0, "Пароль задан неверно");

У графических объектов, поведение которых должно зависеть от уровня доступа предусмотреть сценарии, учитывающие текущий уровень доступа. Для этого использовать функцию GetAccessLevel.

Пример:

this.Enabled = GetAccessLevel()>=5000;

/* объект не реагирует на действия пользователя с уровнем менее 5000 */