Если говорить о разграничении прав доступа в Prism Element – базовом инструменте доступа и управления кластером Nutanix и его содержимым, то оно представлено всего тремя доступными ролями:
- Viewer – пользователь имеет право просматривать содержимое всего кластера, но не может его изменять;
- Cluster Admin – пользователь имеет право управлять всеми элементами кластера, но не может управлять пользователями;
- User Admin – максимальные привилегии. Пользователь может управлять всеми элементами кластера, а также пользователями.
Данная схема работает хорошо, когда у кластера один администратор и не требуется каких-либо разграничений в доступе.
Но что делать, если, например, необходимо разграничить доступ более жестко и предоставить одной группе пользователей доступ к управлению одной частью виртуальных машин, а другой группе – ко второй?
К сожалению, малогибкие возможности Prism Element не позволяют осуществлять подобные разграничения и тут в дело вступает мощный инструмент по централизованному управлению и мониторингу кластеров Nutanix – Prism Central.
Начать стоит с того, что, как и Prism Element, Prism Central поддерживает аналогичные роли Viewer, Cluster Admin и User Admin и возможности Role Mapping из привычного меню «шестеренки», но, если бы все этим ограничивалось, этой статьи бы не было.
Итак, у меня имеется инсталляция Prism Central, к которой добавлен кластер, на котором расположен ряд виртуальных машин. Необходимо организовать доступ пользователя к консоли управления требуемыми виртуальными машинами, а также дать возможность включать и выключать указанные VM.
В качестве аутентификации я буду использовать группу пользователей из Active Directory, поэтому заранее выполнил подключение в разделе User and Roles – Authentication – Directories.
Шаг первый – создание роли.
Роль (она и во всех системах роль) – группа возможностей, которые может выполнять пользователь, которому данная роль назначена.
Для просмотра существующих ролей необходимо перейти в меню так называемого «Гамбургера» (в правом верхнем углу, и выбрать раздел Administration – Roles, либо в строке поиска ввести Roles.

Здесь можно увидеть список заранее созданных Prism Central ролей с разным набором возможностей. Роли, созданные по умолчанию отмечены тегом SYSTEM и их нельзя удалить, либо изменить, но можно склонировать и изменить:

Изменять роли мы не будем, а создадим свою с помощью кнопки «Create Role».
При создании роли необходимо указать название роли, при необходимости описание, а также возможности, которые предоставляет данная роль.
Для управления виртуальной машиной нас интересует секция VM, в которой описаны все действия, которые пользователь может выполнять с виртуальными машинами, например, включение, изменение ресурсов, создание, удаление.
Поскольку нас интересует только базовое взаимодействие с виртуальной машиной, выбираем «Basic Access»:

Если кликнуть «Change», можно увидеть список возможностей, которые предоставляет базовый доступ – Access Console VM, View VM, Update VM Power State. Это именно то, что нам требуется.
Если необходимо добавить дополнительные возможности по взаимодействию с виртуальной машиной, сделать это можно отметив соответствующие пункты:

После сохранения, роль появится в списке и будет готова к назначению:

Переходим к следующему шагу – назначение роли пользователю.
Шаг второй – назначение роли.
Для того, чтобы связать объект, к которому необходимо предоставить доступ, пользователя, которому нужно предоставить доступ и необходимые права, необходимо кликнуть на нужную роль, затем на «Manage Assignment» в правой верхней части экрана:

В появившемся окне мы связываем существующую роль, пользователя или группу и объекты.
Поле Role указывает роль. В нашем случае это VM User.
Поле User and groups указывает группу, которая получит доступ к объекту с указанными в роли правами.
После Entities указывает объект, к которому будет предоставлен доступ:

Как можно заметить, мы можем предоставить доступ к виртуальным машинам, сетям, кластерам, образам и т.д.
Выбираем AHV VM и по умолчанию система предлагает применить роль ко всем машинам (All AHV VMs), что нас, конечно же не устраивает. Поэтому, просто вводим в поиске необходимые названия машин и добавляем по одной:


Нажимаем «Save» в нижней части экрана. Вот и все, с помощью данной операции мы предоставили права на просмотр трех виртуальных машин test-linux группе пользователей Active Directory.
Теперь, если зайти пользователем указанной ранее группы в Prism Central, можно увидеть следующую картину:

Пользователь видит только назначенные ему машины, как и требовалось изначально.
Если посмотреть меню Actions для виртуальной машины, можно увидеть, что прав у пользователя не так и много:

Интересный момент. Если сейчас же изменить роль и запретить пользователю управлять питанием VM, изменения применятся автоматически, не требуя выхода и входа в систему.
Как можно заметить – требуемая задача выполнена, но вот любопытный читатель поинтересуется: а что делать, если доступ необходимо предоставить не к трем машинам, а к сотне. На этот вопрос тоже имеется ответ и это Categories.
Шаг третий – группируем виртуальные машины с помощью Categories.
Categories в Prism Central, это логическая группировка виртуальных машин, на основании которых к ним можно применять какие-либо политики. Например, категории используются при настройке микросегментации.
В некоторых системах аналогичная вещь называется tag.
Настройка категорий выполняется из того же меню «Гамбургера» – Virtual Infrastructure – Categories.

По аналогии с ролями, имеется ряд системных категорий, удалить которые нельзя. Создадим свою категорию нажатием кнопки «New Category»:

Здесь ничего необычного. Я создал новую категорию с названием test-vms и подкатегориями (или же метками) linux и windows:

Следующим шагом необходимо связать метки категорий и виртуальные машины. Для этого переходим в список виртуальных машин – Virtual Infrastructure – VMs. В списке выбираем нужные виртуальные машины. В моем случае все машины test-linux, отмечаем их и в меню Actions выбираем «Manage Categories»:

В появившемся списке выбираем требуемую категорию и метку. В моем случае это test-vms: linux и нажимаем «Save»:

Примечание: к машине можно добавить не одну метку, а несколько.
На этом шаге мы связали виртуальные машины с метками, тем самым сгруппировав их. Теперь обновим ранее созданные права доступа.
Переходим в Administration – Roles, выбираем ранее созданную роль VM User, и переходим в пункт Manage Assignment.
На текущий момент поле Entities у нас заполнено названием виртуальных машин. Очищаем его, удалив связь роли и с данными VM:

На этот раз в разделе Entities выбираем Category:

И в поиске выбираем ранее созданную категорию test-vms с меткой linux:

Сохраняем роль, проверяем, что видит пользователь:

Все, как и раньше. Пользователь видит все виртуальные машины, на которые была назначена метка.
В случае, если администратор снимет метку с виртуальной машины, доступ пользователя к этой виртуальной машине прекратится, и она исчезнет из обзора:

Вот теперь задача точно решена.
В качестве заключения:
Настройка RBAC в Nutanix Prism Central – достаточно простое занятие и, по сути, не отличается от настройки подобных моментов в других системах.
Стоит помнить, что базовая версия Prism Central бесплатна, но вносит при этом значительное расширение функционала в части централизованного управления кластерами, доступом пользователей и мониторингом.