Apa itu Spring Cloud Azure?

Spring Cloud Azure adalah proyek sumber terbuka yang membantu mempermudah penggunaan layanan Azure di aplikasi Spring.

Spring Cloud Azure adalah proyek sumber terbuka, dengan semua sumber daya tersedia untuk publik. Daftar berikut ini menyediakan tautan ke sumber daya ini:

Untuk apa Spring Cloud Azure digunakan?

Spring Cloud Azure dapat membantu mempermudah penyelesaian tugas berikut di aplikasi Spring:

Diagram berikut ini memberikan gambaran umum tentang fitur-fitur ini:

Diagram yang memberikan gambaran umum tentang fitur Spring Cloud Azure.

Manfaat menggunakan Spring Cloud Azure

Bagian berikut menunjukkan manfaat menggunakan Spring Cloud Azure. Di bagian ini, pengambilan rahasia yang disimpan di Azure Key Vault digunakan sebagai contoh. Bagian ini membandingkan perbedaan antara mengembangkan aplikasi Spring Boot dengan dan tanpa Spring Cloud Azure.

Tanpa Spring Cloud Azure

Tanpa Spring Cloud Azure, jika Anda ingin mengambil rahasia yang disimpan di Azure Key Vault, Anda perlu melakukan langkah-langkah berikut:

  1. Tambahkan dependensi berikut ke file pom.xml Anda:

    <dependency>
       <groupId>com.azure</groupId>
       <artifactId>azure-security-keyvault-secrets</artifactId>
       <version>4.5.2</version>
    </dependency>
    
  2. Buat SecretClient instans kelas dengan menggunakan kode yang mirip dengan contoh berikut:

    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. Hindari informasi pengodean keras seperti client-id dan client-secret dengan membuat properti ini dapat dikonfigurasi, seperti yang ditunjukkan dalam contoh berikut:

    @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. Perbarui kode aplikasi Anda seperti yang ditunjukkan dalam contoh ini:

    @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. Tambahkan properti yang diperlukan ke file application.yml Anda, seperti yang diperlihatkan dalam contoh berikut:

    azure:
      keyvault:
        vault-url:
        tenant-id:
        client-id:
        client-secret:
    
  6. Jika Anda perlu menggunakan SecretClient di beberapa tempat, tentukan SecretClient kacang. Kemudian, kawat SecretClient otomatis di tempat yang relevan.

Dengan Spring Cloud Azure

Dengan Spring Cloud Azure, jika Anda ingin mengambil rahasia yang disimpan di Azure Key Vault, persyaratannya lebih sederhana, seperti yang ditunjukkan pada langkah-langkah berikut:

  1. Tambahkan dependensi berikut ke file pom.xml Anda:

    <dependencies>
      <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
      </dependency>
    </dependencies>
    
  2. Gunakan tagihan bahan (BOM) untuk mengelola versi Spring Cloud Azure, seperti yang ditunjukkan dalam contoh berikut:

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

    Catatan

    Jika Anda menggunakan Spring Boot 2.x, pastikan untuk mengatur versi ke spring-cloud-azure-dependencies4.17.0. Bill of Material (BOM) ini harus dikonfigurasi di bagian <dependencyManagement> file pom.xml Anda. Ini memastikan bahwa semua dependensi Spring Cloud Azure menggunakan versi yang sama. Untuk informasi selengkapnya tentang versi yang digunakan untuk BOM ini, lihat Versi Spring Cloud Azure mana yang Harus Saya Gunakan.

  3. Tambahkan properti berikut ke file application.yml:

    spring:
      cloud:
        azure:
          keyvault:
            secret:
              endpoint:
    
  4. Masuk dengan Azure CLI dengan menggunakan perintah berikut. Kredensial Anda kemudian akan disediakan oleh Azure CLI, sehingga tidak perlu menambahkan informasi kredensial lain seperti client-id dan client-secret.

    az login
    
  5. Kawat SecretClient otomatis di tempat yang relevan, seperti yang ditunjukkan dalam contoh berikut:

    @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 akan menyediakan beberapa fitur lain selain yang dikonfigurasi SecretClientsecara otomatis. Misalnya, Anda dapat menggunakan @Value untuk mendapatkan nilai rahasia, seperti yang ditunjukkan dalam contoh berikut:

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

}

Komponen Spring Cloud Azure

Dukungan Azure

Menyediakan dukungan konfigurasi otomatis untuk Azure Services, seperti Bus Layanan, Storage, Active Directory, dan sebagainya.

Microsoft Entra ID

Menyediakan dukungan integrasi untuk Spring Security dengan ID Microsoft Entra untuk autentikasi. Untuk informasi selengkapnya, lihat Dukungan Spring Cloud Azure untuk Spring Security.

Azure Key Vault

Menyediakan dukungan anotasi Spring @Value untuk integrasi dengan Rahasia Azure Key Vault. Untuk informasi selengkapnya, lihat Manajemen rahasia Spring Cloud Azure.

Azure Storage

Menyediakan dukungan Spring Boot untuk layanan Azure Storage. Untuk informasi selengkapnya, lihat Penanganan sumber daya Spring Cloud Azure.

Dapatkan dukungan

Jika Anda memerlukan dukungan untuk Spring Cloud Azure, Anda dapat meminta bantuan dengan cara berikut:

  • Membuat tiket dukungan Azure. Pelanggan dengan paket dukungan Azure dapat membuka tiket dukungan Azure. Kami merekomendasikan opsi ini jika masalah Anda memerlukan perhatian segera.
  • Masalah File GitHub di repositori Azure/azure-sdk-for-java. Kami menggunakan masalah GitHub untuk melacak bug, pertanyaan, dan permintaan fitur. Masalah GitHub gratis, tetapi waktu respons tidak dijamin. Untuk informasi selengkapnya, lihat Proses dukungan masalah GitHub.

Langkah berikutnya