Amazon Web Services ブログ

VPC 暗号化コントロールのご紹介: リージョンの VPC 内および VPC 間での転送中の暗号化の強制

2025 年 11 月 21 日、仮想プライベートクラウド (VPC) 暗号化制御を発表しました。これは Amazon Virtual Private Cloud (Amazon VPC) の新機能です。これにより、リージョンの VPC 内および VPC 間のすべてのトラフィックで転送中の暗号化を監査および強制できます。

金融サービス、医療、政府、小売業を営む組織は、クラウドインフラストラクチャ全体で暗号化コンプライアンスを維持する上で、運用が非常に複雑になっています。従来のアプローチでは、スプレッドシートを使用してさまざまなネットワークパスにわたる暗号化を手動で追跡しながら、複数のソリューションをつなぎ合わせて複雑な公開鍵基盤 (PKI) を管理する必要がありました。このプロセスは人為的ミスが発生しやすく、インフラストラクチャの規模が拡大するにつれてますます困難になります。

AWS Nitro ベースのインスタンスは、パフォーマンスに影響を与えずにハードウェアレイヤーでトラフィックを自動的に暗号化しますが、組織にはこれらの機能を VPC インフラストラクチャ全体に拡張するためのシンプルなメカニズムが必要です。これは、医療保険の携行性と責任に関する法律 (HIPAA)、ペイメントカード業界データセキュリティ基準 (PCI DSS)、米国連邦政府によるリスクおよび認証管理プログラム (FedRAMP) など、環境全体でエンドツーエンドの暗号化の証明を必要とする規制フレームワークへの準拠を実証する場合に特に重要です。組織は、パフォーマンスのトレードオフや複雑なキー管理システムを管理することなく、暗号化状態を一元的に可視化して制御する必要があります。

VPC 暗号化制御は、監視と強制という 2 つの運用モードを提供することでこれらの課題に対処します。監視モードでは、トラフィックフローの暗号化ステータスを監査し、プレーンテキストトラフィックを許可するリソースを特定できます。この機能により、VPC フローログに新しい暗号化ステータスフィールドが追加され、トラフィックが Nitro ハードウェア暗号化、アプリケーション層暗号化 (TLS)、またはその両方を使用して暗号化されているかどうかを可視化できます。

変更が必要なリソースを特定したら、暗号化を実装するための措置を講じることができます。Network Load BalancerApplication Load BalancerAWS Fargate タスクなどの AWS サービスは、基盤となるインフラストラクチャを Nitro ハードウェアに自動的かつ透過的に移行します。ユーザーによるアクションは不要で、サービスの中断もありません。前世代の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスなどの他のリソースについては、モダンな Nitro ベースインスタンスタイプに切り替えるか、アプリケーションレベルで TLS 暗号化を設定する必要があります。

すべてのリソースが暗号化準拠のインフラストラクチャに移行されたら、強制モードに切り替えることができます。この暗号化準拠のハードウェアと通信プロトコルへの移行は、強制モードを有効にする前提条件です。インターネットゲートウェイNAT ゲートウェイなど、暗号化をサポートしない (トラフィックが VPC や AWS ネットワークの外部を流れるため) リソースには、特定の除外を設定できます。

その他のリソースは暗号化に準拠している必要があり、除外することはできません。アクティベーション後、強制モードでは、今後のリソースはすべて互換性のある Nitro インスタンスでのみ作成され、誤ったプロトコルまたはポートが検出された場合は暗号化されていないトラフィックはドロップされます。

使用開始方法の説明

このデモでは、3 つの EC2 インスタンスを起動しました。1 つをポート 80 に Nginx をインストールしたウェブサーバーとして使用し、クリアテキストの HTML ページを処理します。残りの 2 つは、サーバーに対して HTTP GET リクエストを継続的に送信しています。これにより、VPC にクリアテキストトラフィックが生成されます。ウェブサーバーと 2 つのクライアントのうちの 1 つには m7g.medium インスタンスタイプを使用しています。このインスタンスタイプは、基盤となる Nitro System ハードウェアを使用して、インスタンス間の転送中のトラフィックを自動的に暗号化します。他のウェブクライアントには t4g.medium インスタンスを使用しています。そのインスタンスのネットワークトラフィックは、ハードウェアレベルで暗号化されていません。

はじめに、監視モードで暗号化制御を有効にします。AWS マネジメントコンソールの左側のナビゲーションペインで [Your VPC] (お使いの VPC) を選択し、次に [VPC encryption controls] (VPC 暗号化制御) タブに切り替えます。[Create encryption control] (暗号化制御を作成) を選択し、制御を作成する VPC を選択します。

各 VPC には 1 つの VPC 暗号化制御しか関連付けることができず、VPC ID と VPC 暗号化制御 ID の間に 1 対 1 の関係が構築されます。VPC 暗号化制御を作成するときに、リソースの編成と管理に役立つタグを追加できます。新しい VPC を作成する際に VPC 暗号化制御を有効にすることもできます。

VPC 暗号化制御 – EC 1 の作成

この制御の名前を入力します。制御したい VPC を選択します。既存の VPC では、監視モードで起動する必要があります。暗号化されていないトラフィックがないことが確認できたら強制モードを有効にできます。新しい VPC については、作成時に暗号化を適用できます。

オプションで、既存の VPC で暗号化制御を作成するときにタグを定義できます。ただし、VPC の作成時に暗号化制御を有効にすると、VPC 暗号化制御用に個別のタグを作成することはできません。これは、VPC と同じタグが自動的に継承されるためです。準備ができたら、[Create encryption control] (暗号化制御を作成) を選択します。

VPC 暗号化制御 – EC 2 の作成代わりに、次のように AWS コマンドラインインターフェイス (AWS CLI) を使用することもできます。

aws ec2 create-vpc-encryption-control --vpc-id vpc-123456789

次に、コンソール、コマンドライン、またはフローログを使用して VPC の暗号化ステータスを監査します。

aws ec2 create-flow-logs \
  --resource-type VPC \
  --resource-ids vpc-123456789 \
  --traffic-type ALL \
  --log-destination-type s3 \
  --log-destination arn:aws:s3:::vpc-flow-logs-012345678901/vpc-flow-logs/ \
  --log-format '${flow-direction} ${traffic-path} ${srcaddr} ${dstaddr} ${srcport} ${dstport} ${encryption-status}'
{
    "ClientToken": "F7xmLqTHgt9krTcFMBHrwHmAZHByyDXmA1J94PsxWiU=",
    "FlowLogIds": [
        "fl-0667848f2d19786ca"
    ],
    "Unsuccessful": []
}

数分後、ログに次のトラフィックが表示されます。

flow-direction traffic-path srcaddr dstaddr srcport dstport encryption-status
ingress - 10.0.133.8 10.0.128.55 43236 80 1 # <-- HTTP between web client and server.Encrypted at hardware-level
egress 1 10.0.128.55 10.0.133.8 80 43236 1
ingress - 10.0.133.8 10.0.128.55 36902 80 1
egress 1 10.0.128.55 10.0.133.8 80 36902 1
ingress - 10.0.130.104 10.0.128.55 55016 80 0 # <-- HTTP between web client and server.Not encrypted at hardware-level
egress 1 10.0.128.55 10.0.130.104 80 55016 0
ingress - 10.0.130.104 10.0.128.55 60276 80 0
egress 1 10.0.128.55 10.0.130.104 80 60276 0
  • 10.0.128.55 は、ハードウェアで暗号化されたトラフィックを使用するウェブサーバーで、アプリケーションレベルでクリアテキストトラフィックを処理します。
  • 10.0.133.8 は、ハードウェアで暗号化されたトラフィックを使用するウェブクライアントです。
  • 10.0.130.104 は、ハードウェアレベルで暗号化されていないウェブクライアントです。

encryption-status フィールドには、送信元アドレスと送信先アドレス間のトラフィックの暗号化ステータスが表示されます。

  • 0 はトラフィックがクリアテキストであることを意味します
  • 1 は、トラフィックが Nitro システムによってネットワークレイヤー (レベル 3) で暗号化されていることを意味します
  • 2 は、トラフィックがアプリケーションレイヤー (レベル 7、TCP ポート 443、TLS/SSL) で暗号化されていることを意味します
  • 3 は、トラフィックがアプリケーションレイヤー (TLS) とネットワークレイヤー (Nitro) の両方で暗号化されていることを意味します。
  • 「-」は、VPC 暗号化制御が有効になっていないか、AWS Flow Logs にステータス情報がないことを意味します。

Nitro ベースではないインスタンス (10.0.130.104) のウェブクライアントから発信されたトラフィックには 0 のフラグが付けられます。Nitro ベースのインスタンス (10.0.133.8) 上のウェブクライアントから開始されたトラフィックには、1 のフラグが付けられます。

また、コンソールを使用して変更が必要なリソースを特定します。このレポートでは、暗号化されていない 2 つのリソース (Nitro ベースではないインスタンスのインターネットゲートウェイと Elastic Network Interface (ENI)) が報告されます。

VPC 暗号化制御 – 除外リストCLI を使用して、暗号化されていないリソースを確認することもできます。

aws ec2 get-vpc-resources-blocking-encryption-enforcement --vpc-id vpc-123456789

暗号化をサポートするようにリソースを更新したら、コンソールまたは CLI を使用して強制モードに切り替えることができます。

コンソールで VPC 暗号化制御を選択します。次に、[Actions] (アクション) と [Switch mode] (モードの切り替え) を選択します。

VPC 暗号化制御 – モードの切り替えまたは、次のように同等の CLI を使用することもできます。

aws ec2 modify-vpc-encryption-control --vpc-id vpc-123456789 --mode enforce

暗号化されていないと識別されたリソースを変更するにはどうすればよいですか?

すべての VPC リソースは、ハードウェアレイヤーまたはアプリケーションレイヤーでトラフィックの暗号化をサポートする必要があります。ほとんどのリソースでは、何もする必要はありません。

AWS PrivateLinkゲートウェイエンドポイントを介してアクセスする AWS サービスは、アプリケーションレイヤーで自動的に暗号化を適用します。これらのサービスは TLS で暗号化されたトラフィックのみを受け入れます。AWS は、アプリケーションレイヤーで暗号化されていないトラフィックを自動的にドロップします。

監視モードを有効にすると、Network Load Balancer、Application Load Balancer、AWS Fargate クラスター、Amazon Elastic Kubernetes Service (Amazon EKS) クラスターが、本質的に暗号化をサポートするハードウェアに自動的かつ徐々に移行します。この移行は、ユーザーによる操作を必要とせずに透過的に行われます。

一部の VPC リソースでは、最新の Nitro ハードウェアレイヤー暗号化をサポートする基盤となるインスタンスを選択する必要があります。これらには、EC2 インスタンス、Auto Scaling グループAmazon Relational Database Service (Amazon RDS) データベース (Amazon DocumentDB を含む)、Amazon ElastiCache のノードベースのクラスター、Amazon Redshift でプロビジョニングされたクラスターEKS クラスターECS (EC2 キャパシティーを含む)MSK プロビジョンドAmazon OpenSearch Service、および Amazon EMR などがあります。Redshift クラスターを移行するには、スナップショットから新しいクラスターまたは名前空間を作成する必要があります。

新世代のインスタンスを使用する場合、最近のインスタンスタイプはすべて暗号化をサポートしているため、すでに暗号化に準拠したインフラストラクチャが用意されている可能性があります。転送中の暗号化をサポートしていない旧世代のインスタンスの場合は、サポートされているインスタンスタイプにアップグレードする必要があります。

AWS Transit Gateway を使用する際に知っておくべきこと

VPC 暗号化を有効にして AWS CloudFormation 経由で Transit Gateway を作成する場合、ec2:ModifyTransitGateway および ec2:ModifyTransitGatewayOptions という、さらに 2 つの AWS Identity and Access Management (IAM) アクセス許可が必要です。CloudFormation は 2 段階のプロセスを使用して Transit Gateway を作成するため、これらのアクセス許可が必要になります。最初に基本設定で Transit Gateway を作成し、次に ModifyTransitGateway を呼び出して暗号化サポートを有効にします。これらのアクセス許可がないと、作成操作のように見える操作のみを実行していても、暗号化設定を適用しようとすると、作成中に CloudFormation スタックが失敗します。

料金と利用可能なリージョン

VPC 暗号化制御は、米国東部 (オハイオ、バージニア北部)、米国西部 (北カリフォルニア、オレゴン)、アフリカ (ケープタウン)、アジアパシフィック (香港、ハイデラバード、ジャカルタ、メルボルン、ムンバイ、大阪、シンガポール、シドニー、東京)、カナダ (中部)、カナダ西部 (カルガリー)、欧州 (フランクフルト、アイルランド、ロンドン、ミラノ、パリ、ストックホルム、チューリッヒ)、中東 (バーレーン、UAE)、南米 (サンパウロ) の各 AWS リージョンで今すぐご利用いただけます。

VPC 暗号化制御は、2026 年 3 月 1 日まで無料でお使いいただけます。VPC の料金ページは、無料期間の終了日が近くなると更新され、詳細が表示されます。

詳細については、VPC 暗号化制御のドキュメントを参照するか、AWS アカウントでお試しください。セキュリティ体制を強化し、コンプライアンス基準を満たすためにこの機能がどのように役立っているかを聞くのを楽しみにしています。

– seb

原文はこちらです。