Was ist Spring Cloud Azure?

Spring Cloud Azure ist ein Open Source-Projekt, das die Verwendung von Azure-Diensten 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:

Das folgende Diagramm bietet eine Übersicht über diese Features:

Diagramm, das eine Übersicht über Spring Cloud Azure-Features bereitstellt.

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 ihrer pom.xml Datei 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 hartcodierende Informationen wie client-id z. B. und client-secret legen Sie diese Eigenschaften konfigurierbar, 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 der datei application.yml die erforderlichen Eigenschaften hinzu, wie im folgenden Beispiel gezeigt:

    azure:
      keyvault:
        vault-url:
        tenant-id:
        client-id:
        client-secret:
    
  6. Wenn Sie an mehreren Stellen verwenden müssen, definieren Sie eine Bohnen.If you need to use SecretClient in multiple places, define a SecretClient bean. Dann, autoverdrahten SecretClient 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 ihrer pom.xml Datei 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>5.11.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    Hinweis

    Wenn Sie Spring Boot 2.x verwenden, stellen Sie sicher, dass Sie die spring-cloud-azure-dependencies Version auf 4.17.0. Diese Stückliste (Bill of Material, BOM) sollte im <dependencyManagement> Abschnitt Ihrer pom.xml Datei konfiguriert werden. Dadurch wird sichergestellt, dass alle Spring Cloud Azure-Abhängigkeiten dieselbe Version verwenden. Weitere Informationen zu der version, die für diese BOM verwendet wird, finden Sie unter Welche Version von Spring Cloud Azure sollte ich verwenden.

  3. Fügen Sie der Datei application.yml die folgenden Eigenschaften hinzu:

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

    az login
    
  5. Automatisches Drahten 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 SecretClientFeature einige weitere Features. Sie können z. B. den @Value geheimen Wert 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 von 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-Unterstützung für Spring Security.

Azure Key Vault

Bietet Unterstützung für die Springanmerkung @Value für die Integration in Azure Key Vault Secrets. Weitere Informationen finden Sie unter Spring Cloud Secret Management.

Azure Storage

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

Support

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

  • Erstellen Sie Azure-Support Tickets. Kunden mit einem Azure-Support Plan können ein Azure-Support Ticket öffnen. Wir empfehlen diese Option, wenn Ihr Problem sofortige Aufmerksamkeit erfordert.
  • Datei-GitHub-Probleme im Azure/azure-sdk-for-java-Repository. Wir verwenden GitHub-Probleme, um Fehler, Fragen und Featureanforderungen nachzuverfolgen. GitHub-Probleme sind kostenlos, aber die Reaktionszeit ist nicht garantiert. Weitere Informationen finden Sie unter GitHub-Supportprozess.

Nächste Schritte