Защита Kubernetes с помощью внешних секретов оператора на AWS

Андела спонсировала этот пост.

Управление секретами является важным аспектом современной разработки приложений. Крайне важно гарантировать, что конфиденциальная информация, такая как учетные данные базы данных, сертификаты, клавиши API, пароли и токены, надежно хранятся и доступны. Kubernetes предлагает встроенное решение для управления секретами, но интеграция его с внешними секретами, такими как AWS Secrets Manager обеспечивает повышенную безопасность, гибкость и масштабируемость. Пользователи могут легко повернуть свои учетные данные для повышения безопасности, и это будет воспроизведено в нижестоящих приложениях, которые находятся в кластере Kubernetes.

В этом уроке я проведу вас через процесс управления секретами в вашем кластере Kubernetes с использованием оператора внешних секретов (ESO) и менеджера Secrets AWS.

Что такое оператор внешних секретов (ESO)?

Оператор внешних секретов позволяет разработчикам упростить секретное управление, синхронизируя секреты из внешних секретных магазинов, таких как AWS Secret Manager, Microsoft Azure Key Vault и Hashicorp Vault до Kubernetes. Используя ESO, вы можете определить пользовательский ресурс Kubernetes (CRD), посредством которого вы можете указать место, из которого можно получить секреты (внешний секретный магазин), который секреты для того, чтобы их можно было синхронизировать с помощью секретов Kubernetes.

Зачем использовать оператор внешних секретов?

  • Централизованное управление: Внешние секреты Оператор предоставляет централизованное хранилище для управления секретами в нескольких средах, что снижает сложность управления секретами в масштабных и нескольких приложениях. Например, когда секреты хранятся в менеджере Secrets AWS, их гораздо проще настроить в течение определенного периода.
  • Автоматическая синхронизация: Внешний оператор Secrets автоматически синхронизируется из источников внешних секретов, гарантируя, что приложение всегда имеет последние секреты без какого -либо ручного вмешательства.
  • Соответствие и аудит: Внешние секреты Оператор использует магазины внешних секретов, упрощая соответствие GDPR и стандарт безопасности данных индустрии платежных карт (PCI DSS), используя встроенное секретное ротацию менеджера AWS, подробные журналы аудита и функции управления доступа.

Начните

Следуйте этому руководству и убедитесь, что у вас есть следующее:

  • Kubernetes Cluster и работает (например, EKS).
  • Бинарный двоичный файл Kubectl установлен и настроен на вашей рабочей станции. Это будет использоваться для применения манифеста Kubernetes.
  • Аккаунт AWS с настроенной интерфейсом командной строки AWS (CLI).
  • Необходимое разрешение на создание ресурсов в менеджере Secrets AWS и Kubernetes.
  • Helm, менеджер пакетов для Kubernetes, который упрощает процесс развертывания, управления и масштабирования приложений Kubernetes, должен быть установлен.

Шаг 1: Установите оператор внешних секретов (ESO)

а Добавить репозиторий руля ESOПолем

Helm Repo Добавить внешние секунды Helm Repo Обновление 12 Helm Repo Добавить обновление внешних секундов Helm Repo

беременный Установите ESO: Это создаст оператора внешних секретов во внешнем пространстве имен.

Установка helm Внешние срезы Внешних срезов/Внешние срезы -n Внешние срезы-CREATE-NAMESPACE 1 УСТАНОВКА УСТАНОВКА Внешние срезы Внешние срезы/Внешние срезы -n Внешние срезы-CREATE-NAMESPACE

в Проверьте установку Запустив команду ниже.

kubectl Получите все -n внешние секунды 1 kubectl Получить все -n внешние секунды


Шаг 2: Создайте секрет в менеджере Secrets AWS

  • Войдите в AWS.
  • Открытый менеджер AWS Secrets в консоли управления AWS.
  • Создайте новый секрет, такой как ключ: db_password и значение: My-Secret-Password.
  • Обратите внимание на секретное имя ресурса Amazon (ARN), как только вы закончите.

Шаг 3: Создайте SecretStore для ESO

SecretStore — это определение пользовательского ресурса Kubernetes (CRD), введенное оператором внешних секретов. Он определяет детали конфигурации, которые будут использоваться для доступа к внешнему секрету в таких услугах, как Manager AWS Secrets. По сути, SecretStore содержит детали того, где и как ESO может получить доступ к секретам.

Прежде чем создать SecretStore, вам нужно будет предоставить доступ к SecretStore к вашему недавно созданному Secret в менеджере Secret в Secrets AWS. Вы будете создавать следующие ресурсы в качестве предпосылки, прежде чем создавать SecretStore.

а Создать политику IAM: Политика управления идентификацией и доступом (IAM) позволит получить доступ к недавно созданным секретам в менеджере Secrets AWS. Замените ARN ниже на ARN недавно созданных секретов в менеджере Secrets AWS.

{«Версия»: «2012-10-17», «Заявление»: [
{
«Effect»: «Allow»,
«Action»: [
«secretsmanager:GetSecretValue»
]»Ресурс»: «ARN: AWS: SecretsManager: Region: Account-ID: Секрет: Your-Secret-ID»}]} 123456789101112 {«Версия»: «2012-10-17», «Заявление»: [{«Effect»: «Allow»,»Action»: [«secretsmanager:GetSecretValue»]»Ресурс»: «ARN: AWS: SecretsManager: Регион: Account-ID: Секрет: ваш секрет-ID»}]}

беременный Создать роль IAM: Создайте роль IAM и прикрепите политику IAM, созданную в приведенном выше примере. Укажите доверие к роли, чтобы позволить кластеру EKS принять ее.

{«Версия»: «2012-10-17», «Заявление»: [
{
«Effect»: «Allow»,
«Principal»: {
«Service»: «eks.amazonaws.com»
},
«Action»: «sts:AssumeRole»
}
]
} 123456789101112 {«Версия»: «2012-10-17», «Заявление»: [{«Effect»: «Allow»,»Principal»: {«Service»: «eks.amazonaws.com»},»Action»: «sts:AssumeRole»}]}

в Связывать роль IAM с учетной записью услуг в Kubernetes: Вы можете связать свою роль IAM с учетной записью службы Kubernetes, используя аннотацию eks.amazonaws.com/role-arn, чтобы надежно предоставить мелкозернистое разрешение AWS для вашей рабочей нагрузки в вашем кластере EKS, не сохраняя долгосрочные учетные данные в вашем заявлении.

Apiversion: v1 wind: serviceaccounteta: Имя: Имя Внешние срезы СА-САМ. Внешние секунды-SANAMESPACE: Внешние сикретнотации: eks.amazonaws.com/role-arn: arn: aws: iam :: 123456789012: роль/Externalsecretsrole

Скопируйте приведенный выше код в файле с помощью имени файла sa-secretstore.yaml и замените eks.amazonaws.com/role-arn, стоимость вашей роли IAM Arn. Затем примените манифест, выполнив эту команду:

Kubectl Apply -f sa -secretstore.yaml -n Внешние срезы 1 Kubectl Apply -f sa -secretstore.yaml -n Внешние срезы

дюймовый Создайте SecretStore для использования Сервисной учетной записи: Скопируйте и вставьте Kubernetes, манифестный ниже в файл с помощью файла SecretStorStore-eso.yaml и примените манифест.

apiVersion: external-secrets.io/v1beta1 kind: SecretStore metadata: name: aws-secret-store namespace: external-secrets spec: provider: aws: service: SecretsManager region: us-east-1 auth: jwt: serviceAccountRef: name: external-secrets-sa 1234567891011121314 apiVersion: Внешние secrets.io/v1beta1kind: secretstoremetadata: Имя: AWS-Secret-storeNamespace: Внешний SECRETSPEC: Провайдер: AWS: Сервис: SecretsManagerRegion: US-EAST-1Auth: JWT: ServiceAccountref: Имя: Внешнее секрета

Используйте эту команду, чтобы применить манифест Kubernetes:

Kubectl Apply -f secretstore -eso.yaml 1 kubectl Apply -f secretstore -eso.yaml

Шаг 4: Создайте ресурс EvensalalSecret

Определите ESO, чтобы получить и синхронизировать секрет AWS в свой кластер Kubernetes. Скопируйте и вставьте, что Kubernetes Manifest ниже в файл с именем файла ESO.yaml и примените манифест.

Apiversion: External-secrets.io/v1beta1 СОДЕРЖАНИЕ: EveningeCret Metadata: Имя: My-App-Secrets Пространство имен: внешние секере С ensures the Secret is owned by the ExternalSecret data: — secretKey: DB_PASSWORD # This is the key in the Kubernetes Secret remoteRef: key: arn:aws:secretsmanager:us-east-1:abc:secret:eso/example/secrets-Eq5llj #Replace this with the ARN of your AWS Secrets Manager 1234567891011121314151617 Apiversion: External-secrets.io/v1beta1kind: Externalsecretmetadata: Имя: My-App-secretsnamespace: External-secretspec: Refreshinterval: 1h # Установите интервал обновления для SecretSecretstoreref: Имя: Aws-Secretstorekind: Секретный состав # Ссылка Ссылка. Секретной созданный в Секрете: Зона: имя: Aws-Secret-Storekind: Secretstore # Ссылка. my-app-secretcreationpolicy: владелец # это гарантирует, что секрет принадлежит ExternalSecretData:-SecretKey: DB_PASSWORD # Это ключ в Kubernetes SecretRemoteref: Key: ARN: AWS: SecretsManager: US-EAST-1: ABC: Secret: ESO/Пример/Secrets-EQ5LLJ.

Используйте эту команду, чтобы применить манифест Kubernetes:

kubectl Apply -f eSo.yaml 1 kubectl Apply -f eso.yaml

Заключение

Безопасное управление секретами является невероятно важным аспектом запуска приложений в Kubernetes. Используя внешний секретный оператор с менеджером Secrets AWS, вы можете централизовать свое секретное управление, удобно повернуть секреты без простоя, обеспечить автоматическую синхронизацию и повысить безопасность за счет снижения рисков секретного воздействия. Кроме того, использование ESO гарантирует, что приложения всегда будут иметь доступ к последним секретам без какого -либо ручного вмешательства.

Для дальнейшего улучшения вашей настройки рассмотрите возможность реализации:

  • Тайное ротация: Включить автоматическое вращение секретов в менеджере Secrets AWS.
  • Мониторинг и аудит: Используйте журнал AWS Cloudtrail и Kubernetes для отслеживания секретного доступа и обновлений.

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

Хотите освоить управление базой данных в Kubernetes? Разблокируйте 8-ступенчатое руководство Andela о том, как эффективно запускать базы данных в среде Kubernetes, чтобы стимулировать инновации в ваших рабочих процессах.

Andela предоставляет крупнейший в мире частный рынок для глобального отдаленного технологического таланта, основанного на платформе с AI для управления полным жизненным циклом найма контракта. Andela помогает компаниям масштабировать команды и быстрее реализовать проекты через специализированные области: App Engineering, AI, облако, данные и аналитика. Узнайте больше последних из Andela Trending Stories youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Adetokunbo Ige является технологом Andela, частного мирового рынка талантов. Опытный инженер платформы и сертифицированный ведущий исполнитель ISO 22301 в непрерывности бизнеса, он приносит огромный опыт работы в области разработки программного обеспечения, управления корпоративными приложениями, инфраструктуры сервера … Подробнее от Adetokunbo Ige

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *