Qu’est-ce que Spring Cloud Azure ?

Spring Cloud Azure est un projet open source qui facilite l’utilisation des services Azure dans les applications Spring.

Spring Cloud Azure est un projet open source, avec toutes les ressources disponibles pour le public. La liste suivante fournit des liens vers ces ressources :

À quoi sert Spring Cloud Azure ?

Spring Cloud Azure peut faciliter l’accomplissement des tâches suivantes dans les applications Spring :

Le diagramme suivant fournit une vue d’ensemble de ces fonctionnalités :

Diagramme fournissant une vue d’ensemble des fonctionnalités Spring Cloud Azure.

Avantages de l’utilisation de Spring Cloud Azure

La section suivante illustre les avantages de l’utilisation de Spring Cloud Azure. Dans cette section, la récupération de secrets stockés dans Azure Key Vault est utilisée comme exemple. Cette section compare les différences entre le développement d’une application Spring Boot avec et sans Spring Cloud Azure.

Sans Spring Cloud Azure

Sans Spring Cloud Azure, si vous souhaitez récupérer des secrets stockés dans Azure Key Vault, vous devez effectuer les étapes suivantes :

  1. Ajoutez les dépendances suivantes à votre fichier pom.xml :

    <dependency>
       <groupId>com.azure</groupId>
       <artifactId>azure-security-keyvault-secrets</artifactId>
       <version>4.5.2</version>
    </dependency>
    
  2. Construisez une SecretClient classe instance à l’aide d’un code similaire à l’exemple suivant :

    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. Évitez les informations de codage en dur telles que client-id et client-secret en rendant ces propriétés configurables, comme illustré dans l’exemple suivant :

    @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. Mettez à jour votre code d’application comme indiqué dans cet exemple :

    @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. Ajoutez les propriétés nécessaires à votre fichier application.yml , comme illustré dans l’exemple suivant :

    azure:
      keyvault:
        vault-url:
        tenant-id:
        client-id:
        client-secret:
    
  6. Si vous devez utiliser SecretClient à plusieurs endroits, définissez un SecretClient haricot. Ensuite, fil SecretClient automatique dans les endroits appropriés.

Avec Spring Cloud Azure

Avec Spring Cloud Azure, si vous souhaitez récupérer des secrets stockés dans Azure Key Vault, les exigences sont plus simples, comme indiqué dans les étapes suivantes :

  1. Ajoutez les dépendances suivantes à votre fichier pom.xml :

    <dependencies>
      <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
      </dependency>
    </dependencies>
    
  2. Utilisez une nomenclature pour gérer la version Azure de Spring Cloud, comme illustré dans l’exemple suivant :

    <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>
    

    Notes

    Si vous utilisez Spring Boot 3.x, veillez à définir la version sur spring-cloud-azure-dependencies5.5.0. Pour plus d’informations sur la spring-cloud-azure-dependencies version, consultez Quelle version de Spring Cloud Azure dois-je utiliser.

  3. Ajoutez les propriétés suivantes dans votre fichier application.yml :

    spring:
      cloud:
        azure:
          keyvault:
            secret:
              endpoint:
    
  4. Connectez-vous avec Azure CLI à l’aide de la commande suivante. Vos informations d’identification étant fournies par Azure CLI, il n’est pas nécessaire d’ajouter d’autres informations d’identification telles que client-id et client-secret.

    az login
    
  5. Fil automatique SecretClient aux emplacements appropriés, comme indiqué dans l’exemple suivant :

    @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 fournit d’autres fonctionnalités en plus de la configuration automatique SecretClient. Par exemple, vous pouvez utiliser @Value pour obtenir la valeur de secret, comme illustré dans l’exemple suivant :

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

}

Composants de Spring Cloud Azure

Support Azure

Fournit la prise en charge de la configuration automatique pour les services Azure, tels que Service Bus, Stockage, Active Directory, etc.

Azure Active Directory

Fournit une prise en charge de l’intégration pour Spring Security avec Azure Active Directory, à des fins d’authentification. Pour plus d’informations, consultez support Spring Cloud Azure pour Spring Security.

Azure Key Vault

Fournit la prise en charge des annotations Spring @Value pour l’intégration à Azure Key Vault Secrets. Pour plus d’informations, consultez Gestion des secrets Spring Cloud Azure.

Stockage Azure

Fournit une prise en charge de Spring Boot pour les services Azure Storage. Pour plus d’informations, consultez Gestion des ressources Spring Cloud Azure.

Obtenir de l’aide

Si vous avez besoin de support pour Spring Cloud Azure, vous pouvez demander de l’aide des manières suivantes :

Étapes suivantes