Консоль, это привилегия: почему она требует отдельного разрешения
Консоль выглядит как экран, но это оболочка. А «может менять настройки» и «может открыть оболочку», это две разные власти; принять одну за другую значит раздавать root.
AtlasPVE ·
Эта статья отвечает на
- proxmox разрешение на консоль
- что такое sys.console в proxmox
- proxmox дать пользователю доступ к оболочке
- proxmox права ролей
- proxmox право доступа vnc
Консоль выглядит как экран. Вы её открываете, появляется окно, в нём бежит текст. Возникает ощущение «я только смотрю».
Но консоль, это оболочка. А оболочка сервера, это высшее право, какое существует на этой машине.
Две разные власти
Менять настройки. Вы можете делать то, что позволяет интерфейс. Границы понятны, потому что их чертит интерфейс.
Открыть оболочку. Вы можете делать что угодно. В том числе то, что интерфейс отказал бы, и то, о чём интерфейс никогда не слышал.
Эти две власти не вмещают друг друга. Иметь одну не требует другой, и что важнее: выдать одну не должно означать выдать другую.
Различие реально и видно во встроенных ролях
Proxmox привязывает консоль к собственному разрешению, а не к общему «может менять». Что это по-настоящему так, видно во встроенных ролях: роль системного администратора несёт права проверки, консоли и журнала и не содержит права на изменение.
То есть дать кому-то право открыть консоль без права менять настройки, это законная настройка. И наоборот тоже.
Обычная ситуация, которая делает это важным
Proxmox позволяет создавать свои роли, и такая роль очень распространена: оператор, который может менять сетевые настройки, но не должен добираться до оболочки сервера.
Это разумное требование. Править сетевую настройку и выполнять на сервере любую команду, это не одно и то же.
Но если продукт рассуждает «раз может менять, значит может и консоль открыть», он незаметно вручает этому оператору корневую оболочку. Через панель он получает то, чего не получил бы в Proxmox.
Общий принцип, который отсюда следует
Модель прав должна копировать собственное определение платформы, а не пересказывать его.
Ворота, которые говорят «примерно то же самое», работают верно на обычных установках, и никто ничего не замечает. Брешь открывается в тот день, когда создают необычную роль. И когда этот день приходит, никто не помнит приближения, написанного годы назад.
Та же планка относится и к доступу к файлам
Ещё одна деталь, потому что её часто упускают: доступ к файловой системе сервера равносилен оболочке, даже если он только на чтение.
Причина проста: в этой файловой системе лежат файлы паролей, ключи и секреты кластера. Тот, у кого право только на чтение, но кто может читать файлы, уже может узнать всё.
Значит, доступ к файлам нельзя выдавать правом «смотреть»; он требует той же планки, что и оболочка.
Что делает Atlas
В Atlas консоль, удалённая оболочка и доступ к файлам привязаны только к разрешению на консоль. Право на изменение само по себе эти поверхности не открывает.
Так было не всегда, и статью нужно закончить честно: раньше эти поверхности принимали и право на изменение. Комментарий в коде говорил правильное, он говорил «соответствие, это разрешение на консоль», но код делал другое.
Это нашли, измерив против собственного определения Proxmox, и исправили. Результат измерения был однозначен: Proxmox привязывает оболочку только к разрешению на консоль и права на изменение не принимает.
Настоящий вес тоже надо назвать как есть: со встроенными ролями это не было пригодно для злоупотребления, потому что единственная встроенная роль с правом на изменение имеет и разрешение на консоль. Риск был в собственных ролях, то есть в описанном выше примере сетевого оператора.
Урок, который отсюда следует, относится и к самому продукту: то, что комментарий прав, не значит, что прав код. Их надо измерять по отдельности.
Источники
Собственная документация Proxmox. На английском, и последнее слово в этом вопросе за ней.