Condividi tramite


Che cos'è Spring Cloud Azure?

Spring Cloud Azure è un progetto di open source che semplifica l'uso dei servizi Azure in Spring.

Spring Cloud Azure è un progetto open source, con tutte le risorse disponibili per il pubblico. L'elenco seguente fornisce collegamenti a queste risorse:

Che cos'è Spring Cloud Azure usato per?

Spring Cloud Azure consente di semplificare l'esecuzione delle attività seguenti nelle applicazioni Spring:

Vantaggi dell'uso di Spring Cloud Azure

La sezione seguente illustra i vantaggi dell'uso di Spring Cloud Azure. In questa sezione viene usato come esempio il recupero dei segreti archiviati in Azure Key Vault. Questa sezione confronta le differenze tra lo sviluppo di un'applicazione Spring Boot con e senza Spring Cloud Azure.

Senza Spring Cloud Azure

Senza Spring Cloud Azure, se si desidera recuperare i segreti archiviati in Azure Key Vault, è necessario seguire questa procedura:

  1. Aggiungere le dipendenze seguenti al file pom.xml:

    <dependency>
       <groupId>com.azure</groupId>
       <artifactId>azure-security-keyvault-secrets</artifactId>
       <version>4.5.2</version>
    </dependency>
    
  2. Creare un'istanza di classe SecretClient usando codice simile all'esempio seguente:

    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. Evitare di codificare in modo rigido informazioni come client-id e client-secret, rendendo queste proprietà configurabili, come illustrato nell'esempio seguente.

    @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. Aggiornare il codice dell'applicazione come illustrato in questo esempio:

    @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. Aggiungere le proprietà necessarie al file application.yml , come illustrato nell'esempio seguente:

    azure:
      keyvault:
        vault-url:
        tenant-id:
        client-id:
        client-secret:
    
  6. Se è necessario usare SecretClient in più posizioni, definire un SecretClient bean. Quindi, cabla automaticamente SecretClient nei luoghi pertinenti.

Utilizzando Spring Cloud Azure

Con Spring Cloud Azure, se si vogliono recuperare i segreti archiviati in Azure Key Vault, i requisiti sono più semplici, come illustrato nei passaggi seguenti:

  1. Aggiungere le dipendenze seguenti al file pom.xml:

    <dependencies>
      <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
      </dependency>
    </dependencies>
    
  2. Usare un elenco dei materiali (BOM) per gestire la versione di Spring Cloud Azure, come illustrato nell'esempio seguente:

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

Nota

Se si usa Spring Boot 4.0.x, assicurarsi di impostare la spring-cloud-azure-dependencies versione su 7.1.0.

Se si usa Spring Boot 3.5.x, assicurarsi di impostare la spring-cloud-azure-dependencies versione su 6.1.0.

Se si usa Spring Boot 3.1.x-3.5.x, assicurarsi di impostare la spring-cloud-azure-dependencies versione su 5.25.0.

Se si usa Spring Boot 2.x, assicurarsi di impostare la spring-cloud-azure-dependencies versione su 4.20.0.

Questo Bill of Material (BOM) deve essere configurato nella sezione <dependencyManagement> del file pom.xml. In questo modo, tutte le dipendenze di Spring Cloud Azure usano la stessa versione.

Per ulteriori informazioni sulla versione utilizzata per questo BOM, vedere Quale versione di Spring Cloud Azure dovrei usare.

  1. Aggiungere le proprietà seguenti al file application.yml :

    spring:
      cloud:
        azure:
          keyvault:
            secret:
              endpoint:
    
  2. Accedere con Azure CLI usando il comando seguente. Le credenziali verranno quindi fornite da Azure CLI, quindi non sarà necessario aggiungere altre informazioni sulle credenziali, ad esempio client-id e client-secret.

    az login
    
  3. Collega automaticamente il SecretClient nei punti pertinenti, come illustrato nell'esempio seguente.

    @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 fornirà altre funzionalità oltre alle SecretClient configurate automaticamente. Ad esempio, è possibile usare @Value per ottenere il valore del segreto, come illustrato nell'esempio seguente:

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

}

Componenti di Spring Cloud Azure

Supporto Azure

Fornisce il supporto della configurazione automatica per i servizi di Azure, ad esempio Service Bus, archiviazione, Active Directory e così via.

Microsoft Entra ID

Fornisce il supporto dell'integrazione per Spring Security con Microsoft Entra ID per l'autenticazione. Per altre informazioni, vedere Spring Cloud Azure support for Spring Security.

Azure Key Vault

Fornisce il supporto delle annotazioni Spring @Value per l'integrazione con i segreti di Azure Key Vault. Per altre informazioni, vedere Spring Cloud Azure secret management.

Azure Storage

Fornisce il supporto spring boot per i servizi di Azure Storage. Per altre informazioni, vedere Spring Cloud Azure gestione delle risorse.

Ottenere supporto

Se è necessario il supporto per Spring Cloud Azure, è possibile richiedere assistenza nei modi seguenti:

  • Creare ticket di supporto Azure. I clienti con un piano Azure support possono aprire un ticket Azure support. Se il problema richiede attenzione immediata, è consigliabile usare questa opzione.
  • Archivia i problemi di GitHub nel repository Azure/azure-sdk-for-java. Vengono usati GitHub problemi per tenere traccia di bug, domande e richieste di funzionalità. Le segnalazioni su GitHub sono gratuite, ma il tempo di risposta non è garantito. Per altre informazioni, vedere GitHub issues support process.

Passaggi successivi