Azure Spring Apps ランディング ゾーン アクセラレータのセキュリティに関する考慮事項

この記事では、Azure Spring Apps でホストされるワークロードのセキュリティに関する考慮事項と推奨事項について説明します。 このガイダンスは、セキュリティの脆弱性の検出、防止、対応ができるワークロードを作成する際に役立ちます。

アプリケーションをセキュリティで保護しても、ワークロード全体のセキュリティを保証することはできません。 ワークロードの所有者として、人的エラーを評価し、アプリケーションとそれが対話するインフラストラクチャ サービスなどの攻撃対象領域を評価してください。

Azure は、ネットワーク、ID、データに対してさまざまなセキュリティ コントロールを提供することで、多層防御戦略をサポートします。 これらの多くのコントロールは、Azure Spring Apps に組み込まれています。 このガイダンスは Azure Spring Apps の Azure セキュリティ ベースラインをベースにしており、これは Azure セキュリティ ベンチマーク バージョン 2.0 から派生しています。 ベンチマークは、Azure Spring Apps クラウド上で実行されているワークロードをセキュリティで保護する方法に関する推奨事項を提供します。

一元化されたチームは、プラットフォームの一部としてネットワークと ID のコントロールを提供します。 Azure のプラットフォーム、アプリケーション、リソースの制御を維持するためのガードレールを提供します。 ワークロード用に提供されるアプリケーション ランディング ゾーン サブスクリプションは、管理グループから継承されるポリシーで事前にプロビジョニングされます。

ワークロードを設計するときは、自分が所有するセキュリティ コントロールが中央のコントロールと整合していることを確認してください。 この設計は、一元化されたセキュリティ チームによって定期的にレビューが行われます。 中央のチームとともにセキュリティ コントロールとプラットフォーム ポリシーを定期的にレビューして、ワークロードの要件に対応していることを確認します。

プラットフォーム設計の詳細については、次を参照してください。

設計上の考慮事項

  • 内部トラフィック。 内部リソース間のトラフィックを制限または許可して、ビジネス リスクに合わせたエンタープライズ セグメント化の原則に従うようにします。 必要に応じて、仮想ネットワークとサブネットを使用して "分離境界を作成" します。 ネットワーク間のトラフィック フローを制限するルールを実装します。

  • 外部トラフィック。 Azure ネイティブ リソースを使用して、次のような外部ネットワークからの攻撃からワークロード リソースを保護します。

    • 分散型サービス拒否 (DDoS) 攻撃。
    • アプリケーション固有の攻撃。
    • 未承諾で悪意のある可能性があるインターネット トラフィック。
  • ID 管理。 マネージド ID、シングル サインオン、強力な認証、マネージド ID、条件付きアクセスなどの Microsoft Entra の機能を利用し、Microsoft Entra ID 経由で認証と認可を提供します。

  • セキュリティの監視。 システムには、組織の目標と Azure セキュリティ ベンチマーク コントロールを使用して、脅威の検出とコンプライアンスの測定を行うための監視ツールが必要です。 セキュリティ態勢の全体像を把握するために、これらのツールは中央のセキュリティ情報イベント管理 (SIEM) システムと統合する必要があります。

  • 転送中のデータ。 コンポーネント、場所、API 呼び出しの間で転送されるデータは暗号化する必要があります。

  • 保存データ。 構成を含むすべての永続データは、暗号化する必要があります。

  • ガバナンス ポリシー。 組織が設定したコンプライアンス標準からの逸脱を検出する必要があります。 Azure Policy は、これらの逸脱を検出するために適用する必要がある組み込みの定義を提供します。 ポリシーを適用しても、コントロールのすべての要件に完全に準拠していることが保証されるわけではありません。 組み込みの定義では対応できない準拠標準が存在する場合があります。

  • 資格情報の公開。 ID またはシークレットを使用して、コード、構成、および永続化されたデータをデプロイして実行できます。 資産にアクセスするときに、資格情報が検査されるようにしてください。

  • 証明書管理。 証明書は、決して信用せず、常に検証し、資格情報を使用しない、というゼロ トラストの原則に基づいて読み込む必要があります。 共有証明書のみを信頼するには、証明書へのアクセスを許可する前に ID を確認します。

  • 一貫性のあるデプロイ。 コードとしてのインフラストラクチャ (IaC) を使用すると、すべての Azure リソースのプロビジョニングと構成が自動化され、セキュリティ態勢が強化されます。

設計の推奨事項

境界としてのネットワーク

これらのネットワーク コントロールは、分離境界を作成し、アプリケーションとの入出力フローを制限します。

ネットワークのセグメント化

Azure Spring Cloud Service リソースをデプロイするときは、既存の仮想ネットワークを作成または使用します。

"サブネット化を使用して仮想ネットワーク内に分離を作成します"。 NSG 規則を使用して、内部リソース間のトラフィックを制限または許可します。 Microsoft Defender for Cloud のアダプティブ ネットワークのセキュリティ強化機能を使用して、ポートとソース IP を制限するNSG 構成をさらに強化します。 その構成を外部ネットワーク トラフィック規則に基づいたものにします。

セキュリティ規則を作成するときは、Azure サービス タグを使用して、特定の IP アドレスではなくネットワークのアクセスの制御を定義します。 適切な規則のソースまたはターゲット フィールドにサービス タグ名を指定する際は、対応するサービスのトラフィックを許可または拒否できます。 サービス タグの対象となるアドレス プレフィックスは、Microsoft が管理します。 アドレスの変更に応じて、サービス タグが自動的に更新されます。

ネットワーク セキュリティ グループまたは Azure Firewall で AzureSpringCloud サービス タグを使用して、Azure Spring Apps 内のアプリケーションへのトラフィックを許可します。

詳細については、「仮想ネットワークでの Azure Spring Apps の実行に関するお客様の責任」を参照してください。

プライベート ネットワークとの接続

併置環境では、Azure ExpressRoute または Azure 仮想プライベート ネットワーク (VPN) を使用して Azure のデータセンターとオンプレミスのインフラストラクチャ間のプライベート接続を作成します。 ExpressRoute 接続はパブリック インターネットを経由せず、信頼性が高く、高速で、待ち時間も短くなります。

ポイント対サイト VPN とサイト間 VPN の場合、オンプレミスのデバイスやネットワークを仮想ネットワークに接続します。 これらの VPN オプションと Azure ExpressRoute を組み合わせて使用します。

Azure で 2 つ以上の仮想ネットワークを接続するには、仮想ネットワーク ピアリングを使用します。 ピアリングされた仮想ネットワーク間のネットワーク トラフィックはプライベートである。 このトラフィックの種類は Azure バックボーン ネットワークで維持されます。

外部ネットワークからの攻撃

統合 Web アプリケーション ファイアウォール (WAF) を使用した Azure Application Gateway で、受信トラフィックにコントロールを配置し、"アプリケーション層攻撃をブロック" します。

Azure Firewall を使用して、アプリケーションからの送信トラフィックを制限します。 Azure Firewall を使用することで、インターネットや他の外部の場所からの、悪意がある可能性のあるトラフィックから、アプリケーションやサービスを保護できます。

Azure Firewall の脅威インテリジェンス ベースのフィルター処理では、既知の悪意のある IP アドレスおよびドメインとの間のトラフィックについて、警告を送信したり、ブロックしたりできます。 この IP アドレスとドメインのソースは、Microsoft の脅威インテリジェンス フィードです。 ペイロード検査が必要なときは、ペイロード検査機能を備えたサードパーティの侵入検出/侵入防止システム (IDS/IPS) を、Azure Marketplace からデプロイします。 別の方法として、ネットワーク ベースの IDS/IPS とともに、またはその代わりに、ホスト ベースの IDS/IPS またはホスト ベースのエンドポイントでの検出と対応 (EDR) ソリューションを使用できます。

DDoS 攻撃からワークロード リソースを保護するには、Azure 仮想ネットワークで DDoS 標準保護を有効にします。 Microsoft Defender for Cloud を使用して、ネットワーク関連リソースに対する誤った構成のリスクを検出します。

ドメイン ネーム サービス (DNS) を保護する

Azure DNS を使用して DNS ドメインをホストします。 DNS のゾーンとレコードを問題のあるユーザーから保護します。 その目的には、Azure ロールベースのアクセス制御 (Azure RBAC) とリソース ロックがお勧めです。 詳細については、「未解決の DNS エントリを防ぎ、サブドメインの乗っ取りを回避する」を参照してください。

境界としての ID

Azure では、Microsoft Entra ID を使用して ID 制御が提供されます。 このアプリケーションには、シングル サインオン、強力な認証、マネージド ID、条件付きアクセスなどの多くの機能があります。 アーキテクチャの設計上の選択肢については、「Azure Spring Apps ランディング ゾーン アクセラレータの ID に関する考慮事項」を参照してください。

次のセクションでは、これらの選択肢のセキュリティ面について説明します。

一元化された ID システムとの統合

Azure ランディング ゾーンは、既定の ID およびアクセス管理サービスとして Microsoft Entra ID を使用します。 ワークロード サービスの管理には、一元化された Microsoft Entra ID をお勧めします。 一元化された Microsoft Entra ID には、組織のネットワーク リソース、Azure Storage、Key Vault、アプリケーションが依存するその他のサービスへのアクセスが含まれます。

Azure Spring Apps データ プレーンへのアクセスを許可する場合は、Azure Spring Cloud データ閲覧者の組み込みロールを使用します。 このロールは、読み取り専用のアクセス許可を付与します。

次の Microsoft Entra 機能をお勧めします。

  • アプリケーション ID。 アプリケーションは、他の Azure サービスにアクセスすることが必要な場合があります。 たとえば、Azure Key Vault からシークレットを取得したい場合などです。

    Azure Spring Apps でマネージド ID を使用して、アプリケーションが Microsoft Entra ID を使用して他のサービスに対して自身を認証できるようにします。 この目的でサービス プリンシパルを使用しないでください。 マネージド ID の認証プロセスは、ソース コードや構成ファイルにハードコーディングされている資格情報を使用しません。

    証明書の資格情報でサービス プリンシパルを使用して、クライアント シークレットにフォールバックする必要がある場合、Microsoft Entra ID を使用して、リソース レベルでアクセス許可が制限されたサービス プリンシパルを作成することをお勧めします。

    どちらの場合も、Azure マネージド ID で Key Vault を使用できます。 ランタイム コンポーネント (Azure 関数など) を使用して、Key Vault からシークレットを取得できます。 詳細については、「Azure Key Vault での認証」を参照してください。

  • Microsoft Entra シングル サインオン (SSO) クラウドまたはオンプレミスで実行されている他のアプリケーションやデバイスからアプリケーションへのアクセスを認証するには、Microsoft Entra SSO をお勧めします。 SSO は、パートナーやベンダーなどの内部および外部ユーザーに対する ID 管理を提供します。

  • 強力な認証コントロール。 Microsoft Entra ID では、多要素認証 (MFA)、および強力なパスワードレスの方法によって、強力な認証制御がサポートされています。 管理者と特権ユーザーについては、最高レベルの強力な認証方法を使用して、侵害が発生した場合の影響範囲を減らします。 次に、適切かつ強力な認証ポリシーを他のユーザーにロールアウトします。 詳細については、Azure での MFA の有効化に関する記事、および「Microsoft Entra ID のパスワードレス認証オプション」を参照してください。

  • リソースへの条件付きアクセス。 Azure Spring Apps は、ユーザー定義の条件に基づいてよりきめ細かくアクセスの制御を行う Microsoft Entra 条件付きアクセスをサポートしています。 MFA を使用してサインインする必要がある特定の IP 範囲からのユーザー サインインを含める条件を設定することができます。 これらの条件付きアクセス ポリシーは、アプリケーションに対するアクセスと管理のために Microsoft Entra ID に認証を行うユーザー アカウントにのみ適用されます。 これらのポリシーは、ワークロード リソースへの接続に使用されるサービス プリンシパル、キー、またはトークンには適用されません。

  • 特権アクセスMicrosoft Entra Privileged Identity Management を実装して、Azure 環境全体で最小特権のアクセスと詳細なレポートを確保します。 チームは、適切なユーザーとサービスの原則が最新かつ正しい承認レベルを持っていることを確認するために、定期的なアクセス レビューを開始する必要があります。

Data コントロール

ネットワークと ID のコントロールによってアプリケーションへのアクセスが制限されますが、データを保護する必要もあります。 暗号化は、データの整合性を確保するもので、脅威を軽減するために適用する必要がある重要なセキュリティ機能です。

転送中のデータ

転送されるデータは、トラフィック キャプチャなどの帯域外攻撃の影響を受けやすい性質があります。 暗号化を使用して、攻撃者がデータを簡単に読み取ったり変更したりできないようにします。 Azure は、Azure のデータ センター間の "転送データの暗号化" を提供します。

Azure Spring Apps は、トランスポート層セキュリティ (TLS) v1.2 以上で暗号化をサポートします。 TLS は、ID と信頼を使用してセキュリティで保護された通信を提供し、すべての種類の通信を暗号化します。 任意の種類の TLS 証明書を使用できます。 たとえば、認証機関が発行した証明書、Extended Validation 証明書、任意の数のサブドメインをサポートするワイルドカード証明書、開発およびテスト環境用の自己署名証明書が挙げられます。

外部およびパブリック ネットワーク上のトラフィックにとって、暗号化は重要です。 既定で受信トラフィックには、すべての "パブリック エンドポイントが HTTPS を使用する必要があります"。 Azure Resource Manager API 呼び出しを使用して Azure Spring Apps サービスを構成するための管理呼び出しは、HTTPS 経由で行う必要があります。

HTTP トラフィックについては、Azure リソースに接続するクライアントが "TLS v1.2 以上をネゴシエート" できるようにしてください。 "古いバージョンやプロトコルは使用しないでください"。 脆弱な暗号を無効にしてください。

リモート管理については、暗号化されていないプロトコルを使用する代わりに、Linux の場合は Secure Shell (SSH)、Windows の場合はリモート デスクトップ プロトコル (RDP) と TLS を使用してください。

保存データ

ワークロードは、ソースと成果物、構成サーバーの設定、アプリ設定、およびストレージの格納状態を必要とします。 サーバー側の保存データは、Azure Storage 暗号化によって保護されます。 Storage は、Microsoft マネージド キーを使用してコンテンツを自動的に暗号化します。

構成サーバーのキャッシュ、アップロードされたソースから構築されたランタイム バイナリ、アプリケーションの有効期間中のアプリケーション ログは、Azure マネージド ディスクに保存されます。 このデータは自動的に暗号化されます。 ユーザーがアップロードしたソースから構築されたコンテナー イメージは、暗号化されて Azure Container Registry に保存されます。

サポート シナリオでは、Microsoft が関連する顧客データにアクセスする必要があるときは、チームまたは組織がアクセスを承認する必要があるため、Microsoft Azure 用のカスタマー ロックボックスを使用してください。

アカウントの異常を監視してアラートを出す

認証試行に失敗した回数が多すぎる、サブスクリプション内に非推奨のアカウントがあるなど、不審なアクティビティに関するアラートを受け取るには、Microsoft Defender for Cloud をお勧めします。

Azure Spring Apps は Microsoft Entra ID と統合されており、危険なサインインを含むサインイン アクティビティを追跡できます。監査ログを使用して、Microsoft Entra ID 内のリソースに加えられた変更を検出できます。 データは Azure Monitor と統合されており、Microsoft Sentinel にエクスポートできます。

詳細については、以下を参照してください:

ガバナンス ポリシー

"Azure Spring Cloud でネットワークの挿入を使用する必要がある" と呼ばれる Azure の組み込み定義を使用して、ネットワーク コントロールを適用することができます。

  1. インターネットから取得したアプリケーションの分離境界の実装を検出します。
  2. Azure Spring Apps が、オンプレミスのデータ センター内のプライベート ネットワークや、他の仮想ネットワーク内の Azure サービスと通信できるようにします。
  3. Azure Spring Apps 仮想ネットワークとの送受信ネットワーク通信を制御します。

証明書の管理

バックエンド サービスまたはオンプレミス システムと通信するときに、アプリでパブリック TLS 証明書が必要になる場合があります。 証明書は、Key Vault でアップロードできます。

Key Vault から証明書を安全に読み込むために、Spring Boot アプリはマネージド ID と Azure ロールベースのアクセス制御 (RBAC) を使用します。 Azure Spring Apps では、プロバイダー サービス プリンシパルと Azure ロールベースのアクセス制御が使用されます。 この安全に読み込む機能は、Azure Key Vault Java Cryptography Architecture (JCA) プロバイダーによって提供されています。 詳細については、Azure Key Vault JCA の Java 用クライアント ライブラリに関するページを参照してください。

Spring コード、Java コード、または OpenSSL などのオープンソース ライブラリが、JVM の既定の JCA チェーンに依存して暗黙的に JVM の信頼ストアに証明書を読み込む場合は、Key Vault から Azure Spring Apps に TLS 証明書をインポートできます。 これらの証明書をアプリ内で使用します。 詳細については、「Azure Spring Apps のアプリケーションで TLS/SSL 証明書を使用する」を参照してください。

資格情報のスキャン

Credential Scanner を実装して、コード、構成、および永続化されたデータにアクセスする資格情報を識別します。 資格情報スキャナーでは、検出された資格情報を Key Vault などのより安全な場所に移動することを推奨しています。

GitHub の場合、ネイティブ シークレット スキャン機能を使用して、コード内で資格情報やその他の形式のシークレットを識別できます。

詳細については、次を参照してください。

次のステップ

操作の監視