VK Cloud logo
Обновлена18 декабря 2023 г. в 07:32

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

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

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

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

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

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

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

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

Как устроен процесс аутентификации

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

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

Please enter password:

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

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

Взаимосвязь ролей личного кабинета и Kubernetes

Роль Kubernetes: view.

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

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

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

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

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

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

kubectl describe clusterrole <роль в Kubernetes>