Настройка аутентификации для AWS EKS
7 ноября 2022 г.Amazon Elastic Kubernetes Service (EKS) — одно из ведущих управляемых решений Kubernetes. Он позволяет без особых усилий создать кластер Kubernetes в облаке Amazon и берет на себя многие административные задачи. Однако запуск Kubernetes в модели управляемых служб также вызывает проблемы с безопасностью. В связи с огромным ростом числа атак на цепочки поставок и киберпреступников, нацеленных на конвейеры CI/CD, вы необходимо убедиться, что ваша среда заблокирована.
Контроль доступа — важная часть защиты ваших инструментов Kubernetes и CI/CD. В этой статье я объясню стратегическую важность аутентификации и покажу, как настроить аутентификацию для EKS, шаг за шагом.
CI/CD, Kubernetes и контроль доступа
Kubernetes – ведущая в мире платформа для управления контейнерами благодаря комплексному API и функциям, удобным для разработчиков. Он позволяет создавать масштабируемые и надежные приложения, которые работают как локально, так и в общедоступных облаках. Это позволяет развертывать и управлять сотнями экземпляров в центре обработки данных или облачной среде.
В среде Kubernetes процессы разработки и развертывания приложений требуют большей автономии. Вот почему непрерывная интеграция (CI) и непрерывное развертывание (CD) адаптированы к облачному миру, позволяя создавать, тестировать и выпускать приложения с минимальным вмешательством человека.
Инструменты CI/CD, составляющие ваш конвейер, могут извлекать последние изменения из репозитория исходного кода и заменять ручные этапы компиляции, тестирования, проверки и развертывания в кластере Kubernetes. Для этого требуется интеграция с реестром контейнеров, диспетчером конфигурации (обычно Helm) и несколькими кластерными средами (используемыми для разработки/тестирования/производства).
Важно настроить правила управления доступом, которые контролируют весь доступ к конвейеру CI/CD. Должно быть легко и сразу понятно, кто имеет доступ, когда и как. Записывайте, отслеживайте и управляйте доступом ко всем компонентам и ресурсам конвейера, будь то на основе ролей, времени или задач. Это может предотвратить несколько типов атак на цепочку поставок.
Проводите регулярные аудиты для обнаружения дубликатов системных или служебных учетных записей или учетных записей, принадлежащих бывшим сотрудникам, которые не были отозваны. Обеспечьте строгую аутентификацию для всех пользователей с регулярной сменой паролей. Идентификация компьютера и аутентификация также важны для защиты доступа к контейнерам и кластерам Kubernetes, не связанным с человеком.
Что такое AWS EKS (эластичный сервис Kubernetes)?
Amazon Web Services (AWS) предоставляет управляемый сервис Kubernetes под названием Amazon Elastic Kubernetes Service (Amazon EKS). AWS EKS стремится упростить для организаций запуск Kubernetes в облаке AWS и локально.
Совместимость
Kubernetes – это платформа с открытым исходным кодом, которая позволяет организациям автоматизировать развертывание, управление и масштабирование контейнерных приложений. Поскольку AWS EKS сертифицирован как совместимый с Kubernetes, приложения, уже находящиеся в вышестоящем Kubernetes, совместимы с EKS.
n Автоматизация
EKS может автоматически управлять масштабируемостью и доступностью плоскости управления Kubernetes, отвечающей за управление доступностью приложений, планирование контейнеров, хранение данных кластера и выполнение других задач.
n Облачные сервисы
EKS позволяет организациям запускать приложения Kubernetes в облачных сервисах, таких как AWS Fargate и Amazon Elastic Compute Cloud (Amazon EC2). Это гарантирует, что организации могут использовать производительность, надежность, доступность и масштабируемость инфраструктуры AWS и использовать интеграцию с сервисами безопасности и сети AWS, в том числе:
* Интеграция AWS Identity and Access Management (IAM) вместе с родным для Kubernetes управлением доступом на основе ролей (RBAC). * Балансировщики нагрузки приложений (ALB) для распределения нагрузки. * Виртуальное частное облако AWS (VPC) для организации сетей модулей.
Методы аутентификации AWS EKS
Amazon EKS использует IAM для аутентификации кластеров Kubernetes, полагаясь при авторизации на собственный RBAC Kubernetes. Он использует IAM только для аутентификации действительных объектов IAM, а собственная система Kubernetes RBAC управляет всеми разрешениями для взаимодействия с API Kubernetes вашего кластера EKS. Рисунок ниже демонстрирует эту взаимосвязь:
Источник изображения: AWS
Вот как это работает:
* Как включить доступ пользователей и ролей IAM к кластеру Kubernetes — используйте AWS IAM, чтобы разрешить доступ к кластеру. Аутентификатор AWS IAM Authenticator для Kubernetes, работающий на плоскости управления EKS, позволяет включить сущности. * Как настроить поставщика удостоверений OpenID Connect — EKS позволяет использовать поставщиков удостоверений OpenID Connect (OIDC) для аутентификации пользователей в кластере. Вы можете использовать поставщиков удостоверений OIDC в качестве альтернативы AWS IAM или вместе с ними.
Включение доступа пользователей и ролей IAM к вашему кластеру EKS
Во время создания кластера Amazon EKS пользователь или роль IAM, которые его создали, автоматически получают разрешения system: masters. Такие разрешения предоставляют неограниченный доступ к кодовой базе Kubernetes API. Пользователь или роль получают эти разрешения в конфигурации RBAC кластера, доступной через плоскость управления Amazon EKS. Однако его нет ни в одной видимой конфигурации.
Инструкции и код основаны на официальной документации EKS сильный>.
Убедитесь, что пользователей IAM можно сопоставить с ролями Kubernetes
Чтобы проверить, можете ли вы предоставить пользователю или роли IAM доступ к кластеру Amazon EKS: n
Выполните следующую команду, чтобы узнать, какие учетные данные использует kubectl для доступа к кластеру:
cat <path-to-kubeconfig>
Замените <path-to-kubeconfig>
на путь к файлу kubeconfig
, если путь по умолчанию не используется. п
- Убедитесь, что можно сопоставить пользователя или роль IAM с некоторыми существующими ролями и привязками ролей Kubernetes или ролями кластера и привязками ролей кластера.
Редактировать карту конфигурации aws-auth
Чтобы добавить необходимые сопоставления в AWS-auth ConfigMap: n
- Выполните следующую команду и просмотрите текущие сопоставления в AWS-auth ConfigMap:** n
eksctl get iamidentitymapping --cluster demo-cluster --region=demo-region-code
** n
- Используйте следующую команду, чтобы добавить сопоставление для роли: n
eksctl создать iamidentitymapping
--демо-кластер кластера
--region=демо-код региона
--arn arn:aws:iam::demo-account-id:role/demo-role
--group demo-access-group
--no-duplicate-arns
Замените demo-access-group на группу, указанную в привязке роли Kubernetes или привязке роли кластера.
- Используйте следующую команду, чтобы просмотреть сопоставления в ConfigMap и убедиться, что созданное выше добавлено:
eksctl get iamidentitymapping --cluster demo-cluster --region=demo-region-code
Применить ConfigMap с аутентификацией к кластеру
Чтобы применить модифицированный aws-auth ConfigMap к кластеру: n
- Используйте следующую команду, чтобы убедиться, что ConfigMap еще не применен: n
kubectl описать configmap -n kube-system aws-auth
Если команда возвращает ошибку сервера (NotFound): configmaps «AWS-auth» не найден, выполните следующие действия.
- Загрузите карту конфигурации аутентификатора AWS с помощью следующей команды:
curl -o aws-auth-cm.yaml https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm. yaml
- Перейдите к следующей части загруженного файла и перейдите к следующей части:
Версия API: v1
вид: ConfigMap
метаданные:
название: aws-auth
пространство имен: kube-system
данные:
mapRoles: |
—rolearn: <ARN роли демо-экземпляра>
имя пользователя: система:узел:{{EC2PrivateDNSName}}
группы:
—система: загрузчики
—система:узлы
Замените <ARN роли демонстрационного экземпляра>
именем ресурса Amazon роли IAM, связанной с узлами. Эту информацию можно найти в выходных данных стека AWS CloudFormation. После этого сохраните файл и убедитесь, что никакие другие части файла не изменены.
- Примените конфигурацию с помощью следующей команды:
kubectl apply -f aws-auth-cm.yaml
n
- Используйте следующие команды, чтобы просмотреть состояние узлов кластера:
kubectl получить узлы --watch
Подождите, пока узлы перейдут в состояние Готово.
Заключение
В этой статье я объяснил важность настройки надежной аутентификации для кластеров EKS и показал, как добиться этого с помощью EKS и Amazon IAM. Основные шаги:
- Проверьте, можно ли сопоставить пользователей IAM с ролями Kubernetes
- Редактировать ConfigMap aws-auth, который позволяет сопоставлять пользователей с ролями
- Применить ConfigMap как аутентификацию к кластеру, чтобы применить политики аутентификации
Я надеюсь, что это будет полезно, поскольку вы повышаете уровень своей стратегии безопасности EKS.
н
Оригинал