Запретить пользователям вход в систему с использованием их учетных записей базы данных - PullRequest
1 голос
/ 06 ноября 2019

У меня есть следующая бизнес-проблема, которую нужно решить в большом устаревшем приложении, написанном на PL / SQL и Oracle Forms 6i:

Не разрешать пользователям входить в систему, используя свои учетные записи базы данных.

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

Переписывание приложения для использования новой логики прав пользователя (с использованием таблицы, такой как USERS, только 1 пользователь базы данных и т. Д.) Выходит за рамкивопрос, так как это слишком много работы.

Я подумал о следующем решении для использования существующих пользователей базы данных:

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

Но естьодна проблема с этим обходным путем - вы не можете использовать «соединение» в пакете. Поэтому я не могу его использовать.

begin
    IF
        p_in_user == USER2 AND p_in_pass == XXX
    THEN
        EXECUTE IMMEDIATE 'conn USER2/Password123'; -- doesn't work, using a proxy neither
    END IF;
END;

У кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 07 ноября 2019

Отдел аудита не позволяет пользователям знать свои учетные записи в базе данных пароли

Вы можете использовать зашифрованные пароли.

Oracle позволяет использовать зашифрованные пароли через настройки профиля.

Вы можете использовать функцию для записи чистого пароля:
чистый пароль предоставляется конечному пользователю
, а в базе данных oracle учетная запись пользователя создается / изменяется с помощью зашифрованного пароля.

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

Пожалуйста, подтвердите, что это решение в порядке, поэтому я могу опубликовать пример.

...