Freigeben über


Was ist Spring Cloud Azure?

Spring Cloud Azure ist ein open source Projekt, das die Verwendung Azure Services in Spring Anwendungen erleichtert.

Spring Cloud Azure ist ein open source Projekt mit allen Ressourcen, die für die Öffentlichkeit verfügbar sind. Die folgende Liste enthält Links zu diesen Ressourcen:

Wofür wird Spring Cloud Azure verwendet?

Spring Cloud Azure kann dazu beitragen, die folgenden Aufgaben in Spring-Anwendungen zu vereinfachen:

Vorteile der Verwendung von Spring Cloud Azure

Im folgenden Abschnitt werden die Vorteile der Verwendung von Spring Cloud Azure veranschaulicht. In diesem Abschnitt wird der Abruf von geheimen Schlüsseln, die in Azure Key Vault gespeichert sind, als Beispiel verwendet. In diesem Abschnitt werden die Unterschiede zwischen der Entwicklung einer Spring Boot-Anwendung mit und ohne Spring Cloud Azure verglichen.

Ohne Spring Cloud Azure

Ohne Spring Cloud Azure müssen Sie die folgenden Schritte ausführen, wenn Sie geheime Schlüssel abrufen möchten, die in Azure Key Vault gespeichert sind:

  1. Fügen Sie der datei pom.xml die folgenden Abhängigkeiten hinzu:

    <dependency>
       <groupId>com.azure</groupId>
       <artifactId>azure-security-keyvault-secrets</artifactId>
       <version>4.5.2</version>
    </dependency>
    
  2. Erstellen Sie eine SecretClient Klasseninstanz mithilfe von Code, der dem folgenden Beispiel ähnelt:

    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. Vermeiden Sie hartcodierte Informationen wie client-id und client-secret, indem Sie festlegen, dass diese Eigenschaften konfigurierbar sind, wie im folgenden Beispiel gezeigt:

    @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. Aktualisieren Sie ihren Anwendungscode wie in diesem Beispiel gezeigt:

    @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. Fügen Sie ihrer application.yml-Datei die erforderlichen Eigenschaften hinzu, wie im folgenden Beispiel gezeigt:

    azure:
      keyvault:
        vault-url:
        tenant-id:
        client-id:
        client-secret:
    
  6. Wenn Sie SecretClient an mehreren Stellen verwenden müssen, definieren Sie eine SecretClient Bean. Verkabeln Sie SecretClient automatisch an den relevanten Stellen.

Mit Spring Cloud Azure

Wenn Sie mit Spring Cloud Azure geheime Schlüssel abrufen möchten, die in Azure Key Vault gespeichert sind, sind die Anforderungen einfacher, wie in den folgenden Schritten gezeigt:

  1. Fügen Sie der datei pom.xml die folgenden Abhängigkeiten hinzu:

    <dependencies>
      <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
      </dependency>
    </dependencies>
    
  2. Verwenden Sie eine Stückliste (BOM), um die Spring Cloud Azure-Version zu verwalten, wie im folgenden Beispiel gezeigt:

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

Hinweis

Wenn Sie Spring Boot 4.0.x verwenden, stellen Sie sicher, dass Sie die spring-cloud-azure-dependencies Version auf 7.0.0festlegen.

Wenn Sie Spring Boot 3.5.x verwenden, stellen Sie sicher, dass Sie die spring-cloud-azure-dependencies Version auf 6.1.0festlegen.

Wenn Sie Spring Boot 3.1.x-3.5.x verwenden, stellen Sie sicher, dass Sie die Version spring-cloud-azure-dependencies auf 5.25.0 setzen.

Wenn Sie Spring Boot 2.x verwenden, stellen Sie sicher, dass Sie die spring-cloud-azure-dependencies Version auf 4.20.0 festlegen.

Diese Stückliste (Bill of Material, BOM) sollte im Abschnitt <dependencyManagement> Ihrer pom.xml Datei konfiguriert werden. Dadurch wird sichergestellt, dass alle Spring Cloud-Azure Abhängigkeiten dieselbe Version verwenden.

Weitere Informationen zur version, die für diese BOM verwendet wird, finden Sie unter Which Version of Spring Cloud Azure Should I Use.

  1. Fügen Sie der datei application.yml die folgenden Eigenschaften hinzu:

    spring:
      cloud:
        azure:
          keyvault:
            secret:
              endpoint:
    
  2. Melden Sie sich mit Azure CLI mit dem folgenden Befehl an. Ihre Anmeldeinformationen werden dann von Azure CLI bereitgestellt, sodass keine weiteren Anmeldeinformationen wie client-id und client-secret hinzugefügt werden müssen.

    az login
    
  3. Automatische Verkabelung SecretClient an den relevanten Stellen, wie im folgenden Beispiel gezeigt:

    @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 bietet neben dem automatisch konfigurierten SecretClient weitere Features. Sie können z. B. den geheimen Wert @Value abrufen, wie im folgenden Beispiel gezeigt:

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

}

Komponenten der Spring Cloud-Azure

Azure-Support

Bietet Unterstützung für die automatische Konfiguration für Azure Dienste, z. B. Service Bus, Speicher, Active Directory usw.

Microsoft Entra ID

Bietet Integrationsunterstützung für Spring Security mit Microsoft Entra ID für die Authentifizierung. Weitere Informationen finden Sie unter Spring Cloud Azure support for Spring Security.

Azure Key Vault

Bietet Unterstützung für Spring @Value Annotationen zur Integration mit Azure Key Vault Geheimnissen. Weitere Informationen finden Sie unter Spring Cloud Azure secret management.

Azure Storage

Bietet Spring Boot-Unterstützung für Azure Storage-Dienste. Weitere Informationen finden Sie unter Spring Cloud Azure Ressourcenbehandlung.

Unterstützung erhalten

Wenn Sie Unterstützung für Spring Cloud Azure benötigen, können Sie auf folgende Weise Hilfe anfordern:

Nächste Schritte