Partilhar via


O que é o Spring Cloud Azure?

O Spring Cloud Azure é um projeto de código aberto que ajuda a facilitar o uso de serviços do Azure em aplicativos Spring.

O Spring Cloud Azure é um projeto de código aberto, com todos os recursos disponíveis ao público. A lista a seguir fornece links para esses recursos:

Para que é utilizado o Spring Cloud Azure?

O Spring Cloud Azure pode ajudar a facilitar a realização das seguintes tarefas em aplicativos Spring:

  • Gerir propriedades de configuração com Configuração de Aplicações do Azure.
  • Enviar e receber mensagens com Hubs de Eventos do Azure, Barramento de Serviço do Azuree Fila de Armazenamento do Azure.
  • Gerenciando segredos e certificados com Azure Key Vault.
  • Suporte à entrada do usuário com contas corporativas ou de estudante provisionadas com ID do Microsoft Entra.
  • Suporte ao login do usuário com contas sociais como Facebook e Google com o Azure Ative Directory B2C.
  • Proteger as suas APIs da Web e para aceder a APIs protegidas, como o Microsoft Graph, para trabalhar com os dados dos seus utilizadores e das suas organizações com a ID do Microsoft Entra e o Azure Active Directory B2C .
  • Armazenando dados estruturados com o Azure Cosmos DB.
  • Armazenar dados não estruturados, como texto ou dados binários, com o Armazenamento de Blobs do Azure .
  • Armazenamento de arquivos com o Azure Files.

Benefícios de usar o Spring Cloud Azure

A seção a seguir demonstra os benefícios de usar o Spring Cloud Azure. Nesta seção, a recuperação de segredos armazenados no Cofre de Chaves do Azure é usada como exemplo. Esta seção compara as diferenças entre o desenvolvimento de um aplicativo Spring Boot com e sem o Spring Cloud Azure.

Sem o Spring Cloud Azure

Sem o Spring Cloud Azure, se você quiser recuperar segredos armazenados no Cofre da Chave do Azure, precisará das seguintes etapas:

  1. Adicione as seguintes dependências ao seu arquivo pom.xml:

    <dependency>
       <groupId>com.azure</groupId>
       <artifactId>azure-security-keyvault-secrets</artifactId>
       <version>4.5.2</version>
    </dependency>
    
  2. Construa uma instância de classe SecretClient usando um código semelhante ao exemplo a seguir:

    public class DemoClass {
        public static void main(String... args) {
        SecretClient client = new SecretClientBuilder()
            .vaultUrl("vaultUrl")
            .credential(new ClientSecretCredentialBuilder()
                .tenantId("tenantId")
                .clientId("clientId")
                .clientSecret("clientSecret")
                .build())
            .buildClient();
        }
    }
    
  3. Evite informações de codificação rígida, como client-id e client-secret, tornando essas propriedades configuráveis, conforme mostrado no exemplo a seguir:

    @ConfigurationProperties("azure.keyvault")
    public class KeyVaultProperties {
        private String vaultUrl;
        private String tenantId;
        private String clientId;
        private String clientSecret;
    
        public KeyVaultProperties(String vaultUrl, String tenantId, String clientId, String clientSecret) {
            this.vaultUrl = vaultUrl;
            this.tenantId = tenantId;
            this.clientId = clientId;
            this.clientSecret = clientSecret;
        }
    
        public String getVaultUrl() {
            return vaultUrl;
        }
    
        public void setVaultUrl(String vaultUrl) {
            this.vaultUrl = vaultUrl;
        }
    
        public String getTenantId() {
            return tenantId;
        }
    
        public void setTenantId(String tenantId) {
            this.tenantId = tenantId;
        }
    
        public String getClientId() {
            return clientId;
        }
    
        public void setClientId(String clientId) {
            this.clientId = clientId;
        }
    
        public String getClientSecret() {
            return clientSecret;
        }
    
        public void setClientSecret(String clientSecret) {
            this.clientSecret = clientSecret;
        }
    }
    
  4. Atualize o código do aplicativo conforme mostrado neste exemplo:

    @SpringBootApplication
    @EnableConfigurationProperties(KeyVaultProperties.class)
    public class SecretClientApplication implements CommandLineRunner {
        private KeyVaultProperties properties;
    
        public SecretClientApplication(KeyVaultProperties properties) {
            this.properties = properties;
        }
    
        public static void main(String[] args) {
            SpringApplication.run(SecretClientApplication.class, args);
        }
    
        @Override
        public void run(String... args) {
            SecretClient client = new SecretClientBuilder()
                .vaultUrl(properties.getVaultUrl())
                .credential(new ClientSecretCredentialBuilder()
                    .tenantId(properties.getTenantId())
                    .clientId(properties.getClientId())
                    .clientSecret(properties.getClientSecret())
                    .build())
                .buildClient();
            System.out.println("sampleProperty: " + client.getSecret("sampleProperty").getValue());
        }
    }
    
  5. Adicione as propriedades necessárias ao seu arquivo application.yml, conforme mostrado no exemplo a seguir:

    azure:
      keyvault:
        vault-url:
        tenant-id:
        client-id:
        client-secret:
    
  6. Se precisa usar SecretClient em vários lugares, defina um bean SecretClient. Em seguida, interligue automaticamente o SecretClient nos locais relevantes.

Com o Spring Cloud Azure

Com o Spring Cloud Azure, se você quiser recuperar segredos armazenados no Azure Key Vault, os requisitos são mais simples, conforme mostrado nas seguintes etapas:

  1. Adicione as seguintes dependências ao seu arquivo pom.xml:

    <dependencies>
      <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
      </dependency>
    </dependencies>
    
  2. Use uma lista de materiais (BOM) para gerenciar a versão do Spring Cloud Azure, conforme mostrado no exemplo a seguir:

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.azure.spring</groupId>
          <artifactId>spring-cloud-azure-dependencies</artifactId>
          <version>5.19.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    Observação

    Se você estiver usando o Spring Boot 2.x, certifique-se de definir a versão spring-cloud-azure-dependencies como 4.19.0. Esta lista de materiais (BOM) deve ser configurada na seção <dependencyManagement> do seu arquivo pom.xml. Isso garante que todas as dependências do Spring Cloud Azure estejam usando a mesma versão. Para obter mais informações sobre a versão usada para esta lista de materiais, consulte Qual versão do Spring Cloud Azure devo usar.

  3. Adicione as seguintes propriedades ao seu arquivo application.yml:

    spring:
      cloud:
        azure:
          keyvault:
            secret:
              endpoint:
    
  4. Inicie sessão com a CLI do Azure utilizando o seguinte comando. Suas credenciais serão fornecidas pela CLI do Azure, portanto, não haverá necessidade de adicionar outras informações de credenciais, como client-id e client-secret.

    az login
    
  5. Ligue automaticamente o fio SecretClient nos lugares relevantes, conforme mostrado no exemplo a seguir.

    @SpringBootApplication
    public class SecretClientApplication implements CommandLineRunner {
    
        private final SecretClient secretClient;
    
        public SecretClientApplication(SecretClient secretClient) {
            this.secretClient = secretClient;
        }
    
        public static void main(String[] args) {
            SpringApplication.run(SecretClientApplication.class, args);
        }
    
        @Override
        public void run(String... args) {
            System.out.println("sampleProperty: " + secretClient.getSecret("sampleProperty").getValue());
        }
    }
    

O Spring Cloud Azure fornecerá alguns outros recursos além do SecretClientconfigurado automaticamente. Por exemplo, você pode usar @Value para obter o valor secreto, conforme mostrado no exemplo a seguir:

@SpringBootApplication
public class PropertySourceApplication implements CommandLineRunner {

    @Value("${sampleProperty1}")
    private String sampleProperty1;

    public static void main(String[] args) {
        SpringApplication.run(PropertySourceApplication.class, args);
    }

    public void run(String[] args) {
        System.out.println("sampleProperty1: " + sampleProperty1);
    }

}

Componentes do Spring Cloud Azure

Suporte do Azure

Fornece suporte de configuração automática para os Serviços do Azure, como Service Bus, Armazenamento, Ative Directory e assim por diante.

Microsoft Entra ID

Fornece suporte de integração para o Spring Security com o Microsoft Entra ID para autenticação. Para obter mais informações, consulte suporte do Spring Cloud Azure para o Spring Security.

Azure Key Vault

Fornece suporte de anotação do Spring @Value para integração com o Azure Key Vault Secrets. Para obter mais informações, consulte Spring Cloud Azure secret management.

Armazenamento do Azure

Fornece suporte ao Spring Boot para serviços de Armazenamento do Azure. Para obter mais informações, consulte Spring Cloud Azure resource handling.

Obter suporte

Se precisar de suporte para o Spring Cloud Azure, você pode pedir ajuda das seguintes maneiras:

  • Crie pedidos de suporte do Azure. Os clientes com um plano de suporte do Azure podem abrir um pedido de suporte do Azure. Recomendamos esta opção se o seu problema exigir atenção imediata.
  • Registar problemas no GitHub no repositório Azure/azure-sdk-for-java. Usamos problemas do GitHub para rastrear bugs, perguntas e solicitações de recursos. Os problemas do GitHub são disponibilizados gratuitamente, mas o tempo de resposta não é garantido. Para obter mais informações, consulte processo de suporte a problemas do GitHub.

Próximos passos