Доступ к Nova Console и kubectl

Доступ к Nova Console и API разграничивается при помощи Roles и ClusterRoles. Роли ассоциируются с пользователями и группами провайдера идентификации при помощи RoleBindings и ClusterRoleBindings. Управление данным функционалом осуществляется при помощи Nova Console или kubectl.

1. Предварительные условия

  • создан пользователь в провайдере идентификации (StarVault), данный пользователь добавлен в группу и для группы создан Assignment, который добавлен в приложение oidc-kubernetes-client (процесс описан в Доступ к компонентам платформы по OIDC)

2. Сценарий 1 – выдача прав для конкретного пространства имен (подходит для команды проекта или отдельных разработчиков)

  1. Откройте в браузере веб-интерфейс консоли управления (GUI Nova Console) и авторизоваться с использованием учетной записи администратора

  2. Если у вас уже есть Namespace, к которому будет выдаваться доступ, то переходите к следующему шагу. Если нет, то откройте страницу HomeNamespaces и нажмите «Create Namespace».
    В открывшемся окне введите имя и по желанию добавьте метки\сетевую политику, после чего нажмите «Create»:

    access to novaconsole and kubectl 1
  3. Далее необходимо создать роль, которой будет обладать пользователь\группа. Если у вас уже есть роль, то переходите к следующему шагу.
    Чтобы создать роль откройте страницу RBAC ManagementRoles и нажмите «Create Role». В открывшемся окне введите имя, namespace из п.2 и правила. Нажмите «Create». В данном примере мы создаем роль с полным доступом ко всем ресурсам пространства имен test. Подробнее про разграничение доступа K8S https://kubernetes.io/docs/reference/access-authn-authz/rbac/

    access to novaconsole and kubectl 2
  4. Далее необходимо связать роль с пользователем или группой пользователей. Для этого откройте страницу RBAC ManagementRoleBindings и нажмите «Create Binding». В открывшемся окне выберите Namespace role binding в качестве Binding type, введите имя для RoleBinding, выберите namespace (из п.2) из выпадающего списка. Затем, выберите роль, созданную на предыдущем шаге, а в качестве Subject выберите Group и введите имя группы, созданной на подготовительном этапе. Нажмите «Create»:

    access to novaconsole and kubectl 3
  5. Теперь все члены группы имеют полный доступ к пространству имен из п.2 через Nova Console и kubectl. Для доступа с помощью утилиты kubectl произведите настройку согласно инструкции https://docs.nova-platform.io/3.0/getting-started/tools/kubectl/#kubelogin_1

3. Сценарий 2 – выдача прав для всего кластера (подходит для учетных записей администраторов или пользователей с правом только просмотра)

  1. Сначала, необходимо создать роль, которой будет обладать пользователь/ группа или использовать уже имеющуюся.
    Чтобы создать роль откройте страницу RBAC ManagementRoles и нажмите «Create Role». В открывшемся окне введите имя и необходимые правила. Нажмите «Create». По умолчанию уже созданы роли администратора (admin) и пользователя с правами просмотра (view). Далее мы будем использовать роль view, которая наделяет пользователя правами на просмотр всех ресурсов кластера. Подробнее про разграничение доступа K8S https://kubernetes.io/docs/reference/access-authn-authz/rbac/

    access to novaconsole and kubectl 4
  2. Далее необходимо связать роль с пользователем или группой пользователей. Для этого откройте страницу RBAC ManagementClusterRoleBindings и нажмите «Create Binding». В открывшемся окне выберите Cluster-wide role binding (ClusterRoleBinding) в качестве Binding type, введите имя для RoleBinding, выберите роль, созданную на предыдущем шаге или одну из преднастроенных, а в качестве Subject выберите Group и введите имя группы, созданной на подготовительном этапе. Нажмите «Create»:

    access to novaconsole and kubectl 5
  3. Теперь все члены группы имеют доступ на чтение ко всем ресурсам кластера через Nova Console и kubectl. Для доступа с помощью утилиты kubectl произведите настройку согласно инструкции https://docs.nova-platform.io/3.0/getting-started/tools/kubectl/#kubelogin_1