Аналитика больших данных для конфиденциальных вычислений с помощью Apache Spark в Kubernetes

Служба Azure Kubernetes (AKS)
База данных SQL Azure
Azure Data Lake

Это решение использует конфиденциальные вычисления в Kubernetes для запуска аналитики больших данных с помощью Apache Spark в конфиденциальных контейнерах с данными из Azure Data Lake и База данных SQL Azure. Конфиденциальные вычисления предоставляются расширениями Intel Software Guard и процессорами AMD EPYCTM с secure Encrypted Virtualization-Secure Paging. Дополнительные сведения о подготовке кластера AKS с помощью конфиденциальных виртуальных машин AMD SEV-SNP см. в разделе "Поддержка пула узлов конфиденциальных виртуальных машин" в AKS с конфиденциальными виртуальными машинами AMD SEV-SNP. Дополнительные сведения о развертывании кластера AKS с конфиденциальными вычислениями узлов агента Intel SGX см. в статье "Развертывание кластера AKS с конфиденциальными вычислительными узлами агента Intel SGX с помощью Azure CLI".

Apache®, Apache Ignite, Ignite и логотип пламени являются зарегистрированными товарными знаками или товарными знаками Apache Software Foundation в США и/или других странах. Использование этих меток не подразумевает подтверждения от Apache Software Foundation.

Архитектура

Схема аналитики конфиденциальных больших данных с помощью Apache Spark, Azure SQL Always Encrypted, AKS и безопасной среды контейнера.

Скачайте файл PowerPoint этой архитектуры.

На предыдущей схеме описывается архитектура: масштабируемый шаблон для обработки больших наборов данных в распределенном режиме. Она также демонстрирует конфиденциальную аналитику реляционных ядр субД и хранение конфиденциальных данных. В частности, контейнерное приложение Spark может обрабатывать наборы данных из двух источников данных, как показано ниже.

  1. Azure Data Lake служба хранилища — файлы Parquet/Delta Lake: как показано в примере демонстрации, развертывание Spark с четырьмя модулями pod — один драйвер, три исполнителя в среде выполнения secure Container Environment (SCONE) — может обрабатывать 1,5 млрд строк файлов Parquet/Delta Lake, хранящихся в хранилище Azure Data Lake в течение двух минут или примерно 131 секунд.

  2. База данных SQL Azure — Always Encrypted с безопасными анклавами. В этом примере Spark используется для доступа к данным Always Encrypted в виде обычного текста с помощью драйвера JDBC SQL Azure в анклавах контейнера Spark для запуска аналитики и конвейеров машинного обучения.

Вы можете легко расширить этот шаблон, чтобы включить любые источники данных, поддерживаемые большой экосистемой Spark.

Рабочий процесс

  1. Оператор persona: инженер DevOps подготавливает кластеры Kubernetes, пространства имен, учетные записи службы и пулы узлов конфиденциальной виртуальной машины (например, DC4s_v3).

  2. Специалист разработчика: инженер по обработке данных использует PySpark для записи приложения аналитики, предназначенного для анализа больших объемов данных.

  3. Лицо хранителя данных: инженер по безопасности создает политику безопасности для приложения PySpark из общего репозитория в организации (однократное действие). Эта политика указывает ожидаемое состояние данных и кода приложения, минимальные требования к безопасности для платформы и любые переменные среды, аргументы командной строки или секреты (например, строку JDBC, URI входных BLOB-объектов и маркер SAS для доступа). Вы также можете сделать эту конфигурацию доступной для среды выполнения Spark с помощью секретов Kubernetes или с помощью Azure Key Vault. (Дополнительные сведения см. в разделе Используйте поставщик Azure Key Vault для драйвера CSI хранилища секретов в кластере AKS). Конфигурация внедряется в анклав только в том случае, если данные, предоставляемые поставщиком аттестации, проверяются поставщиком аттестации. Поставщик аттестации (например, служба Аттестация Azure) также определяется в политике безопасности.

  4. С помощью программного обеспечения конфиденциальных вычислений SCONE инженер данных создает конфиденциальный образ Docker, содержащий зашифрованный код аналитики и безопасную версию PySpark. SCONE работает в кластере AKS с поддержкой Intel SGX (см. раздел "Создание кластера AKS с пулом системных узлов"), который позволяет контейнеру выполняться внутри анклава. PySpark предоставляет доказательства того, что конфиденциальные данные и код приложения шифруются и изолированы в доверенной среде выполнения (TEE) — это означает, что нет людей, процессов и журналов нет доступа к данным обычного текста или коду приложения.

  5. Приложение PySpark развертывается в удаленном кластере AKS. Начинается и отправляется подтверждение аттестации поставщику аттестации. Если свидетельство является допустимым, возвращается маркер аттестации. Удаленная инфраструктура принимает маркер аттестации и проверяет его с помощью общедоступного сертификата, найденного в службе Аттестация Azure. Если маркер проверяется, существует почти уверенность в том, что анклав является безопасным и что ни данные, ни код приложения не были открыты за пределами анклава. Затем конфигурация в политике безопасности (переменные среды, аргументы командной строки и секреты) внедряется в анклавы PySpark.

  6. Вы можете горизонтально масштабировать выполнение PySpark на нескольких узлах Kubernetes. Все экземпляры PySpark взаимодействуют по зашифрованному каналу, и все файлы шифруются, которые необходимо записать в локальные файловые системы (например, перетасовка файлов).

  7. Результаты анализа шифруются и передаются в База данных SQL Azure с помощью Always Encrypted (который использует шифрование на уровне столбцов). Доступ к выходным данным и ключам шифрования можно безопасно предоставить другим конфиденциальным приложениям (например, в конвейере) с помощью таких же политик безопасности и аппаратных доказательств аттестации, описанных в этой статье.

Компоненты

  • Аттестация Azure — это унифицированное решение, которое удаленно проверяет надежность платформы. Аттестация Azure также удаленно проверяет целостность двоичных файлов, выполняемых на платформе. Используйте Аттестацию Azure, чтобы установить отношение доверия с конфиденциальным приложением.

  • Узлы конфиденциальных вычислений Azure размещаются в определенной серии виртуальных машин, которые могут выполнять конфиденциальные рабочие нагрузки в AKS в аппаратном TEE. В этой среде код уровня пользователя может выделять частные регионы памяти, известные как анклава. Узлы конфиденциальных вычислений могут поддерживать конфиденциальные контейнеры или контейнеры, поддерживающие анклавы.

  • Служба Azure Kubernetes упрощает процесс развертывания кластера Kubernetes и управления ими.

  • Apache Spark — это механизм с открытым исходным кодом, мультиязычный механизм для выполнения проектирования данных, обработки и анализа данных и машинного обучения на компьютерах с одним узлом и кластерах с несколькими узлами, таких как модули pod Kubernetes.

  • База данных SQL Azure теперь предлагает Always Encrypted с безопасными анклавами, расширяя возможности конфиденциальных вычислений технологии Always Encrypted SQL Server для включения в месте шифрования и расширенных конфиденциальных запросов.

  • SCONE поддерживает выполнение конфиденциальных приложений в контейнерах, работающих в кластере Kubernetes.

  • Платформа SCONE — это решение от Scontain, независимого поставщика программного обеспечения и партнера Azure.

Альтернативные варианты

Occlum — это надежная, многопроцессная библиотечная ОС (LibOS) для Intel SGX. Occlum позволяет устаревшим приложениям работать в Intel SGX без изменений в исходном коде. Occlum прозрачно защищает конфиденциальность рабочих нагрузок пользователей, позволяя легко перенести существующие приложения Docker. Occlum поддерживает приложения Java.

Команда разработчиков SCONE поддерживает образ контейнера Apache Spark , который запускает последнюю версию Spark. Альтернативой, которая не связана с Apache Spark, является Fortanix, с помощью которой можно развернуть конфиденциальные контейнеры для использования с контейнерным приложением. Fortanix обеспечивает гибкость, необходимую для запуска и управления самым широким набором приложений: существующих приложений, новых собственных приложений анклава и предварительно упакованных приложений.

Подробности сценария

Существует экспоненциальный рост наборов данных, что привело к растущему анализу того, как данные предоставляются с точки зрения конфиденциальности и соответствия потребительским данным. В этом контексте конфиденциальные вычисления становятся важным инструментом, помогающий организациям удовлетворять свои потребности в конфиденциальности и безопасности для бизнес-данных и данных потребителей. Организации могут получить новые аналитические сведения от регулируемых данных, если данные обрабатываются соответствующим образом. Конфиденциальные вычисления особенно полезны в сценариях, когда масштаб, предоставляемый облачными вычислениями, необходим для обработки данных конфиденциально.

Технология конфиденциальных вычислений шифрует данные в памяти и обрабатывает их только после проверки облачной среды или проверки. Конфиденциальные вычисления препятствуют доступу к данным облачными операторами, вредоносными администраторами и привилегированным программным обеспечением, например гипервизором. Он также помогает сохранить данные, защищенные на протяжении всего жизненного цикла, в то время как данные неактивные, транзитные, а также сейчас во время его использования.

Конфиденциальные контейнеры в Служба Azure Kubernetes (AKS) предоставляют необходимую инфраструктуру для использования популярных приложений, таких как Apache Spark, для очистки данных и обучения машинного обучения. В этой статье представлено решение, которое предлагает конфиденциальные вычисления Azure для запуска приложения Apache Spark в кластере AKS с помощью пулов узлов с расширениями Intel Software Guard (Intel SGX). Данные из этой обработки безопасно хранятся в База данных SQL Azure с помощью Always Encrypted с безопасными анклавами.

Примечание.

Аналитика конфиденциальных данных в этом контексте предназначена для выполнения аналитики конфиденциальных данных с спокойствием против кражи данных. Это включает в себя потенциальное нарушение доступа к контейнерам на корневом уровне (например, администратором-изгоем) или внешним образом (по компрометации системы).

Аналитика конфиденциальных данных помогает удовлетворить самые высокие потребности безопасности и конфиденциальности путем удаления из вычисления ненадежных сторон, таких как оператор облака и служба или гостевые администраторы. Этот метод помогает удовлетворить потребности в соответствии с данными с помощью аппаратных гарантий.

Потенциальные варианты использования

Многие отрасли, особенно финансовые услуги, защищают свои данные с помощью конфиденциальных вычислений в следующих целях:

Рекомендации

Эти рекомендации реализуют основные принципы платформы Azure Well-Architected Framework, которая является набором руководящих принципов, которые можно использовать для улучшения качества рабочей нагрузки. Дополнительные сведения см. в статье Microsoft Azure Well-Architected Framework.

Конфиденциальные анклава Azure, использующие виртуальные машины серии DCsv3 и DCdsv3, предлагают большие размеры памяти для выполнения приложений с большим объемом памяти, таких как аналитика. В этом сценарии используются виртуальные машины серии DCsv3 с поддержкой Intel SGX. В определенных регионах можно развернуть только определенные размеры. Дополнительные сведения см. в разделах Краткое руководство. Развертывание виртуальной машины Azure для конфиденциальных вычислений в Marketplace и Доступность продуктов по регионам.

Безопасность

Безопасность обеспечивает гарантии от преднамеренного нападения и злоупотребления ценными данными и системами. Дополнительные сведения см. в разделе "Общие сведения о компоненте безопасности".

Двумя основными факторами безопасности для этого сценария являются безопасные анклавы и аттестация.

Гарантии анклава

Администраторы Kubernetes или любой привилегированный пользователь с высоким уровнем доступа (например, root), не могут проверять содержимое в памяти или исходный код драйверов или исполнителей. Кэш страниц анклава (EPC) — это специализированный раздел памяти в конфиденциальных виртуальных машинах Azure, которые используют анклавы или конфиденциальные контейнеры. Виртуальные машины серии DCsv3 и DCdsv3 также предоставляют обычную незашифрованную память для запуска приложений, которые не требуют безопасного анклава. Дополнительные сведения об использовании Intel SGX для анклава см. в статье Build with SGX enclaves.

Аттестация

Аттестация — это механизм, предоставляющий клиенту или стороне криптографические доказательства того, что среда, в которой работает приложение, является надежной, включая оборудование и программное обеспечение, перед обменом данными. Удаленная аттестация гарантирует, что рабочая нагрузка не была изменена при развертывании на ненадежном узле, например экземпляре виртуальной машины или узле Kubernetes, работающем в облаке. В этом процессе данные аттестации, предоставляемые оборудованием Intel SGX, анализируются поставщиком аттестации.

Для выполнения удаленной аттестации в приложении SCONE (например, модулях pod Spark Driver и Executor) необходимо выполнить две службы:

  • Локальная служба аттестации (LAS): локальная служба, которая выполняется на ненадежном узле (виртуальная машина пула узлов AKS) и собирает доказательства аттестации, предоставляемые Intel SGX о подтверждении приложения. Из-за метода развертывания приложения SCONE это свидетельство подписывается и пересылается в службу конфигурации и аттестации (CAS).

  • CAS: центральная служба, которая управляет политиками безопасности (называемыми сеансами SCONE), конфигурацией и секретами. CAS сравнивает доказательства аттестации, собранные LAS, с политиками безопасности приложения (которые определены владельцем приложения), чтобы решить, является ли анклав надежным. Если это так, CAS позволяет анклаву выполняться, а SCONE безопасно внедряет в него конфигурацию и секреты. Дополнительные сведения о CAS и его функциях, таких как создание секретов и управление доступом, см. в разделе "Конфигурация SCONE" и "Служба аттестации".

В этом сценарии используется общедоступный CAS, предоставляемый SCONE для демонстрации и простоты, и он развертывает LAS для запуска в качестве daemonSet на каждом узле AKS.

Оптимизация затрат

Оптимизация затрат заключается в поиске способов уменьшения ненужных расходов и повышения эффективности работы. Дополнительные сведения см. в разделе Обзор критерия "Оптимизация затрат".

Чтобы узнать объем затрат на выполнение этого сценария, используйте Калькулятор цен Azure, который выполняет предварительную настройку всех служб Azure. Обратите внимание на дополнительные лицензии, необходимые партнеру для выполнения рабочих нагрузок рабочей среды.

Развертывание этого сценария

Развертывание этого сценария включает следующие общие действия:

  • Получите доступ к базовому образу PySpark, который используется в этом сценарии из реестра контейнеров SCONE: см registry.scontain.com:5050 . на проверенных образах SCONE.

  • Клонируйте демонстрационный проект на GitHub, конфиденциальной аналитике данных с помощью Apache Spark в конфиденциальных контейнерах Intel SGX. Этот проект содержит все необходимые ресурсы, шаги развертывания и исходный код для воспроизведения демонстрации.

  • Развертывание Always Encrypted с безопасными анклавами в База данных SQL Azure — демонстрации. Эти демонстрации используют конфиденциальный набор данных ContosoHR, который включен. Этот сценарий расшифровывает конфиденциальные данные в виде открытого текста в анклаве контейнеров Spark.

  • Разверните пул узлов кластера AKS с поддержкой Intel SGX. Инструкции см . в кратком руководстве. Развертывание кластера AKS с узлами конфиденциальных вычислений с помощью Azure CLI.

  • Разверните службу локальной аттестации SCONE в кластере с помощью включенного манифеста Kubernetes.

  • Создайте зашифрованный образ с помощью программного обеспечения конфиденциальных вычислений SCONE и отправьте его в собственный Реестр контейнеров Azure. Репозиторий имеет демонстрационное приложение, которое подсчитывает количество строк в записях желтого такси в Нью-Йорке, открытый набор данных времени, расположения, тарифы и другие данные, связанные с поездками на такси. Это можно адаптировать в соответствии с конкретными потребностями.

  • Разверните приложение Spark, выполнив команду spark-submit. Это развертывает модуль pod драйвера и настраиваемое количество модулей pod исполнителя (демонстрация использует три), которые выполняют задачи и сообщают результаты анализа драйверу. Все передаваемые данные шифруются.

Кроме того, SCONE Confidential PySpark в Kubernetes, виртуальная машина включает в себя ту же демонстрацию, которую можно воспроизвести в локальном кластере minikube . Дополнительные сведения см. в официальной документации: виртуальная машина SCONE PySpark.

Соавторы

Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участник.

Автор субъекта:

  • Amar Gowda | Главный диспетчер программ

Другие участник:

Чтобы просмотреть недоступные профили LinkedIn, войдите в LinkedIn.

Следующие шаги