У меня есть развертывание 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 с Куберетесом.