Wat is Spring Cloud Azure?

Spring Cloud Azure is een opensource-project waarmee u Eenvoudiger Azure-services in Spring-toepassingen kunt gebruiken.

Spring Cloud Azure is een opensource-project, met alle resources die beschikbaar zijn voor het publiek. De volgende lijst bevat koppelingen naar deze resources:

Waarvoor wordt Spring Cloud Azure gebruikt?

Spring Cloud Azure kan het eenvoudiger maken om de volgende taken uit te voeren in Spring-toepassingen:

In het volgende diagram ziet u een overzicht van deze functies:

Diagram met een overzicht van Spring Cloud Azure-functies.

Voordelen van het gebruik van Spring Cloud Azure

In de volgende sectie ziet u de voordelen van het gebruik van Spring Cloud Azure. In deze sectie wordt het ophalen van geheimen die zijn opgeslagen in Azure Key Vault, als voorbeeld gebruikt. In deze sectie worden de verschillen vergeleken tussen het ontwikkelen van een Spring Boot-toepassing met en zonder Spring Cloud Azure.

Zonder Spring Cloud Azure

Als u zonder Spring Cloud Azure geheimen wilt ophalen die zijn opgeslagen in Azure Key Vault, moet u de volgende stappen uitvoeren:

  1. Voeg de volgende afhankelijkheden toe aan uw pom.xml-bestand :

    <dependency>
       <groupId>com.azure</groupId>
       <artifactId>azure-security-keyvault-secrets</artifactId>
       <version>4.5.2</version>
    </dependency>
    
  2. Maak een SecretClient klasse-exemplaar met behulp van code die vergelijkbaar is met het volgende voorbeeld:

    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. Vermijd hardcoderingsinformatie zoals client-id en client-secret door deze eigenschappen configureerbaar te maken, zoals wordt weergegeven in het volgende voorbeeld:

    @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. Werk de toepassingscode bij zoals wordt weergegeven in dit voorbeeld:

    @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. Voeg de benodigde eigenschappen toe aan uw application.yml-bestand , zoals wordt weergegeven in het volgende voorbeeld:

    azure:
      keyvault:
        vault-url:
        tenant-id:
        client-id:
        client-secret:
    
  6. Als u op meerdere plaatsen wilt gebruiken SecretClient , definieert u een SecretClient bean. Vervolgens wordt automatisch bedrading SecretClient op de relevante plaatsen.

Met Spring Cloud Azure

Als u met Spring Cloud Azure geheimen wilt ophalen die zijn opgeslagen in Azure Key Vault, zijn de vereisten eenvoudiger, zoals wordt weergegeven in de volgende stappen:

  1. Voeg de volgende afhankelijkheden toe aan uw pom.xml-bestand :

    <dependencies>
      <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
      </dependency>
    </dependencies>
    
  2. Gebruik een stuklijst (bill of materials) om de Spring Cloud Azure-versie te beheren, zoals wordt weergegeven in het volgende voorbeeld:

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

    Notitie

    Als u Spring Boot 2.x gebruikt, moet u de spring-cloud-azure-dependencies versie instellen op 4.17.0. Deze stuklijst (Bill of Material) moet worden geconfigureerd in de <dependencyManagement> sectie van uw pom.xml-bestand . Dit zorgt ervoor dat alle Spring Cloud Azure-afhankelijkheden dezelfde versie gebruiken. Zie welke versie van Spring Cloud Azure moet ik gebruiken voor meer informatie over de versie die voor deze BOM wordt gebruikt.

  3. Voeg de volgende eigenschappen toe aan uw application.yml-bestand :

    spring:
      cloud:
        azure:
          keyvault:
            secret:
              endpoint:
    
  4. Meld u aan met Azure CLI met behulp van de volgende opdracht. Uw referenties worden vervolgens verstrekt door Azure CLI, dus u hoeft geen andere referentiegegevens toe te voegen, zoals client-id en client-secret.

    az login
    
  5. Automatisch verbinden SecretClient op de relevante plaatsen, zoals wordt weergegeven in het volgende voorbeeld:

    @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 biedt naast de automatisch geconfigureerde SecretClientfuncties enkele andere functies. U kunt bijvoorbeeld de @Value geheime waarde ophalen, zoals wordt weergegeven in het volgende voorbeeld:

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

}

Onderdelen van Spring Cloud Azure

Azure-ondersteuning

Biedt ondersteuning voor automatische configuratie voor Azure-services, zoals Service Bus, Opslag, Active Directory, enzovoort.

Microsoft Entra ID

Biedt integratieondersteuning voor Spring Security met Microsoft Entra ID voor verificatie. Zie Spring Cloud ondersteuning voor Azure voor Spring Security voor meer informatie.

Azure Key Vault

Biedt ondersteuning voor Spring-aantekeningen @Value voor integratie met Azure Key Vault Secrets. Zie Spring Cloud Azure-geheimbeheer voor meer informatie.

Azure Storage

Biedt Spring Boot-ondersteuning voor Azure Storage-services. Zie De verwerking van Spring Cloud Azure-resources voor meer informatie.

Ondersteuning krijgen

Als u ondersteuning nodig hebt voor Spring Cloud Azure, kunt u op de volgende manieren om hulp vragen:

Volgende stappen