次の方法で共有


Azure App Service のセキュリティ

この記事では、 Azure App Service が Web アプリ、モバイル アプリ バックエンド、API アプリ、または 関数アプリをセキュリティで保護する方法について説明します。 この記事では、組み込みの 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 アプリを脅威から保護するためのその他の方法について説明します。

HTTPS と証明書

App Service を使用して 、HTTPS 経由でアプリをセキュリティで保護できます。 アプリが作成されると、既定のドメイン名 <app_name>.azurewebsites.net は HTTPS 経由で既にアクセスできます。 アプリのカスタム ドメインを構成する場合は、クライアント ブラウザーがカスタム ドメインへのセキュリティで保護された HTTPS 接続を行えるように、TLS/SSL 証明書を使用してセキュリティで保護します。

App Service では、次の種類の証明書がサポートされています。

  • 無料の App Service マネージド証明書
  • App Service 証明書
  • サードパーティの証明書
  • Azure Key Vault からインポートされた証明書

詳細については、「 Azure App Service での TLS/SSL 証明書の追加と管理」を参照してください。

セキュリティで保護されていないプロトコル (HTTP、TLS 1.0、FTP)

既定では、App Service は HTTP 要求から HTTPS へのリダイレクトを強制します。 セキュリティで保護されていない要求は、アプリケーション コードに到達する前にリダイレクトされます。 この動作を変更するには、「 全般設定の構成」を参照してください。

Azure App Service では、Web アプリへの受信要求に対して次の トランスポート層セキュリティ (TLS) バージョンがサポートされています。

  • TLS 1.3: 最新かつ最も安全なバージョン。
  • TLS 1.2: 新しい Web アプリの既定の最小 TLS バージョン。
  • TLS 1.1 および TLS 1.0: 下位互換性のためにサポートされているバージョンですが、 Payment Card Industry Data Security Standard (PCI DSS) などの業界標準では安全とは見なされません。

Web アプリとそのソース管理マネージャー (SCM) サイトへの受信要求の最小 TLS バージョンを構成できます。 既定では、最小値は TLS 1.2 に設定されています。 異なる TLS バージョンを許可するには、「 全般設定の構成」を参照してください。

App Service では、アプリ ファイルをデプロイするための FTP と FTPS の両方がサポートされています。 新しいアプリは、既定で FTPS のみを受け入れるように設定されています。 セキュリティを強化するには、可能であれば FTP ではなく FTPS を使用します。 FTP/S を使用していない場合は、 無効にする必要があります。 詳細については、「 FTP/S を使用して Azure App Service にアプリをデプロイする」を参照してください。

静的 IP の制限事項

既定では、App Service アプリはすべてのインターネット IP アドレスからの要求を受け入れますが、IP アドレスのサブセットへのアクセスを制限できます。 Windows 上の App Service を使用して、アプリへのアクセスを許可される IP アドレスの一覧を定義できます。 許可一覧には、個々 の IP アドレスまたはサブネット マスクによって定義された IP アドレスの範囲を含めることができます。 詳細については、「Azure App Service のアクセス制限を設定する」を参照してください。

Windows 上の App Service では、 web.config ファイルを構成して IP アドレスを動的に制限することもできます。 詳細については、「 動的 IP セキュリティ <dynamicIpSecurity>」を参照してください。

クライアントの認証と承認

App Service は、ユーザーまたはクライアント アプリの組み込みの認証と承認を提供します。 独自の認証および承認ソリューションを実装することも、App Service で処理できるようにすることもできます。

有効にすると、組み込みの認証と承認によって、アプリケーション コードをほとんどまたはまったく使用せず、ユーザーとクライアント アプリにサインインできます。 認証および承認モジュールは、Web 要求をアプリケーション コードに渡す前に処理し、承認されていない要求を拒否します。

App Service の認証および認可は、Microsoft Entra ID、Microsoft アカウント、Facebook、Google、X を含む複数の認証プロバイダーをサポートしています。詳細については、「Azure App Service での認証および認可」を参照してください。

サービス間認証

バックエンド サービスに対して認証を行う場合、App Service にはニーズに応じて次の 2 つのメカニズムが用意されています。

リモート リソースへの接続性

アプリでは、 Azure のリソースオンプレミスのリソース、または Azure 仮想ネットワーク内のリソースにアクセスすることが必要になる場合があります。 App Service には、これらのシナリオごとにセキュリティで保護された接続方法が用意されています。 また、バックエンド リソースで暗号化されていない接続が許可されている場合でも、常に暗号化された接続を使用するなど、セキュリティのベスト プラクティスを確認する必要があります。

また、バックエンドの Azure サービスで、可能な限り最小の IP アドレス セットが許可されるようにします。 アプリの送信 IP アドレスを確認するには、「 送信 IP を検索する」を参照してください。

Azure リソース

アプリが Azure SQL DatabaseAzure Storage などの Azure リソースに接続する場合、接続は Azure にとどまり、ネットワーク境界を越えることはありません。 接続では Azure の共有ネットワークが使用されるため、暗号化されていることを確認します。

アプリが App Service Environment でホストされている場合は、 仮想ネットワーク サービス エンドポイントを使用して、サポートされている Azure サービスに接続する必要があります。

Azure 仮想ネットワーク内のリソース

アプリは、ポイント対サイト VPN を使用した仮想ネットワーク統合を通じて、Azure 仮想ネットワーク内のリソースにアクセスできます。 その後、アプリはプライベート IP アドレスを使用して、仮想ネットワーク内のリソースにアクセスできます。 ポイント対サイト接続は、引き続き Azure の共有ネットワークを経由します。

Azure の共有ネットワークからリソース接続を完全に分離するには、 App Service 環境でアプリを作成します。 App Service Environment は常に専用の仮想ネットワークにデプロイされるため、アプリと仮想ネットワーク内の他のリソース間の接続は完全に分離されます。 App Service 環境でのネットワーク セキュリティの詳細については、「 ネットワークの分離」を参照してください。

オンプレミスのリソース

次の方法で、データベースなどのオンプレミス リソースに安全にアクセスできます。

  • ハイブリッド接続では、共有アクセス署名キーで TLS 1.2 を使用する伝送制御プロトコル (TCP) トンネルを介してリモート リソースへのポイントツーポイント接続が確立されます。

  • サイト間 VPN または App Service Environment とサイト間 VPN を使用した仮想ネットワークの統合。 これらの方法は、「Azure 仮想ネットワーク内のリソース」で説明されているように、アプリの 仮想ネットワークをオンプレミス ネットワークに接続しますが、仮想ネットワークはサイト間 VPN を介してオンプレミス ネットワーク 接続します。 これらのネットワーク トポロジでは、アプリは仮想ネットワーク内の他のリソースに接続するのと同じ方法で、オンプレミスのリソースに接続できます。

アプリケーション シークレット

データベース資格情報、API トークン、秘密キーなどのアプリケーション シークレットをコードまたは構成ファイルに格納しないでください。 コード言語の標準パターンを使用して 、環境変数 としてアクセスします。 App Service では、 アプリ設定 を使用し、特に .NET アプリケーションの場合は接続文字列を使用して環境変数を定義 します

アプリ設定と接続文字列は Azure に暗号化されて格納され、アプリの起動時にアプリのプロセス メモリに挿入される直前に暗号化が解除されます。 暗号化キーは定期的に回転されます。

また、高度なシークレット管理のために、App Service アプリを Azure Key Vault と統合することもできます。 App Service アプリは、 マネージド ID を使用して必要なシークレットを取得することで、キー コンテナーに安全にアクセス できます。

ネットワークの分離

すべての App Service 価格レベルでは、Isolated 価格レベルを除き、Azure 共有ネットワーク インフラストラクチャでアプリが実行されます。 たとえば、パブリック IP アドレスとフロントエンド ロード バランサーは他のテナントと共有されます。

Isolated レベルは、Azure Virtual Network の独自のインスタンス内の専用 App Service Environment 内でアプリを実行することで、完全なネットワーク分離を提供します。 ネットワーク分離を使用すると、次のことができます。

  • 専用フロントエンドを使用して専用パブリック エンドポイントを介してアプリを提供します。
  • Azure 仮想ネットワーク内からのみアクセスできる内部ロード バランサー (ILB) を使用して内部アプリを提供します。 ILB にはプライベート サブネットの IP アドレスがあり、アプリはインターネットから完全に分離されます。
  • Web アプリケーション ファイアウォール (WAF) の背後で ILB を使用する。 WAF は、エンタープライズ レベルの URI フィルタリング、分散型サービス拒否 (DDoS) 攻撃からの保護、および公開アプリケーションの SQL インジェクション防止を提供します。

DDoS 保護

Web ワークロードの場合は、 WAFAzure DDoS 保護 を使用して、新たに発生する DDoS 攻撃から保護します。 もう 1 つのオプションは、ネットワーク レベルの DDoS 攻撃に対するプラットフォーム レベルの保護のために WAF を使用して Azure Front Door をデプロイすることです。