Эталонная архитектура Azure Spring Apps

Примечание

Azure Spring Apps — это новое название службы Azure Spring Cloud. Старое название будет еще некоторое время встречаться в наших материалах, пока мы не обновим ресурсы, такие как снимки экрана, видео и схемы.

Эта статья относится к: ✔️ Standard ✔️ Enterprise

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

Существует два варианта Azure Spring Apps: план "Стандартный" и "Корпоративный".

План Azure Spring Apps уровня "Стандартный" состоит из сервера конфигурации Spring Cloud, реестра служб Spring Cloud и службы сборки kpack.

План Azure Spring Apps Enterprise состоит из службы сборки VMware Tanzu®, службы конфигурации приложений для VMware Tanzu®, реестра служб VMware Tanzu®, шлюза Spring Cloud для VMware Tanzu® и портала API для VMware Tanzu®.™

Сведения о реализации этой архитектуры см. в справочнике по архитектуре Azure Spring Apps на GitHub.

Эта архитектура может быть развернута с помощью Azure Resource Manager (ARM), Terraform, Azure CLI и Bicep. Артефакты, которые вы найдете в репозитории, помогут вам настроить среду по-своему. Вы можете объединять такие ресурсы, как Брандмауэр Azure или Шлюз приложений, в различные группы ресурсов или подписки. Такая группировка позволяет разделить работу с такими функциями, как ИТ-инфраструктура, безопасность, команды бизнес-приложений и т. д.

Планирование диапазона адресов

Для работы Azure Spring Apps требуются две выделенные подсети:

  • Среда выполнения службы
  • Приложения Spring Boot

Для каждой из этих подсетей требуется выделенный кластер Azure Spring Apps. У каждого кластера должна быть своя отдельная подсеть. Минимальный размер каждой подсети — /28. Количество экземпляров приложений, которые может поддерживать Azure Spring Apps, зависит от размера подсети. Подробные требования к виртуальной сети см. в разделе Требования к виртуальной сетистатьи Развертывание Azure Spring Apps в виртуальной сети.

Предупреждение

Выбранный размер подсети не может перекрываться с существующим адресным пространством виртуальной сети и не должен перекрываться с диапазонами адресов пиринговой или локальной подсети.

Варианты использования

Типичные способы использования этой архитектуры:

  • Частные приложения: внутренние приложения, развертываемые в гибридных облачных средах
  • Общедоступные приложения: приложения, которые доступны извне

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

Частные приложения

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

  • В подсети должен быть только один экземпляр Azure Spring Apps.
  • Необходимо успешно пройти хотя бы один тест производительности системы безопасности.
  • Записи службы доменных имен (DNS) узла приложений необходимо хранить в Частной зоне DNS Azure.
  • Зависимости служб Azure должны обмениваться данными через конечные точки служб или приватный канал.
  • Неактивные данные должны быть зашифрованы.
  • Передаваемые данные тоже должны быть зашифрованы.
  • Могут использоваться конвейеры развертывания DevOps (например, Azure DevOps), для которых требуется сетевое подключение к Azure Spring Apps.
  • Исходящий трафик должен проходить через центральный сетевой виртуальный модуль (NVA) (например, Брандмауэр Azure).
  • Если для загрузки свойств конфигурации из репозитория используется Сервер конфигурации Azure Spring Apps, репозиторий должен быть частным.
  • Для реализации модели безопасности "Никому не доверяй" необходимо хранить секреты, сертификаты и учетные данные в безопасном хранилище. Для этого рекомендуем службу Azure Key Vault.
  • Разрешение имен локальных узлов и в облаке должно быть двунаправленным.
  • Нет прямого исходящего трафика в общедоступный Интернет, кроме трафика с панели управления.
  • Группы ресурсов, управляемые развертыванием Azure Spring Apps, не должны изменяться.
  • Подсети, управляемые развертыванием Azure Spring Apps, не должны изменяться.

В списке ниже представлены компоненты, из которых состоит проект:

  • Локальная сеть
    • Служба доменных имен (DNS)
    • Шлюз
  • Подписка концентратора
    • Подсеть Шлюза приложений
    • Подсеть Брандмауэра Azure
    • Подсеть общих служб
  • Подключенная подписка
    • Подсеть Бастиона Azure
    • Одноранговый узел виртуальной сети

Ниже описаны службы Azure, включенные в эталонную архитектуру.

  • Azure Key Vault: аппаратная служба управления учетными данными, интегрированная со службами идентификации и вычислительными ресурсами Майкрософт.

  • Azure Monitor: всесторонний комплект служб мониторинга для приложений, развернутых как в Azure, так и локально.

  • Azure Pipelines: полнофункциональная служба непрерывной поставки и непрерывной интеграции (CI/CD), которая может автоматически разворачивать обновленные приложения Spring Boot в Azure Spring Apps.

  • Microsoft Defender для облака: единая система управления безопасностью и защиты от угроз для рабочих нагрузок, выполняемых локально, в нескольких облаках и в Azure.

  • Azure Spring Apps: управляемая служба, которая разработана и оптимизирована специально для приложений Spring Boot на основе Java и приложений Steeltoe на основе .NET.

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

Общедоступные приложения

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

  • В подсети должен быть только один экземпляр Azure Spring Apps.
  • Необходимо успешно пройти хотя бы один тест производительности системы безопасности.
  • Записи службы доменных имен (DNS) узла приложений необходимо хранить в Частной зоне DNS Azure.
  • Защита от атак DDoS Azure должна быть включена.
  • Зависимости служб Azure должны обмениваться данными через конечные точки служб или приватный канал.
  • Неактивные данные должны быть зашифрованы.
  • Передаваемые данные тоже должны быть зашифрованы.
  • Могут использоваться конвейеры развертывания DevOps (например, Azure DevOps), для которых требуется сетевое подключение к Azure Spring Apps.
  • Исходящий трафик должен проходить через центральный сетевой виртуальный модуль (NVA) (например, Брандмауэр Azure).
  • Входящий трафик должен управляться хотя бы Шлюзом приложений Azure или службой Azure Front Door.
  • Адреса с маршрутизацией через Интернет должны храниться в общедоступной зоне DNS Azure.
  • Для реализации модели безопасности "Никому не доверяй" необходимо хранить секреты, сертификаты и учетные данные в безопасном хранилище. Для этого рекомендуем службу Azure Key Vault.
  • Разрешение имен локальных узлов и в облаке должно быть двунаправленным.
  • Нет прямого исходящего трафика в общедоступный Интернет, кроме трафика с панели управления.
  • Группы ресурсов, управляемые развертыванием Azure Spring Apps, не должны изменяться.
  • Подсети, управляемые развертыванием Azure Spring Apps, не должны изменяться.

В списке ниже представлены компоненты, из которых состоит проект:

  • Локальная сеть
    • Служба доменных имен (DNS)
    • Шлюз
  • Подписка концентратора
    • Подсеть Шлюза приложений
    • Подсеть Брандмауэра Azure
    • Подсеть общих служб
  • Подключенная подписка
    • Подсеть Бастиона Azure
    • Одноранговый узел виртуальной сети

Ниже описаны службы Azure, включенные в эталонную архитектуру.

  • Брандмауэр приложений Azure: компонент Шлюза приложений Azure, обеспечивающий централизованную защиту приложений от распространенных эксплойтов и уязвимостей.

  • Шлюз приложений Azure: подсистема балансировки нагрузки, отвечающая за трафик приложений с разгрузкой TLS на уровне 7.

  • Azure Key Vault: аппаратная служба управления учетными данными, интегрированная со службами идентификации и вычислительными ресурсами Майкрософт.

  • Azure Monitor: всесторонний комплект служб мониторинга для приложений, развернутых как в Azure, так и локально.

  • Azure Pipelines: полнофункциональная служба непрерывной поставки и непрерывной интеграции (CI/CD), которая может автоматически разворачивать обновленные приложения Spring Boot в Azure Spring Apps.

  • Microsoft Defender для облака: единая система управления безопасностью и защиты от угроз для рабочих нагрузок, выполняемых локально, в нескольких облаках и в Azure.

  • Azure Spring Apps: управляемая служба, которая разработана и оптимизирована специально для приложений Spring Boot на основе Java и приложений Steeltoe на основе .NET.

На следующих схемах представлен хорошо спроектированный центральный и периферийный дизайн, соответствующий указанным выше требованиям. Только центральная виртуальная сеть взаимодействует с Интернетом:

Локальное подключение Azure Spring Apps

Приложения в Azure Spring Apps могут обмениваться данными с различными локальными, внешними ресурсами и ресурсами Azure. С помощью концентратора и периферийного проекта приложения могут маршрутизировать трафик во внешнюю или локальную сеть через Express Route или виртуальную частную сеть типа "сеть — сеть".

Рекомендации по платформе Azure с продуманной архитектурой

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

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

Современные распределенные системы выстроены таким образом, что инфраструктура непрерывно растет. Это приводит к непредвиденным и неконтролируемым расходам. Служба Azure Spring Apps состоит из компонентов, которые способны масштабироваться, чтобы удовлетворить запросы и оптимизировать затраты. Главной составляющей такой архитектуры является служба контейнеров Azure (AKS). Эта служба помогает уменьшить сложность и операционные издержки при управлении Kubernetes, тем самым обеспечивая экономию при обслуживании кластера.

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

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

эффективность работы;

Azure Spring Apps обеспечивает разные аспекты эффективности операционных процессов. Вы можете совместить эти аспекты, чтобы служба работала в производственных средах по-настоящему эффективно:

  • С помощью Azure Pipelines вы можете обеспечить надежную и систематичную работу развертываний, а также избежать человеческих ошибок.
  • Azure Monitor и Application Insights позволяют хранить журналы и данные телеметрии. Вы можете оценивать журналы и метрики, чтобы следить за состоянием и производительностью своих приложений. С помощью агента Java в службу интегрировано наблюдение за производительностью приложений (APM). Этот агент позволяет отслеживать все развернутые приложения и зависимости без необходимости вносить дополнительный код. Дополнительные сведения см. в записи блога Отслеживание приложений и зависимостей в Azure Spring Apps.
  • Microsoft Defender для облака предлагает платформу для анализа и оценки имеющихся данных с целью обеспечения безопасности приложений.
  • Служба поддерживает целый ряд моделей развертывания. Дополнительные сведения см. в разделе Настройка промежуточной среды в Azure Spring Apps.

Надежность

В основе Azure Spring Apps лежит Служба контейнеров Azure (AKS). AKS обеспечивает устойчивость за счет кластеризации, однако данная эталонная архитектура идет еще дальше и включает службы и аспекты архитектуры, которые повышают доступность приложения в случае сбоя какого-либо компонента.

В основе этой архитектуры лежит продуманный концентратор и периферийный проект, благодаря чему вы можете выполнить развертывание в целом ряде регионов. Если речь идет о частном приложении, архитектура способна обеспечить непрерывную доступность в случае сбоя с помощью Частной зоны DNS Azure. В случае с общедоступным приложением за доступность отвечают Azure Front Door и Шлюз приложений Azure.

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

Безопасность этой архитектуры обеспечивается за счет стандартных для отрасли элементов управления и тестов производительности. В данном контексте понятие "элемент управления" означает краткую и четко определенную рекомендацию, например "Использовать принцип наименьших привилегий при реализации доступа к информационной системе. IAM-05" В этой архитектуре используются элементы управления службы Cloud Control Matrix (CCM) от Альянса безопасности облачных вычислений (CSA) и Microsoft Azure Foundations Benchmark (MAFB) от Центра интернет-безопасности (CIS). Эти элементы управления обеспечивают соблюдение главных принципов системы безопасности: системы управления, передачи данных по сети и безопасности приложений. Вы должны проследить за соблюдением главных принципов проектирования: идентификации, управления доступом и хранения, ведь они имеют прямой отношение к вашей целевой инфраструктуре.

Система управления

Главным аспектом системы управления этой архитектуры является изоляция сетевых ресурсов. В рамках службы CCM, DCS-08 рекомендует контролировать входящий и исходящий трафик центра обработки данных. Для должного контроля архитектура фильтрует трафик "восток — запад" между ресурсами с помощью группы безопасности сети. Кроме того, архитектура фильтрует трафик между центральными службами в концентраторе и ресурсами на периферии. С помощью Брандмауэра Azure архитектура управляет трафиком между Интернетом и ресурсами в составе архитектуры.

В списке ниже приведены элементы управления для обеспечения безопасности центра обработки данных.

Идентификатор управления CCM от CSA Домен управления CCM от CSA
DCS-08 Учет неавторизованных пользователей для безопасности центра обработки данных

Сеть

В основе этой архитектуры лежит проект сети, вдохновленный привычной звездообразной моделью. Это обеспечивает сетевую изоляцию в архитектуре. Согласно элементу управления IVS-06 в CCM, трафик между сетями и виртуальными машинами должен быть ограничен, а также должен отслеживаться между доверенными и ненадежными средами. Для реализации этого элемента управления трафик "восток–запад" (в "центре обработки данных") отслеживается с помощью группы безопасности сети, а трафик "север–юг" (за пределами "центра обработки данных") — с помощью Брандмауэра Azure. Согласно элементу управления IPY-04 в CCM, для обмена данными между службами инфраструктура должна использовать защищенные сетевые протоколы. Все службы Azure, поддерживающие эту архитектуру, используют стандартные протоколы безопасности, например TLS для HTTP и SQL.

В списке ниже представлены элементы управления CCM, призванные обеспечить безопасность сети.

Идентификатор управления CCM от CSA Домен управления CCM от CSA
IPY-04 Сетевые протоколы
IVS-06 Безопасность сети

Для укрепления защиты сети можно задать элементы управления MAFB. Эти элементы управления не дают трафику в рамках среды попасть в общедоступный Интернет.

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

Идентификатор элемента управления CIS Описание элемента управления CIS
6.2 Убедитесь, что доступ по протоколу SSH через Интернет заблокирован.
6.3 Убедитесь, что базы данных SQL разрешают входящий трафик 0.0.0.0/0 (любой IP-адрес).
6,5 Убедитесь, что служба "Наблюдатель за сетями" включена.
6.6 Убедитесь, что входящий трафик по UDP не может попасть в Интернет.

При развертывании в защищенной среде Azure Spring Apps требует, чтобы из Azure поступал исходящий административный трафик. Необходимо разрешить правила сети и приложений, перечисленные в разделе Обязанности клиента, для запуска Azure Spring Apps в виртуальной сети.

Безопасность приложений

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

В списке ниже представлены элементы управления CCM, призванные обеспечить управление ключами.

Идентификатор управления CCM от CSA Домен управления CCM от CSA
EKM-01 Шифрование и права для управления ключами
EKM-02 Шифрование и создание ключей
EKM-03 Шифрование и защита конфиденциальных данных при управлении ключами
EKM-04 Шифрование, а также доступ и хранение при управлении ключами

В рамках CCM элементы управления EKM-02 и EKM-03 предлагают правила и процедуры для управления ключами и использования протоколов шифрования для защиты конфиденциальных данных. EKM-01 рекомендует выделить доступных для идентификации владельцев для всех криптографических ключей, чтобы ими было проще управлять. EKM-04 рекомендует использовать стандартные алгоритмы.

В списке ниже представлены элементы управления CIS, обеспечивающие управление ключами.

Идентификатор элемента управления CIS Описание элемента управления CIS
8.1 Убедитесь, что для всех ключей задана дата окончания срока действия.
8.2 Убедитесь, что для всех секретов задана дата окончания срока действия.
8.4 Убедитесь, что хранилище ключей поддерживает восстановление.

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

Аспекты безопасности приложений закладывают основу для этой эталонной архитектуры, обеспечивая поддержку рабочих нагрузок Spring в Azure.

Дальнейшие действия

Ознакомьтесь с развертываниями этой эталонной архитектуры через ARM, Terraform и Azure CLI в репозитории Эталонная архитектура Azure Spring Apps.