Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O suporte Spring Cloud Azure Kafka ajuda aplicações Spring a autenticar e ligar-se aos Hubs de Eventos do Azure usando credenciais OAuth ou strings de ligação. Este artigo descreve os tipos de autenticação suportados, opções de configuração, dependências e cenários de utilização.
Versão Kafka suportada
A versão atual do starter é compatível com os Apache Kafka Clients 2.0.0 e utiliza Java 8 ou superior.
Tipos de autenticação suportados
O starter suporta os seguintes tipos de autenticação:
- Autenticação de cadeia de conexão simples
- Autenticação direta por cadeia de ligação
- Autenticação de cadeia de conexão baseada em ARM
- Autenticação de credenciais OAuth
- Autenticação de identidade gerenciada
- Autenticação de nome de utilizador/palavra-passe
- Autenticação do principal de serviço
-
DefaultAzureCredentialautenticação
Como funciona
Autenticação de credenciais OAuth
Esta seção descreve o fluxo de trabalho geral da autenticação OAuth do Spring Cloud Azure.
O Spring Cloud Azure constrói primeiro um dos seguintes tipos de credenciais, dependendo da configuração de autenticação da aplicação:
ClientSecretCredentialClientCertificateCredentialUsernamePasswordCredentialManagedIdentityCredential
Se a aplicação não usar um destes tipos de credenciais, a aplicação utiliza a cadeia DefaultAzureTokenCredential de credenciais para obter credenciais das propriedades da aplicação, variáveis de ambiente, identidade gerida ou IDEs. Para obter informações detalhadas, consulte Spring Cloud Azure authentication.
Autenticação de cadeia de conexão simples
Para o modo de autenticação de cadeia de conexão, você pode usar a autenticação de cadeia de conexão diretamente ou usar o Gerenciador de Recursos do Azure para recuperar a cadeia de conexão. Para obter mais informações sobre o uso, consulte a seção
Observação
Desde a versão 4.3.0, a autenticação por cadeia de ligação está obsoleta em favor da autenticação OAuth.
Configuração
Propriedades configuráveis ao usar o suporte a Kafka com autenticação OAuth
O Spring Cloud Azure para Kafka suporta os seguintes dois níveis de opções de configuração:
- Propriedades Kafka do Spring Cloud Azure para Hubs de Eventos.
- As opções globais de configuração de autenticação de
credentialeprofilecom os prefixos despring.cloud.azure. - Configurações de nível específicas de Kafka. As configurações ao nível do Kafka também estão disponíveis para os associadores do Spring Boot e do Spring Cloud Stream para os escopos
common,consumer,producerouadmin, que têm prefixos diferentes.
As propriedades globais são expostas via com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties. As propriedades específicas do Kafka são expostas via org.springframework.boot.autoconfigure.kafka.KafkaProperties (Spring Boot) e org.springframework.cloud.stream.binder.kafka.properties.KafkaBinderConfigurationProperties (Spring Cloud Stream binder).
A lista a seguir mostra todas as opções de configuração suportadas.
Propriedades Kafka do Spring Cloud Azure para Hubs de Eventos.
- Propriedade:
spring.cloud.azure.eventhubs.kafka.enabled - Descrição: se deve habilitar a conexão sem credenciais aos Hubs de Eventos do Azure para Kafka, o valor padrão é
true.
- Propriedade:
As opções de configuração de autenticação global do Spring Cloud Azure
- Prefixo:
spring.cloud.azure - Opções suportadas:
spring.cloud.azure.credential.*,spring.cloud.azure.profile.*
Para obter a lista completa de opções de configuração global, consulte Propriedades de configuração global.
- Prefixo:
Configuração comum do Spring Boot Kafka
- Prefixo:
spring.kafka.properties.azure - Exemplo:
spring.kafka.properties.azure.credential.*
- Prefixo:
Opções de configuração do consumidor Spring Kafka
- Prefixo:
spring.kafka.consumer.properties.azure - Exemplo:
spring.kafka.consumer.properties.azure.credential.*
- Prefixo:
Opções de configuração do produtor Spring Kafka
- Prefixo:
spring.kafka.producer.properties.azure - Exemplo:
spring.kafka.producer.properties.azure.credential.*
- Prefixo:
Opções de configuração do administrador do Spring Kafka
- Prefixo:
spring.kafka.admin.properties.azure - Exemplo:
spring.kafka.admin.properties.azure.credential.*
- Prefixo:
Configuração comum do Spring Cloud Stream Kafka Binder
- Prefixo:
spring.cloud.stream.kafka.binder.configuration.azure - Exemplo:
spring.cloud.stream.kafka.binder.configuration.azure.credential.*
- Prefixo:
Configuração de consumidor do Spring Cloud Stream Kafka Binder
- Prefixo:
spring.cloud.stream.kafka.binder.consumer-properties.azure - Exemplo:
spring.cloud.stream.kafka.binder.consumer-properties.azure.credential.*
- Prefixo:
Configuração do produtor do Spring Cloud Stream Kafka Binder
- Prefixo:
spring.cloud.stream.kafka.binder.producer-properties.azure - Exemplo:
spring.cloud.stream.kafka.binder.producer-properties.azure.credential.*
- Prefixo:
Configuração administrativa do Spring Cloud Stream Kafka Binder
- Prefixo: não é suportado; utilize a configuração comum ou de administração do Spring Boot Kafka.
A tabela a seguir mostra as opções de configuração comuns do Spring Boot Kafka:
| Nome | Descrição |
|---|---|
spring.kafka.properties.azure.credential.client-certificate-password |
Senha do arquivo de certificado. |
spring.kafka.properties.azure.credential.client-certificate-path |
Caminho de um arquivo de certificado PEM a ser usado ao executar a autenticação da entidade de serviço com o Azure. |
spring.kafka.properties.azure.credential.client-id |
ID do cliente a ser usada ao executar a autenticação da entidade de serviço com o Azure. Esta é uma propriedade legada. |
spring.kafka.properties.azure.credential.client-secret |
Segredo do cliente a ser usado ao executar a autenticação da entidade de serviço com o Azure. Esta é uma propriedade legada. |
spring.kafka.properties.azure.credential.managed-identity-enabled |
Se a identidade gerenciada deve ser habilitada para autenticação com o Azure. Se true e o client-id estiver definido, o ID do cliente é o ID da identidade gerida atribuída pelo utilizador. O valor padrão é false. |
spring.kafka.properties.azure.credential.password |
Senha a ser usada ao executar a autenticação de nome de usuário/senha com o Azure. |
spring.kafka.properties.azure.credential.username |
Nome de usuário a ser usado ao executar a autenticação de nome de usuário/senha com o Azure. |
spring.kafka.properties.azure.profile.environment.active-directory-endpoint |
O ponto final do Microsoft Entra ao qual estabelecer ligação. |
spring.kafka.properties.azure.profile.tenant-id |
ID do locatário para recursos do Azure. Os valores permitidos para tenant-id são: common, organizations, consumersou o ID do locatário. |
Observação
As opções de configuração em diferentes níveis aplicam as seguintes regras. As opções de configuração mais específicas têm maior prioridade do que as comuns. Por exemplo:
- As opções de configuração comuns do Spring Kafka substituem as opções globais.
- As opções de configuração do consumidor Spring Kafka substituem as opções comuns.
- As opções de configuração do produtor Spring Kafka substituem as opções comuns.
- As opções de configuração de administração do Spring Kafka substituem as opções comuns.
- As opções do Spring Cloud Stream Kafka Binder seguem o mesmo padrão.
Propriedades configuráveis ao usar o suporte a Kafka com autenticação de cadeia de conexão simples
A tabela a seguir mostra as opções de configuração comuns dos Hubs de Eventos do Spring Boot para Kafka:
| Propriedade | Descrição |
|---|---|
spring.cloud.azure.eventhubs.kafka.enabled |
Se o suporte ao Hubs de Eventos do Azure Kafka deve ser habilitado. O valor padrão é true. |
spring.cloud.azure.eventhubs.connection-string |
Cadeia de conexão dos Hubs de Eventos do Azure. Forneça esse valor quando quiser fornecer a cadeia de conexão diretamente. |
spring.cloud.azure.eventhubs.namespace |
Espaço de nomes dos Hubs de Eventos do Azure. Forneça esse valor quando quiser recuperar as informações de conexão por meio do Azure Resource Manager. |
spring.cloud.azure.eventhubs.resource.resource-group |
O grupo de recursos do namespace Hubs de Eventos do Azure. Forneça esse valor quando quiser recuperar as informações de conexão por meio do Azure Resource Manager. |
spring.cloud.azure.profile.subscription-id |
O ID da subscrição. Forneça esse valor quando quiser recuperar as informações de conexão por meio do Azure Resource Manager. |
Configuração de dependência
Adicione a seguinte dependência ao seu projeto. Esta dependência inclui automaticamente a dependência spring-boot-starter no seu projeto.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
Observação
Lembre-se de adicionar a BOM spring-cloud-azure-dependencies juntamente com a dependência anterior. Para obter detalhes, consulte a seção Introdução do guia do desenvolvedor do Spring Cloud Azure.
Utilização básica
As seções a seguir mostram os cenários clássicos de uso do aplicativo Spring Boot.
Usar autenticação OAuth
Quando usa a autenticação OAuth que o Spring Cloud Azure fornece para o Kafka, pode configurar credenciais específicas usando as configurações anteriores. Em alternativa, pode optar por não configurar quaisquer credenciais. Neste caso, o Spring Cloud Azure carrega as credenciais a partir do ambiente. Esta secção descreve como carregar credenciais a partir do ambiente CLI do Azure ou do ambiente de alojamento Azure Spring Apps.
Observação
Se optar por usar um principal de segurança para autenticar e autorizar com o Microsoft Entra ID para aceder a um recurso Azure, consulte a secção Autorizar acesso com Microsoft Entra ID para garantir que o principal de segurança tem permissão suficiente para aceder ao recurso Azure.
A secção seguinte descreve cenários que utilizam diferentes bibliotecas do ecossistema Spring com autenticação OAuth.
Suporte à aplicação Spring Kafka
Esta secção descreve o cenário de utilização de uma aplicação Spring Boot que utiliza Spring Kafka ou a biblioteca Spring Integration Kafka.
Configuração de dependência
<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>
Atualização de configuração
Para usar autenticação OAuth, especifique o endpoint dos Event Hubs, como mostrado no seguinte exemplo:
spring.kafka.bootstrap-servers=<NAMESPACENAME>.servicebus.windows.net:9093
Suporte ao aplicativo Spring Cloud Stream binder Kafka
Esta secção descreve o cenário de utilização para aplicações Spring Boot que utilizam a biblioteca Kafka do binder Spring Cloud Stream.
Configuração de dependência
<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>
Configuração
Para usar autenticação OAuth, especifique o endpoint dos Event Hubs, como mostrado no seguinte exemplo:
spring.cloud.stream.kafka.binder.brokers=<NAMESPACENAME>.servicebus.windows.net:9093
Observação
Se estiveres a usar a versão 4.3.0, define a spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sources=com.azure.spring.cloud.autoconfigure.kafka.AzureKafkaSpringCloudStreamConfiguration propriedade para ativar todo o fluxo de trabalho de autenticação OAuth. O kafka-binder-name está kafka por defeito numa única aplicação com binder de Kafka. A configuração AzureKafkaSpringCloudStreamConfiguration especifica os parâmetros de segurança OAuth para KafkaBinderConfigurationProperties. Esta configuração é utilizada em KafkaOAuth2AuthenticateCallbackHandler para ativar o Azure Identity.
Para versões posteriores a 4.4.0, esta propriedade é adicionada automaticamente para cada ambiente do binder Kafka, pelo que não precisa de a adicionar manualmente.
Usar identidade gerenciada para autenticação OAuth
Para usar a identidade gerida, ative a identidade gerida para o seu serviço e atribua as funções
Hubs de Eventos do Azure Data ReceivereHubs de Eventos do Azure Data Sender. Para obter mais informações, consulte Atribuir funções do Azure para direitos de acesso.Configure as seguintes propriedades no arquivo application.yml:
spring: cloud: azure: credential: managed-identity-enabled: trueImportante
Se estiveres a usar identidade gerida atribuída pelo utilizador, adiciona também a propriedade
spring.cloud.azure.credential.client-idcom o ID de cliente de identidade gerida atribuida pelo utilizador.
Amostras
Veja o azure-spring-boot-samples repositório no GitHub.
Usar autenticação por cadeia de ligação
Você pode usar a autenticação de cadeia de conexão diretamente ou usar o Gerenciador de Recursos do Azure para recuperar a cadeia de conexão.
Observação
Desde a versão 5.0.0, ao utilizar a autenticação através de cadeia de ligação com o framework Spring Cloud Stream, continua a ser necessária a seguinte propriedade para garantir que a cadeia de ligação funciona. O valor de <kafka-binder-name> deve ser kafka se não personalizares o nome do teu dossier Kafka: spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sources=com.azure.spring.cloud.autoconfigure.implementation.eventhubs.kafka.AzureEventHubsKafkaAutoConfiguration
Se a versão de spring-cloud-dependencies que utiliza for 2022.0.0, ocorre a exceção java.lang.IllegalStateException: kafka_context has not been refreshed yet. Para resolver esse problema, atualize para uma versão superior.
Configuração de dependência
Adicione as seguintes dependências se quiser migrar seu aplicativo Apache Kafka para usar os Hubs de Eventos do Azure para Kafka.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
Se quiser recuperar a cadeia de ligação usando o Azure Resource Manager, adicione a seguinte dependência:
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-resourcemanager</artifactId>
</dependency>
Configuração
Utilizar diretamente a cadeia de ligação dos Hubs de Eventos
A forma mais simples de se ligar aos Hubs de Eventos para Kafka é através da cadeia de ligação. Basta adicionar a seguinte propriedade.
spring.cloud.azure.eventhubs.connection-string=${AZURE_EVENTHUBS_CONNECTION_STRING}
Usar o Azure Resource Manager para recuperar a cadeia de conexão
Se não quiser configurar a cadeia de conexão em seu aplicativo, você pode usar o Azure Resource Manager para recuperar a cadeia de conexão. Para autenticar com o Azure Resource Manager, você também pode usar credenciais armazenadas na CLI do Azure ou em outra ferramenta de desenvolvimento local, como Visual Studio Code ou Intellij IDEA. Como alternativa, você pode usar a Identidade Gerenciada se seu aplicativo for implantado na Nuvem do Azure. Basta garantir que o principal tem permissão suficiente para ler os metadados dos recursos.
Observação
Se optar por usar um principal de segurança para autenticar e autorizar com o Microsoft Entra ID para aceder a um recurso Azure, consulte a secção Autorizar acesso com Microsoft Entra ID para garantir que o principal de segurança tem permissão suficiente para aceder ao recurso Azure.
Para usar o Azure Resource Manager para recuperar a cadeia de conexão, basta adicionar a seguinte propriedade.
spring:
cloud:
azure:
profile:
subscription-id: ${AZURE_SUBSCRIPTION_ID}
eventhubs:
namespace: ${AZURE_EVENTHUBS_NAMESPACE}
resource:
resource-group: ${AZURE_EVENTHUBS_RESOURCE_GROUP}
Amostras
Veja o azure-spring-boot-samples repositório no GitHub.