Azure App Service には、Web アプリ、モバイル アプリ バックエンド、RESTful API、関数アプリを構築、デプロイ、スケーリングできる PaaS (サービスとしてのプラットフォーム) 環境が用意されています。 このサービスをデプロイするときは、セキュリティのベスト プラクティスに従って、アプリケーション、データ、インフラストラクチャを保護することが重要です。
この記事では、Azure App Service デプロイを最適にセキュリティで保護する方法に関するガイダンスを提供します。
Azure App Service は、Azure 仮想マシン (VM)、ストレージ、ネットワーク接続、Web フレームワーク、管理および統合機能など、プラットフォーム コンポーネントを積極的にセキュリティで保護して強化します。 App Service では、次のことを確認するために、継続的かつ厳格なコンプライアンス チェックが実施されます。
- 各アプリは、他の Azure アプリとリソースから分離されます。
- VM とランタイム ソフトウェアの定期的な更新により、 新たに検出された脆弱性に対処します。
- アプリと Azure SQL Database などの他の Azure リソース間のシークレットと接続文字列の通信は、ネットワーク境界を越えずに Azure 内でのみ行われます。 保存されたシークレットは常に暗号化されます。
- ハイブリッド接続などの App Service 接続機能を介するすべての通信が暗号化されます。
- Azure PowerShell、Azure CLI、Azure SDK、REST API などのリモート管理ツール経由のすべての接続が暗号化されます。
- 継続的な脅威管理は、マルウェア、分散型サービス拒否 (DDoS) 攻撃、中間者攻撃、その他の脅威からインフラストラクチャとプラットフォームを保護します。
Azure のインフラストラクチャとプラットフォームのセキュリティの詳細については、 Azure セキュリティ センターを参照してください。
ネットワークのセキュリティ
App Service では、アプリケーションをロックダウンし、承認されていないアクセスを防ぐための多くのネットワーク セキュリティ機能がサポートされています。
プライベート エンドポイントを構成する: Azure Private Link を使用して仮想ネットワーク経由で App Service にトラフィックをルーティングし、プライベート ネットワーク内のクライアントのセキュリティで保護された接続を確保することで、パブリック インターネットへの露出を排除します。 「Azure App Service のプライベート エンドポイントを使用する」を参照してください。
仮想ネットワーク統合を実装する: パブリック インターネットからの分離を維持しながら、アプリが Azure 仮想ネットワーク内または Azure 仮想ネットワーク経由でリソースにアクセスできるようにすることで、送信トラフィックをセキュリティで保護します。 アプリ と Azure 仮想ネットワークの統合に関するページを参照してください。
IP アクセス制限の構成: アプリケーションにアクセスできる IP アドレスとサブネットの許可リストを定義してアプリへのアクセスを制限し、他のすべてのトラフィックをブロックします。 サブネット マスクによって定義された個々の IP アドレスまたは範囲を定義し、Windows アプリ上の web.config ファイルを使用して動的 IP 制限を構成できます。 「Azure App Service のアクセス制限の設定」を参照してください。
サービス エンドポイントの制限を設定する: サービス エンドポイントを使用して、仮想ネットワーク内の特定のサブネットからアプリへの受信アクセスをロックダウンします。これは、IP アクセス制限と連携してネットワーク レベルのフィルター処理を提供します。 Azure App Service のアクセス制限を参照してください。
Web アプリケーション ファイアウォールの使用: App Service の前に Web アプリケーション ファイアウォール機能を備えた Azure Front Door または Application Gateway を実装することで、一般的な Web の脆弱性や攻撃に対する保護を強化します。 Azure Application Gateway の Azure Web アプリケーション ファイアウォールに関するページを参照してください。
ID およびアクセス管理
承認されていない使用や潜在的な資格情報の盗難から Azure App Service デプロイをセキュリティで保護するには、ID とアクセス制御を適切に管理することが不可欠です。
送信要求のマネージド ID を有効にする: マネージド ID を使用してコードまたは構成に資格情報を格納することなく、アプリから Azure サービスに対して安全に認証します。サービス プリンシパルと接続文字列を管理する必要はありません。 マネージド ID は、Azure SQL Database、Azure Key Vault、Azure Storage などの他の Azure サービスに送信要求を行うときに、アプリが使用する Microsoft Entra ID の自動マネージド ID を提供します。 App Service では、システム割り当てマネージド ID とユーザー割り当てマネージド ID の両方がサポートされます。 App Service と Azure Functions のマネージド ID の使用に関するページを参照してください。
認証と承認の構成: App Service の認証/承認を実装して、Microsoft Entra ID またはその他の ID プロバイダーを使用してアプリケーションをセキュリティで保護し、カスタム認証コードを記述せずに未承認のアクセスを防ぎます。 組み込みの認証モジュールは、アプリケーション コードに渡す前に Web 要求を処理し、Microsoft Entra ID、Microsoft アカウント、Facebook、Google、X を含む複数のプロバイダーをサポートします。 Azure App Service での認証と承認に関するページを参照してください。
管理操作にロールベースのアクセス制御を実装する: 最小限の特権の原則に従って、必要最小限の Azure RBAC アクセス許可をユーザーとサービス プリンシパルに割り当てることで、App Service リソース (管理プレーン) を管理および構成できるユーザーを制御します。 これにより、アプリケーション レベルの認証 (Easy Auth) やアプリからリソースへの認証 (マネージド ID) とは別に、アプリの作成、構成設定の変更、デプロイの管理などの操作への管理アクセスが制御されます。 「Azure 組み込みロール」を参照してください。
代理認証の実装: Microsoft Entra ID を認証プロバイダーとして使用して、ユーザーに代わってリモート リソースへのアクセスを委任します。 App Service アプリは、Microsoft Graph やリモート App Service API アプリなどのサービスへの委任されたサインインを実行できます。 エンド ツー エンドのチュートリアルについては、「 Azure App Service でエンド ツー エンドでユーザーを認証および承認する」を参照してください。
相互 TLS 認証を有効にする: 特に B2B シナリオや内部アプリケーションで、アプリケーションでクライアント ID を確認する必要がある場合は、セキュリティを強化するためにクライアント証明書を必要とします。 Azure App Service の TLS 相互認証の構成に関するページを参照してください。
データ保護
転送中および保存中のデータを保護することは、アプリケーションとそのデータの機密性と整合性を維持するために重要です。
HTTPS を適用する: HTTPS 専用モードを有効にして、すべての HTTP トラフィックを HTTPS にリダイレクトします。これにより、クライアントとアプリ間のすべての通信が暗号化されます。 既定では、App Service は HTTP 要求から HTTPS へのリダイレクトを強制し、アプリの既定のドメイン名
<app_name>.azurewebsites.netは HTTPS 経由で既にアクセスできます。 「 全般設定の構成」を参照してください。TLS バージョンの構成: 最小 TLS バージョンを 1.2 以上に構成して最新の TLS プロトコルを使用し、潜在的な脆弱性を防ぐために、古くて安全でないプロトコルを無効にします。 App Service では、TLS 1.3 (最新)、TLS 1.2 (既定の最小値)、TLS 1.1/1.0 がサポートされています (下位互換性のみのため)。 Web アプリと SCM サイトの両方の最小 TLS バージョンを構成します。 「 全般設定の構成」を参照してください。
TLS/SSL 証明書の管理: 適切に構成された TLS/SSL 証明書を使用してカスタム ドメインをセキュリティで保護し、信頼できる接続を確立します。 App Service では、無料の App Service マネージド証明書、App Service 証明書、サード パーティの証明書、Azure Key Vault からインポートされた証明書など、複数の種類の証明書がサポートされています。 カスタム ドメインを構成する場合は、ブラウザーがセキュリティで保護された HTTPS 接続を行えるように、TLS/SSL 証明書を使用してセキュリティで保護します。 Azure App Service での TLS/SSL 証明書の追加と管理に関するページを参照してください。
Key Vault にシークレットを格納する: データベース資格情報、API トークン、秘密キーなどの機密性の高い構成値を保護するには、アプリケーションの設定やコードに格納するのではなく、Azure Key Vault に格納し、マネージド ID を使用してアクセスします。 App Service アプリは、マネージド ID 認証を使用して Key Vault に安全にアクセスできます。 App Service と Azure Functions の Key Vault 参照の使用に関するページを参照してください。
アプリケーション設定の暗号化: コードまたは構成ファイルにシークレットを格納する代わりに、暗号化されたアプリ設定と接続文字列を使用します。 App Service は、暗号化されたこれらの値を Azure に格納し、アプリの起動時にアプリのプロセス メモリに挿入する直前に暗号化を解除し、暗号化キーを定期的にローテーションします。 プログラミング言語の標準パターンを使用して、これらの値に環境変数としてアクセスします。 「 アプリ設定の構成」を参照してください。
セキュリティで保護されたリモート接続: バックエンド リソースで暗号化されていない接続が許可されている場合でも、リモート リソースにアクセスするときは常に暗号化された接続を使用します。 Azure SQL Database や Azure Storage などの Azure リソースの場合、接続は Azure 内に留まり、ネットワーク境界を越えません。 仮想ネットワーク リソースの場合は、ポイント対サイト VPN との仮想ネットワーク統合を使用します。 オンプレミス リソースの場合は、TLS 1.2 でのハイブリッド接続またはサイト間 VPN との仮想ネットワーク統合を使用します。 バックエンドの Azure サービスで、アプリから可能な限り最小の IP アドレス セットのみを許可するようにします。 「IP アドレスを見つける」を参照してください。
ログ記録と監視
包括的なログ記録と監視の実装は、潜在的なセキュリティの脅威を検出し、Azure App Service のデプロイに関する問題のトラブルシューティングを行う上で不可欠です。
診断ログを有効にする: Azure App Service 診断ログを構成して、アプリケーション エラー、Web サーバー ログ、失敗した要求トレース、詳細なエラー メッセージを追跡して、セキュリティの問題を特定し、問題をトラブルシューティングします。 「Azure App Service でアプリの診断ログを有効にする」を参照してください。
Azure Monitor と統合する: App Service からログとメトリックを収集して分析するように Azure Monitor を設定し、セキュリティ イベントとパフォーマンスの問題に対する包括的な監視とアラートを有効にします。 Azure App Service でのアプリの監視に関するページを参照してください。
Application Insights の構成: Application Insights を実装して、リアルタイムの監視と分析機能を使用して、アプリケーションのパフォーマンス、使用パターン、および潜在的なセキュリティの問題に関する詳細な分析情報を取得します。 Azure App Service のパフォーマンスの監視に関するページを参照してください。
セキュリティ アラートの設定: カスタム アラートを作成して、異常な使用パターン、潜在的なセキュリティ侵害、または App Service リソースに影響するサービスの中断を通知します。 Azure Monitor を使用したメトリック アラートの作成、表示、管理に関するページを参照してください。
正常性チェックを有効にする: アプリケーションの運用状態を監視し、可能な場合は問題を自動的に修復するように正常性チェックを構成します。 正常性チェックを使用した App Service インスタンスの監視を参照してください。
コンプライアンスとガバナンス
Azure App Service アプリケーションの安全な運用には、適切なガバナンスを確立し、関連する標準に準拠することが不可欠です。
Azure Policy の実装: コンプライアンス要件を監査および適用する Azure Policy 定義を作成して割り当てることで、App Service デプロイに組織全体のセキュリティ標準を適用します。 Azure App Service の Azure Policy 規制コンプライアンスコントロールを参照してください。
セキュリティに関する推奨事項を確認する: Microsoft Defender for Cloud を使用して App Service のセキュリティ体制を定期的に評価し、セキュリティの脆弱性と構成ミスを特定して修復します。 Azure App Service Web アプリと API の保護に関するページを参照してください。
セキュリティ評価の実施: App Service アプリケーションの定期的なセキュリティ評価と侵入テストを実行して、潜在的な脆弱性とセキュリティの弱点を特定します。 Microsoft クラウド セキュリティ ベンチマークを参照してください。
規制コンプライアンスを維持する: 特にデータ保護とプライバシーに関して、業界と地域に適用される規制要件に従って App Service のデプロイを構成します。 Azure コンプライアンスのドキュメントを参照してください。
セキュリティで保護された DevOps プラクティスを実装する: コード スキャン、依存関係チェック、自動セキュリティ テストなど、App Service にアプリケーションをデプロイするためのセキュリティで保護された CI/CD パイプラインを確立します。 Azure の DevSecOps を参照してください。
バックアップと回復
Azure App Service デプロイでビジネス継続性とデータ保護を確保するには、堅牢なバックアップと回復のメカニズムを実装することが不可欠です。
自動バックアップを有効にする: 誤って削除、破損、またはその他の障害が発生した場合にアプリケーションとデータを確実に回復できるように、App Service アプリケーションのスケジュールされたバックアップを構成します。 「Azure App Service でのアプリのバックアップと復元」を参照してください。
バックアップリテンション期間を構成する: ビジネス要件とコンプライアンスのニーズに基づいてバックアップに適切な保有期間を設定し、必要な期間にわたって重要なデータが保持されるようにします。 「Azure App Service でのアプリのバックアップと復元」を参照してください。
複数リージョンのデプロイを実装する: リージョンの障害が発生した場合に高可用性とディザスター リカバリー機能を提供するために、複数のリージョンに重要なアプリケーションをデプロイします。 「 チュートリアル: App Service で高可用性マルチリージョン アプリを作成する」を参照してください。
バックアップ復元のテスト: バックアップの復元プロセスを定期的にテストして、バックアップが有効であり、必要に応じて正常に復元できることを確認し、アプリケーションの機能とデータの整合性の両方を確認します。 「バックアップからアプリを復元する」を参照してください。
復旧手順を文書化する: 復旧手順に関する包括的なドキュメントを作成して維持し、サービスの中断や災害時の迅速かつ効果的な対応を保証します。
サービス固有のセキュリティ
Azure App Service には、Web アプリケーションの全体的なセキュリティを確保するために対処する必要がある固有のセキュリティに関する考慮事項があります。
基本認証を無効にする: セキュリティが強化された OAuth 2.0 トークン ベースの認証を提供する Microsoft Entra ID ベースの認証を優先して、FTP および SCM エンドポイントの基本ユーザー名とパスワード認証を無効にします。 「Azure App Service デプロイで基本認証を無効にする」を参照してください。
安全な FTP/FTPS デプロイ: デプロイに FTP を使用する場合は、FTP アクセスを無効にするか、FTPS 専用モードを適用して、資格情報とコンテンツがクリア テキストで送信されないようにします。 新しいアプリは、既定で FTPS のみを受け入れるように設定されています。 FTP/S を使用した Azure App Service へのアプリのデプロイに関するページを参照してください。
完全なネットワーク分離を実現する: App Service Environment を使用して、独自の Azure Virtual Network インスタンス内の専用 App Service Environment 内でアプリを実行します。 これにより、専用パブリック エンドポイントを使用した共有インフラストラクチャからの完全なネットワーク分離、内部専用アクセス用の内部ロード バランサー (ILB) オプション、およびエンタープライズ レベルの保護のために Web アプリケーション ファイアウォールの背後で ILB を使用する機能が提供されます。 「Azure App Service 環境の概要」を参照してください。
DDoS 保護を実装する: Web アプリケーション ファイアウォール (WAF) と Azure DDoS 保護を使用して、新たに発生する DDoS 攻撃から保護します。 ネットワーク レベルの DDoS 攻撃に対するプラットフォーム レベルの保護のために WAF を使用して Azure Front Door をデプロイします。 Azure DDoS Protection と WAF を使用した Azure Front Door に関するページを参照してください。