Управление доступом

Обновлена 15 апреля 2024 г. в 08:50

Управление доступом

Кластеры Kubernetes версии 1.23 и выше тесно интегрированы с платформой VK Cloud:

Используется технология единого входа (Single Sign-On, SSO).

Пользователь аутентифицируется в кластере Kubernetes с теми те же реквизитами, что и при входе в личный кабинет VK Cloud.

Функциональность SSO нельзя отключить.

Роли пользователя в личном кабинете влияют на:

Доступные действия в кластере.

Пользователю с определенной ролью личного кабинета назначается соответствующая роль Kubernetes. Роль Kubernetes определяет, какие объекты кластера доступны пользователю, а также какие действия разрешено выполнять над этими объектами.

Администратор Kubernetes управляет доступом к кластерам, назначая пользователям роли в личном кабинете.

Нет необходимости конфигурировать права пользователей отдельно для личного кабинета и для кластеров Kubernetes. Например, отключение учетной записи пользователя или отзыв роли в личном кабинете приводит к отзыву прав на доступ к кластерам Kubernetes.

При использовании kubectl за аутентификацию отвечает утилита keystone-auth.

Для работы kubectl используется файл конфигурации кластера (kubeconfig). Этот файл содержит все реквизиты пользователя, кроме пароля (он не указывается из соображений безопасности). Поэтому при использовании kubectl утилита keystone-auth потребует ввести пароль пользователя в интерактивном режиме, чтобы аутентифицироваться:

После успешной аутентификации выпускается токен с коротким временем жизни, который дает временный доступ к кластеру. Когда время жизни токена истечет, keystone-auth потребует снова ввести пароль, чтобы обновить токен. Это будет происходить как при работе с kubectl, так и с другими инструментами, которые работают с такими токенами — например, kauthproxy использует их для аутентификации в веб-интерфейсах компонентов и аддонов кластера.

Такой процесс аутентификации неудобен при работе с автоматизированными инструментами, которым нужен доступ к кластеру. Чтобы предоставить доступ к кластеру для таких инструментов, создайте файл kubeconfig для сервисного аккаунта. Этот kubeconfig содержит реквизиты сервисного аккаунта (service account) и соответствующий аккаунту токен с бесконечным временем жизни, что позволяет аутентифицироваться без ввода пароля.

Роль Kubernetes: view.

Роль предоставляет доступ на чтение к большинству объектов в пространстве имен.

Роль не предоставляет:

Доступ на просмотр или изменение ролей и связывания ролей.

Доступ к секретам.

Пользователь с доступом к секретам может получить доступ к учетным данным любого сервисного аккаунта в пространстве имен. Это позволит получить доступ к API от имени любого сервисного аккаунта в пространстве имен. Для роли с правами «только чтение» это будет расцениваться, как превышение привилегий (privilege escalation).

Чтобы просмотреть список доступных ресурсов для роли, подключитесь к кластеру и выполните команду:

kubectl describe clusterrole <роль в Kubernetes>