Поддержка Spring Cloud Azure Kafka
Эта статья относится к: ✔️ версия 4.14.0 ✔️ версии 5.8.0
В версии 4.3.0 Azure Spring Cloud для Kafka поддерживает различные типы учетных данных для проверки подлинности и подключения к Центры событий Azure.
Поддерживаемая версия Kafka
Текущая версия начальной версии должна быть совместима с Клиентами Apache Kafka 2.0.0 с помощью Java 8 или более поздней версии.
Поддерживаемые типы аутентификации
Следующие типы аутентификации не поддерживаются:
- Обычная проверка подлинности строка подключения
- Прямая проверка подлинности строка подключения
- Проверка подлинности строка подключения на основе ARM
- Проверка подлинности учетных данных OAuth
- Проверка подлинности управляемого удостоверения
- Аутентификация по имени пользователя и паролю
- Аутентификация субъекта-службы
DefaultAzureCredential
аутентификация
Как это работает
Проверка подлинности учетных данных OAuth
В этом разделе описывается общий рабочий процесс проверки подлинности Azure OAuth Spring Cloud.
Spring Cloud Azure сначала создаст один из следующих типов учетных данных в зависимости от конфигурации проверки подлинности приложения:
ClientSecretCredential
ClientCertificateCredential
UsernamePasswordCredential
ManagedIdentityCredential
Если ни один из этих типов учетных данных не найден, цепочка DefaultAzureTokenCredential
учетных данных будет использоваться для получения учетных данных из свойств приложения, переменных среды, управляемого удостоверения или удостоверений. Подробные сведения см. в разделе "Проверка подлинности Spring Cloud Azure".
Обычная проверка подлинности строка подключения
Для режима проверки подлинности строка подключения можно использовать строка подключения проверку подлинности напрямую или использовать Azure Resource Manager для получения строка подключения. Дополнительные сведения об использовании см. в разделе "Базовое использование" для проверки подлинности строка подключения.
Примечание.
Так как версия 4.3.0 строка подключения проверка подлинности не рекомендуется использовать для проверки подлинности OAuth.
Настройка
Настраиваемые свойства при использовании поддержки Kafka с проверкой подлинности OAuth
Azure Spring Cloud для Kafka поддерживает следующие два уровня параметров конфигурации:
- Свойства Kafka для Spring Cloud для Центров событий.
- Параметры конфигурации глобальной
credential
проверки подлинности иprofile
с префиксамиspring.cloud.azure
. - Конфигурации уровня kafka. Конфигурации уровня Kafka также доступны для привязок Spring Boot и Spring Cloud Stream для
common
,consumer
producer
илиadmin
область, которые имеют разные префиксы.
Глобальные свойства предоставляются через com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties
. Свойства, относящиеся к Kafka, предоставляются через org.springframework.boot.autoconfigure.kafka.KafkaProperties
(Spring Boot) и org.springframework.cloud.stream.binder.kafka.properties.KafkaBinderConfigurationProperties
(привязка Spring Cloud Stream).
В следующем списке показаны все поддерживаемые параметры конфигурации.
Свойства Kafka для Spring Cloud для Центров событий.
- Свойство:
spring.cloud.azure.eventhubs.kafka.enabled
- Описание: следует ли включить бесплатное подключение к учетным данным для Центры событий Azure для Kafka, значение по умолчанию —
true
.
- Свойство:
Параметры конфигурации глобальной проверки подлинности Azure Spring Cloud
- Префикс:
spring.cloud.azure
- Поддерживаемые параметры:
spring.cloud.azure.credential.*
spring.cloud.azure.profile.*
Полный список параметров глобальной конфигурации см. в разделе "Глобальные свойства конфигурации".
- Префикс:
Общая конфигурация Spring Boot Kafka
- Префикс:
spring.kafka.properties.azure
- Пример:
spring.kafka.properties.azure
.credential.*
- Префикс:
Параметры конфигурации потребителей Spring Kafka
- Префикс:
spring.kafka.consumer.properties.azure
- Пример:
spring.kafka.consumer.properties.azure
.credential.*
- Префикс:
Параметры конфигурации производителя Spring Kafka
- Префикс:
spring.kafka.producer.properties.azure
- Пример:
spring.kafka.producer.properties.azure
.credential.*
- Префикс:
Параметры конфигурации администратора Spring Kafka
- Префикс:
spring.kafka.admin.properties.azure
- Пример:
spring.kafka.admin.properties.azure
.credential.*
- Префикс:
Общая конфигурация Spring Cloud Stream Kafka Binder
- Префикс:
spring.cloud.stream.kafka.binder.configuration.azure
- Пример:
spring.cloud.stream.kafka.binder.configuration.azure
.credential.*
- Префикс:
Конфигурация потребителя Spring Cloud Stream Kafka Binder
- Префикс:
spring.cloud.stream.kafka.binder.consumer-properties.azure
- Пример:
spring.cloud.stream.kafka.binder.consumer-properties.azure
.credential.*
- Префикс:
Конфигурация производителя Spring Cloud Stream Kafka Binder
- Префикс:
spring.cloud.stream.kafka.binder.producer-properties.azure
- Пример:
spring.cloud.stream.kafka.binder.producer-properties.azure
.credential.*
- Префикс:
Конфигурация администратора Spring Cloud Stream Kafka Binder
- Префикс: не поддерживается, следует использовать общую конфигурацию Spring Boot Kafka или конфигурацию администратора.
В следующей таблице показаны общие параметры конфигурации Spring Boot Kafka:
Имя | Описание |
---|---|
spring.kafka.properties.azure.credential.client-certificate-password | Пароль файла сертификата. |
spring.kafka.properties.azure.credential.client-certificate-path | Путь к файлу сертификата PEM для использования при выполнении проверки подлинности субъекта-службы с помощью Azure. |
spring.kafka.properties.azure.credential.client-id | Идентификатор клиента, используемый при выполнении проверки подлинности субъекта-службы с помощью Azure. Это устаревшее свойство. |
spring.kafka.properties.azure.credential.client-secret | Секрет клиента, используемый при выполнении проверки подлинности субъекта-службы с помощью Azure. Это устаревшее свойство. |
spring.kafka.properties.azure.credential.managed-identity-enabled | Следует ли включить управляемое удостоверение для проверки подлинности в Azure. Если задано значение true и client-id задано, используйте идентификатор клиента в качестве идентификатора клиента управляемого удостоверения, назначаемого пользователем. Значение по умолчанию равно false. |
spring.kafka.properties.azure.credential.password | Пароль, используемый при выполнении проверки подлинности имени пользователя или пароля в Azure. |
spring.kafka.properties.azure.credential.username | Имя пользователя, используемое при выполнении проверки подлинности имени пользователя или пароля в Azure. |
spring.kafka.properties.azure.profile.environment.active-directory-endpoint | Конечная точка Microsoft Entra для подключения. |
spring.kafka.properties.azure.profile.tenant-id | Идентификатор клиента для ресурсов Azure. Допустимые значенияtenant-id : common , organizations consumers или идентификатор клиента. |
Примечание.
Параметры конфигурации в разных уровнях применяют следующие правила. Более конкретные параметры конфигурации имеют более высокий приоритет, чем распространенные. Например:
- Общие параметры конфигурации Spring Kafka заменяют глобальные параметры.
- Параметры конфигурации потребителей Spring Kafka заменяют общие параметры.
- Параметры конфигурации производителя Spring Kafka заменяют общие параметры.
- Параметры конфигурации администратора Spring Kafka заменяют общие параметры.
- Параметры Привязки Kafka Stream Spring Cloud точно так же, как описано выше.
Настраиваемые свойства при использовании поддержки Kafka с обычной проверкой подлинности строка подключения
В следующей таблице показаны общие параметры конфигурации Центров событий Spring Boot для Kafka:
Свойство | Description |
---|---|
spring.cloud.azure.eventhubs.kafka.enabled | Следует ли включить поддержку Центры событий Azure Kafka. Значение по умолчанию — true |
spring.cloud.azure.eventhubs.connection-string | Центры событий Azure строка подключения. Укажите это значение, если вы хотите предоставить строка подключения напрямую. |
spring.cloud.azure.eventhubs.namespace | Центры событий Azure пространстве имен. Укажите это значение, если требуется получить сведения о подключении с помощью Azure Resource Manager. |
spring.cloud.azure.eventhubs.resource.resource-group | Группа ресурсов пространства имен Центры событий Azure. Укажите это значение, если требуется получить сведения о подключении с помощью Azure Resource Manager. |
spring.cloud.azure.profile.subscription-id | Идентификатор подписки. Укажите это значение, если требуется получить сведения о подключении с помощью Azure Resource Manager. |
Настройка зависимостей
Добавьте в проект следующую зависимость. Это автоматически включает spring-boot-starter
зависимость в проект транзитивно.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
Примечание.
Не забудьте добавить BOM spring-cloud-azure-dependencies
вместе с приведенной выше зависимостью. Дополнительные сведения см. в разделе "Начало работы" руководства разработчика Azure Spring Cloud.
Базовое использование
В следующих разделах показаны классические сценарии использования приложений Spring Boot.
Использование проверки подлинности OAuth
При использовании проверки подлинности OAuth, предоставленной Azure Spring Cloud для Kafka, можно настроить определенные учетные данные с помощью приведенных выше конфигураций. Кроме того, вы можете настроить ничего о учетных данных, в этом случае Azure Spring Cloud загрузит учетные данные из среды. В этом разделе описаны способы загрузки учетных данных из среды Azure CLI или среды размещения Azure Spring Apps.
Примечание.
Если вы решили использовать субъект безопасности для проверки подлинности и авторизации с помощью идентификатора Microsoft Entra для доступа к ресурсу Azure, ознакомьтесь с разделом "Авторизация доступа с идентификатором Microsoft Entra ID ", чтобы убедиться, что субъект безопасности получил достаточное разрешение на доступ к ресурсу Azure.
В следующем разделе описаны сценарии использования различных библиотек экосистем Spring с проверкой подлинности OAuth.
Поддержка приложений Spring Kafka
В этом разделе описывается сценарий использования приложения Spring Boot с помощью библиотеки Spring Kafka или Spring Integration Kafka.
Настройка зависимостей
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
<!-- Using Spring Kafka library only-->
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>{version}</version><!--Need to be set, for example:2.8.6-->
</dependency>
<!-- Using Spring Integration library only -->
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-kafka</artifactId>
<version>{version}</version><!--Need to be set, for example:5.5.12-->
</dependency>
Изменения в конфигурации
Чтобы использовать проверку подлинности OAuth, просто укажите конечную точку Центров событий, как показано в следующем примере:
spring.kafka.bootstrap-servers=<NAMESPACENAME>.servicebus.windows.net:9093
Поддержка приложения Kafka для привязки Spring Cloud Stream
В этом разделе описывается сценарий использования приложений Spring Boot с помощью библиотеки Kafka привязки Spring Cloud Stream.
Настройка зависимостей
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-kafka</artifactId>
<version>{version}</version><!--Need to be set, for example:3.2.3-->
</dependency>
Настройка
Чтобы использовать проверку подлинности OAuth, просто укажите конечную точку Центров событий, как показано в следующем примере:
spring.cloud.stream.kafka.binder.brokers=<NAMESPACENAME>.servicebus.windows.net:9093
Примечание.
Если вы используете версию 4.3.0
, не забудьте задать spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sources=com.azure.spring.cloud.autoconfigure.kafka.AzureKafkaSpringCloudStreamConfiguration
свойство, чтобы включить весь рабочий процесс проверки подлинности OAuth, где kafka-binder-name
по умолчанию используется kafka
одно приложение привязки Kafka. AzureKafkaSpringCloudStreamConfiguration
Конфигурация задает параметры безопасности OAuth, KafkaBinderConfigurationProperties
для которых используется KafkaOAuth2AuthenticateCallbackHandler
для включения удостоверения Azure.
Для версии после 4.4.0
этого это свойство будет добавлено автоматически для каждой среды привязки Kafka, поэтому вам не нужно добавлять его вручную.
Примеры
См. репозиторий azure-spring-boot-samples на сайте GitHub.
Использование проверки подлинности строка подключения
Вы можете использовать строка подключения проверку подлинности напрямую или использовать Azure Resource Manager для получения строка подключения.
Примечание.
Так как версия 4.3.0 строка подключения проверка подлинности не рекомендуется использовать для проверки подлинности OAuth.
Так как версия 4.5.0 при использовании проверки подлинности строка подключения с платформой Spring Cloud Stream требуется следующее свойство, чтобы гарантировать, что строка подключения может входить в силу, где <kafka-binder-name>
значение должно бытьkafka
, если для имени привязки Kafka нет настраиваемой конфигурации.
spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sources=com.azure.spring.cloud.autoconfigure.eventhubs.kafka.AzureEventHubsKafkaAutoConfiguration
Настройка зависимостей
Добавьте следующие зависимости, если вы хотите перенести приложение Apache Kafka для использования Центры событий Azure для Kafka.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
Если вы хотите получить строка подключения с помощью Azure Resource Manager, добавьте следующую зависимость:
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-resourcemanager</artifactId>
</dependency>
Настройка
Использование центров событий строка подключения напрямую
Самый простой способ подключения к Центрам событий для Kafka — с помощью строка подключения. Просто добавьте следующее свойство.
spring.cloud.azure.eventhubs.connection-string=${AZURE_EVENTHUBS_CONNECTION_STRING}
Получение строка подключения с помощью Azure Resource Manager
Если вы не хотите настроить строка подключения в приложении, можно использовать Azure Resource Manager для получения строка подключения. Для проверки подлинности с помощью Azure Resource Manager можно также использовать учетные данные, хранящиеся в Azure CLI или другом локальном средстве разработки, например Visual Studio Code или Intellij IDEA. Кроме того, можно использовать управляемое удостоверение, если приложение развернуто в облаке Azure. Просто убедитесь, что субъект имеет достаточно разрешений для чтения метаданных ресурса.
Примечание.
Если вы решили использовать субъект безопасности для проверки подлинности и авторизации с помощью идентификатора Microsoft Entra для доступа к ресурсу Azure, ознакомьтесь с разделом "Авторизация доступа с идентификатором Microsoft Entra ID ", чтобы убедиться, что субъект безопасности получил достаточное разрешение на доступ к ресурсу Azure.
Чтобы использовать Azure Resource Manager для получения строка подключения, просто добавьте следующее свойство.
spring:
cloud:
azure:
profile:
subscription-id: ${AZURE_SUBSCRIPTION_ID}
eventhubs:
namespace: ${AZURE_EVENTHUBS_NAMESPACE}
resource:
resource-group: ${AZURE_EVENTHUBS_RESOURCE_GROUP}
Примеры
См. репозиторий azure-spring-boot-samples на сайте GitHub.