次の方法で共有


Spring Cloud Azureとは

Spring Cloud Azure は、Spring アプリケーションで Azure services を簡単に使用できるようにするopen source プロジェクトです。

Spring Cloud Azure はopen source プロジェクトであり、すべてのリソースを一般に利用できます。 次の一覧に、これらのリソースへのリンクを示します。

Spring Cloud Azureの用途

Spring Cloud Azureは、Spring アプリケーションで次のタスクを簡単に実行するのに役立ちます。

  • Azure App Configurationを使用した構成プロパティの管理。
  • Azure Event HubsAzure Service Bus、および Azure Storage Queue を使用したメッセージの送受信。
  • Azure Key Vaultを使用したシークレットと証明書の管理。
  • Microsoft Entra ID でプロビジョニングされた職場または学校アカウントでのユーザー サインインのサポート。
  • Azure Active Directory B2C を使用した Facebook や Google などのソーシャル アカウントでのユーザー サインインのサポート。
  • Web API を保護し、Microsoft Entra ID および Azure Active Directory B2C を使用してユーザーや組織のデータを操作するMicrosoft Graphなどの保護された API にアクセスします。
  • Azure Cosmos DBを使用して構造化データを格納する。
  • Azure Blob Storageを使用して、テキストやバイナリ データなどの非構造化データを格納する。
  • Azure Filesを使用してファイルを格納する。

Spring Cloud Azureを使用する利点

次のセクションでは、Spring Cloud Azureを使用する利点について説明します。 このセクションでは、Azure Key Vaultに格納されているシークレットの取得を例として使用します。 このセクションでは、Spring Cloud Azureを使用した Spring Boot アプリケーションの開発と使用しない場合の違いを比較します。

Spring Cloud Azureを使用せず

Spring Cloud Azureを使用しない場合、Azure Key Vaultに格納されているシークレットを取得する場合は、次の手順に従う必要があります。

  1. pom.xml ファイルに次の依存関係を追加します。

    <dependency>
       <groupId>com.azure</groupId>
       <artifactId>azure-security-keyvault-secrets</artifactId>
       <version>4.5.2</version>
    </dependency>
    
  2. 次の例のようなコードを使用して、 SecretClient クラス インスタンスを構築します。

    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. 次の例に示すように、これらのプロパティを構成可能にすることで、 client-idclient-secret などのハード コーディング情報を回避します。

    @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. 次の例に示すように、アプリケーション コードを更新します。

    @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. 次の例に示すように、 application.yml ファイルに必要なプロパティを追加します。

    azure:
      keyvault:
        vault-url:
        tenant-id:
        client-id:
        client-secret:
    
  6. 複数の場所で SecretClient を使用する必要がある場合は、 SecretClient Bean を定義します。 次に、関連する場所において SecretClient をオートワイヤーします。

Spring Cloud Azure の使用で

Spring Cloud Azureでは、Azure Key Vaultに格納されているシークレットを取得する場合は、次の手順に示すように要件が簡単になります。

  1. pom.xml ファイルに次の依存関係を追加します。

    <dependencies>
      <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
      </dependency>
    </dependencies>
    
  2. 次の例に示すように、部品表 (BOM) を使用して Spring Cloud Azure バージョンを管理します。

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

Spring Boot 4.0.x を使用している場合は、必ず spring-cloud-azure-dependencies バージョンを 7.0.0 に設定してください。

Spring Boot 3.5.x を使用している場合は、必ず spring-cloud-azure-dependencies バージョンを 6.1.0 に設定してください。

Spring Boot 3.1.x-3.5.x を使用している場合は、必ず spring-cloud-azure-dependencies バージョンを 5.25.0 に設定してください。

Spring Boot 2.xを使用している場合は、 spring-cloud-azure-dependencies バージョンを 4.20.0に設定してください。

この部品表(BOM)は、<dependencyManagement> ファイルの セクションに設定する必要があります。 これにより、すべての Spring Cloud Azure依存関係で同じバージョンが使用されるようになります。

この BOM に使用されるバージョンの詳細については、「どのバージョンの Spring Cloud Azure を使用すべきですか?」を参照してください。

  1. application.yml ファイルに次のプロパティを追加します。

    spring:
      cloud:
        azure:
          keyvault:
            secret:
              endpoint:
    
  2. 次のコマンドを使用して、Azure CLI でサインインします。 資格情報はAzure CLIによって提供されるため、client-idclient-secret などの他の資格情報を追加する必要はありません。

    az login
    
  3. 次の例の中に示すように、関連する場所において SecretClient をオートワイヤーします。

    @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 には、自動構成された SecretClient 以外にも、いくつかの機能が用意されています。 たとえば、次の例に示すように、 @Value を使用してシークレット値を取得できます。

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

}

Spring Cloud Azureのコンポーネント

Azure サポート

Service Bus、ストレージ、Active Directoryなど、Azure サービスの自動構成サポートを提供します。

Microsoft Entra ID

Spring Security と認証のMicrosoft Entra IDの統合サポートを提供します。 詳細については、「Spring Security のSpring Cloud Azure supportを参照してください。

Azure Key Vault

Azure Key Vault シークレットとの統合に関する Spring @Value 注釈のサポートを提供します。 詳細については、「Spring Cloud Azure シークレット管理」を参照>。

Azure Storage

Azure Storage サービスの Spring Boot サポートを提供します。 詳細については、「Spring Cloud Azure リソースの処理」を参照>。

サポートを受ける

Spring Cloud Azureのサポートが必要な場合は、次の方法でサポートを依頼できます。

次のステップ