¿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 de usar 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 automáticamente SecretClient 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 Azure de Spring Cloud, como se muestra en el ejemplo siguiente:

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

    Nota:

    Si usa Spring Boot 2.x, asegúrese de establecer la spring-cloud-azure-dependencies versión 4.17.0en . Esta lista de materiales (BOM) debe configurarse en la <dependencyManagement> sección del archivo pom.xml . Esto garantiza que todas las dependencias de Azure de Spring Cloud usen la misma versión. Para obtener más información sobre la versión que se usa para esta lista de materiales, consulte La versión de Spring Cloud que se debe usar en Azure.

  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 comando siguiente. 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 automática SecretClient. 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.

Microsoft Entra ID

Proporciona compatibilidad de integración con Spring Security con el identificador de Entra de Microsoft para la 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 de Spring Cloud.

Obtención de soporte técnico

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

  • Cree vales de Soporte técnico de Azure. Los clientes con un plan de Soporte técnico de Azure pueden abrir un vale de Soporte técnico de Azure. Se recomienda esta opción si su problema requiere atención inmediata.
  • Archivo de problemas de GitHub en el repositorio Azure/azure-sdk-for-java. Usamos problemas de GitHub para realizar un seguimiento de errores, preguntas y solicitudes de características. Los problemas de GitHub son gratuitos, pero no se garantiza el tiempo de respuesta. Para obtener más información, consulte El proceso de soporte técnico de problemas de GitHub.

Pasos siguientes