powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Security / impersonalization
10 сообщений из 10, страница 1 из 1
Security / impersonalization
    #33842936
Mike Sikalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги,

поделитесь, плиз, своим видением подхода к решению такой задачи:

- приложение предоставляет некоторый набор функций (приложение 2-х уровневое, обычный client/server)

- есть некоторый сервис (windows service), способный запустить приложение и "попросить" его выполнить такую-то функцию

- сервис выгребает из "очереди" (на самом деле - таблица БД) заявки на выполнение ф-ций и запускает. В заявке указано какую функцию выполнить, параметры, когда запустить (as soon as possible / not earlier than ...) + запускать на конкретном сервисе или на любом свободном.

Вопрос, как быть с секьюрити? В идеале хоелось бы, чтобы клиент, запрашивающий задачу ввел имя/пароль (или сказал использовать текущие), а в назначенное время сервис создал бы процесс с указанными credentials.. Но где и как это все сохранять?

Ваше мнение? Может, известны какие-н. стандартные подходы к решению таких задач?

Заранее благодарен,
Mike
...
Рейтинг: 0 / 0
Security / impersonalization
    #33842974
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mike SikaloВаше мнение? Может, известны какие-н. стандартные подходы к решению таких задач?

ИМХО, проверять права нужно в момент размещения заявки в очереди, чтобы в очереди не было "левых" заявок. Т.е. защищать службу нужно уже на входе в очередь, а дальше служба будет просто выполнять заявки со своими привилегиями.
Дополнительно можно ввести цифровую подпись заявки, чтобы служба была уверена, что заявка поступила именно от авторизованного пользователя или через авторизованный интерфейс.
...
Рейтинг: 0 / 0
Security / impersonalization
    #33843046
Mike Sikalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab
ИМХО, проверять права нужно в момент размещения заявки в очереди, чтобы в очереди не было "левых" заявок. Т.е. защищать службу нужно уже на входе в очередь, а дальше служба будет просто выполнять заявки со своими привилегиями.
Дополнительно можно ввести цифровую подпись заявки, чтобы служба была уверена, что заявка поступила именно от авторизованного пользователя или через авторизованный интерфейс.

Так а как сохранить проверенные права, чтобы потом ими воспользоваться? Идея хранить логин/пароль вместе с заявкой в БД, пусть даже в зашифрованном/подписанном виде все же, мягко говоря, смущает.. Или я чего-то не понял?
...
Рейтинг: 0 / 0
Security / impersonalization
    #33843157
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab ИМХО, проверять права нужно в момент размещения заявки в очереди, чтобы в очереди не было "левых" заявок. Т.е. защищать службу нужно уже на входе в очередь, а дальше служба будет просто выполнять заявки со своими привилегиями.
Дополнительно можно ввести цифровую подпись заявки, чтобы служба была уверена, что заявка поступила именно от авторизованного пользователя или через авторизованный интерфейс+1
Mike SikaloТак а как сохранить проверенные права, чтобы потом ими воспользоваться? А зачем ? Пусть сервис делает все от своего имени.
Более того, это правильнее с т.з. аудита совершенных действий.
...
Рейтинг: 0 / 0
Security / impersonalization
    #33843181
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mike SikaloТак а как сохранить проверенные права, чтобы потом ими воспользоваться? Идея хранить логин/пароль вместе с заявкой в БД, пусть даже в зашифрованном/подписанном виде все же, мягко говоря, смущает.. Или я чего-то не понял?

Храни в заявке список привилегий или роль пользователя без пароля. Ведь ты можешь проверить, что у пользователя на момент размещения заявки была некая роль?

Отдели аутентификацию от авторизации. Сначала аутентифицируй пользователя (только для этого и нужен пароль), выполни авторизацию, привяжи к заявке полученный список привилегий или роль этого пользователя, подпиши заявку. Дальше сервис прочитает заявку, проверит подпись, прочитает список привилегий, проверит, достаточно ли их для выполнения заявки.
Проверять привилегии можно по разному прикладными средствами или системными (например запускать процесс от имени системной роли-пользователя с указанными в заявке привилегиями), но суть от этого не меняется - в заявке не нужен пароль, а нужен набор привилегий.
...
Рейтинг: 0 / 0
Security / impersonalization
    #33843283
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabИМХО, проверять права нужно в момент размещения заявки в очереди,
Не годится хотя бы из соображения "права меняются со временем". Допустим, я размещу на сервере задачу "ежемесячно выписывать сотруднику mcureenab премию в $1000". Если теперь мой лимит обрежут до премий в $100 - эта задача, весьма вероятно, должна перестать выполняться.

mcureenabа дальше служба будет просто выполнять заявки со своими привилегиями.
А это еще и значит создание автоматического суперпользователя с суперправами. Значит, возникает проблема защиты его пароля.
...
Рейтинг: 0 / 0
Security / impersonalization
    #33843302
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> поделитесь, плиз, своим видением подхода к решению такой задачи:

1. Проверка полномочий пользователя на момент постановки задачи в очередь.
2. Проверка полномочий пользователя на момент выполнения задачи.
3. Проверка полномочий бота (сервиса).

В зависимости от количества времени, которое планируется потратить на эту задачу, можно использовать все три проверки.

> где и как это все сохранять?

Судя по упоминанию таблицы в первом сообщении треда, речь идет о существующем приложении. Просто дополните его нужной структурой данных.
...
Рейтинг: 0 / 0
Security / impersonalization
    #33843336
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer mcureenabИМХО, проверять права нужно в момент размещения заявки в очереди,
Не годится хотя бы из соображения "права меняются со временем". Допустим, я размещу на сервере задачу "ежемесячно выписывать сотруднику mcureenab премию в $1000". Если теперь мой лимит обрежут до премий в $100 - эта задача, весьма вероятно, должна перестать выполняться.

Согласен. Зависит от постановки задачи. Можно и так и эдак делать.

Мой вариант мне нравится в 10 раз больше. :o)))

softwarer mcureenabа дальше служба будет просто выполнять заявки со своими привилегиями.
А это еще и значит создание автоматического суперпользователя с суперправами. Значит, возникает проблема защиты его пароля.

Такого пользователя создавать не обязательно. Можно создать несколько учётных записей с вполне конкретными и ограниченными привилегиями.
Защита пароля здесь уходит на второй план, если ограничить возможность подключения только с определённых хостов, чтобы только сервер службы мог пользоваться этими учётными записями или супер пользователем и никто другой.
...
Рейтинг: 0 / 0
Security / impersonalization
    #33843354
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabЗащита пароля здесь уходит на второй план, если ограничить возможность подключения только с определённых хостов
Согласен. Но я бы все-таки обдумал пути несоздания слабого места - скажем, можно при постановке в очередь создавать job с правами этого пользователя.
...
Рейтинг: 0 / 0
Security / impersonalization
    #33843471
Mike Sikalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всем спасибо за высказаные идеи,

- кроме того, что права могут изменяться во времени, есть еще какие-н. недостатки у подхода

"аутентифицировать пользователя при помещении заявки в очередь, а затем просто выполнить задачу с правами этого пользователя; сервис при этом запускает процессы всегда от имени некоторого предопределенного пользователя"

?
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Security / impersonalization
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]