Это гостевой пост в блоге, написанный совместно с Патриком Обергерром из Contentful и Йоханнесом Гюнтером из Netlight Consulting.
В этом сообщении блога показано, как повысить безопасность в архитектуре конвейера данных, основанной на Управляемые рабочие процессы Amazon для Apache Airflow (Amazon MWAA) и Сервис Amazon Elastic Kubernetes (Amazon EKS) путем настройки детальных разрешений, используя ХашиКорп Терраформ для инфраструктуры как код.
Многие клиенты AWS используют Amazon EKS для выполнения своих рабочих нагрузок с данными. Преимущества Amazon EKS включают различные варианты вычислений и хранения в зависимости от потребностей рабочей нагрузки, более высокое использование ресурсов за счет совместного использования базовой инфраструктуры, а также активное сообщество с открытым исходным кодом, которое предоставляет специализированные расширения. Данные по ЭКС Project предоставляет серию шаблонов и других ресурсов, которые помогут клиентам начать этот путь. Содержит описание использования Amazon MWAA как планировщик заданий.
содержательной является клиентом AWS и партнером партнерской сети AWS (APN). За кулисами своего продукта «Программное обеспечение как услуга» (SaaS), Contentful Composable Content Platform, Contentful использует информацию из данных для улучшения принятия бизнес-решений и качества обслуживания клиентов. Контентное участие Нетлайт, консалтингового партнера APN, чтобы помочь создать платформу данных для сбора этой информации.
Большая часть рабочих нагрузок приложений Contentful выполняется на Amazon EKS, и знания об этом сервисе и Kubernetes широко распространены в организации. Вот почему команда инженеров данных Contentful решила запустить конвейеры данных и на Amazon EKS. Для работы планированиеОни начали с самостоятельного управления Apache Airflow в кластере Amazon EKS, а затем перешли на Amazon MWAA, чтобы сократить затраты на проектирование и эксплуатацию. Работа выполнение остался на Amazon EKS.
Contentful запускает сложный конвейер данных, используя эту инфраструктуру, включая прием из нескольких источников данных и различные задания преобразования, например, с использованием DBT. Весь конвейер использует одну среду Amazon MWAA и один кластер Amazon EKS. При разнообразном наборе рабочих нагрузок в единой среде необходимо применять принцип наименьших привилегий, гарантируя, что отдельные задачи или компоненты имеют только те разрешения, которые им необходимы для работы.
Сегментировав разрешения в соответствии с ролями и обязанностями, команда инженеров данных Contentful смогла создать более надежную и безопасную среду обработки данных, которая необходима для поддержания целостности и конфиденциальности обрабатываемых данных.
В этом сообщении блога мы рассмотрим настройку инфраструктуры с нуля и развертывание примера приложения с использованием Terraform, инструмента Contentful, который выбирает инфраструктуру как код.
Предпосылки
Чтобы следовать этому сообщению в блоге, вам потребуется установить последнюю версию следующих инструментов:
Обзор
В этой записи блога вы создадите пример приложения со следующей инфраструктурой:
Пример рабочего процесса Airflow перечисляет объекты в исходном сегменте и временно сохраняет этот список с помощью XComs с воздушным потокоми записывает список в виде файла в корзину назначения. Это приложение выполняется с использованием модулей Amazon EKS, запланированных средой Amazon MWAA. Вы развертываете кластер EKS и среду MWAA в виртуальное частное облако (VPC) и примените разрешения с наименьшими привилегиями к модулям EKS, используя Роли IAM для учетных записей служб. Контейнер конфигурации Amazon MWAA содержит требования времени выполнения, а также код приложения, определяющий Направленный ациклический граф воздушного потока (DAG).
Инициализируйте проект и создайте сегменты
Создать файл main.tf
со следующим содержимым в пустом каталоге:
Этот файл определяет Поставщик Терраформ AWS а также сегменты источника и назначения, имена которых экспортируются как Параметры AWS Systems Manager. Он также сообщает Terraform загрузить пустой объект с именем dummy.txt
в исходную корзину, что позволяет примеру приложения Airflow, которое мы создадим позже, получать результат при выводе списка содержимого корзины.
Инициализируйте проект Terraform и загрузите зависимости модуля, выполнив следующую команду:
Создайте инфраструктуру:
Terraform попросит вас подтвердить изменения в среде, а затем начнет развертывание ресурсов в AWS. После успешного развертывания вы должны увидеть следующее сообщение об успехе:
Создать сеть VPC
Создать новый файл vpc.tf
в том же каталоге, что и main.tf
и вставьте следующее:
Этот файл определяет VPC — виртуальную сеть, в которой позже будет размещен кластер Amazon EKS и среда Amazon MWAA. Обратите внимание, что мы используем существующий Terraform модуль для этого, который включает в себя конфигурацию базовых сетевых ресурсов, таких как подсеть, таблицы маршрутови NAT-шлюзы.
Загрузите модуль VPC:
Разверните новые ресурсы:
Обратите внимание, какие ресурсы создаются. Используя модуль VPC в нашем файле Terraform, большая часть базовой сложности устраняется при определении нашей инфраструктуры, но по-прежнему полезно знать, что именно развертывается.
Обратите внимание, что Terraform теперь обрабатывает ресурсы, которые мы определили в обоих файлах. main.tf
и vpc.tf
, потому что Terraform включает в себя все .tf
файлов в текущем рабочем каталоге.
Создайте среду Amazon MWAA.
Создать новый файл mwaa.tf
и вставьте следующий контент:
Как и раньше, мы используем существующий модуль чтобы сэкономить усилия по настройке среды Amazon MWAA. Модуль также создает корзину конфигурации, которую мы используем для указания зависимость времени выполнения приложения (Apache-airflow-cncf-kubernetes) В requirements.txt
файл. Этот пакет в сочетании с предустановленным пакетом Apache-airflow-Amazon, обеспечивает взаимодействие с Amazon EKS.
Загрузите модуль MWAA:
Разверните новые ресурсы:
Эта операция занимает 20–30 минут.
Создайте кластер Amazon EKS.
Создать файл eks.tf
со следующим содержанием:
Для создания самого кластера мы воспользуемся Схемы Amazon EKS для Terraform проект. Мы также определяем группу управляемых узлов с одним узлом в качестве целевого размера. Обратите внимание, что в случаях с нестабильной нагрузкой масштабирование кластера с помощью Карпентер вместо подхода с группой управляемых узлов, показанного выше, масштабирование кластера становится более гибким. Мы использовали группы управляемых узлов в первую очередь из-за простоты настройки.
Определим тождество, которое Роль исполнения Amazon MWAA предполагает в Kubernetes, используя map_roles
переменная. После настройки Поставщик Terraform Kubernetes, мы даем роли выполнения Amazon MWAA разрешения на управление модулями в кластере.
Загрузите модуль EKS Blueprints для Terraform:
Разверните новые ресурсы:
Эта операция занимает около 12 минут.
Создание ролей IAM для учетных записей служб.
Создать файл roles.tf
со следующим содержанием:
Этот файл определяет две учетные записи службы Kubernetes: source-bucket-reader-sa
и destination-bucket-writer-sa
и их разрешения в отношении API AWS, используя роли IAM для сервисных учетных записей (IRSA). Опять же, мы используем модуль из проекта Amazon EKS Blueprints для Terraform, чтобы упростить настройку IRSA. Обратите внимание, что обе роли получают только минимальные разрешения, которые им необходимы, определяемые с помощью IAM-политики AWS.
Загрузите новый модуль:
Разверните новые ресурсы:
Создайте группу обеспечения доступности баз данных
Создать файл dag.py
определение группы DAG Airflow:
Группа обеспечения доступности баз данных настроена для работы по почасовому графику с двумя задачами. read_bucket
с сервисным аккаунтом source-bucket-reader-sa
и write_bucket
с сервисным аккаунтом destination-bucket-writer-sa
, бегая друг за другом. Оба запускаются с использованием ЭксПодОператор, который отвечает за планирование задач в Amazon EKS, используя Образ Docker AWS CLI для запуска команд. Первая задача перечисляет файлы в исходном сегменте и записывает список в Airflow XCom. Вторая задача считывает список из XCom и сохраняет его в целевой корзине. Обратите внимание, что service_account_name
Параметр определяет, что разрешено делать каждой задаче.
Создать файл dag.tf
чтобы загрузить код DAG в корзину конфигурации Amazon MWAA:
Разверните изменения:
Среда Amazon MWAA автоматически импортирует файл из корзины S3.
Запустите группу обеспечения доступности баз данных
В браузере перейдите к Консоль Amazon MWAA и выберите среду. В правом верхнем углу выберите Открыть пользовательский интерфейс воздушного потока . Вы должны увидеть следующее:
Чтобы активировать DAG, в Действия столбец, выберите символ воспроизведения, а затем выберите Триггер DAG. Нажмите на имя группы обеспечения доступности баз данных, чтобы просмотреть запуск группы обеспечения доступности баз данных и его результаты.
Перейдите в Консоль Amazon S3 и выберите сегмент, начинающийся со слова «пункт назначения». Он должен содержать файл list.json
недавно созданный write_bucket
задача. Загрузите файл, чтобы изучить его содержимое — список JSON с одной записью.
Убирать
Ресурсы, созданные вами в этом пошаговом руководстве, требуют затрат AWS. Чтобы удалить созданные ресурсы, введите следующую команду:
И подтвердите изменения в диалоговом окне Terraform CLI.
Заключение
В этой записи блога вы узнали, как повысить безопасность конвейера данных, работающего на Amazon MWAA и Amazon EKS, путем сужения разрешений для каждой отдельной задачи.
Для более глубокого изучения темы используйте рабочий пример, созданный в этом пошаговом руководстве: что произойдет, если вы удалите service_account_name
параметр из задачи Airflow? Что произойдет, если вы поменяете имена учетных записей служб в двух задачах?
Для простоты в этом пошаговом руководстве мы использовали плоскую файловую структуру с файлами Terraform и Python в одном каталоге. Мы не придерживались стандартная структура модуля предложено Terraform, что обычно рекомендуется. В реальном проекте разделение проекта на несколько проектов или модулей Terraform также может повысить гибкость, скорость и независимость между командами, владеющими различными частями инфраструктуры.
Наконец, обязательно изучите Данные по ЭКС документацию, которая предоставляет другие ценные ресурсы для запуска вашего конвейера данных в Amazon EKS, а также Амазонка MWAA и Воздушный поток Apache документация для реализации ваших собственных вариантов использования. Конкретно вот это посмотрите образец реализации модуля Terraform для Amazon MWAA и Amazon EKS, который содержит более зрелый подход к настройке Amazon EKS и автоматическому масштабированию узлов, а также организации сети.
Если у вас есть вопросы, вы можете создать новую тему на AWS re:Пост или дотянуться до Поддержка AWS.
Об авторах
Ульрих Хинце — архитектор решений в AWS. Он сотрудничает с компаниями-разработчиками программного обеспечения для разработки и внедрения облачных решений на AWS. До прихода в AWS он более 8 лет работал с клиентами и партнерами AWS в сфере разработки программного обеспечения, консалтинга и архитектуры.
Патрик Обергерр — штатный инженер по данным в Contentful, имеет более 4 лет работы с AWS и более 10 лет в области данных. В Contentful он отвечает за инфраструктуру и работу стека данных, размещенного на AWS.
Йоханнес Гюнтер — консультант по облакам и данным в Netlight, более 5 лет работает с AWS. Он помогал клиентам из различных отраслей разрабатывать устойчивые облачные платформы и имеет сертификат AWS.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- PlatoData.Network Вертикальный генеративный ИИ. Расширьте возможности себя. Доступ здесь.
- ПлатонАйСтрим. Интеллект Web3. Расширение знаний. Доступ здесь.
- ПлатонЭСГ. Углерод, чистые технологии, Энергия, Окружающая среда, Солнечная, Управление отходами. Доступ здесь.
- ПлатонЗдоровье. Биотехнологии и клинические исследования. Доступ здесь.
- Источник: https://aws.amazon.com/blogs/big-data/set-up-fine-grained-permissions-for-your-data-pipeline-using-mwaa-and-eks/
- :имеет
- :является
- :нет
- $UP
- 1
- 10
- 100
- 12
- 16
- 2023
- 27
- 41
- 8
- 9
- a
- в состоянии
- О нас
- выше
- По
- Учетная запись
- Учетные записи
- признавать
- через
- действия
- ациклический
- добавленный
- придерживаться
- плюс
- Преимущества
- После
- снова
- против
- Все
- вдоль
- причислены
- Amazon
- Amazon Web Services
- an
- и
- Другой
- любой
- апаш
- API
- Применение
- Применить
- подхода
- утвердить
- архитектура
- МЫ
- AS
- предполагает,
- At
- разрешение
- Автоматический
- автоматически
- доступен
- прочь
- AWS
- Сертифицировано AWS
- Клиент AWS
- основанный
- , так как:
- до
- за
- за кулисами
- не являетесь
- между
- Блог
- изоферменты печени
- браузер
- бизнес
- но
- by
- CAN
- случаев
- Сертифицированные
- менялась
- изменения
- выбор
- Выберите
- нажмите на
- клиентов
- облако
- Кластер
- код
- Column
- сочетание
- сообщество
- Компании
- полный
- комплекс
- сложность
- компоненты
- Вычисление
- конфиденциальность
- Конфигурация
- Консоли
- консультант
- консалтинг
- содержать
- содержит
- содержание
- платформа контента
- Corner
- исправить
- Расходы
- Создайте
- создали
- создает
- Текущий
- клиент
- опыт работы с клиентами
- Клиенты
- DAG
- данным
- инженер данных
- Платформа данных
- обработка данных
- Дата и время
- решенный
- Принятие решений
- более глубокий
- определять
- определенный
- Определяет
- определяющий
- Зависимости
- Зависимость
- в зависимости
- развертывание
- развернуть
- развертывание
- развертывание
- описание
- проектирование
- назначение
- уничтожили
- Диалог
- DID
- различный
- направленный
- погружение
- Разное
- do
- Docker
- документации
- скачать
- рисование
- каждый
- простота
- эхо
- усилие
- пустой
- позволяет
- занятый
- инженер
- Проект и
- обеспечение
- запись
- Окружающая среда
- существенный
- Эфир (ETH)
- точно,
- пример
- обмена
- выполнять
- выполненный
- выполнение
- опыт
- Больше
- расширения
- ложный
- поле
- Файл
- Файлы
- Во-первых,
- плоский
- Трансформируемость
- гибко
- следовать
- после
- Что касается
- от
- функция
- далее
- собирать
- в общем
- получить
- GitHub
- Дайте
- график
- группы
- Группы
- GUEST
- Гостевой блог
- Ручки
- происходит
- Есть
- he
- помощь
- помог
- высший
- кашель
- состоялся
- Как
- How To
- HTML
- HTTPS
- IAM
- Личность
- if
- осуществлять
- Осуществляющий
- Импортировать
- импорт
- улучшать
- in
- включают
- включает в себя
- В том числе
- Увеличение
- независимость
- individual
- промышленности
- Инфраструктура
- внутри
- размышления
- вместо
- целостность
- взаимодействие
- Интерфейс
- в
- вопрос
- эмиссионный
- IT
- ЕГО
- саму трезвость
- работа
- Джобс
- присоединение
- путешествие
- JPG
- JSON
- Основные
- Вид
- Знать
- знания
- Kubernetes
- новее
- последний
- узнали
- наименее
- такое как
- Список
- листинг
- Списки
- загрузка
- локальным
- Войти
- посмотреть
- сохранение
- сделать
- ДЕЛАЕТ
- управлять
- управляемого
- менеджер
- зрелый
- Май..
- сообщение
- Метаданные
- минимальный
- минут
- модуль
- Модули
- БОЛЕЕ
- много
- с разными
- имя
- Названный
- имена
- Откройте
- необходимо
- Необходимость
- потребности
- сеть
- сетей
- Новые
- узел
- в своих размышлениях
- сейчас
- объект
- объекты
- of
- on
- ONE
- только
- с открытым исходным кодом
- операция
- Операционный отдел
- Операторы
- Опции
- or
- организация
- Другое
- наши
- внешний
- выходной
- собственный
- пакет
- параметр
- партнер
- партнерская сеть
- партнеры
- части
- Патчи
- путь
- Патрик
- Разрешения
- трубопровод
- Платформа
- Платформы
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- Играть
- Стручки
- политика
- портрет
- После
- в первую очередь
- частная
- обработка
- Продукт
- Профиль
- Проект
- проектов
- предложило
- Недвижимости
- поставщики
- приводит
- Питон
- Вопросы
- RE
- достигать
- Получать
- недавно
- Управление по борьбе с наркотиками (DEA)
- уменьшить
- область
- удаление
- Требования
- ресурс
- утилизация ресурсов
- Полезные ресурсы
- ответственности
- ответственный
- результат
- Итоги
- надежный
- Роли
- роли
- Правило
- Run
- Бег
- работает
- SaaS
- то же
- Сохранить
- Шкала
- масштабирование
- Сцены
- график
- считаться
- планирование
- поцарапать
- Во-вторых
- безопасный
- безопасность
- посмотреть
- Серии
- обслуживание
- Услуги
- набор
- установка
- Акции
- разделение
- должен
- показанный
- Шоу
- простота
- упростить
- одинарной
- единая среда
- Размер
- небольшой
- Software
- разработка программного обеспечения
- Решения
- Источник
- Источники
- конкретный
- конкретно
- скорость
- стек
- Персонал
- Начало
- и политические лидеры
- Начало
- начинается
- заявление
- По-прежнему
- диск
- варианты хранения
- магазины
- Структура
- Кабинет
- предмет
- успех
- успешный
- Убедитесь
- комфортного
- включается
- символ
- системы
- взять
- приняты
- принимает
- цель
- Сложность задачи
- задачи
- команда
- команды
- говорит
- шаблоны
- Terraform
- текст
- который
- Ассоциация
- Источник
- их
- тогда
- Эти
- они
- этой
- Через
- в
- знак
- инструментом
- инструменты
- топ
- тема
- трансформация
- вызвать
- правда
- два
- напишите
- лежащий в основе
- Обновление ПО
- на
- использование
- используемый
- Информация о пользователе
- Пользовательский интерфейс
- использования
- через
- ценный
- ценностное
- переменная
- различный
- версия
- яркие
- Виртуальный
- от
- прохождение
- законопроект
- we
- Web
- веб-сервисы
- ЧТО Ж
- Что
- когда
- , которые
- все
- чья
- зачем
- широко распространена
- будете
- работавший
- рабочий
- Рабочие процессы
- работает
- лет
- являетесь
- ВАШЕ
- зефирнет