この記事では、次のことに役立つ情報を提供します。
- クラウドでアプリケーションをホスティングすることに対するセキュリティ上の利点を理解する
- 他のクラウド サービス モデルに対するサービスとしてのプラットフォーム (PaaS) のセキュリティ上の利点を評価する
- セキュリティの取り組みを、ネットワークを中心としたアプローチから ID を中心とした境界セキュリティのアプローチに切り替える
- 一般的なPaaSセキュリティのベストプラクティスを実装する
「セキュリティで保護されたアプリケーションを Azure 上で開発する」は、クラウド用のアプリケーションを開発するときに、ソフトウェア開発ライフサイクルの各段階で考慮する必要のあるセキュリティの問題や制御に対する一般的なガイドです。
クラウド セキュリティの利点
お客様と Microsoft の間の責任の分担を理解することが重要です。 オンプレミスでは、スタック全体を所有していますが、クラウドに移行する際には、一部の責任が Microsoft に移ります。
クラウドはセキュリティ上の利点を提供します。 オンプレミス環境では、組織は未履行の責任やセキュリティへの投資リソースが限られている可能性が高いです。 この状況は、攻撃者があらゆる層の脆弱性を悪用できる環境を作り出します。
組織は、プロバイダーのクラウドベースのセキュリティ機能とクラウド インテリジェンスを使用して、脅威の検出と応答時間を向上させることができます。 クラウド プロバイダーに責任をシフトすることで、セキュリティの適用範囲を広げることができるため、これまでセキュリティに費やしてきたリソースと予算を、事業のその他の優先事項に割り当てることができます。
PaaS クラウド サービス モデルのセキュリティ上の利点
Azure PaaS導入とオンプレミスでのセキュリティ利点を比較しましょう。
スタックの一番下、つまり物理インフラストラクチャから始めますが、Microsoft によって一般的なリスクと責任が軽減されます。 Microsoftは常にMicrosoftクラウドを監視しているため、攻撃は難しいです。 Microsoft Cloud を標的として追い続けることは、攻撃者にとって意味がありません。 攻撃者が十分な資金や資源を持っていなければ、他の標的に移る可能性が高いです。
スタックの中央では、PaaSの展開とオンプレミスは違いません。 アプリケーション層やアカウント・アクセス管理層でも同様のリスクが存在します。 この記事の次のステップセクションでは、これらのリスクを排除または最小化するためのベストプラクティスを案内します。
スタックの頂点であるデータガバナンスと権利管理では、キー管理が軽減できるリスクを一つ引き受けます。 鍵管理は追加の責任ですが、PaaSの導入にはもはや管理する必要のない領域が含まれます。 キー管理にリソースを振り向けることができます。
Azure プラットフォームでは、さまざまなネットワーク ベースのテクノロジを使用して、強力な DDoS 保護も提供されます。 ただし、ネットワークベースのすべての種類の DDoS 保護方法には、リンクごとやデータセンターごとに限界があります。 大規模な DDoS 攻撃の影響を回避するには、DDoS 攻撃に対する防御を迅速かつ自動的にスケールアウトする Azure のコア クラウド機能を活用できます。
プライマリ セキュリティ境界としての ID
PaaSの導入は、セキュリティに対する全体的なアプローチを変えます。 すべて自分で制御しなければならない状況から、Microsoft と責任を分担する状況へと変わります。
PaaS と従来のオンプレミスデプロイのもう 1 つの大きな違いは、プライマリ セキュリティ境界を定義する新しいビューです。 歴史的に、オンプレミスの主要なセキュリティ境界はネットワークであり、ほとんどのオンプレミスのセキュリティ設計はネットワークを主要なセキュリティピボットとして用いています。 PaaS導入においては、アイデンティティを主要なセキュリティ境界と考えてください。
クラウド コンピューティングの 5 つの重要な特性の 1 つは広範なネットワーク アクセスであるため、ネットワーク中心の考えは関連性が低くなります。 クラウド コンピューティングが目指していることは、どこにいるかに関係なくユーザーがリソースにアクセスできるようにすることです。 ほとんどのユーザーにとって、その位置はインターネット上のどこかにあります。
以下の図は、セキュリティ境界がネットワーク境界から識別境界へと進化した経緯を示しています。 セキュリティにおいては、ネットワークの保護よりもデータの保護、アプリとユーザーのセキュリティ管理が重要になってきています。 主な違いは、お客様が、セキュリティを会社にとって重要なものにより近い場所に配備したいと考えていることです。
当初、Azure PaaS サービス (Azure App Service や Azure SQL など) では、従来のネットワーク境界防御がほとんどまたはまったく提供されていません。 この要素の目的はインターネット(ウェブロール)に露出することであり、認証は新しい境界線(例えばAzure SQL)を提供します。
現代のセキュリティ慣行では、敵がネットワークの境界を突破したと仮定しています。 したがって、現代の防衛実践はアイデンティティに移行しています。 組織は、強力な認証と認可の管理基準を維持することで、ID ベースのセキュリティ境界を確立する必要があります。
ID 管理のベスト プラクティス
アイデンティティ境界を管理するには以下のベストプラクティスを活用してください。
ベストプラクティス:まず、AzureリソースにマネージドIDを用いて、認証情報を保存せずに他のサービスに安全にアクセスできることを検討してください。 詳細:管理型アイデンティティは、Azureサービス上で動作するアプリケーションに自動的にIDを提供し、コードや設定ファイルの認証情報なしでMicrosoft Entra IDをサポートするサービスに認証できるようにします。 このアイデンティティにより、認証情報の露出リスクが減り、アプリケーションのアイデンティティ管理が簡素化されます。
ベスト プラクティス: キーと資格情報をセキュリティ保護して PaaS デプロイをセキュリティ保護する 詳細: キーや資格情報の紛失は、よくある問題です。 鍵や秘密をハードウェアセキュリティモジュール(HSM)に保存する集中型ソリューションを使うこともできます。 Azure Key Vaultは、認証キー、ストレージアカウントキー、データ暗号化キー、.pfxファイル、パスワードをHSMで保護されたキーを用いて暗号化することで、あなたの鍵や秘密を保護します。
ベスト プラクティス: 資格情報やその他のシークレットをソース コードや GitHub には置かないでください。 詳細: 資格情報やその他のシークレットを紛失するよりも悪い唯一のことは、権限のない第三者がキーや資格情報にアクセスすることです。 攻撃者はボット テクノロジを利用して、GitHub などのコード レポジトリに格納されているキーやシークレットを検索することができます。 これらの公開コードリポジトリに鍵や秘密情報を入れないでください。
ベスト プラクティス: 強力な認証と承認のプラットフォームを使用する。 詳細: カスタム ユーザー ストアではなく、 認証に Microsoft Entra ID を 使用します。 Microsoft Entra ID を使用する場合は、プラットフォームベースのアプローチを利用し、承認された ID の管理を委任します。 Microsoft Entra ID アプローチは、従業員が退職し、複数の ID および承認システムを通じて情報を反映する必要がある場合に特に重要です。
カスタム コードではなく、プラットフォームが提供する認証と承認のメカニズムを使用するようにします。 その理由は、カスタム認証コードの開発ではエラーが生じやすいためです。 ほとんどの開発者はセキュリティの専門家ではなく、認証や認可の微妙な違いや最新の動向を把握していない可能性が高いです。 商用コード (たとえば Microsoft のコード) は、通常徹底的にセキュリティ レビューされています。
多要素認証(MFA)を使用し、パスキー、FIDO2、証明書ベース認証(CBA)などのフィッシング耐性MFA手法が条件付きアクセスポリシーを通じて強制されていることを確認してください。 少なくとも、すべての管理者に対してこれらを要求し、最適なセキュリティのためにテナント全体に実装します。 Azure 管理 (ポータル/リモート PowerShell) インターフェイスと顧客向けサービスの両方へのアクセスは、Microsoft Entra 多要素認証を使用するように設計および構成する必要があります。
アプリのサインインには、Microsoft Entra IDを通じてOAuth 2.0のOpenID Connect(OIDC)をご利用ください。 これらのプロトコルは広範なピアレビューを経ており、認証や承認のためのプラットフォームライブラリの一部として実装されている可能性が高いです。
アプリケーション設計時に脅威モデリングを使用する
Microsoft セキュリティ開発ライフ サイクル (Security Development Lifecycle) は、設計段階にチームが脅威モデリングと呼ばれるプロセスを行う必要があることを指定しています。 このプロセスを円滑にするために、MicrosoftはSDL脅威モデリングツールを開発しました。 アプリケーションの設計をモデリングし、すべての信頼境界を超える STRIDE 脅威を列挙することによって、早い段階で設計エラーを検出できます。
次の表は STRIDE 脅威の一覧と Azure の機能が使用する軽減策の例です。 これらの軽減策はあらゆる状況で機能するわけではありません。
| 脅威 | セキュリティ プロパティ | 潜在的な Azure プラットフォームの軽減策 |
|---|---|---|
| なりすまし | 認証 | HTTPS 接続を要求する。 |
| 改ざん | 完全性 | TLS または SSL 証明書を検証する。 |
| 否認 | 否認防止 | Azure の監視と診断を有効にします。 |
| 情報漏えい | 機密情報 | サービス証明書を使用して保存中の機密データを暗号化します。 |
| Denial of service (サービス拒否) | 可用性 | 潜在的なサービス拒否状態のパフォーマンス メトリックを監視する。 接続のフィルターを実装する。 |
| 権限の昇格 | 認可 | Privileged Identity Management を使用します。 |
Azure App Service
Azure App Serviceは、あらゆるプラットフォームやデバイス向けにウェブやモバイルアプリを作成し、クラウドやオンプレミスのどこでもデータに接続できるPaaSサービスです。 App Service には、以前は Azure Websites および Azure Mobile Services として個別に提供されていた Web 機能とモバイル機能が含まれています。 さらに、ビジネス プロセスの自動化やクラウド API のホストに利用できる新しい機能も備えています。
App Serviceの以下のベストプラクティスを活用してください。
ベスト プラクティス: Microsoft Entra ID によって認証します。 詳細: App Service は、ID プロバイダーに対して OAuth 2.0 サービスを提供します。 OAuth 2.0 は、Web アプリケーション、デスクトップ アプリケーション、および携帯電話に特定の認証フローを提供しながら、クライアント開発者のシンプル性を実現することに焦点を当てています。 Microsoft Entra ID では、モバイルおよび Web アプリケーションへのアクセスを認可できるように OAuth 2.0 を使用します。
ベスト プラクティス: 知る必要性と最小権限という 2 つのセキュリティ原則に基づいて、アクセスを制限します。 詳細: アクセスの制限は、データ アクセスにセキュリティ ポリシーを適用する必要がある組織にとって、絶対に欠かせないものです。 Azure RBAC を使用して、特定のスコープでユーザー、グループ、アプリケーションにアクセス許可を割り当てることができます。
ベスト プラクティス: キーを保護します。 詳細: Azure Key Vault は、クラウド アプリケーションやサービスで使われる暗号化キーとシークレットをセキュリティで保護するために役立ちます。 Key Vault を使用すると、キーとシークレット (認証キー、ストレージ アカウント キー、データ暗号化キー、PFX ファイル、パスワードなど) をハードウェア セキュリティ モジュール (HSM) で保護されたキーを使用して暗号化できます。 さらに安心感を高めたい場合には、HSM でキーのインポートや生成を行うことができます。 詳細については、「Azure Key Vault とは」を参照してください。 Key Vault を使用して、自動更新で TLS 証明書の管理することもできます。
ベスト プラクティス: 受信ソース IP アドレスを制限します。 詳細: App Service Environment には、ネットワーク セキュリティ グループによる受信ソース IP アドレスの制限に役立つ、仮想ネットワーク統合機能が用意されています。 仮想ネットワークを使用すると、Azure リソースをインターネット以外のルーティング可能なネットワークに配置し、アクセスを制御できます。 詳細については、「アプリを Azure 仮想ネットワークに統合する」を参照してください。 また、 プライベートリンク(プライベートエンドポイント) を使い、パブリックネットワークを無効にすることで、App Serviceと他のサービス間のプライベートネットワーク接続を強制することもできます。
ベスト プラクティス: HTTPS のみのトラフィックを適用し、すべての接続に TLS 1.2 以降が必要です。 可能な限りFTPアクセスを無効にしてください。 ファイル転送が必要な場合は、FTPSを使用して安全かつ暗号化された転送を確保してください。 詳細: HTTPS トラフィックのみを受け入れるように App Service を構成すると、転送中にデータが暗号化され、機密情報が傍受から保護されます。 TLS 1.2 以降を必要とすると、以前のバージョンのプロトコルで見つかった脆弱性に対するセキュリティが強化されます。 FTP を無効にすると、資格情報またはデータが暗号化されずに送信されるリスクが軽減されます。 ファイル転送が必要な場合は、FTPSのみを有効にしてください。FTPSは送信中に認証情報とデータを暗号化します。
ベスト プラクティス: App Service 環境のセキュリティ状態を監視する。 詳細: Microsoft Defender for Cloud を使用して App Service 環境を監視します。 Defender for Cloud では、潜在的なセキュリティの脆弱性を特定すると、必要な抑制力を構成するプロセスを指示する推奨事項が作成されます。 Microsoft Defender for App Service は、App Service リソースに対する脅威保護を提供します。
詳細については、「 Microsoft Defender for App Service」を参照してください。
Web Application Firewall
Web アプリケーションが、一般的な既知の脆弱性を悪用した悪意のある攻撃の的になるケースが増えています。 一般的な脆弱性には、SQLインジェクション攻撃やクロスサイトスクリプト攻撃があります。 アプリケーションコードにおけるこのような攻撃を防ぐことは困難であり、アプリケーショントポロジーの多くの層で厳格な保守、パッチ適用、監視が必要になることがあります。 集中型のウェブアプリケーションファイアウォールはセキュリティ管理を簡素化し、アプリケーション管理者に対して脅威や侵入に対するより良い保証を提供します。 WAF ソリューションは、個々の Web アプリケーションをセキュリティで保護するよりも、中央の場所で既知の脆弱性にパッチを適用することで、セキュリティの脅威に迅速に対応することもできます。
Azure Web Application Firewall (WAF) は、一般的な悪用や脆弱性から Web アプリケーションを一元的に保護します。 WAF は、 Azure Application Gateway と Azure Front Door を介して使用できます。
DDoS 保護
Azure には、 DDoS IP 保護と DDoS ネットワーク保護 の 2 つの主要な DDoS 保護レベルが用意されています。 これらのオプションは、さまざまなシナリオに対応し、異なる機能と価格を備えています。
- DDoS IP 保護: 特定のパブリック IP アドレスを保護するのに最適です。IP レベルで重要な DDoS 軽減策を必要とする小規模または対象のデプロイに最適です。
- DDoS ネットワーク保護: 高度な軽減策、分析、統合により、仮想ネットワーク全体をカバーします。は、より広範なセキュリティを必要とする大規模またはエンタープライズ環境に適しています。
コストに敏感で焦点を絞ったケースにはDDoS IP保護を選択してください。 包括的なカバレッジと高度な機能のためにDDoSネットワーク保護を選択してください。
DDoS Protection は、ネットワーク 層 (3/4) で防御します。 アプリケーション層 (7) 防御の場合は、WAF を追加します。 アプリケーション DDoS 保護を参照してください。
アプリケーションのパフォーマンスを監視する
Azure Monitor は 、クラウドおよびオンプレミス環境からのテレメトリを収集、分析、および処理します。 効果的な監視戦略を策定することで、アプリケーションのコンポーネントの動作状況を詳細に把握できます。 この戦略は、重大な問題を通知して問題になる前に解決できるため、稼働時間を延ばすのに役立ちます。 この戦略は、セキュリティに関連する異常を検出するのにも役立ちます。
Application Insights を使用して、クラウドとオンプレミスのどちらでホストされているかに関係なく、アプリケーションの可用性、パフォーマンス、使用状況を監視します。 Application Insights を使用することによって、アプリケーションのエラーを、ユーザーからの報告を待つことなく、迅速に特定して診断できます。 収集した情報を活用すれば、アプリケーションのメンテナンスや機能強化に関する選択を十分な情報に基づいて判断することができます。
Application Insights には、収集されたデータを操作するための豊富なツールが用意されています。 Application Insights では、そのデータは共通リポジトリに格納されます。 アラート、ダッシュボード、Kusto クエリ言語を使用した詳細分析などの共有機能を活用できます。
セキュリティ侵入テストを実施する
セキュリティ上の防御を検証することは、他の機能をテストすることと同じくらい重要です。 侵入テストを、標準的なビルドおよびデプロイ プロセスの一環として実施してください。 デプロイしたアプリケーションに対して定期的なセキュリティ テストと脆弱性スキャンをスケジュールし、開放ポート、エンドポイント、攻撃を監視します。
次のステップ
本記事では、Azure PaaS導入のセキュリティ利点とクラウドアプリケーションのセキュリティベストプラクティスに焦点を当てています。 次に、特定のAzureサービスを活用してPaaSのウェブおよびモバイルソリューションを保護するための推奨プラクティスを学びましょう。 まずはAzure App Service、Azure SQL Database、Azure Synapse Analytics、そしてAzure Storageから始めてください。 他のAzureサービスに関する推奨実践に関する記事が公開されるにつれて、このリストにリンクを提供します:
クラウド用のアプリケーションを開発するときに、ソフトウェア開発ライフサイクルの各段階で考慮する必要のあるセキュリティの問題や制御については、「セキュリティで保護されたアプリケーションを Azure 上で開発する」を参照してください。
Azure を使用してクラウド ソリューションを設計、デプロイ、管理するときに使用するセキュリティのベスト プラクティスの詳細については、「Azure セキュリティのベスト プラクティスとパターン」を参照してください。
Azure のセキュリティとそれに関連する Microsoft サービスの一般情報については、以下のリソースを参照してください。
- Azureセキュリティドキュメント - 包括的なセキュリティガイダンス。
- Microsoft Security Response Center - Azureの問題を含むMicrosoftセキュリティ脆弱性をsecure@microsoft.comにメールで報告してください。