Доступ к Nova Console и kubectl
Доступ к Nova Console и API разграничивается при помощи Roles и ClusterRoles. Роли ассоциируются с пользователями и группами провайдера идентификации при помощи RoleBindings и ClusterRoleBindings. Управление данным функционалом осуществляется при помощи Nova Console или kubectl
.
1. Предварительные условия
-
создан пользователь в провайдере идентификации (StarVault), данный пользователь добавлен в группу и для группы создан Assignment, который добавлен в приложение
oidc-kubernetes-client
(процесс описан в Доступ к компонентам платформы по OIDC)
2. Сценарий 1 – выдача прав для конкретного пространства имен (подходит для команды проекта или отдельных разработчиков)
-
Откройте в браузере веб-интерфейс консоли управления (GUI Nova Console) и авторизоваться с использованием учетной записи администратора
-
Если у вас уже есть Namespace, к которому будет выдаваться доступ, то переходите к следующему шагу. Если нет, то откройте страницу Home → Namespaces и нажмите «Create Namespace».
В открывшемся окне введите имя и по желанию добавьте метки\сетевую политику, после чего нажмите «Create»: -
Далее необходимо создать роль, которой будет обладать пользователь\группа. Если у вас уже есть роль, то переходите к следующему шагу.
Чтобы создать роль откройте страницу RBAC Management → Roles и нажмите «Create Role». В открывшемся окне введите имя, namespace из п.2 и правила. Нажмите «Create». В данном примере мы создаем роль с полным доступом ко всем ресурсам пространства именtest
. Подробнее про разграничение доступа K8S https://kubernetes.io/docs/reference/access-authn-authz/rbac/ -
Далее необходимо связать роль с пользователем или группой пользователей. Для этого откройте страницу RBAC Management → RoleBindings и нажмите «Create Binding». В открывшемся окне выберите Namespace role binding в качестве Binding type, введите имя для RoleBinding, выберите namespace (из п.2) из выпадающего списка. Затем, выберите роль, созданную на предыдущем шаге, а в качестве Subject выберите Group и введите имя группы, созданной на подготовительном этапе. Нажмите «Create»:
-
Теперь все члены группы имеют полный доступ к пространству имен из п.2 через Nova Console и
kubectl
. Для доступа с помощью утилитыkubectl
произведите настройку согласно инструкции https://docs.nova-platform.io/3.0/getting-started/tools/kubectl/#kubelogin_1
3. Сценарий 2 – выдача прав для всего кластера (подходит для учетных записей администраторов или пользователей с правом только просмотра)
-
Сначала, необходимо создать роль, которой будет обладать пользователь/ группа или использовать уже имеющуюся.
Чтобы создать роль откройте страницу RBAC Management → Roles и нажмите «Create Role». В открывшемся окне введите имя и необходимые правила. Нажмите «Create». По умолчанию уже созданы роли администратора (admin) и пользователя с правами просмотра (view). Далее мы будем использовать роль view, которая наделяет пользователя правами на просмотр всех ресурсов кластера. Подробнее про разграничение доступа K8S https://kubernetes.io/docs/reference/access-authn-authz/rbac/ -
Далее необходимо связать роль с пользователем или группой пользователей. Для этого откройте страницу RBAC Management → ClusterRoleBindings и нажмите «Create Binding». В открывшемся окне выберите Cluster-wide role binding (ClusterRoleBinding) в качестве Binding type, введите имя для RoleBinding, выберите роль, созданную на предыдущем шаге или одну из преднастроенных, а в качестве Subject выберите Group и введите имя группы, созданной на подготовительном этапе. Нажмите «Create»:
-
Теперь все члены группы имеют доступ на чтение ко всем ресурсам кластера через Nova Console и
kubectl
. Для доступа с помощью утилитыkubectl
произведите настройку согласно инструкции https://docs.nova-platform.io/3.0/getting-started/tools/kubectl/#kubelogin_1