Amazon EC2 でのデータ保護 - Amazon Elastic Compute Cloud

Amazon EC2 でのデータ保護

AWS 責任共有モデルは、Amazon Elastic Compute Cloud のデータ保護に適用されます。このモデルで説明されているように、AWS は、AWS クラウド のすべてを実行するグローバルインフラストラクチャを保護する責任を担います。お客様は、このインフラストラクチャでホストされているコンテンツに対する管理を維持する責任があります。また、使用する AWS のサービスのセキュリティ設定と管理タスクもユーザーの責任となります。データプライバシーの詳細については、データプライバシーのよくある質問を参照してください。欧州でのデータ保護の詳細については、AWS セキュリティブログに投稿されたAWS 責任共有モデルおよび GDPRのブログ記事を参照してください。

データを保護するため、AWS アカウント 認証情報を保護し、AWS IAM Identity Center または AWS Identity and Access Management (IAM) を使用して個々のユーザーをセットアップすることをお勧めします。この方法により、それぞれのジョブを遂行するために必要な権限のみが各ユーザーに付与されます。また、次の方法でデータを保護することもお勧めします:

  • 各アカウントで多要素認証 (MFA) を使用します。

  • SSL/TLS を使用して AWS リソースと通信します。TLS 1.2 は必須であり TLS 1.3 がお勧めです。

  • AWS CloudTrail で API とユーザーアクティビティロギングをセットアップします。

  • AWS のサービス 内のすべてのデフォルトセキュリティ管理に加え、AWS 暗号化ソリューションを使用します。

  • Amazon Macie などの高度なマネージドセキュリティサービスを使用します。これらは、Amazon S3 に保存されている機密データの検出と保護を支援します。

  • コマンドラインインターフェイスまたは API を使用して AWS にアクセスするときに FIPS 140-2 検証済みの暗号化モジュールが必要な場合は、FIPS エンドポイントを使用します。利用可能な FIPS エンドポイントの詳細については、「連邦情報処理規格 (FIPS) 140-2」を参照してください。

お客様の E メールアドレスなどの極秘または機密情報は、タグ、または名前フィールドなどの自由形式のテキストフィールドに配置しないことを強くお勧めします。これには、コンソール、API、AWS CLI、または AWS SDK を使用して Amazon EC2 またはその他の AWS のサービス で作業する場合が含まれます。名前に使用する自由記述のテキストフィールドやタグに入力したデータは、課金や診断ログに使用される場合があります。外部サーバーへの URL を提供する場合は、そのサーバーへのリクエストを検証するための認証情報を URL に含めないように強くお勧めします。

Amazon EBS のデータセキュリティ

Amazon EBS ボリュームは、初期化されていない raw ブロックデバイスとして表示されます。これらのデバイスは、EBS インフラストラクチャ上に作成される論理デバイスであり、Amazon EBS サービスは、お客様による利用または再利用の前に、デバイスが論理的に空になっている (つまり、raw ブロックがゼロになっている、または暗号で擬似ランダムデータが含まれている) ようにします。

DoD 5220.22-M (National Industrial Security Program Operating Manual) や NIST 800-88 (Guidelines for Media Sanitization) に詳述されているような、使用後もしくは使用前 (またはその両方) に特定の方法を使用してすべてのデータを消去する必要がある手順がある場合、Amazon EBS でこれを行うことができます。ブロックレベルのアクティビティは、Amazon EBS サービス内の基盤となるストレージメディアに反映されます。

保管中の暗号化

EBS ボリューム

Amazon EBS暗号化は、EBS ボリュームおよびスナップショット向けの暗号化ソリューションです。それは AWS KMS keys を使用します。詳細については、「Amazon EBS ユーザーガイド」の「Amazon EBS 暗号化」を参照してください。

[Windows インスタンス] フォルダレベルおよびファイルレベルの暗号化に Microsoft EFS および NTFS アクセス許可を使用することもできます。

インスタンスストアボリューム

NVMe インスタンスストアボリューム内のデータは、インスタンスのハードウェアモジュールに実装されている XTS-AES-256 暗号を使用して暗号化されます。ローカルに接続された NVMe ストレージデバイスに書き込まれるデータの暗号化に使用されるキーは、お客様ごと、ボリュームごとに異なります。キーはハードウェアモジュールによって生成され、ハードウェアモジュールの内部にのみ存在します。AWS ユーザーはハードウェアモジュールにはアクセスできません。暗号化キーは、インスタンスが停止または終了して復元できないときに破棄されます。この暗号化を無効にしたり、独自の暗号キーを指定したりすることはできません。

H1、D3、D3en インスタンス上にある HDD インスタンスストアボリュームのデータは、XTS-AES-256 とワンタイムキーを使用して暗号化されます。

インスタンスを、停止、休止、または終了するとき、インスタンスストアボリュームのストレージの各ブロックはリセットされます。そのため、別のインスタンスのインスタンスストアを通じてデータにアクセスすることはできません。

「メモリ」

メモリの暗号化は、次のインスタンスで有効になります。

  • AWS Graviton プロセッサを搭載したインスタンス。 AWSGraviton2、AWS Graviton3、AWS Graviton3E は常時オンのメモリ暗号化をサポートしています。暗号化キーは、ホストシステム内で安全に生成され、ホストシステムから離れることはなく、ホストの再起動または電源切断時に破棄されます。詳細については、「AWS Graviton プロセッサ」を参照してください。

  • M6i インスタンスなどの第 3 世代 Intel Xeon スケーラブルプロセッサ (Ice Lake) と M7i インスタンスなどの第 4 世代 Intel Xeon スケーラブルプロセッサ (Sapphire Rapids) を搭載したインスタンス。これらのプロセッサーは、インテル・トータル・メモリー暗号化 (TME) を使用した常時オンのメモリー暗号化をサポートします。

  • M6a インスタンスなどの第 3 世代 AMD EPYC プロセッサ (Milan) と M7a インスタンスなどの第 4 世代 AMD EPYC プロセッサ (Genoa) を搭載したインスタンス。これらのプロセッサーは、AMD Secure Memory Encryption (SME) を使用した常時オンのメモリー暗号化をサポートします。第 3 世代 AMD EPYC プロセッサ (Milan) を搭載したインスタンスは、AMD Secure Encrypted Virtualization-Secure Nested Paging (SEV-SNP) もサポートしています。

転送中の暗号化

物理レイヤーでの暗号化

AWS グローバルネットワーク上の AWS リージョンを流れるすべてのデータは、AWS の安全な施設を離れる前に、物理層で自動的に暗号化されます。AZ 間のトラフィックはすべて暗号化されます。追加的な暗号化レイヤーでは、このセクションに記載されているもの以外にも、保護が提供されている場合があります。

Amazon VPC ピアリングおよび Transit Gateway のクロスリージョンピアリング接続によって得られる暗号化

Amazon VPC ピアリングおよび Transit Gateway のピアリング接続を使用する、すべてのクロスリージョントラフィックは、リージョンからの送信時に自動的に一括で暗号化されます。このセクションで先に述べたように、すべてのトラフィックにおける物理レイヤーには、そのトラフィックが AWS の保護された設備を離れる前に、追加の暗号化レイヤーが自動的に提供されています。

インスタンス間での暗号化

AWS では、すべてのタイプの EC2 インスタンス間において安全でプライベートな接続を提供しています。さらに、一部のインスタンスタイプでは、基盤となる Nitro System ハードウェアのオフロード機能を使用して、インスタンス間の転送中のトラフィックを自動的に暗号化します。この暗号化では、256 ビットの暗号化による関連データによる認証暗号化 (AEAD) アルゴリズムを使用します。ネットワークのパフォーマンスには影響しません。インスタンス間でこの追加の転送中トラフィック暗号化をサポートするには、次の要件を満たす必要があります。

  • インスタンスは、次のインスタンスタイプを使用します。

    • 汎用: M5dn、M5n、M5zn、M6a、M6i、M6id、M6idn、M6in、M7a、M7g、M7gd、M7i、M7i-flex

    • コンピューティング最適化: C5a、C5ad、C5n、C6a、C6gn、C6i、C6id、C6in、C7a、C7g、C7gd、C7gn、C7i、C7i-flex

    • メモリ最適化: R5dn、R5n、R6a、R6i、R6idn、R6in、R6id、R7a、R7g、R7gd、R7i、R7iz、U-3tb1、U-6tb1、U-9tb1、U-12tb1、U-18tb1、U-24tb1、U7i-12tb、U7in-16tb、U7in-24tb、U7in-32tb、X2idn、X2iedn、X2iezn

    • ストレージ最適化: D3、D3en、I3en、I4g、I4i、Im4gn、Is4gen

    • 高速コンピューティング: DL1、DL2q、G4ad、G4dn、G5、G6、Gr6、Inf1、Inf2、P3dn、P4d、P4de、P5、Trn1、Trn1n、VT1

    • ハイパフォーマンスコンピューティング: Hpc6a、Hpc6id、Hpc7a、Hpc7g

  • 各インスタンスは同じリージョンにあるものとします。

  • 各インスタンスは同じ VPC 内、あるいはピア接続された VPC 内にあり、トラフィックは仮想ネットワークのデバイスもしくはサービス (ロードバランサーや Transit Gateway など) を通過しないものとします。

このセクションで先に述べたように、すべてのトラフィックにおける物理レイヤーには、そのトラフィックが AWS の保護された設備を離れる前に、追加の暗号化レイヤーが自動的に提供されています。

AWS CLIを使用してインスタンス間のトランジットトラフィックを暗号化するインスタンスタイプを表示するには、以下のようにします。

次の describe-instances コマンドを使用します。

aws ec2 describe-instance-types \ --filters Name=network-info.encryption-in-transit-supported,Values=true \ --query "InstanceTypes[*].[InstanceType]" \ --output text | sort
AWS Outposts との間の暗号化

Outpost は、AWS ホームリージョンとの間にサービスリンクと呼ばれる特別なネットワーク接続を作成し、オプションとして指定した VPC サブネットとのプライベート接続も可能です。これらの接続上のすべてのトラフィックは完全に暗号化されます。詳細については、AWS Outposts ユーザーガイドサービスリンクによる接続および転送中の暗号化を参照してください。

リモートアクセスの暗号化

SSH プロトコルおよび RDP プロトコルは、直接でも EC2 Instance Connect 経由でも、インスタンスへのリモートアクセスにおいてセキュアな通信チャネルを提供します。AWS Systems Manager Session Manager または Run Command を使用したインスタンスへのリモートアクセスは、TLS 1.2 を使用して暗号化されます。また、接続確立のリクエストは SigV4 を使用して署名され、AWS Identity and Access Management により認証および許可されます。

クライアントと Amazon EC2 インスタンスの間で送受信される機密データを、Transport Layer Security (TLS) などの暗号化プロトコルを使用して暗号化することは、お客様の責任範囲です。

(Windows インスタンス) EC2 インスタンスと、AWS API エンドポイントなどの機密性の高いリモートネットワークサービスとの間では、必ず暗号化された接続のみを許可してください。これを適用するには、アウトバウンドセキュリティグループまたは Windows ファイアウォールのルールを使用します。