Привилегированное повышение на основе ролей / команд на уровне ОС для использования с автоматизацией через интерфейсный / внутренний процесс с дополнительной аутентификацией
Я хочу разработать веб-приложение / решение LAMP и после значительного количества поисков начинаю думать, что невозможно делать то, что я хочу. Не знаю, как объяснить это кратко, поэтому я прошу прощения за многословие.
И прежде чем начать, я хочу держаться подальше от дорогих решений корпоративного уровня. В надежде на что-то, что я могу разработать самостоятельно (если кто-то может помочь с логикой / алгоритмом кода, который мне нужен) или что-то бесплатное / с открытым исходным кодом. В худшем случае, если мне придется заплатить лицензию за личное использование, это тоже хорошо. В основном ищу что-то для личного пользования.
Позвольте мне объяснить желаемый конечный результат:
- Учетные записи пользователей (которые не сопоставляются с учетной записью ОС) будут созданы в веб-приложении.
- Типичная аутентификация / авторизация веб-приложения (с 2FA / MFA)
- Учетные записи пользователей будут сопоставлены разрешениям на чтение / запись файловой системы, привязанным к учетной записи ОС.
- Это сопоставление должно поддерживаться и администрироваться на сервере вне веб-приложения.
- Это то, что администратор сервера будет делать где-то в ОС
- Идея заключается в том, что пользователи смогут читать / записывать файлы на сервере, как если бы они были связанной учетной записью ОС
- Надежда состоит в том, что у пользователя будет два шлюза безопасности, через которые он должен будет авторизоваться: веб-приложение и ОС ( что-то, чего веб-приложение не знает )
Вот более подробный пример:
- ОС имеет две человеческие интерактивные учетные записи:
osuser1
иosuser2
- ОС имеет одну неинтерактивную учетную запись, не относящуюся к человеку, и Apache будет работать так:
www-data
- Веб - приложение имеет три человека интерактивные учетные записи, которые пользователи будут входить в с (используя свой веб - браузер):
webuser3
,webuser4
,webuser5
- учетные записи в веб-приложении разрешены на уровне операционной системы следующим образом:
webuser3
Можно:- читать файлы
/home/osuser1
какosuser1
- читать и записывать файлы в
/home/osuser2
видеosuser2
- читать файлы
webuser4
Можно:- читать и записывать файлы в
/home/osuser1
видеosuser1
- читать и записывать файлы в
webuser5
Можно:- записывать файлы
/home/osuser2
какosuser2
- записывать файлы
- это сопоставление прав доступа пользователя веб-приложения к операционной системе должно поддерживаться в операционной системе вне веб-приложения
Как бы я хотел, чтобы это работало:
- пользователь регистрируется в веб - приложение (
webuser3
,webuser4
,webuser5
) - пользователь взаимодействует с пользовательским интерфейсом, чтобы вывести список файлов или создать файл в какой-либо папке
- веб-приложение запросит дополнительную информацию для аутентификации / авторизации, такую как код PW и / или 2FA / MFA
- веб-приложение отправит информацию в ОС:
- дополнительная информация об аутентификации / авторизации
- идентификатор пользователя веб-приложения
- что они хотят сделать (читать или создавать)
- ОС авторизует действие и отправляет его обратно в веб-приложение
Теперь Apache работает www-data
так, что по умолчанию он не будет иметь доступа к файлам и папкам /home/osuser#
. Один из способов, с помощью которого я могу подумать о достижении вышеизложенного, - это дать привилегии без www-data
пароля sudo
(как root
для учетных записей ОС, так osuser1
и для них osuser2
), чтобы он мог выполнять функции учетных записей ОС. Мне это не нравится, потому что, если система скомпрометирована и плохой актер получит доступ к www-data
учетной записи, он также сможет использовать ее sudo
для работы в качестве учетных записей ОС /home/osuser#
. Кроме того, для этого способа потребуется, чтобы веб-приложение поддерживало сопоставление полномочий пользователя веб-приложения с ОС.
Очевидно, что ОС не знает о веб - приложений счетов ( webuser3
, webuser4
, webuser5
), и я не хочу, чтобы создать соответствующие учетные записи на ОС. Надежда состоит в том, чтобы использовать какой-либо инструмент / библиотеку ОС, чтобы сделать отображение. Что-то, что будет иметь внутреннюю конфигурацию внешних учетных записей (которые приходят из веб-приложения). Возможно, используя роли или профили. Таким образом, в ОС в этом инструменте / библиотеке создается роль / профиль / учетная запись, которая соответствует учетным записям веб-приложения и затем получает права доступа.
И инструмент / библиотека должны поддерживать дополнительную аутентификацию / авторизацию. Что-то, что может быть безопасно передано с помощью API или с помощью параметра командной строки. Это разбивает авторизацию / аутентификацию на две части: ОС и веб-приложение, каждое из которых имеет половину ключа.
Я понимаю, что это чертовски абсурдная просьба, но я не хочу отказываться от идеи, не проверив полностью эту возможность.
0 ответов на вопрос
Похожие вопросы
-
9
В чем разница между командами "su -s" и "sudo -s"?
-
4
Требуется хороший бесплатный образ Ubuntu Server VMWare
-
4
Каковы различия между основными дистрибутивами Linux? Я замечу?
-
-
2
Ограничить использование процессора для Flash в Firefox?
-
2
Как мне заставить мой микрофон работать под Debian GNOME?
-
2
Конки установки - образцы / идеи?
-
3
Каковы различия между оконными менеджерами Linux?
-
2
ThunderBird / Синхронизация освещения с SE k770i
-
4
Файловая система Linux
-
6
Полноэкранная медленная вспышка в KDE 4