Доступ к общей папке для приложения, но не для пользователя - PullRequest
0 голосов
/ 18 апреля 2019

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

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

Хорошо, они не могут читать конфиденциальные данные, так как они зашифрованы, но - учитывая некоторую преступную энергию или глупость - они могут просто открыть проводник Windows, перейти к этой общей папке и удалить там файлы.

Я пытался, но не смог открыть общий ресурс SMB только для своего приложения - как только мое приложение проходит проверку подлинности, у текущего пользователя Windows есть доступ.

(Я попытался использовать WNetAddConnection2, но как только произошла аутентификация, соединение открывается и для всех других программ. И если я не сопоставлю папку SMB с буквой диска, я даже не смогу снова отключить диск )

Существуют ли возможности для проверки подлинности только процесса или потока, а не текущего пользователя для доступа к общему сетевому ресурсу?

Или есть эффективные альтернативы акциям малого и среднего бизнеса? Одна запись данных имеет размер от 100 до 900 МБ. Поэтому мне нужна поддержка для чтения / записи произвольного доступа к файлам.

Использование SFTP и перекачка всех данных на рабочую станцию ​​при открытии и отправка всего обратно при закрытии не вариант. Это может привести к нагрузке на сеть, и в случае сбоя приложения все изменения будут потеряны, а при использовании «обычного» доступа будут потеряны только данные в сетевом кэше.

Есть рекомендации?

1 Ответ

2 голосов
/ 18 апреля 2019

Существуют ли возможности для проверки подлинности только процесса или потока, а не текущего пользователя для доступа к общему сетевому ресурсу?

Нет. Модель безопасности Windows основана на пользователях, а не на приложениях. Чтобы применить права для каждого отдельного процесса, вам необходимо запустить приложение от имени данного пользователя. Чтобы применить права для каждого потока, вам придется выдать себя за данного пользователя перед выполнением работы, а затем отменить олицетворение, когда закончите.

...