ゼロ トラスト環境で Spring Boot アプリのエンド ツー エンドの通信をセキュリティで保護する
Note
Basic、Standard、および Enterprise プランは、2025 年 3 月中旬以降に非推奨になり、3 年間の廃止期間となります。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の廃止のお知らせ」を参照してください。
Standard 従量課金と専用プランは、2024 年 9 月 30 日以降に非推奨となり、6 か月後に完全にシャットダウンされます。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の Standard 従量課金と専用プランを Azure Container Apps に移行する」を参照してください。
この記事では、ゼロ トラスト環境で Spring Boot アプリのエンド ツー エンドの通信をセキュリティで保護する方法について説明します。 Spring Boot アプリのエンドツーエンドの通信を保護したり、任意の通信ポイントでトランスポートレベルのセキュリティを終了させることができます。 また、通信のセキュリティ保護に必要なすべての Azure リソースのプロビジョニングと構成を自動化することもできます。
ソリューション アーキテクチャの一部として安全な通信を実装することは、容易ではありません。 多くのお客様は、証明書を手動でローテーションしたり、プロビジョニングと構成を自動化する独自のソリューションを作成しています。 それでも、データ流出リスク (サーバー システムからのデータの不正コピーや転送) は防ぎきれません。 Azure Spring Apps を使えば、これらの細かい要素は自動で処理されます。 Azure Spring Apps は複雑な仕組みのほどんどを取り除き、構成可能で自動化可能なオプションとして通信のセキュリティ保護をサービスとして提供しています。
インターネット通信をセキュリティで保護する
TLS/SSL プロトコルは、 ID と信頼性を確立し、あらゆる種類の通信を暗号化します。 TLS/SSL は、特に商取引や顧客データを運ぶ Web トラフィックの通信をセキュリティで保護することができます。
TLS/SSL 証明書は、どのような種類のものでも使用することができます。 たとえば、認証機関が発行した証明書、Extended Validation 証明書、任意の数のサブドメインをサポートするワイルドカード証明書、開発およびテスト環境用の自己署名証明書などを使用できます。
ゼロ トラストを使用して証明書を安全に読み込む
ゼロ トラストは、「決して信用せず、常に検証し、資格情報を使用しない」という原則に基づいています。 ゼロ トラストは、未知の証明書や管理されていない証明書を排除することで、すべての通信の安全性を確保します。 ゼロ トラストでは、確認がとれた ID から共有される証明書のみを信頼し、それらの証明書へのアクセスを許可します。 詳細については、ゼロ トラスト ガイダンス センターを参照してください。
Spring Boot アプリでは、Azure Key Vault から証明書を安全に読み込むために、マネージド ID と Azure ロールベースのアクセス制御 (RBAC) を使用します。 Azure Spring Apps では、プロバイダー サービス プリンシパルと Azure ロールベースのアクセス制御が使用されます。 この安全に読み込む機能は、Azure Key Vault Java Cryptography Architecture (JCA) プロバイダーによって提供されています。 詳細については、Azure Key Vault JCA の Java 用クライアント ライブラリに関するページを参照してください。
Azure Key Vault を使用することで、ユーザーは証明書の保管と配布を管理し、事故による漏洩を減らすことができます。 アプリケーションやサービスは、証明書に安全にアクセスできます。 最小特権の原則により、Key Vault では Azure ロールベースのアクセス制御を使用して、管理者などのアクセスが必要な人やアプリだけにアクセス許可を付与し、他はロック ダウンします。 アプリケーションとサービスから証明書にアクセスする際は、Microsoft Entra ID と Azure ロールベースのアクセス制御を使用して認証と承認が行われます。 Key Vault の証明書へのアクセスと使用は、完全な監査証跡で監視することができます。
エンドツーエンドの通信をセキュリティで保護するか、任意のポイントで TLS を終了する
次の図に示すように、通信は以下の構成要素を通じて、いくつかのセグメントに分かれて行われます。
- Azure Front Door などのネットワーク アクセス ポイント
- Azure App Gateway
- F5 BIG-IP Local Traffic Manager
- Azure API Management
- Apigee API Management Spring Boot アプリと、データベース、メッセージングおよびイベント システム、アプリ キャッシュなどのバックエンド システム。
Spring Boot アプリのエンドツーエンドの通信を保護したり、任意の通信ポイントでトランスポートレベルのセキュリティを終了させることができます。
以下のセクションではこのアーキテクチャについて詳しく説明します。
セグメント 1: Azure Spring Apps への通信をセキュリティで保護する
最初のセグメント (図のセグメント 1) は、コンシューマーから Azure Spring Apps のイングレス コントローラーへの通信を表します。 これらのコンシューマーには、ブラウザー、携帯電話、デスクトップ、キオスク、または Azure Front Door、Azure App Gateway、F5 BIG-IP Local Traffic Manager、Azure API Management、Apigee API Management などのネットワーク アクセス ポイントが含まれます。
既定では、このセグメントは *.azuremicroservices.io
ドメインの Microsoft 提供の TLS/SSL 証明書を使用してセキュリティが確保されています。 Azure Spring Apps のアプリにカスタム ドメインをバインドすることで、Azure Key Vault に独自の TLS/SSL 証明書を適用することができます。 コードは必要ありません。 詳細については、チュートリアル: Azure Spring Apps への既存のカスタム ドメインのマップに関するページを参照してください。
セグメント 2: イングレス コントローラーからアプリへの通信をセキュリティで保護する
次のセグメント (図のセグメント 2) は、Azure Spring Apps イングレス コントローラーから Azure Spring Apps 上の任意のアプリへの通信を表します。 イングレス コントローラーから HTTPS をサポートするアプリへのトラフィックは、TLS/SSL を有効にすることでセキュリティで保護できます。 詳細については、「アプリケーションのイングレスからアプリへの TLS を有効にする」を参照してください。
Spring Boot アプリでは、Spring のアプローチを使用して HTTPS を有効にすることも、Azure Key Vault Certificates Spring Boot Starter を使用して通信をセキュリティで保護することもできます。 詳細については、「チュートリアル: Azure Key Vault 証明書を使用して Spring Boot アプリをセキュリティで保護する」を参照してください。
Azure Key Vault から TLS/SSL 証明書を使用して通信をセキュリティで保護するには、次の 3 つの構成手順が必要です。 コードは必要ありません。
以下の Azure Key Vault Certificates Spring Boot Starter の依存関係を pom.xml ファイルに記述します。
<dependency> <groupId>com.azure.spring</groupId> <artifactId>azure-spring-boot-starter-keyvault-certificates</artifactId> </dependency>
以下のプロパティを追加して、Azure Key Vault から TLS/SSL 証明書を読み込むようにアプリを構成します。 Azure Key Vault の URI と証明書名を必ず指定してください。
azure: keyvault: uri: ${KEY_VAULT_URI} server: ssl: key-alias: ${SERVER_SSL_CERTIFICATE_NAME} key-store-type: AzureKeyVault
アプリのマネージド ID を有効にし、マネージド ID に Azure Key Vault への "Get" と "List" アクセス許可を付与します。 詳細については、「Azure Spring Apps でアプリケーションのシステム割り当てマネージド ID を有効にする」と「証明書のアクセス制御」を参照してください。
セグメント 3: アプリからマネージド ミドルウェアへの通信をセキュリティで保護する
次のセグメント (図のセグメント 3) は、任意のアプリから Azure Spring Apps のマネージド Spring Cloud Config Server と Spring Cloud Service Registry への通信を表します。 既定では、このセグメントは Microsoft 提供の TLS/SSL 証明書を使用してセキュリティが確保されています。
セグメント 4: アプリ間の通信をセキュリティで保護する
次のセグメント (図のセグメント 4) は、Azure Spring Apps のアプリ間の通信を表します。 Azure Key Vault Certificates Spring Boot Starter を使用すると、HTTPS 対応の呼び出し先のアプリが提供する TLS/SSL 証明書を信頼するように、呼び出し元アプリを構成することができます。 受信側の Spring Boot アプリでは、Spring のアプローチを使用して HTTPS を有効にすることも、Azure Key Vault Certificates Spring Boot Starter を使用して通信をセキュリティで保護することもできます。 詳細については、「チュートリアル: Azure Key Vault 証明書を使用して Spring Boot アプリをセキュリティで保護する」を参照してください。
セグメント 5: アプリから外部システムへの通信をセキュリティで保護する
次のセグメント (図のセグメント 5) は、Azure Spring Apps で実行されているアプリと外部システムの間の通信を表します。 Azure Key Vault Certificates Spring Boot Starter を使用すると、任意の外部システムから提供される TLS/SSL 証明書を信頼するように、Azure Spring Apps で実行されているアプリを構成することができます。 詳細については、「チュートリアル: Azure Key Vault 証明書を使用して Spring Boot アプリをセキュリティで保護する」を参照してください。
Key Vault からアプリに TLS/SSL 証明書を暗黙的に読み込む
Spring コード、Java コード、または OpenSSL などのオープンソース ライブラリが、JVM の既定の JCA チェーンに依存して、暗黙的に JVM の信頼ストアに証明書を読み込んでいる場合は、Key Vault から Azure Spring Apps に TLS/SSL 証明書を取り込んでアプリ内でこれらの証明書を使用することが可能です。 詳細については、「Azure Spring Apps のアプリケーションで TLS/SSL 証明書を使用する」を参照してください。
バックエンド システム用の既知のパブリック TLS/SSL 証明書をアップロードする
アプリがクラウドやオンプレミスのシステムのバックエンド サービスと通信する場合、通信を保護するためにパブリック TLS/SSL 証明書を使用する必要がある場合があります。 これらの TLS/SSL 証明書は、送信通信のセキュリティを保護するためにアップロードすることができます。 詳細については、「Azure Spring Apps のアプリケーションで TLS/SSL 証明書を使用する」を参照してください。
通信をセキュリティで保護するためのプロビジョニングと構成を自動化する
ARM テンプレート、Bicep、または Terraform を使用すると、通信をセキュリティで保護するために、上記のすべての Azure リソースのプロビジョニングと構成を自動化できます。
ソリューションを構築し、通信をセキュリティで保護する
Azure Spring Apps は、Spring Boot アプリ用のフル マネージド サービスです。 Azure Spring Apps は、インフラストラクチャと Spring Cloud ミドルウェアの管理の複雑さからユーザーを解放してくれます。 ユーザーはビジネス ロジックの構築に集中でき、動的スケーリング、パッチ、セキュリティ、コンプライアンス、高可用性は Azure に任せることができます。 わずかな手順で、Azure Spring Apps のプロビジョニング、アプリケーションの作成、Spring Boot アプリケーションのデプロイ、スケーリング、および通信のセキュリティ保護を開始することができます。
Azure Spring Apps は、Microsoft と VMware が共同で構築、運用、サポートを行っています。