データ暗号化のおすすめ
適切に設計されたフレームワークセキュリティチェックリストの推奨事項に適用されます。
Standard Edition:07 | 最新の業界標準の方法を使用してデータを暗号化し、機密性と整合性を保護します。 暗号化スコープをデータ分類に合わせます。ネイティブ プラットフォームの暗号化方法に優先順位を付けます。 |
---|
データが保護されていない場合は、悪意を持って変更され、整合性と機密性が失われる可能性があります。
このガイドでは、データの暗号化と保護に関する推奨事項について説明します。 暗号化は、暗号化アルゴリズムを使用してデータを 読み取り不可能にし、キーでデータをロックするプロセスです。 暗号化された状態では、データを解読できません。 暗号化キーとペアになったキーを使用してのみ暗号化を解除できます。
定義
用語 | 定義 |
---|---|
証明書 | 暗号化または暗号化解除用の公開キーを保持するデジタル ファイル。 |
暗号スイート | トランスポート層セキュリティ (TLS) 経由でネットワーク接続をセキュリティで保護するために情報の暗号化と復号化に使用される一連のアルゴリズム。 |
コンフィデンシャル コンピューティング | コンフィデンシャル コンピューティングは、ハードウェア ベースの構成証明された信頼された実行環境で計算を実行することで、使用中のデータを保護します。 |
暗号化の解除 | 暗号化されたデータがシークレット コードでロック解除されるプロセス。 |
二重暗号化 | 2 つ以上の独立した暗号化レイヤーを使用してデータを暗号化するプロセス。 |
暗号化 | データが読み取り不可能になり、シークレット コードでロックされるプロセス。 |
ハッシュ | 情報を非表示にする目的でデータをテキストまたは数値に変換するプロセス。 |
キー | 暗号化されたデータをロックまたはロック解除するために使用されるシークレット コード。 |
Signature | データに対する認証の暗号化されたスタンプ。 |
署名 | 署名を使用してデータの信頼性を検証するプロセス。 |
X.509 | 公開キー証明書の形式を定義する標準。 |
主要な設計戦略
組織の義務または規制要件により、暗号化メカニズムが適用される場合があります。 たとえば、選択したリージョンでのみデータを再メインする必要があり、そのリージョンにデータのコピーがメイン含まれている必要がある場合があります。
これらの要件は、多くの場合、基本の最小値です。 より高いレベルの保護に努めます。 外部ユーザー データまたは従業員データのいずれであっても、機密データの機密性の漏洩と改ざんを防止する責任があります。
暗号化のシナリオ
暗号化メカニズムでは、次の 3 つの段階でデータをセキュリティで保護する必要がある可能性があります。
保存 データは、ストレージ オブジェクトに保持されるすべての情報です。
保存データをセキュリティで保護する例として、BitLocker を使用してディスク上のストレージに保存されているデータを暗号化する方法があります。
転送 中のデータは、コンポーネント、場所、またはプログラム間で転送される情報です。
転送中のデータをセキュリティで保護する例として、TLS を使用してデータを暗号化し、パブリック ネットワークとプライベート ネットワークを介して移動するパケットをセキュリティで保護する方法があります。
使用中 のデータは、メモリ内でアクティブに処理されているデータです。
使用中のデータをセキュリティで保護する例として、処理時にデータを保護するためにコンフィデンシャル コンピューティングを使用して暗号化する方法があります。
上記の選択肢は相互に排他的ではありません。 これらは、多くの場合、ソリューション全体のコンテキストで一緒に使用されます。 1 つのステージが補正コントロールとして機能する場合があります。 たとえば、メモリからデータを読み取るときに改ざんを防ぐために、データを分離する必要がある場合があります。
暗号化のスコープ
目的と秘密度レベル でデータを分類し、暗号化する必要があるデータを決定します。 暗号化する必要があるデータの場合は、必要な保護レベルを決定します。 転送中のすべてのデータにエンドツーエンドの TLS 暗号化が必要ですか? 保存データの場合、要件を満たすことができる Azure の機能はどれですか? すべてのストレージ ポイントでデータを二重に暗号化する必要がありますか? 情報保護を実装する方法
重要なトレードオフがあるため、暗号化の決定のバランスを取る必要があります。
トレードオフ: すべての暗号化ホップでパフォーマンスの待機時間が発生する可能性があります。 操作の複雑さが、トラブルシューティングと可観測性に関連して発生する可能性があります。 復旧は困難な場合があります。
これらのトレードオフの範囲を指定します。 機密として分類されるデータのトレードオフを予測します。 要件によってトレードオフが決まります。たとえば、特定の種類のデータを暗号化し、特定のしきい値内に格納する必要がある場合などです。
技術的な制限、投資、またはその他の理由により、暗号化が不可能な場合があります。 これらの理由が明確で、有効であり、文書化されていることを確認します。
強力な暗号化メカニズムは、防御の唯一の形式であるべきではありません。 データ盗難防止プロセス、適切なテスト方法、異常検出を実装します。
分類の詳細については、データ分類に関するおすすめを参照してください。
ネイティブ暗号化メカニズム
ほとんどの Azure サービスでは、基本レベルの暗号化が提供されます。 プラットフォームで提供される暗号化オプションについて説明します。
独自の機能を開発するためにプラットフォーム機能を無効にしないことを強くお勧めします。 プラットフォーム暗号化機能は、最新の業界標準を使用し、専門家によって開発され、高度にテストされています。
まれに、プラットフォームで提供される暗号化を置き換える必要がある場合は、長所と短所を評価し、業界標準の暗号アルゴリズムを使用します。
開発者は、プラットフォーム以外の暗号化ライブラリではなく、オペレーティング システムに組み込まれている暗号化 API を使用する必要があります。 .NET の場合は、.NET 暗号化モデルに従います。
暗号化キー
既定では、Azure サービスは Microsoft が管理する暗号化キーを使用してデータの暗号化と暗号化解除を行います。 キー管理は Azure が担当します。
カスタマー マネージド キーを選択できます。 Azure では引き続きキーが使用されますが、キー操作に対する責任はあります。 必要に応じてキー を柔軟に変更できます。 復号化は、カスタマー マネージド キーを使用する魅力的な理由です。
強力な暗号化と強力な暗号化解除をペアにする必要があります。 キーが侵害された場合、ローテーションはブラスト半径を制御する一般的な方法であるため、セキュリティの観点からは、復号化キーを保護することが重要です。 異常なアクセスとアクティビティを検出するためのアクセスを監視します。
暗号化されたデータとは別のキーを格納します。 この分離は、一方のエンティティの侵害が他方に影響を与えないことを保証するのに役立ちます。 カスタマー マネージド キーを使用する場合は、そのキーをキー ストアに格納します。 機密性の高いデータをマネージド ハードウェア セキュリティ モジュール (HSM) に格納します。
どちらのストアも、ID ベースのアクセスで保護されています。 この機能を使用すると、プラットフォームへのアクセスを拒否できます。
標準暗号化アルゴリズム
カスタム実装を作成する代わりに、適切に確立され、業界標準 に従う暗号化アルゴリズムを使用します。
アルゴリズムの業界標準では、暗号化スキームに一定レベルのエントロピが必要です。 エントロピ ソースは、暗号化中に挿入されます。 エントロピはアルゴリズムを強力にし、攻撃者が情報を抽出することを困難にします。 エントロピの許容しきい値を決定します。 暗号化手順は、プロセッサを集中的に使用します。 コンピューティング要求の全体的なパフォーマンス 目標に対して、暗号化に費やされるコンピューティング サイクルを最大化するために適切なバランスを見つけます。
トレードオフ: 非常に複雑なアルゴリズムを選択した場合、または妥当な量を超えるエントロピを挿入すると、システムのパフォーマンスが低下します。
ハッシュと チェックsums
通常、ハッシュはエラー検出手法です。 改ざんによって発生する可能性のあるデータの変更を検出するため、ハッシュをセキュリティに使用することもできます。 ハッシュ関数は暗号化に基づいていますが、キーは使用しません。 ハッシュ関数は、アルゴリズムを使用して チェックsums を生成します。 チェックサムでは、データを比較して整合性を確認できます。
アプリケーションでは、SHA-256、SHA-384、SHA-512 などの SHA-2 ファミリのハッシュ アルゴリズムを使用する必要があります。
保存データ
内部および外部のコンプライアンス要件に従って、情報ストレージ オブジェクトを分類して保護します。 次の推奨事項を参照してください。
ストレージ サービス、データ ストア、およびデータの保持に使用されるその他のリソースに提供されるネイティブ オプション を使用して、データを暗号化します。 これらのストレージ サービスまたはリソースにデータを一時的にのみ格納する場合でも、このデータを暗号化します。 また、バックアップ データを暗号化してメイン元のソースと同じレベルのセキュリティを確保します。
詳細については、「保存データ保護」を参照してください。
二重暗号化を使用します。 ビジネス要件で高い保証が必要な場合は、二重暗号化を実行できます。 独立したカスタマー マネージド キーを使用して、2 つ以上のレイヤーのデータを暗号化します。 マネージド HSM にデータを格納します。 データを読み取るには、両方のキーにアクセスする必要があります。 一方のキーが侵害された場合でも、もう一方のキーはデータを保護します。 この手法は、攻撃者のコストを増やすことを目的としています。
プラットフォームによって提供される暗号化を使用して、データを二重に暗号化することもできます。 プラットフォームによって提供される暗号化は、インフラストラクチャ レベルでストレージ メディアを保護し、データ レベルで別の暗号化レイヤーを適用します。 たとえば、メッセージ ブローカー サービスには、メッセージ パイプを保護する Microsoft マネージド キーを使用したプラットフォームによって提供される暗号化があります。 この方法では、カスタマー マネージド キーを使用してメッセージを暗号化できます。
複数の暗号化キーを使用します。 キー暗号化キー (KEK) を使用して、データ暗号化キー (DEK) を保護します。
ID ベースのアクセス制御を使用して、データへのアクセスを制御します。 ネットワーク ファイアウォールを追加して、予期しない安全でないアクセスをブロックするセキュリティ層を追加します。
詳細については、「D およびアクセス管理に関する推奨事項」をご覧ください。
最小特権アクセス制御を持つマネージド HSM にキーを格納します。 データをキーからデータに分離します。
必要なものだけを暗号化できるように、限られた量のデータ を格納します。 データが暗号化サイクルよりも長く生きることはできません。 データが不要になったら、暗号化解除サイクルを費やさずに暗号化されたデータを削除します。
転送中のデータ
クライアントとサーバー間の通信には、セキュリティで保護されたプロトコルを使用します。 トランスポート プロトコルには、セキュリティレイヤーが組み込まれています。 TLS は、クライアントとサーバーのエンドポイント間でデータを交換するための業界標準です。
TLS 1.2 より前のバージョンは使用しないでください。 TLS 1.2 をサポートするソリューションを移行し、既定でこのバージョンを使用します。 すべての Azure サービスは、パブリック HTTPS エンドポイントで TLS 1.2 をサポートしています。
リスク: 旧バージョンとの互換性がサポートされていない場合、TLS 1.2 をサポートしていない古いクライアントが正しく動作しない可能性があります。
転送されたデータの機密性に関係なく、すべての Web サイト通信で HTTPS を使用する必要があります。 クライアントとサーバーのハンドシェイク中に、HTTPS トランスポートがメインに保持され、通信中に HTTP にドロップされないように、HTTP Strict Transport Security (HSTS) ポリシーの使用をネゴシエートします。 このポリシーは、中間者攻撃から保護します。
HSTS のサポートは、新しいバージョン向けです。 古いブラウザーとの下位互換性が損なわれる可能性があります。
Note
プロトコルを暗号化して、データベースのセキュリティで保護された接続を確立することもできます。 たとえば、Azure SQL Database では、TLS ハンドシェイクを統合する表形式データ ストリーム (TDS) プロトコルがサポートされています。
暗号スイートは、クライアントとサーバーの間のハンドシェイクを標準化するために使用される一連のアルゴリズムです。 暗号により、交換が確実に暗号化され、認証されます。 暗号の選択は、サーバーが使用する TLS バージョンによって異なります。 Azure アプリlication Gateway などの一部のサービスでは、サポートする TLS のバージョンと暗号スイートを選択できます。 Advanced Encryption Standard (AES) を対称ブロック暗号として使用する暗号スイートを実装します。 AES-128、AES-192、AES-256 を使用できます。
証明書のライフサイクルを管理します。 証明書には、あらかじめ定義された有効期間があります。 有効期間の長い証明書を保持せず、自分で期限切れにならないようにします。 許容できる頻度で証明書を更新するプロセスを実装します。 短時間で行われる更新のプロセスを自動化できます。
Note
証明書のピン留めを使用する場合は、機敏性と証明書管理の制限について十分に理解してください。
ワークフローでは、環境内で無効な証明書を受け入れることはできません。 証明書のピン留めプロセスでは、証明書を検証し、その検証チェックを適用する必要があります。 アクセス ログを監視して、署名キーが適切なアクセス許可で使用されていることを確認する必要があります。
キーが侵害された場合、証明書をすぐに取り消す必要があります。 証明機関 (CA) は、有効期限が切れる前に無効になっている証明書を示す証明書失効リスト (CRL) を提供します。 検証チェックでは、CRL を考慮する必要があります。
トレードオフ: 認定の検証プロセスは煩雑になる可能性があり、通常は CA が関係します。 証明書を使用して暗号化する必要があるデータを決定します。 他の種類の通信の場合は、ローカライズされた補正コントロールを実装してセキュリティを追加できるかどうかを判断します。
制御をローカライズする方法の 1 つは、相互 TLS (mTLS) を使用する方法です。 クライアントとサーバーの間で双方向の信頼が確立されます。 クライアントとサーバーの両方に独自の証明書があり、各証明書は公開キーと秘密キーのペアで認証されます。 mTLS では、外部 CA に依存していません。 トレードオフは、2 つの証明書を管理する複雑さの追加です。
必要に応じて、VPN 接続を二重に暗号化します。 二重暗号化を実行して、VPN トンネルに多層防御を追加します。 2 つの VPN サーバーを使用する場合は、サーバー間の IP アドレスを非表示にしたり、サーバーと宛先の間の IP アドレスを非表示にしたりできます。 このプロセスでは、転送中のデータも 2 回暗号化されます。
トレードオフ: 単一の VPN セットアップと比較して、二重 VPN セットアップの方がコストが高く、接続が遅くなることがよくあります。
ログ記録と監視プロセスを実装します。 ソース IP、ポート、プロトコルなど、クライアントに関する情報を格納するアクセス サインイン リソースを追跡します。 この情報を使用して異常を検出します。
使用中のデータ
セキュリティの高いワークロードでは、セグメント化、分離、最小特権が推奨される設計パターンです。
使用中の保護のコンテキストでは、VM、ホスト管理コード、およびその他のコンポーネントを確実に分離するために、ハードウェア境界が物理 CPU とメモリで使用されている間にデータの暗号化が必要になる場合があります。 データの暗号化と暗号化解除は、これらの分離境界内でのみ行う必要があります。
より厳格なセキュリティまたは規制要件では、使用中にデータが暗号化されているハードウェア ベースの暗号署名付き証拠が必要になる場合もあります。これは構成証明を通じて取得できます。 コンフィデンシャル コンピューティング は、要件をサポートするそのようなテクノロジの 1 つです。 Azure の特定のサービスでは、計算中にデータを保護する機能が提供されます。 詳細については、「Azure ファシリテーション: Azure Confidential Compute」を参照してください。
データを保護する データのエンド エンド ライフサイクルは、その有効期間中に複数のシステムを通過することが多いと考え、ソリューションのすべてのコンポーネント部分が必要なレベルの保護を提供できることを確認するか、データ管理戦略で適切なセグメント化またはマスクが提供されるように注意してください。
Azure ファシリテーション
次のセクションでは、データの暗号化に使用できる Azure サービスと機能について説明します。
カスタマー マネージド キー
カスタマー マネージド キーを Azure Key Vault または Key Vault で管理される HSM に格納します。
Key Vault は、キーを他のシークレットと同様に扱います。 Azure ロールベースのアクセス制御 (RBAC) は、アクセス許可モデルを使用してキーにアクセスします。 この ID ベースの制御は、Key Vault アクセス ポリシーで使用する必要があります。
詳細については、「RBAC を使用して Key Vault のキー、証明書、シークレットへのアクセスを提供する」を参照してください。
Azure Key Vault プレミアムと Managed-HSM は、コンフィデンシャル コンピューティング機能とセキュリティで保護されたキー リリースを含めることで、サービスをさらに強化します。このリリースでは、信頼された実行環境 (T Enterprise Edition 内で実行されていることを暗号で証明できるワークロードにのみキーが確実にリリースされるようにするポリシーがサポートされています。
保存データ保護
Azure Storage では 、データがストレージ アカウントに永続化されるときに、ブロック暗号を使用してデータが自動的に暗号化されます。 Azure Blob Storage と Azure Queue Storage の場合、Storage はライブラリを介したクライアント側の暗号化も提供します。
詳細については、「ストレージの暗号化」を参照してください。
Azure Virtual Machines には、仮想ストレージ ボリュームとして機能するディスク ファイルがあります。 コンテンツにアクセスできないように、仮想ディスク ファイルを暗号化できます。
マネージド ディスクはポータルからエクスポートできます。 ホストでのサーバー側の暗号化と暗号化は、エクスポート後にのみデータを保護できます。 ただし、エクスポート プロセス中にデータを保護する必要があります。 Azure Disk Encryption を使用して、エクスポート プロセス中にデータを保護することができます。
Azure には、マネージド ディスクに対して複数の暗号化オプションが用意されています。 詳細については、「マネージド ディスク暗号化オプションの概要」を参照してください。
SQL Database には、 ページ レベルでデータベース ファイルを暗号化するために使用される透過的なデータ暗号化 機能が用意されています。
転送中のデータ保護
Key Vault を使用すると、パブリックおよびプライベートの Secure Sockets Layer (SSL) 証明書または TLS 証明書をプロビジョニング、管理、デプロイできます。 証明書は、Azure と内部接続リソースで使用できます。
使用中のデータ保護
Azure の特定のサービスでは、Azure コンフィデンシャル コンピューティングを使用して、ホストの物理 CPU とメモリ内で計算しながらデータを保護する機能が提供されます。
Confidential Virtual Machines は、T Enterprise Edition 内で実行される仮想マシン全体を提供し、メモリと仮想マシンの CPU コンテンツの実行は暗号化され、セキュリティ要件の高い変更されていないアプリケーションを Azure に移動するための簡単な "リフト&シフト" アプローチを提供します。 各 Azure Confidential VM には、専用の仮想 信頼プラットフォーム モジュール (TPM) があります。 暗号化は、オペレーティング システム コンポーネントが安全に起動している間に実行されます。
機密 AKS ワーカー ノード、AKS 上の機密コンテナー、または Azure Container Instances (ACI) 上の機密コンテナーは、T Enterprise Edition 内で変更されていないコンテナーを実行および管理する機能を提供します。これにより、お客様は使用中の保護を利用できます。 コンテナー オファリングは、組み込みの機密仮想マシンであり、同じ保護の恩恵を受けます。
アプリケーション エンクレーブ ソリューションは、Intel Software Guard Extensions (SGX) をサポートする仮想マシン SKU によって提供される特定の CPU 拡張機能を利用する特別に構築されたアプリケーションです。これらは非常に詳細な Trusted Compute Base (TCB) を提供しますが、機能を利用するためにアプリケーションを特別にコーディングする必要があります。
セキュリティで保護されたキー リリースをこれらのテクノロジと組み合わせて、暗号化されたデータが T Enterprise Edition 内でのみ暗号化解除されるようにすることができます。これは、構成証明と呼ばれるプロセスを通じて必要なレベルの保護を提供することを証明します。
シークレットの管理
Key Vault を使用して、トークン、パスワード、証明書、API キー、およびその他のシークレットへのアクセスを安全に格納および制御できます。 Key Vault をキーおよび証明書管理ソリューションとして使用します。 プレミアム SKU では HSM がサポートされます。
例
次の例は、キー、証明書、シークレットの管理に使用できる暗号化ソリューションを示しています。
関連リンク
- .NET 暗号化モデル
- Azure Disk Encryption
- 保存データのストレージ暗号化
- Azure サービスでの証明書のピン留め
- RBAC を使用して Key Vault のキー、証明書、シークレットへのアクセスを提供する
- マネージド ディスク暗号化オプションの概要
- 透過的なデータ暗号化
- Trust Platform モジュールの概要
- Azure Confidential Computing
コミュニティ リンク
セキュリティ チェックリスト
推奨事項の完全なセットを参照してください。