Azure Storageはサービス側暗号化(SSE)を使って、データがクラウドに永続化した際に自動的に暗号化します。 Azure Storage暗号化はデータを保護し、組織のセキュリティとコンプライアンスのコミットメントを満たすのに役立ちます。
Microsoftでは、ほとんどのシナリオでサービス側の暗号化を使用してデータを保護することをお勧めします。 ただし、Blob Storage および Queue Storage 用の Azure Storage クライアント ライブラリでは、クライアント上のデータを暗号化する必要があるお客様向けのクライアント側の暗号化も提供されます。 詳細については、「BLOB とキューのクライアント側暗号化」を参照してください。
サービス側の暗号化Azure Storageについて
Azure Storageのデータは、256ビットAES暗号化によって透過的に暗号化・復号されており、これは利用可能な中でも最も強力なブロック暗号の一つであり、FIPS 140-2準拠です。 Azure Storage暗号化は、Windowsでの BitLocker 暗号化に似ています。
サービス側の暗号化Azure Storage、アップロードされたオブジェクトを暗号化するために256ビットAESガロア/カウンタモード(AES-GCM)を使用します。 Azure Storage 暗号化はすべてのストレージアカウントで有効化されています。 Azure Storageの暗号化を無効にすることはできません。 データは既定でセキュリティで保護されているため、Azure Storage暗号化を利用するためにコードやアプリケーションを変更する必要はありません。
ストレージアカウント内のデータは、パフォーマンスティア(標準またはプレミアム)やアクセスティア(ホットまたはクール)に関わらず暗号化されています。 新規および既存のすべてのブロック BLOB、アペンド BLOB、ページ BLOB が暗号化されており、アーカイブ層の BLOB も含まれます。 すべてのAzure Storage冗長オプションで暗号化がサポートされ、geo レプリケーションが有効になっていると、プライマリ リージョンとセカンダリ リージョンの両方のすべてのデータが暗号化されます。 BLOB、ディスク、ファイル、キュー、テーブルなど、すべてのAzure Storage リソースが暗号化されます。 すべてのオブジェクト メタデータも暗号化されます。
Azure Storage暗号化の追加コストは発生しません。
Azure Storage暗号化の基になる暗号化モジュールの詳細については、「Cryptography API: Next Generation」を参照してください。
Azureマネージド ディスクの暗号化とキー管理の詳細については、「Azure マネージド ディスクのサーバー側の暗号化を参照してください。
暗号化キーの管理について
新しいストレージ アカウント内のデータは、既定で Microsoft マネージド キーを使用して暗号化されます。 データの暗号化には引き続きMicrosoftマネージド キーを使用することも、独自のキーを使用して暗号化を管理することもできます。 独自のキーで暗号化を管理する場合は、次の 2 つのオプションがあります。 どちらかの種類のキー管理またはその両方を使用できます。
- customer マネージド キーを指定して、Blob Storageおよび Azure Files.1,2 のデータの暗号化と暗号化解除に使用するには>カスタマー マネージド キーを Azure Key Vault または Azure Key Vault Managed Hardware Security Module (HSM) に格納する必要があります。 カスタマー マネージド キーの詳細については、「カスタマー マネージド キーをAzure Storage暗号化に使用するを参照してください。
- Blob Storage操作では、customer によって提供されるキーを指定できます。 Blob Storageに対して読み取りまたは書き込み要求を行うクライアントは、要求に暗号化キーを含めて、BLOB データの暗号化と暗号化解除の方法をきめ細かく制御できます。 顧客が指定したキーの詳細については、「Blob Storageへの要求で暗号化キーを作成する」を参照してください。
既定では、ストレージ アカウントは、そのストレージ アカウント全体をスコープとするキーで暗号化されます。 暗号化スコープを使用すると、コンテナーまたは個々の BLOB にスコープ設定されたキーで暗号化を管理できます。 暗号化スコープを使用すると、異なる顧客が所有する、同じストレージ アカウントに存在するデータの間にセキュリティで保護された境界を作成できます。 暗号化スコープでは、Microsoftマネージド キーまたはカスタマー マネージド キーを使用できます。 暗号化スコープの詳細については、Blob Storage の暗号化スコープに関する記事を参照してください。
次の表では、Azure Storage暗号化のキー管理オプションを比較します。
| キー管理パラメーター | Microsoft マネージド キー | カスタマー マネージド キー | カスタマー指定のキー |
|---|---|---|---|
| 暗号化/暗号化解除の操作 | Azure | Azure | Azure |
| サポートされているAzure Storage サービス | 全て | Blob Storage、Azure Files1,2 | Blob Storage |
| キーストレージ | Microsoft キーストア | Azure Key Vault または Key Vault HSM | お客様独自のキー ストア |
| キーのローテーションの責任 | Microsoft | カスタマー | カスタマー |
| キー コントロール | Microsoft | カスタマー | カスタマー |
| 主要な範囲 | アカウント (既定)、コンテナー、または BLOB | アカウント (既定)、コンテナー、または BLOB | 該当なし |
1 Queue storage でのカスタマー マネージド キーの使用をサポートするアカウントの作成については、キューのカスタマー マネージド キーをサポートするアカウントの作成に関するページを参照してください。
2 Table Storage でのカスタマー マネージド キーの使用をサポートするアカウントの作成については、テーブルのカスタマー マネージド キーをサポートするアカウントの作成に関するページを参照してください。
注
Microsoftマネージド キーは、コンプライアンス要件に従って適切にローテーションされます。 特定のキー ローテーション要件がある場合Microsoftは、ローテーションを自分で管理および監査できるように、カスタマー マネージド キーに移行することをお勧めします。
インフラストラクチャの暗号化を使用してデータを二重に暗号化する
データの安全性を高レベルで保証したい場合は、Azure Storageのインフラストラクチャレベルで256ビットAES暗号化を有効にすることもできます。 インフラ暗号化を有効にすると、ストレージアカウント内のデータはサービスレベルとインフラレベルで2回暗号化され、2つの異なる暗号化アルゴリズムと2つの異なる鍵で処理されます。 Azure Storageデータの二重暗号化は、暗号化アルゴリズムや鍵のいずれかが漏洩した場合のケースから守ります。 この場合、追加の暗号化層があなたのデータを引き続き保護します。
サービス レベルの暗号化では、Azure Key VaultでMicrosoftマネージド キーまたはカスタマー マネージド キーの使用がサポートされます。 インフラストラクチャ レベルの暗号化は、Microsoftマネージド キーに依存し、常に別のキーを使用します。
インフラストラクチャの暗号化を有効にするストレージ アカウントを作成する方法の詳細については、「データの二重暗号化のためにインフラストラクチャ暗号化を有効にしてストレージ アカウントを作成する」を参照してください。
BLOB とキューのクライアント側暗号化
.NET、Java、およびPython用の Azure Blob Storage クライアント ライブラリでは、Azure Storageにアップロードする前のクライアント アプリケーション内のデータの暗号化と、クライアントへのダウンロード中のデータの復号化がサポートされています。 .NETおよびPython用の Queue Storage クライアント ライブラリでは、クライアント側の暗号化もサポートされています。
注
クライアント側の暗号化ではなく、Azure Storageによって提供されるサービス側の暗号化機能を使用してデータを保護することを検討してください。
Blob StorageおよびQueue StorageクライアントライブラリはAESを使ってユーザーデータを暗号化します。 クライアント ライブラリでは、次の 2 つのバージョンのクライアント側暗号化を使用できます。
- バージョン 2 では、AES で Galois/Counter Mode (GCM) モードが使用されます。 Blob Storageおよび Queue Storage SDK では、v2 を使用したクライアント側の暗号化がサポートされています。
- バージョン 1 では、AES で暗号ブロック チェーン (CBC) モードが使用されます。 Blob Storage、Queue Storage、Table Storage SDK では、v1 を使用したクライアント側の暗号化がサポートされます。
警告
クライアント ライブラリでの CBC モードの実装を原因とするセキュリティの脆弱性により、クライアント側暗号化 v1の使用は推奨されなくなりました。 このセキュリティの脆弱性の詳細については、「Azure Storageセキュリティの脆弱性に対処するために SDK のクライアント側暗号化を更新するを参照してください。 現在v1を使っている場合は、アプリケーションをクライアント側暗号化v2にアップデートし、データを移行してください。
Azure Table Storage SDK では、クライアント側の暗号化 v1 のみがサポートされます。 Table Storage でクライアント側暗号化を使用することはお勧めできません。
次の表では、それぞれのクライアント ライブラリがサポートしているクライアント側暗号化のバージョン、およびクライアント側暗号化 v2 に移行するためのガイドラインを示しています。
| クライアント ライブラリ | サポートされているクライアント側暗号化のバージョン | 推奨される移行 | その他のガイダンス |
|---|---|---|---|
| .NET (バージョン 12.13.0 以降)、Java (バージョン 12.18.0 以降)、およびPython (バージョン 12.13.0 以降) 用のBlob Storageクライアント ライブラリ | 2.0 1.0 (下位互換性のみを目的としています) |
クライアント側暗号化 v2 を使用するようにコードを更新します。 暗号化されたデータをダウンロードして暗号化を解除し、クライアント側暗号化 v2 で再暗号化します。 |
BLOB のクライアント側暗号化 |
| .NET (バージョン 12.12.0 以降)、Java (バージョン 12.17.0 以降)、およびPython (バージョン 12.12.0 以降) 用のBlob Storageクライアント ライブラリ | 1.0 (非推奨) | クライアント側暗号化 v2 をサポートする Blob Storage SDK のバージョンを使用するようにアプリケーションを更新します。 詳細については、「クライアント側暗号化の SDK サポート マトリックス」を参照してください。 クライアント側暗号化 v2 を使用するようにコードを更新します。 暗号化されたデータをダウンロードして暗号化を解除し、クライアント側暗号化 v2 で再暗号化します。 |
BLOB のクライアント側暗号化 |
| .NET (バージョン 12.11.0 以降) およびPython (バージョン 12.4 以降) の Queue Storage クライアント ライブラリ | 2.0 1.0 (下位互換性のみを目的としています) |
クライアント側暗号化 v2 を使用するようにコードを更新します。 | キューのクライアント側暗号化 |
| .NET (バージョン 12.10.0 以降) およびPython (バージョン 12.3.0 以降) 用の Queue Storage クライアント ライブラリ | 1.0 (非推奨) | クライアント側暗号化 v2 がサポートされている Queue Storage SDK のバージョンを使用するようにアプリケーションを更新します。 「クライアント側暗号化の SDK サポート マトリックス」を参照してください クライアント側暗号化 v2 を使用するようにコードを更新します。 |
キューのクライアント側暗号化 |
| .NET、Java、Python用の Table Storage クライアント ライブラリ | 1.0 (非推奨) | 使用できません。 | 該当なし |