データ暗号化に関する推奨事項

Well-Architected Framework セキュリティ チェックリストの推奨事項に適用されます。

SE:07 最新の業界標準の方法を使用してデータを暗号化し、機密性と整合性を保護します。 暗号化スコープをデータ分類に合わせます。ネイティブ プラットフォーム暗号化方法に優先順位を付けます。

データが保護されていない場合は、悪意を持って変更され、整合性と機密性が失われる可能性があります。

このガイドでは、データの暗号化と保護に関する推奨事項について説明します。 暗号化は、暗号化アルゴリズムを使用して データを読み取り不能にし、キーでデータをロックするプロセスです。 暗号化された状態では、データを解読できません。 暗号化キーとペアになったキーを使用してのみ暗号化を解除できます。

定義

用語 定義
証明書 暗号化または暗号化解除のために公開キーを保持するデジタル ファイル。
暗号スイート トランスポート層セキュリティ (TLS) 経由のネットワーク接続をセキュリティで保護するために情報の暗号化と暗号化解除に使用される一連のアルゴリズム。
コンフィデンシャル コンピューティング コンフィデンシャル コンピューティングは、ハードウェアベースの構成証明された信頼された実行環境で計算を実行することで、使用中のデータを保護することです。
暗号化の解除 暗号化されたデータがシークレット コードでロック解除されるプロセス。
二重暗号化 2 つ以上の独立した暗号化レイヤーを使用してデータを暗号化するプロセス。
暗号化 データが読み取り不可能になり、シークレット コードでロックされるプロセス。
ハッシュ 情報を非表示にする目的でデータをテキストまたは数値に変換するプロセス。
[キー] 暗号化されたデータをロックまたはロック解除するために使用されるシークレット コード。
署名 データに対する認証の暗号化されたスタンプ。
署名 署名を使用してデータの信頼性を検証するプロセス。
X.509 公開キー証明書の形式を定義する標準。

主要な設計戦略

組織の義務または規制要件により、暗号化メカニズムが適用される場合があります。 たとえば、選択したリージョンにのみデータを保持する必要があり、データのコピーがそのリージョンに保持されるという要件がある場合があります。

多くの場合、これらの要件は基本最小値です。 より高いレベルの保護を目指します。 機密データが外部ユーザー データか従業員データかに関係なく、 機密データの漏洩や改ざんを防止する責任があります。

暗号化のシナリオ

暗号化メカニズムでは、次の 3 つの段階でデータをセキュリティで保護する必要がある可能性があります。

  • 保存データ は、ストレージ オブジェクトに保持されるすべての情報です。

    保存データをセキュリティで保護する例としては、BitLocker を使用してディスク上のストレージに保存されているデータを暗号化します。

  • 転送中のデータ は、コンポーネント、場所、またはプログラム間で転送される情報です。

    転送中のデータをセキュリティで保護する例として、パブリック ネットワークとプライベート ネットワーク上を移動するパケットがセキュリティで保護されるように TLS を使用してデータを暗号化する方法があります。

  • 使用中のデータ は、メモリ内でアクティブに処理されているデータです。

    使用中のデータをセキュリティで保護する例として、機密コンピューティングを使用して暗号化し、処理時にデータを保護します。

上記の選択肢は相互に排他的なわけではありません。 これらは、多くの場合、ソリューション全体のコンテキストで一緒に使用されます。 1 つのステージが補正コントロールとして機能する場合があります。 たとえば、データがメモリから読み取られた場合に改ざんを防ぐために、データを分離する必要がある場合があります。

暗号化のスコープ

目的と秘密度レベルでデータを分類 し、暗号化する必要があるデータを決定します。 暗号化する必要があるデータの場合は、必要な保護レベルを決定します。 転送中のすべてのデータに対してエンド ツー エンドの TLS 暗号化が必要ですか? 保存データの場合、要件を満たすことができる Azure 機能はどれですか? すべてのストレージ ポイントでデータを二重に暗号化する必要がありますか? 情報保護を実装する方法

重要なトレードオフがあるため、暗号化の決定のバランスを取る必要があります。

トレードオフ: すべての暗号化ホップでパフォーマンスの待機時間が発生する可能性があります。 操作の複雑さが、トラブルシューティングと監視に関連して発生する可能性があります。 復旧は困難な場合があります。

これらのトレードオフの範囲を指定します。 機密として分類されるデータのトレードオフを予測します。 要件によってトレードオフが決まる場合もあります。たとえば、特定の種類のデータを暗号化し、特定のしきい値内に格納する必要がある場合などです。

技術的な制限、投資、またはその他の理由により、暗号化が不可能な場合があります。 これらの理由が明確で、有効であり、文書化されていることを確認します。

強力な暗号化メカニズムは、防御の唯一の形式であるべきではありません。 データ盗難防止プロセス、適切なテスト方法、異常検出を実装します。

分類の詳細については、「 データ分類に関する推奨事項」を参照してください。

ネイティブ暗号化メカニズム

ほとんどの Azure サービスでは、基本レベルの暗号化が提供されます。 プラットフォームによって提供される暗号化オプションについて説明します

独自の機能を開発するためにプラットフォーム機能を無効にしないことを強くお勧めします。 プラットフォーム暗号化機能は、最新の業界標準を使用し、専門家によって開発され、高度にテストされています。

まれに、プラットフォーム提供の暗号化を置き換える必要がある場合は、長所と短所を評価し、業界標準の暗号化アルゴリズムを使用します。

開発者は、プラットフォーム以外の暗号化ライブラリではなく、オペレーティング システムに組み込まれている暗号化 API を使用する必要があります。 .NET の場合は、 .NET 暗号化モデルに従います。

暗号化キー

既定では、Azure サービスは Microsoft マネージド暗号化キーを使用してデータの暗号化と暗号化解除を行います。 Azure はキー管理を担当します。

カスタマー マネージド キーを選択できます。 Azure では引き続きキーが使用されますが、キー操作に対する責任はあります。 必要に応じてキーを柔軟に変更 できます。 復号化は、カスタマー マネージド キーを使用する魅力的な理由です。

強力な暗号化と強力な暗号化解除をペアにする必要があります。 セキュリティの観点からは、暗号化解除キーを保護することが重要です。これは、キーが侵害された場合にローテーションがブラスト半径を制御する一般的な方法であるためです。 アクセスを監視して、異常なアクセスとアクティビティを検出します。

暗号化されたデータとは別にキーを格納します。 この分離は、一方のエンティティの侵害が他方のエンティティに影響を与えないことを保証するのに役立ちます。 カスタマー マネージド キーを使用する場合は、キー ストアに格納します。 機密性の高いデータをマネージド ハードウェア セキュリティ モジュール (HSM) に格納します。

どちらのストアも、ID ベースのアクセスで保護されます。 この機能を使用すると、プラットフォームへのアクセスを拒否できます。

標準暗号化アルゴリズム

カスタム実装を作成する代わりに、十分に確立され、業界標準に従う暗号化アルゴリズムを使用します。

アルゴリズムの業界標準では、暗号化スキームに特定のレベルのエントロピが必要です。 エントロピ ソースは暗号化中に挿入されます。 エントロピによってアルゴリズムが強力になり、攻撃者が情報を抽出することが困難になります。 エントロピの許容しきい値を決定します。 暗号化手順は、プロセッサを集中的に使用します。 コンピューティング要求の全体的なパフォーマンス 目標に対して、暗号化に費やされるコンピューティング サイクルを最大化するために適切なバランスを見つけます。

トレードオフ: 非常に複雑なアルゴリズムを選択するか、妥当な量以上のエントロピを挿入すると、システムのパフォーマンスが低下します。

ハッシュとチェックサム

通常、ハッシュはエラー検出手法です。 改ざんによって発生する可能性のあるデータの変更を検出するため、セキュリティのためにハッシュを使用することもできます。 ハッシュ関数は暗号化に基づいていますが、キーは使用しません。 ハッシュ関数はアルゴリズムを使用してチェックサムを生成します。 チェックサムでは、データを比較して、その整合性を確認できます。

アプリケーションでは、SHA-256、SHA-384、SHA-512 などの SHA-2 ファミリのハッシュ アルゴリズムを使用する必要があります。

保存データ

内部および外部のコンプライアンス要件に従って、情報ストレージ オブジェクトを分類して保護します。 次の推奨事項を参照してください。

  • ストレージ サービス、データ ストア、およびデータの永続化に使用されるその他のリソースに提供されるネイティブ オプションを使用してデータを暗号化します。 これらのストレージ サービスまたはリソースにデータを一時的にのみ格納する場合でも、このデータを暗号化します。 また、バックアップ データを暗号化して、元のソースと同じレベルのセキュリティを維持します。

    詳細については、「 保存データ保護」を参照してください。

  • 二重暗号化を使用します。 ビジネス要件で高い保証が必要な場合は、二重暗号化を実行できます。 独立したカスタマー マネージド キーを使用して、2 つ以上のレイヤーのデータを暗号化します。 マネージド HSM にデータを格納します。 データを読み取るために、両方のキーにアクセスする必要があります。 一方のキーが侵害された場合でも、もう一方のキーはデータを保護します。 この手法は、攻撃者のコストを増やすことを目的としています。

    プラットフォームによって提供される暗号化を使用して、データを二重に暗号化することもできます。 プラットフォーム提供の暗号化は、インフラストラクチャ レベルでストレージ メディアを保護し、データ レベルで別の暗号化レイヤーを適用します。 たとえば、メッセージ ブローカー サービスには、メッセージ パイプを保護する Microsoft マネージド キーを使用したプラットフォームによって提供される暗号化があります。 このメソッドを使用すると、カスタマー マネージド キーを使用してメッセージを暗号化できます。

    複数の暗号化キーを使用します。 キー暗号化キー (KEK) を使用して、データ暗号化キー (DEK) を保護します。

  • ID ベースのアクセス制御を使用して、データへのアクセスを制御します。 ネットワーク ファイアウォールを追加して、予期しない安全でないアクセスをブロックするセキュリティ層を追加します。

    詳細については、「 ID とアクセス管理の推奨事項」を参照してください。

  • 最小特権のアクセス制御を持つマネージド 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 のサポートは、新しいバージョン向けです。 古いブラウザーとの下位互換性が損なわれる可能性があります。

    注意

    プロトコルを暗号化して、データベースのセキュリティで保護された接続を確立することもできます。 たとえば、Azure SQL Database では、TLS ハンドシェイクを統合する表形式データ ストリーム (TDS) プロトコルがサポートされています。

    暗号スイートは、クライアントとサーバーの間のハンドシェイクを標準化するために使用されるアルゴリズムのセットです。 暗号により、交換が確実に暗号化され、認証されます。 暗号の選択は、サーバーが使用する TLS バージョンによって異なります。 Azure Application Gatewayなどの一部のサービスでは、サポートする TLS のバージョンと暗号スイートを選択できます。 Advanced Encryption Standard (AES) を対称ブロック暗号として使用する暗号スイートを実装します。 AES-128、AES-192、AES-256 を使用できます。

  • 証明書のライフサイクルを管理します。 証明書の有効期間は事前に定義されています。 有効期間の長い証明書を保持せず、独自に期限切れにならないようにします。 許容できる頻度で証明書を更新するプロセスを実装します。 短時間で行われる更新のプロセスを自動化できます。

    注意

    証明書のピン留めを使用する場合は、機敏性と証明書管理の制限について理解してください。

    ワークフローでは、環境内で無効な証明書を受け入れることはできません。 証明書のピン留めプロセスでは、証明書を検証し、その検証チェックを適用する必要があります。 アクセス ログを監視して、署名キーが適切なアクセス許可で使用されていることを確認する必要があります。

    キーが侵害された場合は、証明書を直ちに取り消す必要があります。 証明機関 (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 Premium と Managed-HSM は、コンフィデンシャル コンピューティング機能とセキュリティで保護されたキー リリースを含めることでオファリングをさらに強化します。このリリースでは、信頼された実行環境 (TEE) 内で実行されていることを暗号で証明できるワークロードにのみキーが確実にリリースされるようにするポリシーがサポートされています。

保存データ保護
  • 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、TEE 内で実行される仮想マシン全体を提供し、仮想マシンのメモリと実行 CPU コンテンツは暗号化され、セキュリティ要件の高い変更されていないアプリケーションを Azure に移行するための簡単な "リフト & シフト" アプローチが提供されます。 各 Azure 機密 VM には、専用の仮想 信頼プラットフォーム モジュール (TPM) があります。 暗号化は、オペレーティング システム コンポーネントが安全に起動している間に実行されます。

  • 機密 AKS ワーカー ノード、AKS 上の機密コンテナー、または Azure Container Instances 上の機密コンテナー (ACI) は、TEE 内で変更されていないコンテナーを実行および管理する機能を提供します。これにより、お客様は使用中の保護の恩恵を受けることができます。 コンテナー オファリングは、組み込みの機密Virtual Machinesであり、同じ保護の恩恵を受けます。

  • Application Enclave ソリューションは、Intel Software Guard Extensions (SGX) をサポートする仮想マシン SKU によって提供される特定の CPU 拡張機能を利用して特別に構築されたアプリケーションであり、非常に詳細な Trusted Compute Base (TCB) を提供しますが、機能を利用するためにアプリケーションを特別にコーディングする必要があります。

  • セキュリティで保護されたキー リリースこれらのテクノロジと組み合わせて 、暗号化されたデータが TEE 内でのみ暗号化解除されるようにすることができます。これは、 構成証明と呼ばれるプロセスを通じて必要なレベルの保護を提供することを証明します。

シークレットの管理

Key Vaultを使用して、トークン、パスワード、証明書、API キー、およびその他のシークレットへのアクセスを安全に格納および制御できます。 キーと証明書管理ソリューションとしてKey Vaultを使用します。 Premium SKU では HSM がサポートされます。

次の例は、キー、証明書、シークレットの管理に使用できる暗号化ソリューションを示しています。

キー、証明書、シークレットを管理するための暗号化ソリューションを示す図。

セキュリティ チェックリスト

推奨事項の完全なセットを参照してください。

セキュリティ チェックリスト