¿Qué es Spring Cloud Azure?

Spring Cloud Azure es un proyecto de código abierto que ayuda a facilitar el uso de servicios de Azure en aplicaciones de Spring.

Spring Cloud Azure es un proyecto de código abierto, con todos los recursos disponibles para el público. En la lista siguiente se proporcionan vínculos a estos recursos:

¿Para qué se usa Spring Cloud Azure?

Spring Cloud Azure puede ayudar a facilitar la realización de las siguientes tareas en las aplicaciones de Spring:

En el diagrama siguiente se proporciona información general sobre estas características:

Diagrama que proporciona información general sobre las características de Azure de Spring Cloud.

Ventajas del uso de Spring Cloud Azure

En la sección siguiente se muestran las ventajas de usar Spring Cloud Azure. En esta sección, la recuperación de secretos almacenados en Azure Key Vault se usa como ejemplo. En esta sección se comparan las diferencias entre el desarrollo de una aplicación de Spring Boot con y sin Spring Cloud Azure.

Sin Spring Cloud Azure

Sin Spring Cloud Azure, si desea recuperar secretos almacenados en Azure Key Vault, debe seguir estos pasos:

  1. Agregue las siguientes dependencias al archivo pom.xml :

    <dependency>
       <groupId>com.azure</groupId>
       <artifactId>azure-security-keyvault-secrets</artifactId>
       <version>4.5.2</version>
    </dependency>
    
  2. Construya una SecretClient instancia de clase mediante código similar al ejemplo siguiente:

    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 la información de codificación rígida, como client-id y client-secret haciendo que estas propiedades sean configurables, como se muestra en el ejemplo siguiente:

    @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. Actualice el código de la aplicación como se muestra en este ejemplo:

    @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. Agregue las propiedades necesarias al archivo application.yml , como se muestra en el ejemplo siguiente:

    azure:
      keyvault:
        vault-url:
        tenant-id:
        client-id:
        client-secret:
    
  6. Si necesita usar SecretClient en varios lugares, defina un SecretClient bean. A continuación, conecte SecretClient automáticamente en los lugares pertinentes.

Con Spring Cloud Azure

Con Spring Cloud Azure, si desea recuperar secretos almacenados en Azure Key Vault, los requisitos son más sencillos, como se muestra en los pasos siguientes:

  1. Agregue las siguientes dependencias al archivo pom.xml :

    <dependencies>
      <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
      </dependency>
    </dependencies>
    
  2. Use una lista de materiales (BOM) para administrar la versión de Spring Cloud de Azure, como se muestra en el ejemplo siguiente:

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

    Nota

    Si usa Spring Boot 3.x, asegúrese de establecer la spring-cloud-azure-dependencies versión 5.5.0en . Para más información sobre la spring-cloud-azure-dependencies versión, consulte Qué versión de Spring Cloud Azure debería usar.

  3. Agregue las siguientes propiedades al archivo application.yml:

    spring:
      cloud:
        azure:
          keyvault:
            secret:
              endpoint:
    
  4. Inicie sesión con la CLI de Azure mediante el siguiente comando. A continuación, la CLI de Azure proporcionará sus credenciales, por lo que no será necesario agregar otra información de credenciales, como client-id y client-secret.

    az login
    
  5. Conexión automática SecretClient en los lugares pertinentes, como se muestra en el ejemplo siguiente:

    @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());
        }
    }
    

Spring Cloud Azure proporcionará otras características además de la configuración SecretClientautomática. Por ejemplo, puede usar @Value para obtener el valor del secreto, como se muestra en el ejemplo siguiente:

@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 de Spring Cloud Azure

Soporte técnico de Azure

Proporciona compatibilidad con la configuración automática para los servicios de Azure, como Service Bus, Storage, Active Directory, etc.

Azure Active Directory

Ofrece funcionalidad de integración de Spring Security con Azure Active Directory con fines de autenticación. Para más información, consulte Compatibilidad de Spring Cloud en Azure para Spring Security.

Azure Key Vault

Proporciona compatibilidad con anotaciones de Spring @Value para la integración con Secretos de Azure Key Vault. Para más información, consulte Administración de secretos de Azure en Spring Cloud.

Azure Storage

Ofrece compatibilidad con Spring Boot para los servicios de Azure Storage. Para más información, consulte Control de recursos de Azure en Spring Cloud.

Obtención de soporte técnico

Si necesita soporte técnico para Spring Cloud Azure, puede solicitar ayuda de las siguientes maneras:

Pasos siguientes