PaaS デプロイをセキュリティで保護する
この記事では、次のことに役立つ情報を提供します。
- クラウドでアプリケーションをホスティングすることに対するセキュリティ上の利点を理解する
- 他のクラウド サービス モデルに対するサービスとしてのプラットフォーム (PaaS) のセキュリティ上の利点を評価する
- セキュリティの取り組みを、ネットワークを中心としたアプローチから ID を中心とした境界セキュリティのアプローチに切り替える
- 一般的な PaaS セキュリティのベスト プラクティスの推奨事項を実装する
「セキュリティで保護されたアプリケーションを Azure 上で開発する」は、クラウド用のアプリケーションを開発するときに、ソフトウェア開発ライフサイクルの各段階で考慮する必要のあるセキュリティの問題や制御に対する一般的なガイドです。
クラウド セキュリティの利点
お客様と Microsoft の間の責任の分担を理解することが重要です。 オンプレミスでは、お客様はスタック全体を所有しますが、クラウドに移行すると、責任の一部は Microsoft に移譲されます。
クラウド内に存在することには、セキュリティ上の利点があります。 オンプレミス環境では、組織は責任を果たしきれず、セキュリティに投資できるリソースが限られていることが多いため、攻撃者がすべての階層で脆弱性を悪用できる環境が生まれています。
組織は、プロバイダーのクラウド ベースのセキュリティ機能とクラウド インテリジェンスを使用して、その脅威の検出と応答時間を向上させることができます。 クラウド プロバイダーに責任をシフトすることで、セキュリティの適用範囲を広げることができるため、これまでセキュリティに費やしてきたリソースと予算を、事業のその他の優先事項に割り当てることができます。
PaaS クラウド サービス モデルのセキュリティ上の利点
オンプレミスに対する Azure PaaS デプロイのセキュリティ上の利点を見ていきましょう。
スタックの一番下、つまり物理インフラストラクチャから始めますが、Microsoft によって一般的なリスクと責任が軽減されます。 Microsoft Cloud は Microsoft によって継続的に監視されているため、攻撃することは困難です。 Microsoft Cloud を標的として追い続けることは、攻撃者にとって意味がありません。 莫大な資金とリソースがない限り、攻撃者は他の標的に移動します。
スタックの真ん中の部分に関しては、PaaS デプロイとオンプレミスで違いはありません。 アプリケーション層、アカウントの管理層、アクセスの管理層などでは同じリスクがあります。 この記事の「次のステップ」セクションでは、これらのリスクを取り除いたり最小限に抑えるためのベスト プラクティスを紹介します。
スタックの一番上、つまりデータ ガバナンスと権利管理においては、キー管理によって軽減されるリスクが 1 つあります。 (キー管理についてはベスト プラクティスで説明します。)キー管理は付加的な責任ですが、お客様の管理が不要になった領域が PaaS デプロイにあるため、リソースをキー管理に移すことができます。
Azure プラットフォームではネットワークベースのさまざまなテクノロジを使用して、強力な DDoS 保護を提供します。 ただし、ネットワークベースのすべての種類の DDoS 保護方法には、リンクごとやデータセンターごとに限界があります。 大規模な DDoS 攻撃の影響を回避するには、DDoS 攻撃に対する防御を迅速かつ自動的にスケールアウトする Azure のコア クラウド機能を活用できます。 これを実行する方法については、推奨されるプラクティスの記事で詳しく説明します。
Defender for Cloud の思考の最新化
PaaS デプロイにより、セキュリティへのアプローチ全般に変革がもたらされます。 すべて自分で制御しなければならない状況から、Microsoft と責任を分担する状況へと変わります。
PaaS と従来のオンプレミス デプロイにおけるもう 1 つの重要な相違点は、主要なセキュリティ境界を定義する新しい視点です。 これまでは、ネットワークこそがオンプレミスの主要なセキュリティ境界であり、オンプレミス セキュリティ設計のほとんどでは、主要なセキュリティの中心としてネットワークが使用されてきました。 PaaS デプロイでは、ID を主要なセキュリティ境界と考えることによって、お客様により充実したサービスを提供します。
主要なセキュリティ境界として ID のポリシーを採用
クラウド コンピューティングの 5 つの重要な特性の 1 つは広範なネットワーク アクセスであるため、ネットワーク中心の考えは関連性が低くなります。 クラウド コンピューティングが目指していることは、どこにいるかに関係なくユーザーがリソースにアクセスできるようにすることです。 ほとんどのユーザーにとって、自分たちのいる場所はインターネット上のどこかになります。
次の図は、セキュリティ境界がネットワーク境界から ID 境界へと発展してきたことを示しています。 セキュリティにおいては、ネットワークの保護よりもデータの保護、アプリとユーザーのセキュリティ管理が重要になってきています。 主な違いは、お客様が、セキュリティを会社にとって重要なものにより近い場所に配備したいと考えていることです。
当初 Azure PaaS サービス (Web ロールや Azure SQL など) では、従来のネットワーク境界における防御はほとんどまたはまったく提供していませんでした。 要素の目的はインターネットに公開される (Web ロール) ことであり、認証によって新しい境界 (BLOB や Azure SQL など) が提供されることが理解されました。
最新のセキュリティ プラクティスでは、攻撃者がネットワーク境界に不正侵入していることを仮定しています。 そのため、最新の防御対策は ID に移行しています。 組織は、強力な認証と承認によるウィルス予防策 (ベスト プラクティス) を講じて、ID ベースのセキュリティ境界を確立する必要があります。
ネットワーク境界の基本原則とパターンは、数十年もの間提供されてきました。 これに対して、ID を主要なセキュリティ境界として使用する業界の経験は比較的浅いものです。 とは言え、Microsoft では一般的な推奨事項を提供するのに十分なノウハウを蓄積してきました。この推奨事項は現場における実証済みで、ほぼすべての PaaS サービスに適用されます。
ID 境界を管理するためのベスト プラクティスを次に示します。
ベスト プラクティス: キーと資格情報をセキュリティ保護して PaaS デプロイをセキュリティ保護する 詳細: キーや資格情報の紛失は、よくある問題です。 キーやシークレットをハードウェア セキュリティ モジュール (HSM) に格納する一元化されたソリューションを使用できます。 Azure Key Vault は、HSM によって保護されているキーを使用して、認証キー、ストレージ アカウント キー、データ暗号化キー、.pfx ファイル、およびパスワードを暗号化することによって、キーとシークレットを保護します。
ベスト プラクティス: 資格情報やその他のシークレットをソース コードや GitHub には置かないでください。 詳細: 資格情報やその他のシークレットを紛失するよりも悪い唯一のことは、権限のない第三者がキーや資格情報にアクセスすることです。 攻撃者はボット テクノロジを利用して、GitHub などのコード レポジトリに格納されているキーやシークレットを検索することができます。 これらのパブリックなコード レポジトリには、キーやシークレットを格納しないようにします。
ベスト プラクティス: VM を直接リモート管理できる管理インターフェイスを使用して、PaaS サービスと IaaS サービスのハイブリッドで VM 管理インターフェイスを保護する。 詳細: SSH、RDP、PowerShell リモート処理などのリモート管理プロトコルを使用できます。 通常は、インターネットから VM に直接リモート アクセスできないように設定することをお勧めします。
可能であれば、Azure 仮想ネットワークの仮想プライベート ネットワークを使用するなどの代替アプローチを使用します。 別の方法が利用できない場合は、複雑なパスフレーズおよび 2 要素認証 (Microsoft Entra 多要素認証など) を使用するようにします。
ベスト プラクティス: 強力な認証と承認のプラットフォームを使用する。 詳細: Microsoft Entra ID で、カスタム ユーザー ストアではなくフェデレーション ID を使用します。 フェデレーション ID を使用すると、プラットフォームベースのアプローチを活用して、承認された ID の管理をパートナーに委任することができます。 従業員を解雇し、その情報を複数の ID と承認システムに反映する必要がある場合は、フェデレーション ID によるアプローチが特に重要になってきます。
カスタム コードではなく、プラットフォームが提供する認証と承認のメカニズムを使用するようにします。 その理由は、カスタム認証コードの開発ではエラーが生じやすいためです。 開発者のほとんどはセキュリティ専門家ではなく、細部に留意したり、認証や承認の最新動向を把握している可能性は低くなります。 商用コード (たとえば Microsoft のコード) は、通常徹底的にセキュリティ レビューされています。
2 要素認証を使用します。 2 要素認証はユーザー名や認証パスワードの種類に固有のセキュリティ脆弱性が回避されるため、認証と承認において現在標準になっています。 Azure 管理 (ポータル/リモート PowerShell) インターフェイスと、顧客に提供されるサービスへのアクセスは両方とも、Microsoft Entra 多要素認証を使用するように設計、構成する必要があります。
OAuth2 や Kerberos などの標準的な認証プロトコルを使用します。 これらのプロトコルは幅広くピア レビューされており、認証と承認用にプラットフォーム ライブラリの一部として実装される可能性があります。
アプリケーション設計時に脅威モデリングを使用する
Microsoft セキュリティ開発ライフ サイクル (Security Development Lifecycle) は、設計段階にチームが脅威モデリングと呼ばれるプロセスを行う必要があることを指定しています。 このプロセスを支援するために Microsoft は SDL Threat Modeling Tool を作成しました。 アプリケーションの設計をモデリングし、すべての信頼境界を超える STRIDE 脅威を列挙することによって、早い段階で設計エラーを検出できます。
次の表は STRIDE 脅威の一覧と Azure の機能が使用する軽減策の例です。 これらの軽減策はあらゆる状況で機能するわけではありません。
脅威 | セキュリティ プロパティ | 潜在的な Azure プラットフォームの軽減策 |
---|---|---|
なりすまし | 認証 | HTTPS 接続を要求する。 |
改ざん | 整合性 | TLS または SSL 証明書を検証する。 |
否認 | 否認防止 | Azure の監視と診断を有効にする。 |
情報漏えい | 機密情報 | サービス証明書を使用して保存データを暗号化する。 |
Denial of service (サービス拒否) | 可用性 | 潜在的なサービス拒否状態のパフォーマンス メトリックを監視する。 接続のフィルターを実装する。 |
権限の昇格 | 承認 | Privileged Identity Management を使用する。 |
Azure App Service での開発
PaaS である Azure App Service を使用すると、任意のプラットフォームまたはデバイスを対象とした Web アプリとモバイル アプリを作成し、クラウドやオンプレミスにあるあらゆる場所のデータにアクセスできます。 App Service には、以前は Azure Websites および Azure Mobile Services として個別に提供されていた Web 機能とモバイル機能が含まれています。 さらに、ビジネス プロセスの自動化やクラウド API のホストに利用できる新しい機能も備えています。 単一の統合サービスである App Service により、Web、モバイル、および統合シナリオで豊富な機能セットを利用できます。
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 環境のセキュリティ状態を監視する。 詳細: Microsoft Defender for Cloud を使用し、お使いの App Service 環境を監視します。 Defender for Cloud では、潜在的なセキュリティの脆弱性を特定すると、必要な抑制力を構成するプロセスを指示する推奨事項が作成されます。
Azure クラウド サービス
Azure Cloud Services は、PaaS の 1 つの例です。 このテクノロジは、Azure App Service と同様に、スケーラブルで信頼性が高く、運用コストが低いアプリケーションをサポートするように設計されています。 App Service と同様に、Azure Cloud Services も仮想マシン (VM) 上でホストされます。 しかし、VM に対してより細かな制御を行うことができます。 Azure Cloud Services を使用する VM に独自のソフトウェアをインストールし、それらにリモートでアクセスできます。
Web アプリケーション ファイアウォールをインストールする
Web アプリケーションが、一般的な既知の脆弱性を悪用した悪意のある攻撃の的になるケースが増えています。 よくある攻撃の例として、SQL インジェクション攻撃やクロス サイト スクリプティング攻撃が挙げられます。 アプリケーション コードでこのような攻撃を防ぐことは困難な場合があり、厳格な保守、パッチの適用、アプリケーション トポロジの多数のレイヤーの監視が必要になることもあります。 Web アプリケーション ファイアウォールを一元化することで、セキュリティの管理がはるかに簡単になり、アプリケーション管理者にとっては侵入の脅威からより確実に保護されるようになります。 また、WAF のソリューションは、1 か所に既知の脆弱性の修正プログラムを適用することで、個々の Web アプリケーションをセキュリティで保護する場合と比較して、さらに迅速にセキュリティの脅威に対応できます。
Web アプリケーション ファイアウォール (WAF) では、一般的な悪用や脆弱性から Web アプリケーションを一元的に保護します。
DDoS 保護
Azure DDoS Protection では、アプリケーションの設計に関するベスト プラクティスと組み合わせることにより、DDoS 攻撃からの保護を向上させるための強化された DDoS 軽減機能が提供されます。 すべての境界仮想ネットワークで Azure DDOS Protection を有効にする必要があります。
アプリケーションのパフォーマンスを監視する
監視とは、アプリケーションのパフォーマンス、正常性、可用性を見極めるために、データを収集し、分析することを指します。 効果的な監視戦略を策定することで、アプリケーションのコンポーネントの動作状況を詳細に把握できます。 問題が顕在化する前に解決できるように重大な問題を通知して、アップタイムを向上させることができます。 セキュリティに関連する可能性がある異常を検出することもできます。
Azure Application Insights を使用すると、クラウドにホストされているかオンプレミスかにかかわらず、アプリケーションの可用性、パフォーマンス、使用状況を監視できます。 Application Insights を使用することによって、アプリケーションのエラーを、ユーザーからの報告を待つことなく、迅速に特定して診断できます。 収集した情報を活用すれば、アプリケーションのメンテナンスや機能強化に関する選択を十分な情報に基づいて判断することができます。
Application Insights には、収集されたデータを操作するための豊富なツールが用意されています。 Application Insights では、そのデータは共通リポジトリに格納されます。 アラート、ダッシュボード、Kusto クエリ言語を使用した詳細分析などの共有機能を活用できます。
セキュリティ侵入テストを実施する
セキュリティ上の防御を検証することは、他の機能をテストすることと同じくらい重要です。 侵入テストを、標準的なビルドおよびデプロイ プロセスの一環として実施してください。 デプロイしたアプリケーションに対して定期的なセキュリティ テストと脆弱性スキャンをスケジュールし、開放ポート、エンドポイント、攻撃を監視します。
ファジー テストは、形式が正しくないの入力データを、このデータを解析して使用するプログラム インターフェイス (エントリ ポイント) に提供することで、プログラム エラー (コード エラー) を見つける方法です。
次のステップ
この記事では、Azure PaaS デプロイのセキュリティ上の利点およびクラウド アプリケーションのセキュリティのベスト プラクティスに重点を置いてきました。 次に、特定の Azure サービスを使用して PaaS の Web ソリューションとモバイル ソリューションをセキュリティ保護するための推奨されるプラクティスについて説明します。 まずは Azure App Service、Azure SQL Database と Azure Synapse Analytics、Azure Storage、Azure Cloud Services から始めます。 他の Azure サービスの推奨されるプラクティスに関する記事が公開されると、次の一覧にリンクが提供されます。
- Azure App Service
- Azure SQL Database と Azure Synapse Analytics
- Azure ストレージ
- Azure Cloud Services
- Azure Cache for Redis
- Azure Service Bus
- Web アプリケーション ファイアウォール
クラウド用のアプリケーションを開発するときに、ソフトウェア開発ライフサイクルの各段階で考慮する必要のあるセキュリティの問題や制御については、「セキュリティで保護されたアプリケーションを Azure 上で開発する」を参照してください。
Azure を使用してクラウド ソリューションを設計、デプロイ、管理するときに使用するセキュリティのベスト プラクティスの詳細については、「Azure セキュリティのベスト プラクティスとパターン」を参照してください。
Azure のセキュリティとそれに関連する Microsoft サービスの一般情報については、以下のリソースを参照してください。
- Microsoft 製品のライフサイクル - 製品のライフサイクルを通してサポートするための一貫性のある、予測可能なガイドライン
- Microsoft セキュリティ レスポンス センター - このサイトでは、Azure に関する問題を含め、マイクロソフトのセキュリティの脆弱性を報告できます。メールの場合は、secure@microsoft.com 宛に報告してください。