Привилегированное повышение на основе ролей / команд на уровне ОС для использования с автоматизацией через интерфейсный / внутренний процесс с дополнительной аутентификацией

352
IMTheNachoMan

Я хочу разработать веб-приложение / решение 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

0 ответов на вопрос

Похожие вопросы