Назад | Перейти на главную страницу

Используйте токен пользователя (а не учетной записи службы) для панели управления kubernetes

У меня есть развертывание Kubernetes в Azure (AKS), а также я развернул панель мониторинга k8s.

Я подключил развертывание k8s к нашему Azure Active Directory (AAD), поэтому мы можем использовать команду kubectl с нашим входом в AAD (шаги здесь: https://docs.microsoft.com/en-us/azure/aks/azure-ad-integration-cli).

Я также хочу иметь возможность аутентифицировать приборную панель через AAD. Я развернул pusher oauth2_proxy (https://github.com/pusher/oauth2_proxy) перед моим сервером, чтобы добиться этого.

Моя проблема: я могу предоставить административные права учетной записи службы панели управления kubernetes и использовать этот токен для аутентификации. Это означает, что каждый, кто аутентифицируется по нашей AD, получит полные права доступа. Но мне нужно иметь возможность фильтровать разрешения в зависимости от пользователя, вошедшего в систему. В oauth2_proxy есть флаг --pass-authorization-header (который добавляет в заголовки «Authorization: Bearer TOKEN»), но кажется, что вы можете используйте только токен учетной записи службы на панели управления, а не токены пользователя.

Есть ли способ обойти это?

Я думаю, что следующий подход может сработать.

Создать базовая группа и добавление участников с помощью Azure Active Directory на Лазурной части.

Что касается части Kubernetes, вы должны использовать RBAC для Управление доступом к ресурсам кластера с помощью управления доступом на основе ролей и удостоверений Azure Active Directory в службе Azure Kubernetes.

Вы сможете ограничить каждую группу желаемым namespace или определенные действия, такие как только watch.

Вот хороший пример использования Внешняя аутентификация OAUTH с Куберетесом.