ディスクの暗号化、Azure Disk Encryption (ADE)、ホストとしての暗号化、機密ディスクの暗号化を構成する
保存中データの暗号化は、一般的なセキュリティ要件です。 Azure では、組織は、リスクやカスタム キー管理ソリューションのコストなしで、保存データを暗号化できます。 組織は、Azure のみを使用して保存データの暗号化を完全に管理することを選択できます。 さらに、組織には、暗号化または暗号化キーを厳密に管理するさまざまなオプションが提供されています。
保存データの暗号化とは
暗号化は、データの機密保護に使用されるデータを安全に符号化することです。 Azure の保存時の暗号化では、対称暗号化を使用して暗号化し、単純な概念モデルに基づいて大量のデータをすばやく復号化します。
- データがストレージに書き込まれるときに、対称暗号化キーを使用してデータが暗号化されます。
- メモリで使用する際に、同じ暗号キーを使用してデータが復号化されます。
- データはパーティション分割され、パーティションごとに異なるキーが使用される場合があります。
- キーは、ID ベースのアクセス制御と監査ポリシーが適用される、セキュリティで保護された場所に保存する必要があります。 セキュリティで保護された場所以外に格納されているデータ暗号化キーは、セキュリティで保護された場所に保持されているキー暗号化キーで暗号化されます。
実際には、主要な管理と制御のシナリオ、およびスケールと可用性の保証には、他のコンストラクトが必要です。 Microsoft Azure 静止状態の暗号化の概念とコンポーネントについては、次のセクションで説明します。
保存時の暗号化の目的
保存時の暗号化は、格納されているデータ (保存されているデータ) を保護します。 保存データへの攻撃には、データが保存されているハードウェアへの物理的なアクセスを試み、その後、データを侵害する試みが含まれます。 このような攻撃では、メンテナンス中にサーバーのハード ドライブが誤って処理され、攻撃者がハード ドライブを削除できる可能性があります。 攻撃者は、その後、彼らの管理下にあるコンピューターにハードドライブを接続し、データにアクセスしようとします。
Encryption at Rest は、データをディスク上で確実に暗号化することで、暗号化されていないデータに攻撃者がアクセスできないよう設計されています。 攻撃者は、暗号化されたデータを含むハード ドライブを入手しても、暗号化キーがないと、データを読み取るためには暗号化を破る必要があります。 この攻撃は、ハード ドライブの暗号化されていないデータにアクセスするよりも大幅に複雑で、多くのリソースを消費します。 このため、保存時に暗号化することは、多くの組織の高優先度要件として強く推奨されます。
保存時の暗号化は、データ ガバナンスとコンプライアンスの取り組みに対する組織のニーズによって必要になる場合があります。 HIPAA、PCI、FedRAMP などの業界および政府規制には、データ保護と暗号化要件について、具体的な保護対策が規定されています。 保存時の暗号化は、いくつかの規制に準拠するための必須対策とされています。 FIPS 140-2 検証に対する Microsoft のアプローチの詳細については、「 Federal Information Processing Standard (FIPS) Publication 140-2」を参照してください。
コンプライアンスと規制の要件に対応することに加えて、保存時の暗号化によって、多層防御の保護が提供されます。 Microsoft Azure では、サービス、アプリケーション、およびデータのために、準拠しているプラットフォームを提供します。 また、包括的な設備と物理的セキュリティ、データ アクセスの制御、および監査を提供します。 ただし、他のセキュリティ対策の 1 つが失敗し、保存時の暗号化によってこのようなセキュリティ対策が提供される場合は、他の "重複する" セキュリティ対策を提供することが重要です。
Microsoft は、クラウド サービス全体にわたって保存時の暗号化オプションを提供し、お客様が暗号化キーとキーの使用ログを管理できるようにすることに注力しています。 Microsoft はさらに、既定でお客様の保存データがすべて暗号化されるよう取り組んでいます。
静止データの暗号化の Azure コンポーネント
前述のように、保存時の暗号化の目的は、ディスクに保存されているデータを秘密暗号化キーで暗号化することです。 この目標を達成するためには、セキュリティ保護されたキーの作成、ストレージ、アクセス制御および暗号化キーの管理を提供する必要があります。 詳細は異なる場合がありますが、Azure サービスの保存時の暗号化の実装は、次の図に示す用語で説明できます。
Azure Key Vault
暗号化キーの保存場所と、これらのキーへのアクセス制御は、保存時暗号化モデルの中心になります。 キーは高度のセキュリティで保護される必要がありますが、特定のユーザーによって管理でき、特定のサービスで利用できる必要があります。 Azure サービスの場合は、サービス全体で共通した管理エクスペリエンスを提供するキー保存のソリューションである、Azure Key Vault をお勧めします。 キーはキー コンテナーで保存、管理され、キー コンテナーへのアクセスをユーザーまたはサービスに提供できます。 Azure Key Vault では、ユーザーが管理する暗号化キーのシナリオで使用するための、ユーザーによるキーの作成またはユーザー キーのインポートがサポートされています。
Microsoft Entra ID
Azure Key Vault に保存されたキーを、その管理、または保存時の暗号化および解読時にアクセスして使用するためのアクセス許可を、Microsoft Entra アカウントに付与できます。
キー階層を使用したエンベロープ暗号化
保存時の暗号化の実装には、複数の暗号化キーが使用されます。 Azure Key Vault に暗号化キーを格納することで、キーの安全なアクセスと集中管理が可能になります。 ただし、データ操作のたびに Key Vault とやりとりするより、暗号化キーにサービス ローカル アクセスするほうが一括の暗号化/復号の場合は効率的です。暗号化が強化され、パフォーマンスが改善されます。 1 つの暗号化キーの使用を制限すると、キーが侵害されるリスクと、キーを交換する必要がある場合の再暗号化のコストが減少します。 静止データの Azure 暗号化モデルではエンベロープ暗号化が使用され、キー暗号化キーによってデータ暗号化キーが暗号化されます。 このモデルは、パフォーマンスとセキュリティの要件に対応できる主要階層を形成します。
- データ暗号化キー (DEK) – データのパーティションまたはブロックを暗号化するために使用される対称 AES256 キー。単なるデータ キーとも呼ばれます。 1 つのリソースに多数のパーティションと多数のデータ暗号化キーが含まれる場合があります。 データの各ブロックを異なるキーで暗号化することによって、暗号化分析攻撃がより困難になります。 また、データを暗号化および復号化するサービスに対して DEK をローカルに保持すると、パフォーマンスが最大になります。
- キー暗号化キー (KEK) – エンベロープ暗号化を使用してデータ暗号化キーを暗号化するために使用される暗号化キー。ラップとも呼ばれます。 Key Vault を離れることがないキーの暗号化キーを使用すると、データの暗号化キー自体が暗号化され、管理できます。 KEK へのアクセス権を持つエンティティは、DEK を必要とするエンティティとは異なる場合があります。 エンティティは、DEK へのアクセスを仲介して、各 DEK のアクセスを特定のパーティションに制限する場合があります。 KEK は DEK の暗号化を解除するために必要なものであるため、お客様は KEK を無効にすることで DEK とデータを暗号的に消去できます。
リソース プロバイダーとアプリケーション インスタンスでは、暗号化されたデータ暗号化キーをメタデータとして格納します。 キー暗号化キーにアクセスできるエンティティのみが、これらのデータ暗号化キーを復号できます。 キー保存のさまざまなモデルがサポートされます。
Microsoft クラウド サービスでの保存時の暗号化
Microsoft Cloud サービスは、IaaS、PaaS、SaaS の3 つのクラウド モデルすべてで使用されます。 以下は、各モデルにこれらがどのように対応するかを示した例です。
- ソフトウェア サービスは、サービスまたは SaaS と呼ばれ、Microsoft 365 などのクラウドによって提供されるアプリケーションを持ちます。
- プラットフォーム サービスでは、お客様のアプリケーションのストレージ、分析、サービス バス機能などにクラウドが使用されています。
- インフラストラクチャ サービス、またはお客様がクラウドでホストされ、場合によっては他のクラウド サービスを使用するオペレーティング システムとアプリケーションをデプロイするサービスとしてのインフラストラクチャ (IaaS)。
SaaS 顧客ためのの保存時の暗号化
サービスとしてのソフトウェア (SaaS) の顧客は、通常は、保存時の暗号化を有効化しているか、各サービスで利用できます。 Microsoft 365 には、保存時の暗号化を、お客様が確認または有効化できるオプションがいくつか用意されています。 Microsoft 365 サービスの詳細については、「 Microsoft 365 での暗号化」を参照してください。
PaaS 顧客のための保存時の暗号化
サービスとしてのプラットフォーム (PaaS) のお客様のデータは、通常、Blob Storage などのストレージ サービスに存在しますが、仮想マシンなどのアプリケーション実行環境にキャッシュまたは格納できます。 使用可能な保存時の暗号化オプションを確認するには、 データ暗号化モデル ( 使用するストレージとアプリケーション プラットフォームのサポート サービス テーブル) を調べます。
IaaS 顧客のための保存時の暗号化
サービスとしてのインフラストラクチャ (IaaS) のお客様は、さまざまなサービスとアプリケーションを使用できます。 IaaS サービスは、 Azure Disk Encryption を使用して、Azure がホスティングされている仮想マシンや VHD で保存時の暗号化を有効化できます。
暗号化されたストレージ
PaaS と同様に、IaaS ソリューションでは、保存時に暗号化されたデータを格納する他の Azure サービスを使用できます。 このような場合、利用している各 Azure サービスによって提供される保存時の暗号化を有効にできます。 データ暗号化モデル: サポート サービス テーブルには、主要なストレージ、サービス、およびアプリケーション プラットフォームと、サポートされている保存時の暗号化のモデルが列挙されています。
暗号化されたコンピューティング
すべてのマネージド ディスク、スナップショット、イメージは、サービス管理キーを使用する Storage Service Encryption を使って暗号化されます。 より完全な保存時暗号化ソリューションによって、暗号化されていない形式でデータが保持されることがないことが保証されます。 仮想マシン上でのデータの処理中に、Windows のページ ファイルや Linux のスワップ ファイル、クラッシュ ダンプ、またはアプリケーション ログにデータを保持することができます。 IaaS アプリケーションは、Azure IaaS 仮想マシン (Windows または Linux) および仮想ディスクで Azure Disk Encryption を使用して、このデータが保存時に暗号化されているかどうかを確認できます。
保存時のカスタム暗号化
IaaS アプリケーションでは、可能な限り、使用される Azure サービスによって提供される Azure Disk Encryption と保存時の暗号化オプションを使用することをお勧めします。 不規則な暗号化要件や Azure ベース以外のストレージなど、場合によっては、IaaS アプリケーションの開発者が保存時の暗号化を自分で実装する必要がある場合があります。 IaaS ソリューションの開発者は、特定の Azure コンポーネントを使用することで、Azure の管理と顧客の期待とより適切に統合できます。 具体的には、開発者は Azure Key Vault サービスを使用してセキュリティで保護されたキー ストレージを提供し、ほとんどの Azure プラットフォーム サービスと一貫したキー管理オプションを顧客に提供する必要があります。 また、カスタム ソリューションでは、Azure のマネージド サービス ID を使用すれば、サービス アカウントが暗号化キーにアクセスできるようになります。 Azure Key Vault およびマネージド サービス ID の管理に関する開発者向け情報については、それぞれの SDK を参照してください。
Azure リソース プロバイダー暗号化モデルのサポート
Microsoft Azure Services では、それぞれ 1 つ以上の保存時の暗号化モデルがサポートされています。 ただし、一部のサービスでは、1 つ以上の暗号化モデルが適用されない場合があります。 カスタマー マネージド キーシナリオをサポートするサービスの場合、Azure Key Vault がキー暗号化キーに対してサポートするキーの種類のサブセットのみをサポートする場合があります。 さらに、サービスでは、これらのシナリオとキーの種類のサポートが異なるスケジュールでリリースされる場合があります。 このセクションでは、このドキュメントの作成時点での、主な Azure データ ストレージ サービスの保存時暗号化サポートについて説明します。
Azure ディスク暗号化
サービスとしての Azure インフラストラクチャ (IaaS) 機能を使用しているお客様は、Azure Disk Encryption を通して IaaS 仮想マシンの保存時の暗号化を実行できます。 Azure Disk Encryption の詳細については、 Linux VM の Azure Disk Encryption または Windows VM の Azure Disk Encryption に関するページを参照してください。
Azure Storage
すべての Azure Storage サービス (Blob Storage、Queue Storage、Table Storage、Azure Files) では、サーバー側の保存データの暗号化がサポートされます。一部のサービスではさらにユーザー管理キーとクライアント側の暗号化がサポートされます。
- サーバー側:すべての Azure Storage Services は、既定でサービス管理キーを使用してサーバー側の暗号化を有効にしています。この処理はアプリケーションに対して透過的です。 詳細については、保存データに対する Azure Storage Service Encryptionをご覧ください。 Azure Blob Storage と Azure Files は、Azure Key Vault での RSA 2048 ビット ユーザー管理キーもサポートしています。 詳細については、 Azure Key Vault のカスタマー マネージド キーを使用した Storage Service Encryption に関するページを参照してください。
- クライアント側:Azure BLOB、Azure テーブル、および Azure キューは、クライアント側の暗号化をサポートしています。 クライアント側の暗号化を使用した場合、お客様は暗号化された BLOB としてデータをアップロードします。 キー管理は、ユーザーによって行われます。 詳細については、「 Client-Side Encryption と Azure Key Vault for Microsoft Azure Storage」を参照してください。
Azure SQL データベース
Azure SQL Database は現在、Microsoft が管理するサービス側とクライアント側の暗号化のシナリオで、保存時の暗号化をサポートしています。
サーバー側の暗号化は Transparent Data Encryption と呼ばれる SQL 機能を通して提供されています。 Azure SQL Database のお客様が TDE を有効にすると、キーが自動的に作成されて管理されます。 保存時の暗号化は、データベース レベルおよびサーバー レベルで有効にすることができます。 2017 年 6 月の時点で、新しく作成されたデータベースでは Transparent Data Encryption (TDE) が既定で有効になっています。 Azure SQL Database は、Azure Key Vault での RSA 2048 ビット ユーザー管理キーをサポートしています。 詳細については、 Azure SQL Database と Data Warehouse に対する Bring Your Own Key サポートによる Transparent Data Encryption に関するページを参照してください。
Azure SQL Database データのクライアント側暗号化は、 Always Encrypted 機能を使用してサポートされます。 Always Encrypted では、クライアントによって作成および格納されたキーが使用されます。 お客様は、Windows 証明書ストア、Azure Key Vault、またはローカルハードウェア セキュリティ モジュールに親キーを格納できます。 SQL ユーザーは、SQL Server Management Studio を使用して、どの列で何を使用して暗号化するかを選択できます。
結論
Azure サービス内で保存される顧客データの保護は、Microsoft にとってきわめて重要です。 すべての Azure ホステッド サービスは、保存時暗号化オプションを提供することを目的としています。 Azure サービスでは、サービス管理キー、顧客管理キー、クライアント側の暗号化のいずれかがサポートされます。 Azure サービスは、保存時の暗号化の可用性を大きく広げており、今後はプレビューや一般的な可用性のための新しいオプションを提供することが計画されています。