Поделиться через


Защита обмена данными для приложений Spring Boot в среде "Нулевое доверие"

В этой статье описывается, как защитить обмен данными для приложений 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.

Схема, демонстрирующая архитектуру сквозного безопасного взаимодействия для приложений 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, вам потребуется выполнить следующие три действия по настройке. Код не требуется.

  1. Включите в файл pom.xml следующую зависимость сертификатов Azure Key Vault Certificates Spring Boot Starter:

    <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>azure-spring-boot-starter-keyvault-certificates</artifactId>
    </dependency>
    
  2. Добавьте следующие свойства, чтобы настроить приложение для загрузки 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
    
  3. Включите управляемое удостоверение приложения, а затем предоставьте управляемому удостоверению доступ "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.

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