Защита обмена данными для приложений Spring Boot в среде "Нулевое доверие"
Примечание.
Планы "Базовый", "Стандартный" и "Корпоративный" будут устарели начиная с середины марта 2025 г. с 3-летнего периода выхода на пенсию. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.
Стандартный план потребления и выделенного плана будет устарел с 30 сентября 2024 г. с полным завершением работы после шести месяцев. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в статье "Миграция потребления Azure Spring Apps Standard" и выделенного плана в приложения контейнеров Azure.
В этой статье описывается, как защитить обмен данными для приложений Spring Boot в среде "Нулевое доверие". Вы можете защитить сквозную связь или завершить безопасность на уровне транспорта в любой точке связи для приложений Spring Boot. Вы также можете автоматизировать подготовку и настройку всех ресурсов Azure, необходимых для защиты связи.
Реализация безопасных коммуникаций в рамках архитектуры решения может быть сложной задачей. Многие клиенты вручную сменят свои сертификаты или создают собственные решения для автоматизации подготовки и настройки. Даже тогда существует риск кражи данных, например несанкционированное копирование или передача данных из серверных систем. С помощью Azure Spring Apps эти сведения обрабатываются для вас. Azure Spring Apps абстрагирует большую часть сложности, оставляя безопасные коммуникации настраиваемыми и автоматическими параметрами в службе.
Безопасные интернет-коммуникации
Протокол TLS/SSL устанавливает удостоверение и доверие и шифрует связь всех типов. TLS/SSL обеспечивает безопасную связь, в частности веб-трафик с данными о коммерции и клиентах.
Вы можете использовать любой тип TLS/SSL-сертификата. Например, можно использовать сертификаты, выданные центром сертификации, расширенные сертификаты проверки, подстановочные знаки с поддержкой любого количества поддоменов или самозаверяющего сертификата для сред разработки и тестирования.
Загрузка безопасности сертификатов с нулевой доверием
Нулевое доверие основано на принципе "никогда не доверять, всегда проверять и без учетных данных". Нулевое доверие помогает защитить все сообщения, устраняя неизвестные и неуправляемые сертификаты. Нулевое доверие включает доверие только к сертификатам, которым предоставлен общий доступ, проверяя удостоверение перед предоставлением доступа к этим сертификатам. Дополнительные сведения см. в центре рекомендаций по нулю доверия.
Для безопасной загрузки сертификатов из Azure Key Vault приложения Spring Boot используют управляемые удостоверения и управление доступом на основе ролей Azure (RBAC). Azure Spring Apps использует субъект-службу поставщика и управление доступом на основе ролей Azure. Эта безопасная загрузка работает с помощью поставщика архитектуры шифрования Java (JCA) Azure Key Vault. Дополнительные сведения см. в клиентской библиотеке JCA Azure Key Vault для Java.
С помощью Azure Key Vault вы управляете хранилищем и распределением сертификатов, чтобы снизить случайное утечку. Приложения и службы могут безопасно получать доступ к сертификатам. Key Vault использует управление доступом на основе ролей Azure для блокировки доступа только тем, кому требуется доступ, например администратору, но и приложениям, используя принцип наименьших привилегий. Приложения и службы проходят проверку подлинности и авторизацию с помощью идентификатора Microsoft Entra и управления доступом на основе ролей Azure для доступа к сертификатам. Вы можете отслеживать доступ и использование сертификатов в Key Vault с помощью полного аудита.
Защита сквозных подключений или завершение TLS в любой точке
Как показано на схеме ниже, существует несколько сегментов связи с помощью следующих компонентов:
- Точки доступа к сети, такие как Azure Front Door
- Шлюз приложение Azure
- Локальный Диспетчер трафика F5 BIG-IP
- Управление API Azure
- Apigee Управление API приложения Spring Boot и серверные системы, такие как базы данных, системы обмена сообщениями и события, а также кэш приложений.
Вы можете защитить сквозную связь или завершить безопасность на уровне транспорта в любой точке связи для приложений Spring Boot.
В следующих разделах подробно описана эта архитектура.
Сегмент 1. Защита обмена данными в Azure Spring Apps
Первый сегмент (сегмент 1 на схеме) представляет обмен данными от потребителей к контроллеру входящего трафика в Azure Spring Apps. Эти потребители включают браузеры, мобильные телефоны, настольные компьютеры, киоски или точки доступа к сети, такие как Azure Front Door, шлюз приложение Azure, локальный Диспетчер трафика F5 BIG-IP, Управление API Azure и Apigee Управление API.
По умолчанию этот сегмент защищен с помощью предоставленного корпорацией Майкрософт TLS/SSL-сертификата для *.azuremicroservices.io
домена. Вы можете применить собственный СЕРТИФИКАТ TLS/SSL в Azure Key Vault, привязав личный домен к приложению в Azure Spring Apps. Код не требуется. Дополнительные сведения см. в руководстве Сопоставление существующего личного домена с Azure Spring Apps.
Сегмент 2. Защита обмена данными от контроллера входящего трафика к приложениям
Следующий сегмент (сегмент 2 на схеме) представляет обмен данными от контроллера входящего трафика Azure Spring Apps к любому приложению в Azure Spring Apps. Вы можете включить TLS/SSL для защиты трафика от контроллера входящего трафика к приложению, поддерживающее ПРОТОКОЛ HTTPS. Дополнительные сведения см. в разделе "Включение протокола TLS для входящего трафика" для приложения.
Приложение Spring Boot может использовать подход Spring для включения HTTPS, или приложение может защитить обмен данными с помощью azure Key Vault Certificates Spring Boot Starter. Дополнительные сведения см. в руководстве по приложениям Secure Spring Boot с помощью сертификатов Azure Key Vault.
Чтобы защитить обмен данными с помощью TLS/SSL-сертификата из Azure Key Vault, вам потребуется выполнить следующие три действия по настройке. Код не требуется.
Включите в файл pom.xml следующую зависимость сертификатов Azure Key Vault Certificates Spring Boot Starter:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>azure-spring-boot-starter-keyvault-certificates</artifactId> </dependency>
Добавьте следующие свойства, чтобы настроить приложение для загрузки TLS/SSL-сертификата из Azure Key Vault. Обязательно укажите универсальный код ресурса (URI) Azure Key Vault и имя сертификата.
azure: keyvault: uri: ${KEY_VAULT_URI} server: ssl: key-alias: ${SERVER_SSL_CERTIFICATE_NAME} key-store-type: AzureKeyVault
Включите управляемое удостоверение приложения, а затем предоставьте управляемому удостоверению доступ "Get" и "List" к Azure Key Vault. Дополнительные сведения см. в статье "Включение управляемого удостоверения, назначаемого системой" для приложения в Azure Spring Apps и контроль доступа сертификатов.
Сегмент 3. Защита обмена данными от приложения к управляемому ПО промежуточного слоя
Следующий сегмент (сегмент 3 на схеме) представляет обмен данными от любого приложения с управляемым сервером конфигурации Spring Cloud и реестром службы Spring Cloud в Azure Spring Apps. По умолчанию этот сегмент защищен с помощью предоставленного корпорацией Майкрософт TLS/SSL-сертификата.
Сегмент 4. Защита приложений к обмену данными между приложениями
Следующий сегмент (сегмент 4 на схеме) представляет связь между приложением и другим приложением в Azure Spring Apps. С помощью сертификата Azure Key Vault Spring Boot Starter можно настроить вызываемое приложение, чтобы доверять TLS/SSL-сертификату, предоставленному приложением с поддержкой HTTPS. Приложение-получатель Spring Boot может использовать подход Spring для включения HTTPS, или приложение может защитить обмен данными с помощью начального средства Запуска сертификатов Azure Key Vault Spring Boot. Дополнительные сведения см. в руководстве по приложениям Secure Spring Boot с помощью сертификатов Azure Key Vault.
Сегмент 5. Защита приложений во внешней системе
Следующий сегмент (сегмент 5 на схеме) представляет связь между приложением, работающим в Azure Spring Apps и внешними системами. С помощью сертификата Azure Key Vault Spring Boot Starter можно настроить приложение, работающее в Azure Spring Apps, чтобы доверять TLS/SSL-сертификату, предоставленному любыми внешними системами. Дополнительные сведения см. в руководстве по приложениям Secure Spring Boot с помощью сертификатов Azure Key Vault.
Неявная загрузка TLS/SSL-сертификатов из Key Vault в приложение
Если код Spring, код Java или библиотеки с открытым кодом, такие как OpenSSL, используется цепочка JCA по умолчанию JCA для JVM для неявной загрузки сертификатов в хранилище доверия JVM, то вы можете импортировать сертификаты TLS/SSL из Key Vault в Azure Spring Apps и использовать эти сертификаты в приложении. Дополнительные сведения см. в статье "Использование TLS/SSL-сертификатов в приложении в Azure Spring Apps".
Отправка известных общедоступных TLS/SSL-сертификатов для внутренних систем
Для взаимодействия приложения с внутренними службами в облаке или в локальных системах может потребоваться использование общедоступных TLS/SSL-сертификатов для защиты обмена данными. Эти TLS/SSL-сертификаты можно отправить для защиты исходящих подключений. Дополнительные сведения см. в статье "Использование TLS/SSL-сертификатов в приложении в Azure Spring Apps".
Автоматизация подготовки и настройки для защиты обмена данными
С помощью шаблона ARM, Bicep или Terraform можно автоматизировать подготовку и настройку всех ресурсов Azure, упомянутых выше для защиты связи.
Создание решений и безопасное взаимодействие
Azure Spring Apps — это полностью управляемая служба для приложений Spring Boot. Azure Spring Apps абстрагирует сложность инфраструктуры и управления ПО промежуточного слоя Spring Cloud от пользователей. Вы можете сосредоточиться на создании бизнес-логики и позволить Azure заботиться о динамическом масштабировании, исправлениях, безопасности, соответствии и высокой доступности. С помощью нескольких шагов вы можете подготовить Azure Spring Apps, создать приложения, развернуть и масштабировать приложения Spring Boot и начать защиту связи в минутах.
Azure Spring Apps совместно создается, управляется и поддерживается корпорацией Майкрософт и VMware.